├── CNAME ├── example-app ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── packages │ └── materialize-scss ├── main.scss └── example-app.html ├── .gitattributes ├── tests └── spec │ ├── helper.js │ ├── tooltip │ └── tooltipFixture.html │ ├── scrollFire │ ├── scrollFireSpec.js │ └── scrollFireFixture.html │ ├── tabs │ ├── tabsFixture.html │ └── tabsSpec.js │ ├── select │ └── selectFixture.html │ ├── collapsible │ ├── collapsible.html │ └── collapsibleSpec.js │ ├── toast │ └── toastSpec.js │ └── cards │ └── cardsFixture.html ├── images ├── Alan.png ├── alex.png ├── bold.png ├── menu.gif ├── yuna.jpg ├── alvin.png ├── donate.png ├── kevin.png ├── motion.png ├── office.jpg ├── toast.gif ├── metaphor.png ├── parallax1.jpg ├── parallax2.jpg ├── sample-1.jpg ├── materialize.gif ├── materialize.png ├── responsive.png ├── kmaterialize.jpg ├── m-logo-salmon.png ├── macbook-left.png ├── showcase │ ├── adbeus.png │ ├── adolfo.jpg │ ├── caliber.png │ ├── eadbox.jpg │ ├── eadbox.png │ ├── emerald.jpg │ ├── fedora.png │ ├── joelcox.png │ ├── ocloud.png │ ├── straphq.png │ ├── closeheat.png │ ├── kenyaapps.jpg │ ├── rdxsports.png │ ├── stamplay.png │ ├── webonise.png │ ├── danielangel.png │ ├── kioskbrowser.png │ ├── lifeawesome.png │ ├── roboterwelt.png │ ├── absurdoburger.jpg │ ├── makoframework.png │ ├── playful_digital.png │ ├── tuanphongtruong.png │ ├── varun_malhotra.jpg │ ├── visitsarasota.jpg │ ├── visitsarasota.png │ ├── stephaniejagiello.png │ └── alexander_web_service.png ├── starter-template.gif ├── materialize_team.jpeg ├── parallax-template.jpg └── favicon │ ├── favicon-32x32.png │ ├── mstile-144x144.png │ └── apple-touch-icon-152x152.png ├── res └── MaterializeLogo-3.ai ├── bin ├── materialize-v0.97.6.zip └── materialize-src-v0.97.6.zip ├── .npmignore ├── fonts └── roboto │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Thin.eot │ ├── Roboto-Thin.ttf │ ├── Roboto-Thin.woff │ ├── Roboto-Thin.woff2 │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ └── Roboto-Regular.woff2 ├── robots.txt ├── templates ├── starter-template.zip ├── parallax-template.zip ├── masonry-template │ ├── background1.jpg │ ├── background2.jpg │ ├── background3.jpg │ ├── js │ │ └── init.js │ ├── css │ │ └── style.css │ └── LICENSE ├── parallax-template │ ├── background1.jpg │ ├── background2.jpg │ ├── background3.jpg │ ├── js │ │ └── init.js │ ├── css │ │ └── style.css │ └── LICENSE └── starter-template │ ├── js │ └── init.js │ ├── css │ └── style.css │ └── LICENSE ├── dist ├── font │ ├── roboto │ │ ├── Roboto-Bold.eot │ │ ├── Roboto-Bold.ttf │ │ ├── Roboto-Thin.eot │ │ ├── Roboto-Thin.ttf │ │ ├── Roboto-Bold.woff │ │ ├── Roboto-Bold.woff2 │ │ ├── Roboto-Light.eot │ │ ├── Roboto-Light.ttf │ │ ├── Roboto-Light.woff │ │ ├── Roboto-Light.woff2 │ │ ├── Roboto-Medium.eot │ │ ├── Roboto-Medium.ttf │ │ ├── Roboto-Medium.woff │ │ ├── Roboto-Regular.eot │ │ ├── Roboto-Regular.ttf │ │ ├── Roboto-Thin.woff │ │ ├── Roboto-Thin.woff2 │ │ ├── Roboto-Medium.woff2 │ │ ├── Roboto-Regular.woff │ │ └── Roboto-Regular.woff2 │ └── material-design-icons │ │ ├── Material-Design-Icons.eot │ │ ├── Material-Design-Icons.ttf │ │ ├── Material-Design-Icons.woff │ │ └── Material-Design-Icons.woff2 └── fonts │ └── roboto │ ├── Roboto-Bold.eot │ ├── Roboto-Bold.ttf │ ├── Roboto-Bold.woff │ ├── Roboto-Bold.woff2 │ ├── Roboto-Light.eot │ ├── Roboto-Light.ttf │ ├── Roboto-Light.woff │ ├── Roboto-Medium.eot │ ├── Roboto-Medium.ttf │ ├── Roboto-Thin.eot │ ├── Roboto-Thin.ttf │ ├── Roboto-Thin.woff │ ├── Roboto-Thin.woff2 │ ├── Roboto-Light.woff2 │ ├── Roboto-Medium.woff │ ├── Roboto-Medium.woff2 │ ├── Roboto-Regular.eot │ ├── Roboto-Regular.ttf │ ├── Roboto-Regular.woff │ └── Roboto-Regular.woff2 ├── .travis.yml ├── .gitmodules ├── sass ├── ghpages-materialize.scss ├── components │ ├── _mixins.scss │ ├── _icons-material-design.scss │ ├── forms │ │ ├── _forms.scss │ │ ├── _file-input.scss │ │ ├── _switches.scss │ │ ├── _select.scss │ │ ├── _radio-buttons.scss │ │ └── _range.scss │ ├── _chips.scss │ ├── _carousel.scss │ ├── _table_of_contents.scss │ ├── _tooltip.scss │ ├── _materialbox.scss │ ├── _toast.scss │ ├── _dropdown.scss │ ├── _tabs.scss │ ├── _modal.scss │ ├── _typography.scss │ ├── _slider.scss │ ├── _collapsible.scss │ ├── _roboto.scss │ ├── _cards.scss │ ├── _sideNav.scss │ ├── _grid.scss │ ├── date_picker │ │ └── _default.time.scss │ └── _navbar.scss └── _materialize.scss ├── js ├── chips.js ├── animation.js ├── initial.js ├── jquery.hammer.js ├── cards.js ├── global.js ├── scrollFire.js ├── pushpin.js ├── parallax.js ├── character_counter.js ├── buttons.js └── jquery.timeago.min.js ├── jade ├── fullscreen-slider-demo.jade ├── index.jade ├── parallax-demo.jade ├── grid.jade ├── mobile.jade ├── sass.jade ├── tabs.jade ├── about.jade ├── cards.jade ├── color.jade ├── icons.jade ├── media.jade ├── table.jade ├── waves.jade ├── badges.jade ├── buttons.jade ├── chips.jade ├── footer.jade ├── helpers.jade ├── modals.jade ├── navbar.jade ├── pushpin.jade ├── shadow.jade ├── sideNav.jade ├── dropdown.jade ├── media-css.jade ├── parallax.jade ├── preloader.jade ├── showcase.jade ├── pagination.jade ├── typography.jade ├── breadcrumbs.jade ├── collapsible.jade ├── scrollspy.jade ├── transitions.jade ├── collections.jade ├── dialogs.jade ├── forms.jade ├── getting-started.jade ├── page-contents │ ├── fullscreen_slider_demo_content.html │ ├── parallax_demo_content.html │ ├── breadcrumbs_content.html │ ├── chips_content.html │ ├── pushpin_content.html │ ├── parallax_content.html │ ├── scrollspy_content.html │ ├── shadow_content.html │ ├── pagination_content.html │ └── transitions_content.html ├── scrollFire.jade ├── _scripts.html ├── _head.jade ├── mobile │ └── mobile_content.html └── parallax │ └── parallax_content.html ├── .editorconfig ├── .gitignore ├── .versions ├── LICENSE ├── sitemap.xml ├── package.json ├── bower.json ├── _SpecRunner.html ├── test └── html │ ├── materialbox.html │ ├── tabs.html │ ├── multiple_sidenav.html │ └── fixed_navbar.html ├── README.md ├── css └── prism.css └── CHANGELOG.md /CNAME: -------------------------------------------------------------------------------- 1 | materializecss.com 2 | -------------------------------------------------------------------------------- /example-app/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /example-app/packages/materialize-scss: -------------------------------------------------------------------------------- 1 | ../../ -------------------------------------------------------------------------------- /example-app/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.2.1 2 | -------------------------------------------------------------------------------- /example-app/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | **/*.html linguist-documentation 3 | -------------------------------------------------------------------------------- /tests/spec/helper.js: -------------------------------------------------------------------------------- 1 | jasmine.getFixtures().fixturesPath = 'tests/spec'; -------------------------------------------------------------------------------- /images/Alan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/Alan.png -------------------------------------------------------------------------------- /images/alex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/alex.png -------------------------------------------------------------------------------- /images/bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/bold.png -------------------------------------------------------------------------------- /images/menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/menu.gif -------------------------------------------------------------------------------- /images/yuna.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/yuna.jpg -------------------------------------------------------------------------------- /images/alvin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/alvin.png -------------------------------------------------------------------------------- /images/donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/donate.png -------------------------------------------------------------------------------- /images/kevin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/kevin.png -------------------------------------------------------------------------------- /images/motion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/motion.png -------------------------------------------------------------------------------- /images/office.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/office.jpg -------------------------------------------------------------------------------- /images/toast.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/toast.gif -------------------------------------------------------------------------------- /images/metaphor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/metaphor.png -------------------------------------------------------------------------------- /images/parallax1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/parallax1.jpg -------------------------------------------------------------------------------- /images/parallax2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/parallax2.jpg -------------------------------------------------------------------------------- /images/sample-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/sample-1.jpg -------------------------------------------------------------------------------- /images/materialize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/materialize.gif -------------------------------------------------------------------------------- /images/materialize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/materialize.png -------------------------------------------------------------------------------- /images/responsive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/responsive.png -------------------------------------------------------------------------------- /images/kmaterialize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/kmaterialize.jpg -------------------------------------------------------------------------------- /images/m-logo-salmon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/m-logo-salmon.png -------------------------------------------------------------------------------- /images/macbook-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/macbook-left.png -------------------------------------------------------------------------------- /res/MaterializeLogo-3.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/res/MaterializeLogo-3.ai -------------------------------------------------------------------------------- /bin/materialize-v0.97.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/bin/materialize-v0.97.6.zip -------------------------------------------------------------------------------- /images/showcase/adbeus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/adbeus.png -------------------------------------------------------------------------------- /images/showcase/adolfo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/adolfo.jpg -------------------------------------------------------------------------------- /images/showcase/caliber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/caliber.png -------------------------------------------------------------------------------- /images/showcase/eadbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/eadbox.jpg -------------------------------------------------------------------------------- /images/showcase/eadbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/eadbox.png -------------------------------------------------------------------------------- /images/showcase/emerald.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/emerald.jpg -------------------------------------------------------------------------------- /images/showcase/fedora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/fedora.png -------------------------------------------------------------------------------- /images/showcase/joelcox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/joelcox.png -------------------------------------------------------------------------------- /images/showcase/ocloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/ocloud.png -------------------------------------------------------------------------------- /images/showcase/straphq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/straphq.png -------------------------------------------------------------------------------- /images/starter-template.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/starter-template.gif -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | images/ 2 | .sass-cache/ 3 | .grunt/ 4 | .DS_Store 5 | prepros.cfg 6 | Thumbs.db 7 | .projectile 8 | **/*.log 9 | -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /images/materialize_team.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/materialize_team.jpeg -------------------------------------------------------------------------------- /images/parallax-template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/parallax-template.jpg -------------------------------------------------------------------------------- /images/showcase/closeheat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/closeheat.png -------------------------------------------------------------------------------- /images/showcase/kenyaapps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/kenyaapps.jpg -------------------------------------------------------------------------------- /images/showcase/rdxsports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/rdxsports.png -------------------------------------------------------------------------------- /images/showcase/stamplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/stamplay.png -------------------------------------------------------------------------------- /images/showcase/webonise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/webonise.png -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # Allow crawling of all content 2 | User-agent: * 3 | Disallow: 4 | Sitemap: http://materializecss.com/sitemap.xml -------------------------------------------------------------------------------- /templates/starter-template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/starter-template.zip -------------------------------------------------------------------------------- /bin/materialize-src-v0.97.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/bin/materialize-src-v0.97.6.zip -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /images/showcase/danielangel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/danielangel.png -------------------------------------------------------------------------------- /images/showcase/kioskbrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/kioskbrowser.png -------------------------------------------------------------------------------- /images/showcase/lifeawesome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/lifeawesome.png -------------------------------------------------------------------------------- /images/showcase/roboterwelt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/roboterwelt.png -------------------------------------------------------------------------------- /templates/parallax-template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/parallax-template.zip -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /fonts/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/fonts/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /images/favicon/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/favicon/mstile-144x144.png -------------------------------------------------------------------------------- /images/showcase/absurdoburger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/absurdoburger.jpg -------------------------------------------------------------------------------- /images/showcase/makoframework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/makoframework.png -------------------------------------------------------------------------------- /images/showcase/playful_digital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/playful_digital.png -------------------------------------------------------------------------------- /images/showcase/tuanphongtruong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/tuanphongtruong.png -------------------------------------------------------------------------------- /images/showcase/varun_malhotra.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/varun_malhotra.jpg -------------------------------------------------------------------------------- /images/showcase/visitsarasota.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/visitsarasota.jpg -------------------------------------------------------------------------------- /images/showcase/visitsarasota.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/visitsarasota.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.12" 4 | before_install: 5 | - npm install -g grunt-cli 6 | git: 7 | depth: 10 8 | -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /dist/font/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /images/showcase/stephaniejagiello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/stephaniejagiello.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "material-design-icons"] 2 | path = material-design-icons 3 | url = https://github.com/google/material-design-icons.git 4 | -------------------------------------------------------------------------------- /dist/fonts/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/fonts/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /images/showcase/alexander_web_service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/showcase/alexander_web_service.png -------------------------------------------------------------------------------- /templates/masonry-template/background1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/masonry-template/background1.jpg -------------------------------------------------------------------------------- /templates/masonry-template/background2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/masonry-template/background2.jpg -------------------------------------------------------------------------------- /templates/masonry-template/background3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/masonry-template/background3.jpg -------------------------------------------------------------------------------- /images/favicon/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/images/favicon/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /templates/parallax-template/background1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/parallax-template/background1.jpg -------------------------------------------------------------------------------- /templates/parallax-template/background2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/parallax-template/background2.jpg -------------------------------------------------------------------------------- /templates/parallax-template/background3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/templates/parallax-template/background3.jpg -------------------------------------------------------------------------------- /sass/ghpages-materialize.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // import materialize 4 | @import "materialize"; 5 | 6 | // Custom style 7 | @import "style.scss"; 8 | -------------------------------------------------------------------------------- /dist/font/material-design-icons/Material-Design-Icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/material-design-icons/Material-Design-Icons.eot -------------------------------------------------------------------------------- /dist/font/material-design-icons/Material-Design-Icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/material-design-icons/Material-Design-Icons.ttf -------------------------------------------------------------------------------- /dist/font/material-design-icons/Material-Design-Icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/material-design-icons/Material-Design-Icons.woff -------------------------------------------------------------------------------- /dist/font/material-design-icons/Material-Design-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poetic/meteor-materialize-scss/meteor/dist/font/material-design-icons/Material-Design-Icons.woff2 -------------------------------------------------------------------------------- /templates/starter-template/js/init.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(function(){ 3 | 4 | $('.button-collapse').sideNav(); 5 | 6 | }); // end of document ready 7 | })(jQuery); // end of jQuery name space -------------------------------------------------------------------------------- /example-app/main.scss: -------------------------------------------------------------------------------- 1 | @import "{poetic:materialize-scss}/sass/components/_color.scss"; 2 | $secondary-color: color("blue", "lighten-2"); 3 | 4 | @import "{poetic:materialize-scss}/sass/materialize.scss"; 5 | -------------------------------------------------------------------------------- /sass/components/_mixins.scss: -------------------------------------------------------------------------------- 1 | // @mixin box-shadow-2($args1, $args2) { 2 | // -webkit-box-shadow: $args1, $args2; 3 | // -moz-box-shadow: $args1, $args2; 4 | // box-shadow: $args1, $args2; 5 | // } -------------------------------------------------------------------------------- /example-app/example-app.html: -------------------------------------------------------------------------------- 1 | 2 | example-app 3 | 4 | 5 | 6 |

The following should be blue, not green

7 | button 8 | 9 | -------------------------------------------------------------------------------- /js/chips.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $(document).ready(function() { 3 | 4 | $(document).on('click.chip', '.chip .material-icons', function (e) { 5 | $(this).parent().remove(); 6 | }); 7 | 8 | }); 9 | }( jQuery )); -------------------------------------------------------------------------------- /templates/parallax-template/js/init.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(function(){ 3 | 4 | $('.button-collapse').sideNav(); 5 | $('.parallax').parallax(); 6 | 7 | }); // end of document ready 8 | })(jQuery); // end of jQuery name space -------------------------------------------------------------------------------- /sass/components/_icons-material-design.scss: -------------------------------------------------------------------------------- 1 | /* This is needed for some mobile phones to display the Google Icon font properly */ 2 | .material-icons { 3 | text-rendering: optimizeLegibility; 4 | font-feature-settings: 'liga'; 5 | } 6 | -------------------------------------------------------------------------------- /jade/fullscreen-slider-demo.jade: -------------------------------------------------------------------------------- 1 | - var page = "Fullscreen Slider" 2 | 3 | doctype html 4 | html(lang="en") 5 | head 6 | include _head.jade 7 | body 8 | include page-contents/fullscreen_slider_demo_content.html 9 | include _scripts.html -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{js,scss}] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /js/animation.js: -------------------------------------------------------------------------------- 1 | // Custom Easing 2 | jQuery.extend( jQuery.easing, 3 | { 4 | easeInOutMaterial: function (x, t, b, c, d) { 5 | if ((t/=d/2) < 1) return c/2*t*t + b; 6 | return c/4*((t-=2)*t*t + 2) + b; 7 | } 8 | }); 9 | 10 | -------------------------------------------------------------------------------- /jade/index.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = true 2 | 3 | doctype html 4 | html(lang="en") 5 | head 6 | include _head.jade 7 | body 8 | include _navbar.jade 9 | main 10 | include index/index_content.html 11 | include _footer.html 12 | include _scripts.html -------------------------------------------------------------------------------- /jade/parallax-demo.jade: -------------------------------------------------------------------------------- 1 | - var page = "Parallax" 2 | 3 | doctype html 4 | html(lang="en") 5 | head 6 | include _head.jade 7 | body(class="parallax-demo") 8 | include page-contents/parallax_demo_content.html 9 | include _footer.html 10 | include _scripts.html -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | prepros.cfg 3 | Thumbs.db 4 | js/materialize.js 5 | test2.html 6 | test.html 7 | test2.html 8 | node_modules/ 9 | .sass-cache/ 10 | bin/jquery-2.1.1.min.js 11 | /.idea/ 12 | **/*.log 13 | bower_components 14 | .projectile 15 | **/#*# 16 | **/.#* 17 | .grunt/ -------------------------------------------------------------------------------- /jade/grid.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Grid" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/grid_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/mobile.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Mobile" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include mobile/mobile_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/sass.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Sass" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/sass_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/tabs.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Tabs" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/tabs_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/about.jade: -------------------------------------------------------------------------------- 1 | - var white_nav = true 2 | - var page = "About" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include about/about_content.html 12 | include _footer.html 13 | include _scripts.html 14 | -------------------------------------------------------------------------------- /jade/cards.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Cards" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/cards_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/color.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Color" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/color_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/icons.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Icons" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/icons_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/media.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Media" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/media_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/table.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Table" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/table_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/waves.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Waves" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/waves_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/badges.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Badges" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/badges_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/buttons.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Buttons" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/buttons_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/chips.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Chips" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/chips_content.html 12 | include _footer.html 13 | include _scripts.html 14 | -------------------------------------------------------------------------------- /jade/footer.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Footer" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/footer_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/helpers.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Helpers" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/helpers_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/modals.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Modals" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/modals_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/navbar.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Navbar" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/navbar_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/pushpin.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Pushpin" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/pushpin_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/shadow.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Shadow" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/shadow_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/sideNav.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "SideNav" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/sideNav_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/dropdown.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Dropdown" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/dropdown_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/media-css.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Media CSS" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/media-css_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/parallax.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Parallax" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/parallax_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/preloader.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Preloader" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/preloader_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/showcase.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Showcase" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include showcase/showcase_content.html 12 | include _footer.html 13 | include _scripts.html 14 | -------------------------------------------------------------------------------- /jade/pagination.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Pagination" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/pagination_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/typography.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Typography" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/typography_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /js/initial.js: -------------------------------------------------------------------------------- 1 | // Check for jQuery. 2 | if (typeof(jQuery) === 'undefined') { 3 | var jQuery; 4 | // Check if require is a defined function. 5 | if (typeof(require) === 'function') { 6 | jQuery = $ = require('jquery'); 7 | // Else use the dollar sign alias. 8 | } else { 9 | jQuery = $; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /jade/breadcrumbs.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Breadcrumbs" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/breadcrumbs_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/collapsible.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Collapsible" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/collapsible_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/scrollspy.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Scrollspy" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/scrollspy_content.html 12 | include _footer.html 13 | include _scripts.html 14 | -------------------------------------------------------------------------------- /jade/transitions.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Transitions" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/transitions_content.html 12 | include _footer.html 13 | include _scripts.html -------------------------------------------------------------------------------- /jade/collections.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Collections" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/collections_content.html 12 | include _footer.html 13 | include _scripts.html 14 | -------------------------------------------------------------------------------- /templates/starter-template/css/style.css: -------------------------------------------------------------------------------- 1 | /* Custom Stylesheet */ 2 | /** 3 | * Use this file to override Materialize files so you can update 4 | * the core Materialize files in the future 5 | * 6 | * Made By MaterializeCSS.com 7 | */ 8 | 9 | .icon-block { 10 | padding: 0 15px; 11 | } 12 | .icon-block .material-icons { 13 | font-size: inherit; 14 | } -------------------------------------------------------------------------------- /example-app/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | 1hbndk3ry2xiprh41ir 8 | -------------------------------------------------------------------------------- /.versions: -------------------------------------------------------------------------------- 1 | babel-compiler@6.6.1 2 | babel-runtime@0.1.7 3 | base64@1.0.7 4 | caching-compiler@1.0.3 5 | check@1.1.3 6 | ecmascript@0.4.2 7 | ecmascript-runtime@0.2.9 8 | ejson@1.0.10 9 | fourseven:scss@3.4.3 10 | jquery@1.11.7 11 | meteor@1.1.13 12 | modules@0.5.2 13 | modules-runtime@0.6.2 14 | poetic:materialize-scss@1.97.6_1 15 | promise@0.6.6 16 | random@1.0.8 17 | underscore@1.0.7 18 | -------------------------------------------------------------------------------- /templates/masonry-template/js/init.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(function(){ 3 | 4 | $('.button-collapse').sideNav(); 5 | 6 | 7 | var $container = $('#masonry-grid'); 8 | // initialize 9 | $container.masonry({ 10 | columnWidth: '.col', 11 | itemSelector: '.col', 12 | }); 13 | 14 | 15 | }); // end of document ready 16 | })(jQuery); // end of jQuery name space -------------------------------------------------------------------------------- /example-app/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | -------------------------------------------------------------------------------- /tests/spec/tooltip/tooltipFixture.html: -------------------------------------------------------------------------------- 1 | 7 | Hover me! 8 | 9 | 10 | 16 | Hover me! 17 | 18 | -------------------------------------------------------------------------------- /sass/components/forms/_forms.scss: -------------------------------------------------------------------------------- 1 | // Remove Focus Boxes 2 | select:focus { 3 | outline: $select-focus; 4 | } 5 | 6 | button:focus { 7 | outline: none; 8 | background-color: $button-background-focus; 9 | } 10 | 11 | label { 12 | font-size: $label-font-size; 13 | color: $input-border-color; 14 | } 15 | 16 | @import 'input-fields'; 17 | @import 'radio-buttons'; 18 | @import 'checkboxes'; 19 | @import 'switches'; 20 | @import 'select'; 21 | @import 'file-input'; 22 | @import 'range'; 23 | -------------------------------------------------------------------------------- /jade/dialogs.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Dialogs" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/dialogs_content.html 12 | include _footer.html 13 | include _scripts.html 14 | script(type='text/javascript'). 15 | var displayCustomHTMLToast = function () { 16 | var $toastContent = $('I am toast content'); 17 | Materialize.toast($toastContent, 5000); 18 | } -------------------------------------------------------------------------------- /sass/components/_chips.scss: -------------------------------------------------------------------------------- 1 | .chip { 2 | display: inline-block; 3 | height: 32px; 4 | font-size: 13px; 5 | font-weight: 500; 6 | color: rgba(0,0,0,.6); 7 | line-height: 32px; 8 | padding: 0 12px; 9 | border-radius: 16px; 10 | background-color: $chip-bg-color; 11 | 12 | img { 13 | float: left; 14 | margin: 0 8px 0 -12px; 15 | height: 32px; 16 | width: 32px; 17 | border-radius: 50%; 18 | } 19 | 20 | i.material-icons { 21 | cursor: pointer; 22 | float: right; 23 | font-size: 16px; 24 | line-height: 32px; 25 | padding-left: 8px; 26 | } 27 | } -------------------------------------------------------------------------------- /sass/components/_carousel.scss: -------------------------------------------------------------------------------- 1 | .carousel { 2 | overflow: hidden; 3 | position: relative; 4 | width: 100%; 5 | height: 400px; 6 | perspective: 500px; 7 | transform-style: preserve-3d; 8 | transform-origin: 0% 50%; 9 | 10 | .carousel-item { 11 | width: 200px; 12 | position: absolute; 13 | top: 0; 14 | left: 0; 15 | 16 | img { 17 | width: 100%; 18 | } 19 | } 20 | 21 | &.carousel-slider { 22 | top: 0; 23 | left: 0; 24 | height: 0; 25 | 26 | .carousel-item { 27 | width: 100%; 28 | height: 100%; 29 | position: absolute; 30 | top: 0; 31 | left: 0; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /jade/forms.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "Forms" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | link(href='/extras/noUiSlider/nouislider.css', rel='stylesheet') 9 | body 10 | include _navbar.jade 11 | main 12 | include page-contents/forms_content.html 13 | include _footer.html 14 | include _scripts.html 15 | script(src="/extras/noUiSlider/nouislider.js") 16 | script(type='text/javascript'). 17 | var slider = document.getElementById('range-input'); 18 | noUiSlider.create(slider, { 19 | start: [20, 80], 20 | connect: true, 21 | step: 1, 22 | range: { 23 | 'min': 0, 24 | 'max': 100 25 | }, 26 | format: wNumb({ 27 | decimals: 0 28 | }) 29 | }); -------------------------------------------------------------------------------- /sass/components/forms/_file-input.scss: -------------------------------------------------------------------------------- 1 | /* File Input 2 | ========================================================================== */ 3 | 4 | .file-field { 5 | position: relative; 6 | 7 | .file-path-wrapper { 8 | overflow: hidden; 9 | padding-left: 10px; 10 | } 11 | 12 | input.file-path { width: 100%; } 13 | 14 | .btn { 15 | float: left; 16 | height: $input-height; 17 | line-height: $input-height; 18 | } 19 | 20 | span { 21 | cursor: pointer; 22 | } 23 | 24 | input[type=file] { 25 | position: absolute; 26 | top: 0; 27 | right: 0; 28 | left: 0; 29 | bottom: 0; 30 | width: 100%; 31 | margin: 0; 32 | padding: 0; 33 | font-size: 20px; 34 | cursor: pointer; 35 | opacity: 0; 36 | filter: alpha(opacity=0); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /sass/components/_table_of_contents.scss: -------------------------------------------------------------------------------- 1 | /*************** 2 | Nav List 3 | ***************/ 4 | .table-of-contents { 5 | &.fixed { 6 | position: fixed; 7 | } 8 | 9 | li { 10 | padding: 2px 0; 11 | } 12 | a { 13 | display: inline-block; 14 | font-weight: 300; 15 | color: #757575; 16 | padding-left: 20px; 17 | height: 1.5rem; 18 | line-height: 1.5rem; 19 | letter-spacing: .4; 20 | display: inline-block; 21 | 22 | &:hover { 23 | color: lighten(#757575, 20%); 24 | padding-left: 19px; 25 | border-left: 1px solid lighten(color("materialize-red", "base"),10%); 26 | } 27 | &.active { 28 | font-weight: 500; 29 | padding-left: 18px; 30 | border-left: 2px solid lighten(color("materialize-red", "base"),10%); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /sass/components/_tooltip.scss: -------------------------------------------------------------------------------- 1 | .material-tooltip { 2 | padding: 10px 8px; 3 | font-size: 1rem; 4 | z-index: 2000; 5 | background-color: transparent; 6 | border-radius: 2px; 7 | color: #fff; 8 | min-height: 36px; 9 | line-height: 120%; 10 | opacity: 0; 11 | display: none; 12 | position: absolute; 13 | text-align: center; 14 | max-width: calc(100% - 4px); 15 | overflow: hidden; 16 | left:0; 17 | top:0; 18 | pointer-events: none; 19 | will-change: top, left; 20 | } 21 | 22 | .backdrop { 23 | position: absolute; 24 | opacity: 0; 25 | display: none; 26 | height: 7px; 27 | width: 14px; 28 | border-radius: 0 0 14px 14px; 29 | background-color: #323232; 30 | z-index: -1; 31 | transform-origin: 50% 10%; 32 | 33 | will-change: transform, opacity; 34 | } 35 | -------------------------------------------------------------------------------- /sass/components/_materialbox.scss: -------------------------------------------------------------------------------- 1 | .materialboxed { 2 | display: block; 3 | cursor: zoom-in; 4 | position: relative; 5 | transition: opacity .4s; 6 | 7 | &:hover { 8 | &:not(.active) { 9 | opacity: .8; 10 | } 11 | will-change: left, top, width, height; 12 | } 13 | } 14 | 15 | .materialboxed.active { 16 | cursor: zoom-out; 17 | } 18 | 19 | #materialbox-overlay { 20 | position:fixed; 21 | top:0; 22 | left:0; 23 | right: 0; 24 | bottom: 0; 25 | background-color: #292929; 26 | z-index: 1000; 27 | 28 | will-change: opacity; 29 | } 30 | .materialbox-caption { 31 | position: fixed; 32 | display: none; 33 | color: #fff; 34 | line-height: 50px; 35 | bottom: 0; 36 | width: 100%; 37 | text-align: center; 38 | padding: 0% 15%; 39 | height: 50px; 40 | z-index: 1000; 41 | -webkit-font-smoothing: antialiased; 42 | } -------------------------------------------------------------------------------- /jade/getting-started.jade: -------------------------------------------------------------------------------- 1 | - var white_nav = true 2 | - var page = "Getting Started" 3 | - var meta_descript = "Learn how to quickly get started using our CSS framework. We have guides for a variety of skill levels." 4 | 5 | doctype html 6 | html(lang="en") 7 | head 8 | include _head.jade 9 | body 10 | include _navbar.jade 11 | main 12 | include getting_started/getting_started_content.html 13 | include _footer.html 14 | include _scripts.html 15 | script. 16 | $('#download-source, #download-sass').on('click', function () { 17 | $('#download').slideUp( 18 | { duration: 500, 19 | easing: "easeOutQuart", 20 | queue: false, 21 | complete: function() 22 | { $('#download-thanks').slideDown({ duration: 300, 23 | easing: "easeOutQuart"}); } 24 | }); 25 | 26 | }); -------------------------------------------------------------------------------- /tests/spec/scrollFire/scrollFireSpec.js: -------------------------------------------------------------------------------- 1 | describe('ScrollFire Plugin', function() { 2 | var options, testElement; 3 | 4 | beforeEach(function() { 5 | options = [{ 6 | selector: '#test', 7 | offset: 50, 8 | callback: 'Materialize.callbackFunc()' 9 | }]; 10 | Materialize.callbackFunc = function() { 11 | return 'I have been called'; 12 | }; 13 | 14 | loadFixtures('scrollFire/scrollFireFixture.html'); 15 | spyOn(Materialize, 'callbackFunc').and.callThrough(); 16 | testElement = $('#test'); 17 | Materialize.scrollFire(options); 18 | }); 19 | 20 | describe('ScrollFire', function() { 21 | it('should fire the callback function', function(done) { 22 | // Scroll to the test component 23 | window.scrollTo(0, testElement.offset().top); 24 | // The callback function should be fired after scrolling 25 | setTimeout(function() { 26 | expect(Materialize.callbackFunc).toHaveBeenCalled(); 27 | done(); 28 | }, 400); 29 | }); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /templates/masonry-template/css/style.css: -------------------------------------------------------------------------------- 1 | /* Custom Stylesheet */ 2 | /** 3 | * Use this file to override Materialize files so you can update 4 | * the core Materialize files in the future 5 | * 6 | * Made By MaterializeCSS.com 7 | */ 8 | 9 | nav ul a, 10 | nav .brand-logo { 11 | color: #444; 12 | } 13 | 14 | p { 15 | line-height: 2rem; 16 | } 17 | 18 | .button-collapse { 19 | color: #26a69a; 20 | } 21 | 22 | .parallax-container { 23 | min-height: 380px; 24 | line-height: 0; 25 | height: auto; 26 | color: rgba(255,255,255,.9); 27 | } 28 | .parallax-container .section { 29 | width: 100%; 30 | } 31 | 32 | @media only screen and (max-width : 992px) { 33 | .parallax-container .section { 34 | position: absolute; 35 | top: 40%; 36 | } 37 | #index-banner .section { 38 | top: 10%; 39 | } 40 | } 41 | 42 | @media only screen and (max-width : 600px) { 43 | #index-banner .section { 44 | top: 0; 45 | } 46 | } 47 | 48 | 49 | .icon-block { 50 | padding: 0 15px; 51 | } 52 | 53 | footer.page-footer { 54 | margin: 0; 55 | } -------------------------------------------------------------------------------- /tests/spec/tabs/tabsFixture.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 13 |
14 |
Test 1
15 |
Test 2
16 |
Test 3
17 |
Test 4
18 |
Test 1
19 |
Test 2
20 |
Test 3
21 |
Test 4
22 |
-------------------------------------------------------------------------------- /templates/parallax-template/css/style.css: -------------------------------------------------------------------------------- 1 | /* Custom Stylesheet */ 2 | /** 3 | * Use this file to override Materialize files so you can update 4 | * the core Materialize files in the future 5 | * 6 | * Made By MaterializeCSS.com 7 | */ 8 | 9 | nav ul a, 10 | nav .brand-logo { 11 | color: #444; 12 | } 13 | 14 | p { 15 | line-height: 2rem; 16 | } 17 | 18 | .button-collapse { 19 | color: #26a69a; 20 | } 21 | 22 | .parallax-container { 23 | min-height: 380px; 24 | line-height: 0; 25 | height: auto; 26 | color: rgba(255,255,255,.9); 27 | } 28 | .parallax-container .section { 29 | width: 100%; 30 | } 31 | 32 | @media only screen and (max-width : 992px) { 33 | .parallax-container .section { 34 | position: absolute; 35 | top: 40%; 36 | } 37 | #index-banner .section { 38 | top: 10%; 39 | } 40 | } 41 | 42 | @media only screen and (max-width : 600px) { 43 | #index-banner .section { 44 | top: 0; 45 | } 46 | } 47 | 48 | .icon-block { 49 | padding: 0 15px; 50 | } 51 | .icon-block .material-icons { 52 | font-size: inherit; 53 | } 54 | 55 | footer.page-footer { 56 | margin: 0; 57 | } -------------------------------------------------------------------------------- /js/jquery.hammer.js: -------------------------------------------------------------------------------- 1 | (function(factory) { 2 | if (typeof define === 'function' && define.amd) { 3 | define(['jquery', 'hammerjs'], factory); 4 | } else if (typeof exports === 'object') { 5 | factory(require('jquery'), require('hammerjs')); 6 | } else { 7 | factory(jQuery, Hammer); 8 | } 9 | }(function($, Hammer) { 10 | function hammerify(el, options) { 11 | var $el = $(el); 12 | if(!$el.data("hammer")) { 13 | $el.data("hammer", new Hammer($el[0], options)); 14 | } 15 | } 16 | 17 | $.fn.hammer = function(options) { 18 | return this.each(function() { 19 | hammerify(this, options); 20 | }); 21 | }; 22 | 23 | // extend the emit method to also trigger jQuery events 24 | Hammer.Manager.prototype.emit = (function(originalEmit) { 25 | return function(type, data) { 26 | originalEmit.call(this, type, data); 27 | $(this.element).trigger({ 28 | type: type, 29 | gesture: data 30 | }); 31 | }; 32 | })(Hammer.Manager.prototype.emit); 33 | })); 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2016 Materialize 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /templates/masonry-template/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Materialize 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /templates/parallax-template/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Materialize 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /templates/starter-template/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Materialize 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /example-app/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base # Packages every Meteor app needs to have 8 | mobile-experience # Packages for a great mobile UX 9 | mongo # The database Meteor supports right now 10 | blaze-html-templates # Compile .html files into Meteor Blaze views 11 | session # Client-side reactive dictionary for your app 12 | jquery # Helpful client-side library 13 | tracker # Meteor's client-side reactive programming library 14 | 15 | standard-minifiers # JS/CSS minifiers run for production mode 16 | es5-shim # ECMAScript 5 compatibility for older browsers. 17 | ecmascript # Enable ECMAScript2015+ syntax in app code 18 | 19 | autopublish # Publish all data to the clients (for prototyping) 20 | insecure # Allow all DB writes from clients (for prototyping) 21 | fourseven:scss 22 | poetic:materialize-scss 23 | -------------------------------------------------------------------------------- /js/cards.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $(document).ready(function() { 3 | 4 | $(document).on('click.card', '.card', function (e) { 5 | if ($(this).find('> .card-reveal').length) { 6 | if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { 7 | // Make Reveal animate down and display none 8 | $(this).find('.card-reveal').velocity( 9 | {translateY: 0}, { 10 | duration: 225, 11 | queue: false, 12 | easing: 'easeInOutQuad', 13 | complete: function() { $(this).css({ display: 'none'}); } 14 | } 15 | ); 16 | } 17 | else if ($(e.target).is($('.card .activator')) || 18 | $(e.target).is($('.card .activator i')) ) { 19 | $(e.target).closest('.card').css('overflow', 'hidden'); 20 | $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); 21 | } 22 | } 23 | 24 | $('.card-reveal').closest('.card').css('overflow', 'hidden'); 25 | 26 | }); 27 | 28 | }); 29 | }( jQuery )); -------------------------------------------------------------------------------- /jade/page-contents/fullscreen_slider_demo_content.html: -------------------------------------------------------------------------------- 1 |
2 | 25 |
-------------------------------------------------------------------------------- /js/global.js: -------------------------------------------------------------------------------- 1 | // Required for Meteor package, the use of window prevents export by Meteor 2 | (function(window){ 3 | if(window.Package){ 4 | Materialize = {}; 5 | } else { 6 | window.Materialize = {}; 7 | } 8 | })(window); 9 | 10 | 11 | // Unique ID 12 | Materialize.guid = (function() { 13 | function s4() { 14 | return Math.floor((1 + Math.random()) * 0x10000) 15 | .toString(16) 16 | .substring(1); 17 | } 18 | return function() { 19 | return s4() + s4() + '-' + s4() + '-' + s4() + '-' + 20 | s4() + '-' + s4() + s4() + s4(); 21 | }; 22 | })(); 23 | 24 | Materialize.elementOrParentIsFixed = function(element) { 25 | var $element = $(element); 26 | var $checkElements = $element.add($element.parents()); 27 | var isFixed = false; 28 | $checkElements.each(function(){ 29 | if ($(this).css("position") === "fixed") { 30 | isFixed = true; 31 | return false; 32 | } 33 | }); 34 | return isFixed; 35 | }; 36 | 37 | // Velocity has conflicts when loaded with jQuery, this will check for it 38 | var Vel; 39 | if ($) { 40 | Vel = $.Velocity; 41 | } else if (jQuery) { 42 | Vel = jQuery.Velocity; 43 | } else { 44 | Vel = Velocity; 45 | } 46 | -------------------------------------------------------------------------------- /sass/_materialize.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // Mixins 4 | @import "components/mixins"; 5 | @import "components/color"; 6 | 7 | // Variables; 8 | @import "components/variables"; 9 | 10 | // Reset 11 | @import "components/normalize"; 12 | 13 | // components 14 | @import "components/global"; 15 | @import "components/material-icons.scss"; 16 | @import "components/icons-material-design"; 17 | @import "components/grid"; 18 | @import "components/navbar"; 19 | @import "components/roboto"; 20 | @import "components/typography"; 21 | @import "components/cards"; 22 | @import "components/toast"; 23 | @import "components/tabs"; 24 | @import "components/tooltip"; 25 | @import "components/buttons"; 26 | @import "components/dropdown"; 27 | @import "components/waves"; 28 | @import "components/modal"; 29 | @import "components/collapsible"; 30 | @import "components/chips"; 31 | @import "components/materialbox"; 32 | @import "components/forms/forms"; 33 | @import "components/table_of_contents"; 34 | @import "components/sideNav"; 35 | @import "components/preloader"; 36 | @import "components/slider"; 37 | @import "components/carousel"; 38 | @import "components/date_picker/default.scss"; 39 | @import "components/date_picker/default.date.scss"; 40 | @import "components/date_picker/default.time.scss"; 41 | -------------------------------------------------------------------------------- /sass/components/_toast.scss: -------------------------------------------------------------------------------- 1 | #toast-container { 2 | display:block; 3 | position: fixed; 4 | z-index: 10000; 5 | 6 | @media #{$small-and-down} { 7 | min-width: 100%; 8 | bottom: 0%; 9 | } 10 | @media #{$medium-only} { 11 | left: 5%; 12 | bottom: 7%; 13 | max-width: 90%; 14 | } 15 | @media #{$large-and-up} { 16 | top: 10%; 17 | right: 7%; 18 | max-width: 86%; 19 | } 20 | } 21 | 22 | .toast { 23 | @extend .z-depth-1; 24 | border-radius: 2px; 25 | top: 0; 26 | width: auto; 27 | clear: both; 28 | margin-top: 10px; 29 | position: relative; 30 | max-width:100%; 31 | height: auto; 32 | min-height: $toast-height; 33 | line-height: 1.5em; 34 | word-break: break-all; 35 | background-color: $toast-color; 36 | padding: 10px 25px; 37 | font-size: 1.1rem; 38 | font-weight: 300; 39 | color: $toast-text-color; 40 | 41 | display: flex; 42 | align-items: center; 43 | justify-content: space-between; 44 | 45 | .btn, .btn-flat { 46 | margin: 0; 47 | margin-left: 3rem; 48 | } 49 | 50 | &.rounded{ 51 | border-radius: 24px; 52 | } 53 | 54 | @media #{$small-and-down} { 55 | width:100%; 56 | border-radius: 0; 57 | } 58 | @media #{$medium-only} { 59 | float: left; 60 | } 61 | @media #{$large-and-up} { 62 | float: right; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /sass/components/_dropdown.scss: -------------------------------------------------------------------------------- 1 | .dropdown-content { 2 | @extend .z-depth-1; 3 | background-color: $dropdown-bg-color; 4 | margin: 0; 5 | display: none; 6 | min-width: 100px; 7 | max-height: 650px; 8 | overflow-y: auto; 9 | opacity: 0; 10 | position: absolute; 11 | z-index: 999; 12 | will-change: width, height; 13 | 14 | li { 15 | clear: both; 16 | color: $off-black; 17 | cursor: pointer; 18 | min-height: $dropdown-item-height; 19 | line-height: 1.5rem; 20 | width: 100%; 21 | text-align: left; 22 | text-transform: none; 23 | 24 | &:hover, &.active, &.selected { 25 | background-color: $dropdown-hover-bg-color; 26 | } 27 | 28 | &.active.selected { 29 | background-color: darken($dropdown-hover-bg-color, 5%); 30 | } 31 | 32 | &.divider { 33 | min-height: 0; 34 | height: 1px; 35 | } 36 | 37 | & > a, & > span { 38 | font-size: 16px; 39 | color: $dropdown-color; 40 | display: block; 41 | line-height: 22px; 42 | padding: (($dropdown-item-height - 22) / 2) 16px; 43 | } 44 | 45 | & > span > label { 46 | top: 1px; 47 | left: 3px; 48 | height: 18px; 49 | } 50 | 51 | // Icon alignment override 52 | & > a > i { 53 | height: inherit; 54 | line-height: inherit; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | http://materializecss.com/about.html 5 | 2014-11-27 6 | 7 | 8 | http://materializecss.com/badges.html 9 | 2014-11-27 10 | 11 | 12 | http://materializecss.com/index.html 13 | 2014-11-27 14 | 15 | 16 | http://materializecss.com/ 17 | 2014-11-27 18 | 19 | 20 | http://materializecss.com/getting-started.html 21 | 2014-11-27 22 | 23 | 24 | http://materializecss.com/collapsible.html 25 | 2014-11-27 26 | 27 | 28 | http://materializecss.com/bin/materialize-sass_v0.82.zip 29 | 2014-11-27 30 | 31 | 32 | http://materializecss.com/bin/materialize_v0.82.zip 33 | 2014-11-27 34 | 35 | 36 | http://materializecss.com/parallax.html 37 | 2014-11-27 38 | 39 | 40 | http://materializecss.com/sass.html 41 | 2014-11-27 42 | 43 | 44 | -------------------------------------------------------------------------------- /sass/components/_tabs.scss: -------------------------------------------------------------------------------- 1 | .tabs { 2 | display: flex; 3 | position: relative; 4 | overflow-x: auto; 5 | overflow-y: hidden; 6 | height: 48px; 7 | background-color: $tabs-bg-color; 8 | margin: 0 auto; 9 | width: 100%; 10 | white-space: nowrap; 11 | 12 | .tab { 13 | -webkit-box-flex: 1; 14 | -webkit-flex-grow: 1; 15 | -ms-flex-positive: 1; 16 | flex-grow: 1; 17 | display: block; 18 | float: left; 19 | text-align: center; 20 | line-height: 48px; 21 | height: 48px; 22 | padding: 0; 23 | margin: 0; 24 | text-transform: uppercase; 25 | text-overflow: ellipsis; 26 | overflow: hidden; 27 | letter-spacing: .8px; 28 | width: 15%; 29 | min-width: 80px; 30 | 31 | a { 32 | color: $tabs-text-color; 33 | display: block; 34 | width: 100%; 35 | height: 100%; 36 | text-overflow: ellipsis; 37 | overflow: hidden; 38 | transition: color .28s ease; 39 | &:hover { 40 | color: lighten($tabs-text-color, 20%); 41 | } 42 | } 43 | 44 | &.disabled a { 45 | color: lighten($tabs-text-color, 20%); 46 | cursor: default; 47 | } 48 | } 49 | .indicator { 50 | position: absolute; 51 | bottom: 0; 52 | height: 2px; 53 | background-color: $tabs-underline-color; 54 | will-change: left, right; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /tests/spec/select/selectFixture.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 | 10 |
11 |
12 | 13 |
14 |
15 | 21 | 22 |
23 |
24 | 25 |
26 |
27 | 38 | 39 |
40 |
41 | -------------------------------------------------------------------------------- /jade/scrollFire.jade: -------------------------------------------------------------------------------- 1 | - var no_nav = false 2 | - var page = "ScrollFire" 3 | 4 | doctype html 5 | html(lang="en") 6 | head 7 | include _head.jade 8 | body 9 | include _navbar.jade 10 | main 11 | include page-contents/scrollfire_content.html 12 | include _footer.html 13 | include _scripts.html 14 | //- Scrollfire Script 15 | script(type='text/javascript'). 16 | var options = [ 17 | {selector: '#staggered-test', offset: 50, callback: function() { 18 | Materialize.toast("This is our ScrollFire Demo!", 1500); 19 | $("#call-1").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); 20 | } }, 21 | {selector: '#staggered-test', offset: 205, callback: function() { 22 | Materialize.toast("Please continue scrolling!", 1500); 23 | $("#call-2").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); 24 | } }, 25 | {selector: '#staggered-test', offset: 500, callback: function() { 26 | Materialize.showStaggeredList("#staggered-test"); 27 | $("#call-3").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); 28 | } }, 29 | {selector: '#image-test', offset: 500, callback: function() { 30 | Materialize.fadeInImage("#image-test"); 31 | $("#call-4").velocity({ backgroundColor: "#333", color: "#ef5350" }, {duration: 500}); 32 | } } 33 | ]; 34 | Materialize.scrollFire(options); 35 | -------------------------------------------------------------------------------- /example-app/.meteor/versions: -------------------------------------------------------------------------------- 1 | autopublish@1.0.4 2 | autoupdate@1.2.4 3 | babel-compiler@5.8.24_1 4 | babel-runtime@0.1.4 5 | base64@1.0.4 6 | binary-heap@1.0.4 7 | blaze@2.1.3 8 | blaze-html-templates@1.0.1 9 | blaze-tools@1.0.4 10 | boilerplate-generator@1.0.4 11 | caching-compiler@1.0.0 12 | caching-html-compiler@1.0.2 13 | callback-hook@1.0.4 14 | check@1.1.0 15 | ddp@1.2.2 16 | ddp-client@1.2.1 17 | ddp-common@1.2.2 18 | ddp-server@1.2.2 19 | deps@1.0.9 20 | diff-sequence@1.0.1 21 | ecmascript@0.1.6 22 | ecmascript-runtime@0.2.6 23 | ejson@1.0.7 24 | es5-shim@4.1.14 25 | fastclick@1.0.7 26 | fourseven:scss@3.4.3 27 | geojson-utils@1.0.4 28 | hot-code-push@1.0.0 29 | html-tools@1.0.5 30 | htmljs@1.0.5 31 | http@1.1.1 32 | id-map@1.0.4 33 | insecure@1.0.4 34 | jquery@1.11.4 35 | launch-screen@1.0.4 36 | livedata@1.0.15 37 | logging@1.0.8 38 | meteor@1.1.10 39 | meteor-base@1.0.1 40 | minifiers@1.1.7 41 | minimongo@1.0.10 42 | mobile-experience@1.0.1 43 | mobile-status-bar@1.0.6 44 | mongo@1.1.3 45 | mongo-id@1.0.1 46 | npm-mongo@1.4.39_1 47 | observe-sequence@1.0.7 48 | ordered-dict@1.0.4 49 | poetic:materialize-scss@1.97.6_1 50 | promise@0.5.1 51 | random@1.0.5 52 | reactive-dict@1.1.3 53 | reactive-var@1.0.6 54 | reload@1.1.4 55 | retry@1.0.4 56 | routepolicy@1.0.6 57 | session@1.1.1 58 | spacebars@1.0.7 59 | spacebars-compiler@1.0.7 60 | standard-minifiers@1.0.2 61 | templating@1.1.5 62 | templating-tools@1.0.0 63 | tracker@1.0.9 64 | ui@1.0.8 65 | underscore@1.0.4 66 | url@1.0.5 67 | webapp@1.2.3 68 | webapp-hashing@1.0.5 69 | -------------------------------------------------------------------------------- /jade/_scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "materialize-css", 3 | "description": "Builds Materialize distribution packages", 4 | "author": "Alvin Wang, Alan Chang", 5 | "url": "http://materializecss.com/", 6 | "version": "0.97.6", 7 | "main": "bin/materialize.js", 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/Dogfalo/materialize.git" 12 | }, 13 | "dependencies": { 14 | "hammerjs": "^2.0.4", 15 | "jquery": "^2.1.4", 16 | "node-archiver": "^0.2.0" 17 | }, 18 | "engine": "node >= 0.10", 19 | "devDependencies": { 20 | "autoprefixer": "^6.1.0", 21 | "grunt": "^0.4.5", 22 | "grunt-banner": "^0.6.0", 23 | "grunt-browser-sync": "^2.2.0", 24 | "grunt-concurrent": "^2.0.0", 25 | "grunt-contrib-clean": "^0.7.0", 26 | "grunt-contrib-compress": "^0.14.0", 27 | "grunt-contrib-concat": "^0.5.0", 28 | "grunt-contrib-copy": "^0.8.0", 29 | "grunt-contrib-cssmin": "^0.14.0", 30 | "grunt-contrib-jade": "^0.15.0", 31 | "grunt-contrib-jasmine": "^0.9.2", 32 | "grunt-contrib-uglify": "^0.11.0", 33 | "grunt-contrib-watch": "^0.6.0", 34 | "grunt-notify": "^0.4.1", 35 | "grunt-postcss": "^0.7.1", 36 | "grunt-remove-logging": "^0.2.0", 37 | "grunt-rename": "^0.1.4", 38 | "grunt-sass": "^1.1.0", 39 | "grunt-text-replace": "^0.4.0", 40 | "jasmine": "^2.3.2", 41 | "jasmine-jquery": "^2.1.1", 42 | "jquery": "^2.1.4", 43 | "node-sass": "^3.4.2", 44 | "phantomjs": "^1.9.18" 45 | }, 46 | "scripts": { 47 | "test": "grunt travis --verbose" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /js/scrollFire.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | // Input: Array of JSON objects {selector, offset, callback} 4 | 5 | Materialize.scrollFire = function(options) { 6 | 7 | var didScroll = false; 8 | 9 | window.addEventListener("scroll", function() { 10 | didScroll = true; 11 | }); 12 | 13 | // Rate limit to 100ms 14 | setInterval(function() { 15 | if(didScroll) { 16 | didScroll = false; 17 | 18 | var windowScroll = window.pageYOffset + window.innerHeight; 19 | 20 | for (var i = 0 ; i < options.length; i++) { 21 | // Get options from each line 22 | var value = options[i]; 23 | var selector = value.selector, 24 | offset = value.offset, 25 | callback = value.callback; 26 | 27 | var currentElement = document.querySelector(selector); 28 | if ( currentElement !== null) { 29 | var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; 30 | 31 | if (windowScroll > (elementOffset + offset)) { 32 | if (value.done !== true) { 33 | if (typeof(callback) === 'function') { 34 | callback.call(this); 35 | } else if (typeof(callback) === 'string') { 36 | var callbackFunc = new Function(callback); 37 | callbackFunc(); 38 | } 39 | value.done = true; 40 | } 41 | } 42 | } 43 | } 44 | } 45 | }, 100); 46 | }; 47 | 48 | })(jQuery); 49 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Materialize", 3 | "description": "A modern responsive front-end framework based on Material Design", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "sass", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "ux", 13 | "material", 14 | "design" 15 | ], 16 | "main": [ 17 | "bin/materialize.css", 18 | "bin/materialize.js", 19 | "fonts/roboto/Roboto-Bold.ttf", 20 | "fonts/roboto/Roboto-Bold.woff", 21 | "fonts/roboto/Roboto-Bold.woff2", 22 | "fonts/roboto/Roboto-Light.ttf", 23 | "fonts/roboto/Roboto-Light.woff", 24 | "fonts/roboto/Roboto-Light.woff2", 25 | "fonts/roboto/Roboto-Medium.ttf", 26 | "fonts/roboto/Roboto-Medium.woff", 27 | "fonts/roboto/Roboto-Medium.woff2", 28 | "fonts/roboto/Roboto-Regular.ttf", 29 | "fonts/roboto/Roboto-Regular.woff", 30 | "fonts/roboto/Roboto-Regular.woff2", 31 | "fonts/roboto/Roboto-Thin.ttf", 32 | "fonts/roboto/Roboto-Thin.woff", 33 | "fonts/roboto/Roboto-Thin.woff2" 34 | ], 35 | "ignore": [ 36 | "jade/", 37 | ".gitignore", 38 | "CNAME", 39 | "css/", 40 | "bower.json", 41 | "README.md", 42 | "images/", 43 | "js/jquery.timeago.js", 44 | "js/init.js", 45 | "js/prism.js", 46 | "res/", 47 | "sass/style.scss", 48 | "sass/ghpages-materialize.scss", 49 | "**/*.html", 50 | "**/*.zip", 51 | "**/*.txt", 52 | "sitemap.xml", 53 | "package.json", 54 | "Gruntfile.js" 55 | ], 56 | "dependencies": { 57 | "jquery": ">=2.1.1" 58 | }, 59 | "devDependencies": { 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /jade/_head.jade: -------------------------------------------------------------------------------- 1 | meta(http-equiv='Content-Type', content='text/html; charset=UTF-8') 2 | meta(name='viewport', content='width=device-width, initial-scale=1') 3 | meta(http-equiv='X-UA-Compatible', content='IE=edge') 4 | meta(name='msapplication-tap-highlight', content='no') 5 | 6 | if meta_descript 7 | meta(name='description', content='#{meta_descript}') 8 | else 9 | meta(name='description', content='Materialize is a modern responsive CSS framework based on Material Design by Google. ') 10 | 11 | if page 12 | title #{page} - Materialize 13 | else 14 | title Documentation - Materialize 15 | 16 | 17 | // Favicons 18 | link(rel='apple-touch-icon-precomposed', href='images/favicon/apple-touch-icon-152x152.png') 19 | meta(name='msapplication-TileColor', content='#FFFFFF') 20 | meta(name='msapplication-TileImage', content='images/favicon/mstile-144x144.png') 21 | link(rel='icon', href='images/favicon/favicon-32x32.png', sizes='32x32') 22 | 23 | // Android 5 Chrome Color 24 | meta(name='theme-color', content='#EE6E73') 25 | // CSS 26 | link(href='css/prism.css', rel='stylesheet') 27 | link(href='css/ghpages-materialize.css', type='text/css', rel='stylesheet', media='screen,projection') 28 | link(href='http://fonts.googleapis.com/css?family=Inconsolata', rel='stylesheet', type='text/css') 29 | link(href='http://fonts.googleapis.com/icon?family=Material+Icons', rel='stylesheet') 30 | 31 | script. 32 | window.liveSettings = { 33 | api_key: "a0b49b34b93844c38eaee15690d86413", 34 | picker: "bottom-right", 35 | detectlang: true, 36 | dynamic: true, 37 | autocollect: true 38 | }; 39 | script(src='//cdn.transifex.com/live.js') 40 | -------------------------------------------------------------------------------- /_SpecRunner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Jasmine Spec Runner 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /jade/mobile/mobile_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 | 15 | 16 | 17 |
18 |

Toast

19 |

Swipe to Dismiss

20 |

On all devices, you can swipe to dismiss toasts.

21 | 22 | 23 |
24 |
25 |
26 |
27 |
28 | 29 | 30 |
31 |
32 | 36 |
37 |
38 |
39 |
40 | -------------------------------------------------------------------------------- /sass/components/_modal.scss: -------------------------------------------------------------------------------- 1 | .modal { 2 | @extend .z-depth-4; 3 | 4 | display: none; 5 | position: fixed; 6 | left: 0; 7 | right: 0; 8 | background-color: #fafafa; 9 | padding: 0; 10 | max-height: 70%; 11 | width: 55%; 12 | margin: auto; 13 | overflow-y: auto; 14 | 15 | border-radius: 2px; 16 | will-change: top, opacity; 17 | 18 | @media #{$medium-and-down} { 19 | width: 80%; 20 | } 21 | 22 | h1,h2,h3,h4 { 23 | margin-top: 0; 24 | } 25 | 26 | .modal-content { 27 | padding: 24px; 28 | } 29 | .modal-close { 30 | cursor: pointer; 31 | } 32 | 33 | .modal-footer { 34 | border-radius: 0 0 2px 2px; 35 | background-color: #fafafa; 36 | padding: 4px 6px; 37 | height: 56px; 38 | width: 100%; 39 | 40 | .btn, .btn-flat { 41 | float: right; 42 | margin: 6px 0; 43 | } 44 | } 45 | } 46 | .lean-overlay { 47 | position: fixed; 48 | z-index:999; 49 | top: -100px; 50 | left: 0; 51 | bottom: 0; 52 | right: 0; 53 | height: 125%; 54 | width: 100%; 55 | background: #000; 56 | display: none; 57 | 58 | will-change: opacity; 59 | } 60 | 61 | // Modal with fixed action footer 62 | .modal.modal-fixed-footer { 63 | padding: 0; 64 | height: 70%; 65 | 66 | .modal-content { 67 | position: absolute; 68 | height: calc(100% - 56px); 69 | max-height: 100%; 70 | width: 100%; 71 | overflow-y: auto; 72 | } 73 | 74 | .modal-footer { 75 | border-top: 1px solid rgba(0,0,0,.1); 76 | position: absolute; 77 | bottom: 0; 78 | } 79 | } 80 | 81 | // Modal Bottom Sheet Style 82 | .modal.bottom-sheet { 83 | top: auto; 84 | bottom: -100%; 85 | margin: 0; 86 | width: 100%; 87 | max-height: 45%; 88 | border-radius: 0; 89 | will-change: bottom, opacity; 90 | } 91 | -------------------------------------------------------------------------------- /sass/components/_typography.scss: -------------------------------------------------------------------------------- 1 | 2 | a { 3 | text-decoration: none; 4 | } 5 | 6 | html{ 7 | line-height: 1.5; 8 | 9 | @media only screen and (min-width: 0) { 10 | font-size: 14px; 11 | } 12 | 13 | @media only screen and (min-width: $medium-screen) { 14 | font-size: 14.5px; 15 | } 16 | 17 | @media only screen and (min-width: $large-screen) { 18 | font-size: 15px; 19 | } 20 | 21 | font-family: "Roboto", sans-serif; 22 | font-weight: normal; 23 | color: $off-black; 24 | } 25 | h1, h2, h3, h4, h5, h6 { 26 | font-weight: 400; 27 | line-height: 1.1; 28 | } 29 | 30 | // Header Styles 31 | h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } 32 | h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 2) 0 ($h1-fontsize / 2.5) 0;} 33 | h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 2) 0 ($h2-fontsize / 2.5) 0;} 34 | h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 2) 0 ($h3-fontsize / 2.5) 0;} 35 | h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 2) 0 ($h4-fontsize / 2.5) 0;} 36 | h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 2) 0 ($h5-fontsize / 2.5) 0;} 37 | h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 2) 0 ($h6-fontsize / 2.5) 0;} 38 | 39 | // Text Styles 40 | em { font-style: italic; } 41 | strong { font-weight: 500; } 42 | small { font-size: 75%; } 43 | .light { font-weight: 300; } 44 | .thin { font-weight: 200; } 45 | 46 | 47 | .flow-text{ 48 | font-weight: 300; 49 | $i: 0; 50 | @while $i <= $intervals { 51 | @media only screen and (min-width : 360 + ($i * $interval-size)) { 52 | font-size: 1.2rem * (1 + (.02 * $i)); 53 | } 54 | $i: $i + 1; 55 | } 56 | 57 | // Handle below 360px screen 58 | @media only screen and (max-width: 360px) { 59 | font-size: 1.2rem; 60 | } 61 | } -------------------------------------------------------------------------------- /test/html/materialbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Documentation - Materialize 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 | 16 |
17 |
18 | 19 |
20 |
21 | Materialbox inside card image 22 |
23 |
24 |
25 | 26 | 30 | 31 |
32 | 33 | 34 | 35 | 36 | 51 | 52 | -------------------------------------------------------------------------------- /sass/components/_slider.scss: -------------------------------------------------------------------------------- 1 | .slider { 2 | position: relative; 3 | height: 400px; 4 | width: 100%; 5 | 6 | // Fullscreen slider 7 | &.fullscreen { 8 | height: 100%; 9 | width: 100%; 10 | position: absolute; 11 | top: 0; 12 | left: 0; 13 | right: 0; 14 | bottom: 0; 15 | 16 | ul.slides { 17 | height: 100%; 18 | } 19 | 20 | ul.indicators { 21 | z-index: 2; 22 | bottom: 30px; 23 | } 24 | } 25 | 26 | .slides { 27 | background-color: $slider-bg-color; 28 | margin: 0; 29 | height: 400px; 30 | 31 | li { 32 | opacity: 0; 33 | position: absolute; 34 | top: 0; 35 | left: 0; 36 | z-index: 1; 37 | width: 100%; 38 | height: inherit; 39 | overflow: hidden; 40 | 41 | img { 42 | height: 100%; 43 | width: 100%; 44 | background-size: cover; 45 | background-position: center; 46 | } 47 | 48 | .caption { 49 | color: #fff; 50 | position: absolute; 51 | top: 15%; 52 | left: 15%; 53 | width: 70%; 54 | opacity: 0; 55 | 56 | p { color: $slider-bg-color-light; } 57 | } 58 | 59 | &.active { 60 | z-index: 2; 61 | } 62 | } 63 | } 64 | 65 | 66 | .indicators { 67 | position: absolute; 68 | text-align: center; 69 | left: 0; 70 | right: 0; 71 | bottom: 0; 72 | margin: 0; 73 | 74 | .indicator-item { 75 | display: inline-block; 76 | position: relative; 77 | cursor: pointer; 78 | height: 16px; 79 | width: 16px; 80 | margin: 0 12px; 81 | background-color: $slider-bg-color-light; 82 | 83 | transition: background-color .3s; 84 | border-radius: 50%; 85 | 86 | &.active { 87 | background-color: $slider-indicator-color; 88 | } 89 | } 90 | } 91 | 92 | } -------------------------------------------------------------------------------- /js/pushpin.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $.fn.pushpin = function (options) { 3 | 4 | var defaults = { 5 | top: 0, 6 | bottom: Infinity, 7 | offset: 0 8 | }; 9 | options = $.extend(defaults, options); 10 | 11 | $index = 0; 12 | return this.each(function() { 13 | var $uniqueId = Materialize.guid(), 14 | $this = $(this), 15 | $original_offset = $(this).offset().top; 16 | 17 | function removePinClasses(object) { 18 | object.removeClass('pin-top'); 19 | object.removeClass('pinned'); 20 | object.removeClass('pin-bottom'); 21 | } 22 | 23 | function updateElements(objects, scrolled) { 24 | objects.each(function () { 25 | // Add position fixed (because its between top and bottom) 26 | if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { 27 | removePinClasses($(this)); 28 | $(this).css('top', options.offset); 29 | $(this).addClass('pinned'); 30 | } 31 | 32 | // Add pin-top (when scrolled position is above top) 33 | if (scrolled < options.top && !$(this).hasClass('pin-top')) { 34 | removePinClasses($(this)); 35 | $(this).css('top', 0); 36 | $(this).addClass('pin-top'); 37 | } 38 | 39 | // Add pin-bottom (when scrolled position is below bottom) 40 | if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { 41 | removePinClasses($(this)); 42 | $(this).addClass('pin-bottom'); 43 | $(this).css('top', options.bottom - $original_offset); 44 | } 45 | }); 46 | } 47 | 48 | updateElements($this, $(window).scrollTop()); 49 | $(window).on('scroll.' + $uniqueId, function () { 50 | var $scrolled = $(window).scrollTop() + options.offset; 51 | updateElements($this, $scrolled); 52 | }); 53 | 54 | }); 55 | 56 | }; 57 | }( jQuery )); -------------------------------------------------------------------------------- /tests/spec/collapsible/collapsible.html: -------------------------------------------------------------------------------- 1 | 15 | 16 | 30 | 31 | -------------------------------------------------------------------------------- /jade/page-contents/parallax_demo_content.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 15 |
16 | 17 |
18 |
19 |
20 |
21 |
22 |

Parallax

23 |

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

24 |
25 |
26 |

Parallax Demo HTML

27 |

28 |   <div class="parallax-container">
29 |     <div class="parallax"><img src="images/parallax1.jpg"></div>
30 |   </div>
31 |   <div class="section white">
32 |     <div class="row container">
33 |       <h2 class="header">Parallax</h2>
34 |       <p class="grey-text text-darken-3 lighten-3">Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.</p>
35 |     </div>
36 |   </div>
37 |   <div class="parallax-container">
38 |     <div class="parallax"><img src="images/parallax2.jpg"></div>
39 |   </div>
40 |       
41 |
42 |
43 |
44 |
45 |
-------------------------------------------------------------------------------- /jade/page-contents/breadcrumbs_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 | 7 |
8 | 9 |
10 |
11 |

Breadcrumbs are a good way to display your current location. This is usually used when you have multiple layers of content.

12 |

Basic

13 | 14 | 23 | 24 |

25 |

26 |   <nav>
27 |     <div class="nav-wrapper">
28 |       <div class="col s12">
29 |         <a href="#!" class="breadcrumb">First</a>
30 |         <a href="#!" class="breadcrumb">Second</a>
31 |         <a href="#!" class="breadcrumb">Third</a>
32 |       </div>
33 |     </div>
34 |   </nav>
35 |             
36 |
37 |
38 |
39 |
40 | 41 | 42 | 43 |
44 | 45 |
46 |
47 |
48 | 49 | 50 |
51 |
52 | 55 |
56 |
57 |
58 | 59 |
60 |
61 | 62 | -------------------------------------------------------------------------------- /js/parallax.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 3 | $.fn.parallax = function () { 4 | var window_width = $(window).width(); 5 | // Parallax Scripts 6 | return this.each(function(i) { 7 | var $this = $(this); 8 | $this.addClass('parallax'); 9 | 10 | function updateParallax(initial) { 11 | var container_height; 12 | if (window_width < 601) { 13 | container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); 14 | } 15 | else { 16 | container_height = ($this.height() > 0) ? $this.height() : 500; 17 | } 18 | var $img = $this.children("img").first(); 19 | var img_height = $img.height(); 20 | var parallax_dist = img_height - container_height; 21 | var bottom = $this.offset().top + container_height; 22 | var top = $this.offset().top; 23 | var scrollTop = $(window).scrollTop(); 24 | var windowHeight = window.innerHeight; 25 | var windowBottom = scrollTop + windowHeight; 26 | var percentScrolled = (windowBottom - top) / (container_height + windowHeight); 27 | var parallax = Math.round((parallax_dist * percentScrolled)); 28 | 29 | if (initial) { 30 | $img.css('display', 'block'); 31 | } 32 | if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { 33 | $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); 34 | } 35 | 36 | } 37 | 38 | // Wait for image load 39 | $this.children("img").one("load", function() { 40 | updateParallax(true); 41 | }).each(function() { 42 | if(this.complete) $(this).load(); 43 | }); 44 | 45 | $(window).scroll(function() { 46 | window_width = $(window).width(); 47 | updateParallax(false); 48 | }); 49 | 50 | $(window).resize(function() { 51 | window_width = $(window).width(); 52 | updateParallax(false); 53 | }); 54 | 55 | }); 56 | 57 | }; 58 | }( jQuery )); -------------------------------------------------------------------------------- /jade/page-contents/chips_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |

Introduction

8 |

9 | Chips can be used to represent small blocks of information. They are most commonly used either for contacts or for tags. 10 |

11 |
12 | Contact Person 13 | Jane Doe 14 |
15 |
16 | Tag 17 | close 18 |
19 |
20 | 21 |
22 |

Contacts

23 |

24 | To create a contact chip just add an img inside. 25 |

26 |

27 |   <div class="chip">
28 |     <img src="images/yuna.jpg" alt="Contact Person">
29 |     Jane Doe
30 |   </div>
31 |         
32 |
33 | 34 |
35 |

Tags

36 |

37 | To create a tag chip just add an close icon inside. 38 |

39 |

40 |   <div class="chip">
41 |     Tag
42 |     <i class="material-icons">close</i>
43 |   </div>
44 |         
45 |
46 | 47 |
48 | 49 | 50 | 51 |
52 |
53 |
54 | 55 | 56 |
57 |
58 | 62 |
63 |
64 |
65 | 66 |
67 |
68 | 69 | -------------------------------------------------------------------------------- /sass/components/forms/_switches.scss: -------------------------------------------------------------------------------- 1 | /* Switch 2 | ========================================================================== */ 3 | 4 | .switch, 5 | .switch * { 6 | -webkit-user-select: none; 7 | -moz-user-select: none; 8 | -khtml-user-select: none; 9 | -ms-user-select: none; 10 | } 11 | 12 | .switch label { 13 | cursor: pointer; 14 | } 15 | 16 | .switch label input[type=checkbox] { 17 | opacity: 0; 18 | width: 0; 19 | height: 0; 20 | 21 | &:checked + .lever { 22 | background-color: $switch-checked-lever-bg; 23 | 24 | &:after { 25 | background-color: $switch-bg-color; 26 | left: 24px; 27 | } 28 | } 29 | } 30 | 31 | .switch label .lever { 32 | content: ""; 33 | display: inline-block; 34 | position: relative; 35 | width: 40px; 36 | height: 15px; 37 | background-color: $switch-unchecked-lever-bg; 38 | border-radius: $switch-radius; 39 | margin-right: 10px; 40 | transition: background 0.3s ease; 41 | vertical-align: middle; 42 | margin: 0 16px; 43 | 44 | &:after { 45 | content: ""; 46 | position: absolute; 47 | display: inline-block; 48 | width: 21px; 49 | height: 21px; 50 | background-color: $switch-unchecked-bg; 51 | border-radius: 21px; 52 | box-shadow: 0 1px 3px 1px rgba(0,0,0,.4); 53 | left: -5px; 54 | top: -3px; 55 | transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; 56 | } 57 | } 58 | 59 | // Switch active style 60 | input[type=checkbox]:checked:not(:disabled) ~ .lever:active::after, 61 | input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::after { 62 | box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px transparentize($switch-bg-color, .9); 63 | } 64 | 65 | input[type=checkbox]:not(:disabled) ~ .lever:active:after, 66 | input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after { 67 | box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px rgba(0, 0, 0, .08); 68 | } 69 | 70 | // Disabled Styles 71 | .switch input[type=checkbox][disabled] + .lever { 72 | cursor: default; 73 | } 74 | 75 | .switch label input[type=checkbox][disabled] + .lever:after, 76 | .switch label input[type=checkbox][disabled]:checked + .lever:after { 77 | background-color: $input-disabled-solid-color; 78 | } 79 | -------------------------------------------------------------------------------- /js/character_counter.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 3 | $.fn.characterCounter = function(){ 4 | return this.each(function(){ 5 | var $input = $(this); 6 | var $counterElement = $input.parent().find('span[class="character-counter"]'); 7 | 8 | // character counter has already been added appended to the parent container 9 | if ($counterElement.length) { 10 | return; 11 | } 12 | 13 | var itHasLengthAttribute = $input.attr('length') !== undefined; 14 | 15 | if(itHasLengthAttribute){ 16 | $input.on('input', updateCounter); 17 | $input.on('focus', updateCounter); 18 | $input.on('blur', removeCounterElement); 19 | 20 | addCounterElement($input); 21 | } 22 | 23 | }); 24 | }; 25 | 26 | function updateCounter(){ 27 | var maxLength = +$(this).attr('length'), 28 | actualLength = +$(this).val().length, 29 | isValidLength = actualLength <= maxLength; 30 | 31 | $(this).parent().find('span[class="character-counter"]') 32 | .html( actualLength + '/' + maxLength); 33 | 34 | addInputStyle(isValidLength, $(this)); 35 | } 36 | 37 | function addCounterElement($input) { 38 | var $counterElement = $input.parent().find('span[class="character-counter"]'); 39 | 40 | if ($counterElement.length) { 41 | return; 42 | } 43 | 44 | $counterElement = $('') 45 | .addClass('character-counter') 46 | .css('float','right') 47 | .css('font-size','12px') 48 | .css('height', 1); 49 | 50 | $input.parent().append($counterElement); 51 | } 52 | 53 | function removeCounterElement(){ 54 | $(this).parent().find('span[class="character-counter"]').html(''); 55 | } 56 | 57 | function addInputStyle(isValidLength, $input){ 58 | var inputHasInvalidClass = $input.hasClass('invalid'); 59 | if (isValidLength && inputHasInvalidClass) { 60 | $input.removeClass('invalid'); 61 | } 62 | else if(!isValidLength && !inputHasInvalidClass){ 63 | $input.removeClass('valid'); 64 | $input.addClass('invalid'); 65 | } 66 | } 67 | 68 | $(document).ready(function(){ 69 | $('input, textarea').characterCounter(); 70 | }); 71 | 72 | }( jQuery )); 73 | -------------------------------------------------------------------------------- /tests/spec/toast/toastSpec.js: -------------------------------------------------------------------------------- 1 | describe( 'Toasts:', function() { 2 | var toastOutDuration = 375; 3 | var toastInDuration = 300; 4 | var toast; 5 | 6 | describe('Toast javascript functions', function() { 7 | // Toast out animation duration does not count as part of its timer. 8 | it('should display and remove a toast', function(done) { 9 | Materialize.toast('Test toast', toastInDuration); 10 | 11 | setTimeout(function() { 12 | toast = $('.toast'); 13 | expect(toast.length).toBe(1); 14 | expect(toast).toBeVisible(); 15 | expect(toast.text()).toBe('Test toast'); 16 | setTimeout(function() { 17 | toast = $('.toast'); 18 | expect(toast).toBeVisible(); 19 | expect(toast.length).toBe(1, 'because toast duration still on going'); 20 | setTimeout(function() { 21 | toast = $('.toast'); 22 | expect(toast.length).toBe(0, 'because toast should be removed by now'); 23 | done(); 24 | }, toastOutDuration + 90); // .1s leeway is given 25 | }, 10); 26 | }, toastInDuration); 27 | }); 28 | 29 | it('Opens a toast with HTML content', function() { 30 | var $toastContent = $('I am toast content'); 31 | Materialize.toast($toastContent, 400); 32 | toast = $('.toast'); 33 | expect(toast.first('span').text()).toBe('I am toast content'); 34 | expect(toast.first('span').text()).not.toBe('I am toast') 35 | }); 36 | 37 | it('Toasts should call the callback function when dismissed', 38 | function(done) { 39 | var boolObj = {wasCalled: false}; 40 | var callback = function() { 41 | boolObj.wasCalled = true; 42 | }; 43 | Materialize.toast('I am a toast', 100, '', callback); 44 | setTimeout(function() { 45 | expect(boolObj.wasCalled).toBe(true, 46 | 'because the callback set it to true'); 47 | done(); 48 | }, 500); 49 | }); 50 | 51 | it('Apply two custom class to a toast', function() { 52 | Materialize.toast('Hi', 400, 'round flat'); 53 | toast = $('.toast'); 54 | expect(toast.closest('.round.flat').length).toBe(1, 55 | 'because the class parameter was passed with two classes'); 56 | }); 57 | 58 | }); 59 | 60 | 61 | }); 62 | -------------------------------------------------------------------------------- /sass/components/_collapsible.scss: -------------------------------------------------------------------------------- 1 | .collapsible { 2 | border-top: 1px solid $collapsible-border-color; 3 | border-right: 1px solid $collapsible-border-color; 4 | border-left: 1px solid $collapsible-border-color; 5 | margin: $element-top-margin 0 $element-bottom-margin 0; 6 | @extend .z-depth-1; 7 | } 8 | 9 | .collapsible-header { 10 | display: block; 11 | cursor: pointer; 12 | min-height: $collapsible-height; 13 | line-height: $collapsible-height; 14 | padding: 0 1rem; 15 | background-color: $collapsible-header-color; 16 | border-bottom: 1px solid $collapsible-border-color; 17 | 18 | i { 19 | width: 2rem; 20 | font-size: 1.6rem; 21 | line-height: $collapsible-height; 22 | display: block; 23 | float: left; 24 | text-align: center; 25 | margin-right: 1rem; 26 | } 27 | } 28 | 29 | .collapsible-body { 30 | display: none; 31 | border-bottom: 1px solid $collapsible-border-color; 32 | box-sizing: border-box; 33 | 34 | p { 35 | margin: 0; 36 | padding: 2rem; 37 | } 38 | } 39 | 40 | // sideNav collapsible styling 41 | .side-nav, 42 | .side-nav.fixed { 43 | 44 | .collapsible { 45 | border: none; 46 | box-shadow: none; 47 | 48 | li { padding: 0; } 49 | } 50 | 51 | .collapsible-header { 52 | background-color: transparent; 53 | border: none; 54 | line-height: inherit; 55 | height: inherit; 56 | padding: 0 $sidenav-padding-right; 57 | 58 | &:hover { background-color: rgba(0,0,0,.05); } 59 | i { line-height: inherit; } 60 | } 61 | 62 | .collapsible-body { 63 | border: 0; 64 | background-color: $collapsible-header-color; 65 | 66 | li a { 67 | padding: 0 (7.5px + $sidenav-padding-right) 68 | 0 (15px + $sidenav-padding-right); 69 | } 70 | } 71 | 72 | } 73 | 74 | // Popout Collapsible 75 | 76 | .collapsible.popout { 77 | border: none; 78 | box-shadow: none; 79 | > li { 80 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); 81 | // transform: scaleX(.92); 82 | margin: 0 24px; 83 | transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940); 84 | } 85 | > li.active { 86 | box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); 87 | margin: 16px 0; 88 | // transform: scaleX(1); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /jade/parallax/parallax_content.html: -------------------------------------------------------------------------------- 1 |
2 | 18 |
19 | 20 |
21 | 22 |
23 |
24 |
25 |
26 |
27 |

Parallax

28 |

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

29 |
30 |
31 |

Parallax Demo HTML

32 |

33 |   <div class="parallax-container">
34 |     <div class="parallax"><img src="images/parallax1.jpg"></div>
35 |   </div>
36 |   <div class="section white">
37 |     <div class="row container">
38 |       <h2 class="header">Parallax</h2>
39 |       <p class="grey-text text-darken-3 lighten-3">Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.</p>
40 |     </div>
41 |   </div>
42 |   <div class="parallax-container">
43 |     <div class="parallax"><img src="images/parallax2.jpg"></div>
44 |   </div>
45 |       
46 |
47 |
48 |
49 |
50 |
51 | -------------------------------------------------------------------------------- /sass/components/_roboto.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Roboto"; 3 | src: local(Roboto Thin), url('#{$roboto-font-path}Roboto-Thin.eot'); 4 | src: url("#{$roboto-font-path}Roboto-Thin.eot?#iefix") format('embedded-opentype'), 5 | url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"), 6 | url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"), 7 | url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype"); 8 | 9 | font-weight: 200; 10 | } 11 | @font-face { 12 | font-family: "Roboto"; 13 | src: local(Roboto Light), url('#{$roboto-font-path}Roboto-Light.eot'); 14 | src: url("#{$roboto-font-path}Roboto-Light.eot?#iefix") format('embedded-opentype'), 15 | url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"), 16 | url("#{$roboto-font-path}Roboto-Light.woff") format("woff"), 17 | url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype"); 18 | font-weight: 300; 19 | } 20 | 21 | @font-face { 22 | font-family: "Roboto"; 23 | src: local(Roboto Regular), url('#{$roboto-font-path}Roboto-Regular.eot'); 24 | src: url("#{$roboto-font-path}Roboto-Regular.eot?#iefix") format('embedded-opentype'), 25 | url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"), 26 | url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"), 27 | url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype"); 28 | font-weight: 400; 29 | } 30 | 31 | @font-face { 32 | font-family: "Roboto"; 33 | src: url('#{$roboto-font-path}Roboto-Medium.eot'); 34 | src: url("#{$roboto-font-path}Roboto-Medium.eot?#iefix") format('embedded-opentype'), 35 | url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"), 36 | url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"), 37 | url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype"); 38 | font-weight: 500; 39 | } 40 | 41 | @font-face { 42 | font-family: "Roboto"; 43 | src: url('#{$roboto-font-path}Roboto-Bold.eot'); 44 | src: url("#{$roboto-font-path}Roboto-Bold.eot?#iefix") format('embedded-opentype'), 45 | url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"), 46 | url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"), 47 | url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype"); 48 | font-weight: 700; 49 | } 50 | -------------------------------------------------------------------------------- /test/html/tabs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Materialize - Documentation 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | 40 |
41 | 42 |
43 |
Test 1
44 |
Test 2
45 |
Test 3
46 |
Test 4
47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # INSTALL 2 | ``` 3 | $ meteor add fourseven:scss 4 | $ meteor add poetic:materialize-scss 5 | $ meteor remove materialize:materialize # if you have materialize installed 6 | ``` 7 | 8 | # SCSS 9 | Add the following lines to your last-loaded scss file (E.G. main.scss): 10 | ``` 11 | // If you want to override materialize sass variables you can uncomment the following: 12 | // @import "{poetic:materialize-scss}/sass/components/_color.scss"; 13 | // $primary-color: color("blue", "lighten-2"); 14 | 15 | // import main scss file 16 | @import "{poetic:materialize-scss}/sass/materialize.scss"; 17 | ``` 18 | 19 | # ICONS 20 | Icons are automatically imported from this package. 21 | 22 | You do NOT have to add an additional head element mentioned at http://materializecss.com/icons.html. 23 | 24 | Read more about the MaterialIcons at https://google.github.io/material-design-icons/ 25 | 26 | # JAVASCRIPT 27 | Javascript is automatically imported from this package. 28 | 29 | # CHANGE LOG 30 | 31 | - 2016-04-18 update to materializecss [0.97.6](https://github.com/Dogfalo/materialize/tree/v0.97.6#changelog) 32 | - 2016-01-28 update to materializecss [0.97.5](https://github.com/Dogfalo/materialize/tree/v0.97.5#changelog) 33 | - 2015-11-22 update to materializecss [0.97.3](https://github.com/Dogfalo/materialize/tree/v0.97.3#changelog) 34 | - We rewrote the package as a fork and archived the previous gitrop. If you are looking for code in a version lower than 1.97.3, please check the archived [repo](https://github.com/poetic/meteor-materialize-sass-archived). (*Breaking*) 35 | 36 | - 2015-10-01 update package for METEOR@1.2 (*Breaking*) 37 | - fourseven:scss is updated to 3.3.3_1 38 | - scss.json is not used anymore. 39 | - index.scss is not autoupdated anymore, you need to manullay update index.scss. 40 | 41 | - 2015-06-26 upgrade to [0.97.0](https://github.com/Dogfalo/materialize/tree/v0.97.0#changelog) 42 | - Icon Change (*Breaking*): 43 | 44 | `````` is still supported. 45 | 46 | However you should use ```add``` instead as 47 | metioned in the materialize [doc](http://materializecss.com/icons.html). 48 | 49 | # FOR MAINTAINERS 50 | 51 | - HOW TO UPDATE TO NEW VERSIONS OF MATERIALIZECSS 52 | ``` 53 | git checkout master 54 | git pull https://github.com/Dogfalo/materialize.git master --tags 55 | git checkout meteor 56 | git rebase master 57 | // check if we need to add new files to package.js 58 | // change meteor package version 59 | // test 60 | meteor publish 61 | ``` 62 | -------------------------------------------------------------------------------- /jade/page-contents/pushpin_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |

Introduction

8 |

Pushpin is our fixed positioning plugin. You can check out our live examples: the fixed Table of Contents on the right.

9 |
10 | 11 | 12 | 13 |
14 |

jQuery Plugin Initialization

15 |

16 |   $(document).ready(function(){
17 |     $('.tabs-wrapper .row').pushpin({ top: $('.tabs-wrapper').offset().top });
18 |   });
19 |         
20 |
21 | 22 | 23 | 24 |
25 |

jQuery Plugin Options

26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
Option NameDescription
TopThe distance in pixels from the top of the page where the element becomes fixed. (Default: 0)
BottomThe distance in pixels from the top of the page where the elements stops being fixed. (Default: Infinity)
OffsetThe offset from the top the element will be fixed at. (Default: 0)
49 |
50 | 51 |
52 | 53 | 54 | 55 |
56 |
57 |
58 | 59 | 60 |
61 |
62 | 67 |
68 |
69 |
70 | 71 |
72 |
73 | -------------------------------------------------------------------------------- /jade/page-contents/parallax_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 | 7 |
8 |

Introduction

9 |

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling. Check out the demo to get a better idea of it.

10 | Open Demo 11 |
12 | 13 | 14 | 15 |
16 |

Parallax HTML Structure

17 |

18 |     <div class="parallax-container">
19 |       <div class="parallax"><img src="images/parallax1.jpg"></div>
20 |     </div>
21 |         
22 |
23 | 24 | 25 | 26 |
27 |

Initialization

28 |

29 |     $(document).ready(function(){
30 |       $('.parallax').parallax();
31 |     });
32 |         
33 |
34 | 35 | 36 | 37 |
38 |

Parallax Customization

39 |

The parallax container height is what defines how much of the image can be seen. This is set to a default of 500px. You can add your own style to override this.

40 |

41 |     .parallax-container {
42 |       height: "your height here";
43 |     }
44 |         
45 |
46 | 47 |
48 | 49 | 50 | 51 |
52 |
53 |
54 | 55 | 56 |
57 |
58 | 64 |
65 |
66 |
67 | 68 |
69 |
70 | 71 | -------------------------------------------------------------------------------- /test/html/multiple_sidenav.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Materialize - Documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 47 | 48 | 49 | 50 | 51 | 52 | 58 | 59 | -------------------------------------------------------------------------------- /jade/page-contents/scrollspy_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |

Introduction

8 |

Scrollspy is a jQuery plugin that tracks certain elements and which element the user's screen is currently centered on. Our main demo of this is our table of contents on every documentation page to the right. Clicking on these links will also scroll the page to that element.

9 |
10 | 11 |
12 |

Table of Contents Structure

13 |

14 |   <div class="row">
15 |     <div class="col s12 m9 l10">
16 |       <div id="introduction" class="section scrollspy">
17 |         <p>Content </p>
18 |       </div>
19 | 
20 |       <div id="structure" class="section scrollspy">
21 |         <p>Content </p>
22 |       </div>
23 | 
24 |       <div id="initialization" class="section scrollspy">
25 |         <p>Content </p>
26 |       </div>
27 |     </div>
28 |     <div class="col hide-on-small-only m3 l2">
29 |       <ul class="section table-of-contents">
30 |         <li><a href="#introduction">Introduction</a></li>
31 |         <li><a href="#structure">Structure</a></li>
32 |         <li><a href="#initialization">Intialization</a></li>
33 |       </ul>
34 |     </div>
35 |   </div>
36 |         
37 |
38 | 39 | 40 | 41 |
42 |

jQuery Plugin Initialization

43 |

44 |   $(document).ready(function(){
45 |     $('.scrollspy').scrollSpy();
46 |   });
47 |         
48 |
49 | 50 |
51 | 52 | 53 |
54 |
55 |
56 | 57 | 58 |
59 |
60 | 65 |
66 |
67 |
68 | 69 |
70 |
71 | 72 | -------------------------------------------------------------------------------- /jade/page-contents/shadow_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |

In material design, everything should have a certain z-depth that determines how far raised or close to the page the element is.

8 |

You can easily apply this shadow effect by adding a class="z-depth-2" to an HTML tag. Alternatively you can extend any of these shadows with Sass using @extend .z-depth-2. A z-depth-0 can be used to remove shadows from elements that have z-depths by default.

9 |
10 |
11 |

12 |
13 |
14 |

15 |
16 |
17 |

18 |
19 |
20 |

21 |
22 |
23 |

24 |
25 |
26 |

27 |
28 |
29 |

30 |     <div class="col s12 m2">
31 |       <p class="z-depth-1">z-depth-1</p>
32 |     </div>
33 |     <div class="col s12 m2">
34 |       <p class="z-depth-2">z-depth-2</p>
35 |     </div>
36 |     <div class="col s12 m2">
37 |       <p class="z-depth-3">z-depth-3</p>
38 |     </div>
39 |     <div class="col s12 m2">
40 |       <p class="z-depth-4">z-depth-4</p>
41 |     </div>
42 |     <div class="col s12 m2">
43 |       <p class="z-depth-5">z-depth-5</p>
44 |     </div>
45 |         
46 |
47 |
48 | 49 |
50 |
51 |
52 | 53 | 54 |
55 |
56 | 59 |
60 |
61 |
62 | 63 |
64 |
-------------------------------------------------------------------------------- /js/buttons.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $(document).ready(function() { 3 | 4 | // jQuery reverse 5 | $.fn.reverse = [].reverse; 6 | 7 | // Hover behaviour: make sure this doesn't work on .click-to-toggle FABs! 8 | $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle)', function(e) { 9 | var $this = $(this); 10 | openFABMenu($this); 11 | }); 12 | $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle)', function(e) { 13 | var $this = $(this); 14 | closeFABMenu($this); 15 | }); 16 | 17 | // Toggle-on-click behaviour. 18 | $(document).on('click.fixedActionBtn', '.fixed-action-btn.click-to-toggle > a', function(e) { 19 | var $this = $(this); 20 | var $menu = $this.parent(); 21 | if ($menu.hasClass('active')) { 22 | closeFABMenu($menu); 23 | } else { 24 | openFABMenu($menu); 25 | } 26 | }); 27 | 28 | }); 29 | 30 | $.fn.extend({ 31 | openFAB: function() { 32 | openFABMenu($(this)); 33 | }, 34 | closeFAB: function() { 35 | closeFABMenu($(this)); 36 | } 37 | }); 38 | 39 | 40 | var openFABMenu = function (btn) { 41 | $this = btn; 42 | if ($this.hasClass('active') === false) { 43 | 44 | // Get direction option 45 | var horizontal = $this.hasClass('horizontal'); 46 | var offsetY, offsetX; 47 | 48 | if (horizontal === true) { 49 | offsetX = 40; 50 | } else { 51 | offsetY = 40; 52 | } 53 | 54 | $this.addClass('active'); 55 | $this.find('ul .btn-floating').velocity( 56 | { scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, 57 | { duration: 0 }); 58 | 59 | var time = 0; 60 | $this.find('ul .btn-floating').reverse().each( function () { 61 | $(this).velocity( 62 | { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'}, 63 | { duration: 80, delay: time }); 64 | time += 40; 65 | }); 66 | } 67 | }; 68 | 69 | var closeFABMenu = function (btn) { 70 | $this = btn; 71 | // Get direction option 72 | var horizontal = $this.hasClass('horizontal'); 73 | var offsetY, offsetX; 74 | 75 | if (horizontal === true) { 76 | offsetX = 40; 77 | } else { 78 | offsetY = 40; 79 | } 80 | 81 | $this.removeClass('active'); 82 | var time = 0; 83 | $this.find('ul .btn-floating').velocity("stop", true); 84 | $this.find('ul .btn-floating').velocity( 85 | { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'}, 86 | { duration: 80 } 87 | ); 88 | }; 89 | 90 | 91 | }( jQuery )); 92 | -------------------------------------------------------------------------------- /sass/components/forms/_select.scss: -------------------------------------------------------------------------------- 1 | /* Select Field 2 | ========================================================================== */ 3 | 4 | select { display: none; } 5 | select.browser-default { display: block; } 6 | 7 | select { 8 | background-color: $select-background; 9 | width: 100%; 10 | padding: $select-padding; 11 | border: $select-border; 12 | border-radius: $select-radius; 13 | height: $input-height; 14 | } 15 | 16 | .select-label { 17 | position: absolute; 18 | } 19 | 20 | .select-wrapper { 21 | position: relative; 22 | 23 | input.select-dropdown { 24 | position: relative; 25 | cursor: pointer; 26 | background-color: transparent; 27 | border: none; 28 | border-bottom: $input-border; 29 | outline: none; 30 | height: $input-height; 31 | line-height: $input-height; 32 | width: 100%; 33 | font-size: $input-font-size; 34 | margin: $input-margin; 35 | padding: 0; 36 | display: block; 37 | } 38 | 39 | span.caret { 40 | color: initial; 41 | position: absolute; 42 | right: 0; 43 | top: 16px; 44 | font-size: 10px; 45 | &.disabled { 46 | color: $input-disabled-color; 47 | } 48 | } 49 | 50 | & + label { 51 | position: absolute; 52 | top: -14px; 53 | font-size: $label-font-size; 54 | } 55 | } 56 | 57 | // Disabled styles 58 | select:disabled { 59 | color: rgba(0,0,0,.3); 60 | } 61 | 62 | .select-wrapper input.select-dropdown:disabled { 63 | color: rgba(0,0,0,.3); 64 | cursor: default; 65 | -webkit-user-select: none; /* webkit (safari, chrome) browsers */ 66 | -moz-user-select: none; /* mozilla browsers */ 67 | -ms-user-select: none; /* IE10+ */ 68 | border-bottom: 1px solid rgba(0,0,0,.3); 69 | } 70 | 71 | .select-wrapper i { 72 | color: $select-disabled-color; 73 | } 74 | 75 | .select-dropdown li.disabled, 76 | .select-dropdown li.disabled > span, 77 | .select-dropdown li.optgroup { 78 | color: $select-disabled-color; 79 | background-color: transparent; 80 | } 81 | 82 | // Prefix Icons 83 | .prefix ~ .select-wrapper { 84 | margin-left: 3rem; 85 | width: 92%; 86 | width: calc(100% - 3rem); 87 | } 88 | 89 | .prefix ~ label { margin-left: 3rem; } 90 | 91 | // Icons 92 | .select-dropdown li { 93 | img { 94 | height: $dropdown-item-height - 10; 95 | width: $dropdown-item-height - 10; 96 | margin: 5px 15px; 97 | float: right; 98 | } 99 | } 100 | 101 | // Optgroup styles 102 | .select-dropdown li.optgroup { 103 | border-top: 1px solid $dropdown-hover-bg-color; 104 | 105 | &.selected > span { 106 | color: rgba(0, 0, 0, .7); 107 | } 108 | 109 | & > span { 110 | color: rgba(0, 0, 0, .4); 111 | } 112 | 113 | & ~ li.optgroup-option { 114 | padding-left: 1rem; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /jade/page-contents/pagination_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 | 7 |
8 | 9 |
10 |
11 |

Add pagination links to help split up your long content into shorter, easier to understand blocks.

12 |

Basic

13 | 26 |

27 |

28 |   <ul class="pagination">
29 |     <li class="disabled"><a href="#!"><i class="material-icons">chevron_left</i></a></li>
30 |     <li class="active"><a href="#!">1</a></li>
31 |     <li class="waves-effect"><a href="#!">2</a></li>
32 |     <li class="waves-effect"><a href="#!">3</a></li>
33 |     <li class="waves-effect"><a href="#!">4</a></li>
34 |     <li class="waves-effect"><a href="#!">5</a></li>
35 |     <li class="waves-effect"><a href="#!"><i class="material-icons">chevron_right</i></a></li>
36 |   </ul>
37 |             
38 |
39 |
40 |
41 |
42 | 43 | 44 | 45 |
46 | 47 |
48 |
49 |
50 | 51 | 52 |
53 |
54 | 57 |
58 |
59 |
60 | 61 |
62 |
63 | 64 | -------------------------------------------------------------------------------- /css/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+scss+bash */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | /* text-shadow: 0 1px white;*/ 12 | font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace; 13 | direction: ltr; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | line-height: 1.4; 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | } 29 | 30 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 31 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 32 | text-shadow: none; 33 | background: #b3d4fc; 34 | } 35 | 36 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 37 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 38 | text-shadow: none; 39 | background: #b3d4fc; 40 | } 41 | 42 | @media print { 43 | code[class*="language-"], 44 | pre[class*="language-"] { 45 | text-shadow: none; 46 | } 47 | } 48 | 49 | /* Code blocks */ 50 | pre[class*="language-"] { 51 | padding: 1em; 52 | margin: .5em 0; 53 | overflow: auto; 54 | } 55 | 56 | :not(pre) > code[class*="language-"], 57 | pre[class*="language-"] { 58 | background: #f5f2f0; 59 | } 60 | 61 | /* Inline code */ 62 | :not(pre) > code[class*="language-"] { 63 | padding: .1em; 64 | border-radius: .3em; 65 | } 66 | 67 | .token.comment, 68 | .token.prolog, 69 | .token.doctype, 70 | .token.cdata { 71 | color: slategray; 72 | } 73 | 74 | .token.punctuation { 75 | color: #999; 76 | } 77 | 78 | .namespace { 79 | opacity: .7; 80 | } 81 | 82 | .token.property, 83 | .token.tag, 84 | .token.boolean, 85 | .token.number, 86 | .token.constant, 87 | .token.symbol, 88 | .token.deleted { 89 | color: #905; 90 | } 91 | 92 | .token.selector, 93 | .token.attr-name, 94 | .token.string, 95 | .token.char, 96 | .token.builtin, 97 | .token.inserted { 98 | color: #690; 99 | } 100 | 101 | .token.operator, 102 | .token.entity, 103 | .token.url, 104 | .language-css .token.string, 105 | .style .token.string { 106 | color: #a67f59; 107 | background: hsla(0, 0%, 100%, .5); 108 | } 109 | 110 | .token.atrule, 111 | .token.attr-value, 112 | .token.keyword { 113 | color: #07a; 114 | } 115 | 116 | .token.function { 117 | color: #DD4A68; 118 | } 119 | 120 | .token.regex, 121 | .token.important, 122 | .token.variable { 123 | color: #e90; 124 | } 125 | 126 | .token.important { 127 | font-weight: bold; 128 | } 129 | 130 | .token.entity { 131 | cursor: help; 132 | } 133 | 134 | -------------------------------------------------------------------------------- /tests/spec/tabs/tabsSpec.js: -------------------------------------------------------------------------------- 1 | describe("Tabs Plugin", function () { 2 | beforeEach(function() { 3 | loadFixtures('tabs/tabsFixture.html'); 4 | $('ul.tabs').tabs(); 5 | }); 6 | 7 | describe("Tabs", function () { 8 | var normalTabs; 9 | 10 | beforeEach(function() { 11 | normalTabs = $('.tabs.normal'); 12 | }); 13 | 14 | it("should open to active tab", function () { 15 | var activeTab = normalTabs.find('.active'); 16 | var activeTabHash = activeTab.attr('href'); 17 | normalTabs.find('.tab a').each(function() { 18 | var tabHash = $(this).attr('href'); 19 | if (tabHash === activeTabHash) { 20 | expect($(tabHash)).toBeVisible('active tab content should be visible by default'); 21 | } else { 22 | expect($(tabHash)).toBeHidden('Tab content should be hidden by default'); 23 | } 24 | }); 25 | 26 | var indicator = normalTabs.find('.indicator'); 27 | expect(indicator).toExist('Indicator should be generated'); 28 | // expect(Math.abs(indicator.offset().left - activeTab.offset().left)).toBeLessThan(1, 'Indicator should be at active tab by default.'); 29 | }); 30 | 31 | it("should switch to clicked tab", function (done) { 32 | var activeTab = normalTabs.find('.active'); 33 | var activeTabHash = activeTab.attr('href'); 34 | var disabledTab = normalTabs.find('.disabled a'); 35 | var disabledTabHash = disabledTab.attr('href'); 36 | var firstTab = normalTabs.find('.tab a').first(); 37 | var firstTabHash = firstTab.attr('href'); 38 | var indicator = normalTabs.find('.indicator'); 39 | 40 | expect(indicator).toExist('Indicator should be generated'); 41 | // expect(Math.abs(indicator.offset().left - activeTab.offset().left)).toBeLessThan(1, 'Indicator should be at active tab by default.'); 42 | 43 | disabledTab.click(); 44 | 45 | setTimeout(function() { 46 | expect($(activeTabHash)).toBeVisible('Clicking disabled should not change tabs.'); 47 | expect($(disabledTabHash)).toBeHidden('Clicking disabled should not change tabs.'); 48 | 49 | firstTab.click(); 50 | 51 | setTimeout(function() { 52 | expect($(activeTabHash)).toBeHidden('Clicking tab should switch to that tab.'); 53 | expect($(firstTabHash)).toBeVisible('Clicking tab should switch to that tab.'); 54 | expect(indicator.offset().left).toEqual(firstTab.offset().left, 'Indicator should move to clicked tab.'); 55 | done(); 56 | }, 400); 57 | }, 400); 58 | 59 | }); 60 | 61 | it("should horizontally scroll when too many tabs", function () { 62 | var tabsScrollWidth = 0; 63 | normalTabs.parent().css('width', '400px'); 64 | normalTabs.find('.tab').each(function() { 65 | tabsScrollWidth += $(this).width(); 66 | }); 67 | 68 | expect(tabsScrollWidth).toBeGreaterThan(normalTabs.width(), 'Scroll width should exceed tabs width'); 69 | }); 70 | 71 | }); 72 | }); -------------------------------------------------------------------------------- /sass/components/_cards.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | .card-panel { 4 | transition: box-shadow .25s; 5 | padding: $card-padding; 6 | margin: $element-top-margin 0 $element-bottom-margin 0; 7 | border-radius: 2px; 8 | @extend .z-depth-1; 9 | background-color: $card-bg-color; 10 | } 11 | 12 | .card { 13 | position: relative; 14 | margin: $element-top-margin 0 $element-bottom-margin 0; 15 | background-color: $card-bg-color; 16 | transition: box-shadow .25s; 17 | border-radius: 2px; 18 | @extend .z-depth-1; 19 | 20 | 21 | .card-title { 22 | font-size: 24px; 23 | font-weight: 300; 24 | &.activator { 25 | cursor: pointer; 26 | } 27 | } 28 | 29 | // Card Sizes 30 | &.small, &.medium, &.large { 31 | position: relative; 32 | 33 | .card-image { 34 | max-height: 60%; 35 | overflow: hidden; 36 | } 37 | .card-content { 38 | max-height: 40%; 39 | overflow: hidden; 40 | } 41 | .card-action { 42 | position: absolute; 43 | bottom: 0; 44 | left: 0; 45 | right: 0; 46 | } 47 | } 48 | 49 | &.small { 50 | height: 300px; 51 | } 52 | 53 | &.medium { 54 | height: 400px; 55 | } 56 | 57 | &.large { 58 | height: 500px; 59 | } 60 | 61 | 62 | .card-image { 63 | position: relative; 64 | 65 | // Image background for content 66 | img { 67 | display: block; 68 | border-radius: 2px 2px 0 0; 69 | position: relative; 70 | left: 0; 71 | right: 0; 72 | top: 0; 73 | bottom: 0; 74 | width: 100%; 75 | } 76 | 77 | .card-title { 78 | color: $card-bg-color; 79 | position: absolute; 80 | bottom: 0; 81 | left: 0; 82 | padding: $card-padding; 83 | } 84 | 85 | } 86 | 87 | .card-content { 88 | padding: $card-padding; 89 | border-radius: 0 0 2px 2px; 90 | 91 | p { 92 | margin: 0; 93 | color: inherit; 94 | } 95 | .card-title { 96 | line-height: 48px; 97 | } 98 | } 99 | 100 | .card-action { 101 | position: relative; 102 | background-color: inherit; 103 | border-top: 1px solid rgba(160,160,160,.2); 104 | padding: $card-padding; 105 | z-index: 2; 106 | 107 | a:not(.btn):not(.btn-large):not(.btn-floating) { 108 | color: $card-link-color; 109 | margin-right: $card-padding; 110 | transition: color .3s ease; 111 | text-transform: uppercase; 112 | 113 | &:hover { color: $card-link-color-light; } 114 | } 115 | 116 | & + .card-reveal { 117 | z-index: 1; 118 | padding-bottom: 64px; 119 | } 120 | } 121 | 122 | .card-reveal { 123 | padding: $card-padding; 124 | position: absolute; 125 | background-color: $card-bg-color; 126 | width: 100%; 127 | overflow-y: auto; 128 | top: 100%; 129 | height: 100%; 130 | z-index: 3; 131 | display: none; 132 | 133 | .card-title { 134 | cursor: pointer; 135 | display: block; 136 | } 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /sass/components/_sideNav.scss: -------------------------------------------------------------------------------- 1 | .side-nav { 2 | position: fixed; 3 | width: 240px; 4 | left: 0; 5 | top: 0; 6 | margin: 0; 7 | transform: translateX(-100%); 8 | height: 100%; 9 | height: calc(100% + 60px); 10 | height: -moz-calc(100%); //Temporary Firefox Fix 11 | padding-bottom: 60px; 12 | background-color: $sidenav-bg-color; 13 | z-index: 999; 14 | backface-visibility: hidden; 15 | overflow-y: auto; 16 | will-change: transform; 17 | backface-visibility: hidden; 18 | transform: translateX(-105%); 19 | 20 | @extend .z-depth-1; 21 | 22 | // Right Align 23 | &.right-aligned { 24 | right: 0; 25 | transform: translateX(105%); 26 | left: auto; 27 | transform: translateX(100%); 28 | } 29 | 30 | .collapsible { 31 | margin: 0; 32 | } 33 | 34 | 35 | li { 36 | float: none; 37 | line-height: $sidenav-item-height; 38 | 39 | &.active { background-color: rgba(0,0,0,.05); } 40 | } 41 | 42 | a { 43 | color: $sidenav-font-color; 44 | display: block; 45 | font-size: 1rem; 46 | height: $sidenav-item-height; 47 | line-height: $sidenav-item-height; 48 | padding: 0 $sidenav-padding-right; 49 | 50 | &:hover { background-color: rgba(0,0,0,.05);} 51 | 52 | &.btn, &.btn-large, &.btn-flat, &.btn-floating { 53 | margin: 10px 15px; 54 | } 55 | 56 | &.btn, 57 | &.btn-large, 58 | &.btn-floating { color: $button-raised-color; } 59 | &.btn-flat { color: $button-flat-color; } 60 | 61 | &.btn:hover, 62 | &.btn-large:hover { background-color: lighten($button-raised-background, 5%); } 63 | &.btn-floating:hover { background-color: $button-raised-background; } 64 | } 65 | } 66 | 67 | 68 | // Touch interaction 69 | .drag-target { 70 | height: 100%; 71 | width: 10px; 72 | position: fixed; 73 | top: 0; 74 | z-index: 998; 75 | } 76 | 77 | 78 | // Hidden side-nav for all sizes 79 | .side-nav.fixed { 80 | a { 81 | display: block; 82 | padding: 0 $sidenav-padding-right; 83 | color: $sidenav-font-color; 84 | } 85 | } 86 | 87 | 88 | // Fixed side-nav shown 89 | .side-nav.fixed { 90 | left: 0; 91 | transform: translateX(0); 92 | position: fixed; 93 | 94 | // Right Align 95 | &.right-aligned { 96 | right: 0; 97 | left: auto; 98 | } 99 | } 100 | 101 | // Fixed sideNav hide on smaller 102 | @media #{$medium-and-down} { 103 | .side-nav.fixed { 104 | transform: translateX(-105%); 105 | 106 | &.right-aligned { 107 | transform: translateX(105%); 108 | } 109 | } 110 | } 111 | 112 | 113 | .side-nav .collapsible-body li.active, 114 | .side-nav.fixed .collapsible-body li.active { 115 | background-color: $primary-color; 116 | a { 117 | color: $sidenav-bg-color; 118 | } 119 | } 120 | 121 | 122 | #sidenav-overlay { 123 | position: fixed; 124 | top: 0; 125 | left: 0; 126 | right: 0; 127 | 128 | height: 120vh; 129 | background-color: rgba(0,0,0,.5); 130 | z-index: 997; 131 | 132 | will-change: opacity; 133 | } 134 | -------------------------------------------------------------------------------- /jade/page-contents/transitions_content.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |

We've made some custom animation functions that will transition your content. It's recommended to use this with our ScrollFire Plugin to make your content transition in as you scroll.

8 | 9 | 10 |

showStaggeredList

11 |

Use this to create a staggered reveal effect for any UL Tag with list items. Just make sure the list items in the UL are opacity: 0; to ensure the animation works correctly.

12 | Click Me 13 |

14 |   <a href="#!" class="btn" onclick="Materialize.showStaggeredList('#staggered-test')">Click Me</a>
15 |         
16 |
    17 |
  • 18 |

    List Item

    19 |

    This is a description

    20 |
  • 21 |
  • 22 |

    List Item

    23 |

    This is a description

    24 |
  • 25 |
  • 26 |

    List Item

    27 |

    This is a description

    28 |
  • 29 |
  • 30 |

    List Item

    31 |

    This is a description

    32 |
  • 33 |
  • 34 |

    List Item

    35 |

    This is a description

    36 |
  • 37 |
38 |
39 | 40 |
41 |

fadeInImage

42 |

Use this to fade in images. It also animates grayscale and brightness to give it a unique effect.

43 | Click Me 44 |

45 |   <a href="#!" class="btn" onclick="Materialize.fadeInImage('#image-test')">Click Me</a>
46 |         
47 | 48 |
49 |
50 | 51 |
52 |
53 |
54 | 55 | 56 |
57 |
58 | 62 |
63 |
64 |
65 | 66 |
67 |
68 | 69 | -------------------------------------------------------------------------------- /js/jquery.timeago.min.js: -------------------------------------------------------------------------------- 1 | !function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){function e(){var e=a(this),o=r.settings;return isNaN(e.datetime)||(0==o.cutoff||Math.abs(n(e.datetime))0)||r.isTime(e)&&e.attr("title")||e.attr("title",a)}return e.data("timeago")}function i(t){return r.inWords(n(t))}function n(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return i(e instanceof Date?e:"string"==typeof e?t.timeago.parse(e):"number"==typeof e?new Date(e):t.timeago.datetime(e))};var r=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowPast:!0,allowFuture:!1,localeTitle:!1,cutoff:0,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",inPast:"any moment now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",wordSeparator:" ",numbers:[]}},inWords:function(e){function a(a,n){var r=t.isFunction(a)?a(n,e):a,o=i.numbers&&i.numbers[n]||n;return r.replace(/%d/i,o)}if(!this.settings.allowPast&&!this.settings.allowFuture)throw"timeago allowPast and allowFuture settings can not both be set to false.";var i=this.settings.strings,n=i.prefixAgo,r=i.suffixAgo;if(this.settings.allowFuture&&0>e&&(n=i.prefixFromNow,r=i.suffixFromNow),!this.settings.allowPast&&e>=0)return this.settings.strings.inPast;var o=Math.abs(e)/1e3,s=o/60,u=s/60,m=u/24,l=m/365,d=45>o&&a(i.seconds,Math.round(o))||90>o&&a(i.minute,1)||45>s&&a(i.minutes,Math.round(s))||90>s&&a(i.hour,1)||24>u&&a(i.hours,Math.round(u))||42>u&&a(i.day,1)||30>m&&a(i.days,Math.round(m))||45>m&&a(i.month,1)||365>m&&a(i.months,Math.round(m/30))||1.5>l&&a(i.year,1)||a(i.years,Math.round(l)),f=i.wordSeparator||"";return void 0===i.wordSeparator&&(f=" "),t.trim([n,d,r].join(f))},parse:function(e){var a=t.trim(e);return a=a.replace(/\.\d+/,""),a=a.replace(/-/,"/").replace(/-/,"/"),a=a.replace(/T/," ").replace(/Z/," UTC"),a=a.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),a=a.replace(/([\+\-]\d\d)$/," $100"),new Date(a)},datetime:function(e){var a=t(e).attr(r.isTime(e)?"datetime":"title");return r.parse(a)},isTime:function(e){return"time"===t(e).get(0).tagName.toLowerCase()}});var o={init:function(){var a=t.proxy(e,this);a();var i=r.settings;i.refreshMillis>0&&(this._timeagoInterval=setInterval(a,i.refreshMillis))},update:function(a){var i=r.parse(a);t(this).data("timeago",{datetime:i}),r.settings.localeTitle&&t(this).attr("title",i.toLocaleString()),e.apply(this)},updateFromDOM:function(){t(this).data("timeago",{datetime:r.parse(t(this).attr(r.isTime(this)?"datetime":"title"))}),e.apply(this)},dispose:function(){this._timeagoInterval&&(window.clearInterval(this._timeagoInterval),this._timeagoInterval=null)}};t.fn.timeago=function(t,e){var a=t?o[t]:o.init;if(!a)throw new Error("Unknown function name '"+t+"' for timeago");return this.each(function(){a.call(this,e)}),this},document.createElement("abbr"),document.createElement("time")}); -------------------------------------------------------------------------------- /tests/spec/cards/cardsFixture.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 |
7 |
8 | Card Titlemore_vert 9 |

This is a link

10 |
11 |
12 | Card Titleclose 13 |

Here is some more information about this product that is only revealed once clicked on.

14 |
15 |
16 | 17 |
18 |
19 |
20 | 21 | Card Title 22 |
23 |
24 |

I am a very simple card. I am good at containing small bits of information. 25 | I am convenient because I require little markup to use effectively.

26 |
27 |
28 | This is a link 29 |
30 |
31 |
32 |
33 | 34 |
35 |
36 |
37 |
38 | 39 | Card Title 40 |
41 |
42 |

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

43 |
44 | 48 |
49 |
50 |
51 |
52 |
53 | 54 | Card Title 55 |
56 |
57 |

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

58 |
59 | 63 |
64 |
65 |
66 |
67 |
68 | 69 | Card Title 70 |
71 |
72 |

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

73 |
74 | 78 |
79 |
80 |
-------------------------------------------------------------------------------- /sass/components/_grid.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | margin: 0 auto; 3 | max-width: 1280px; 4 | width: 90%; 5 | } 6 | @media #{$medium-and-up} { 7 | .container { 8 | width: 85%; 9 | } 10 | } 11 | @media #{$large-and-up} { 12 | .container { 13 | width: 70%; 14 | } 15 | } 16 | .container .row { 17 | margin-left: (-1 * $gutter-width / 2); 18 | margin-right: (-1 * $gutter-width / 2); 19 | } 20 | 21 | .section { 22 | padding-top: 1rem; 23 | padding-bottom: 1rem; 24 | 25 | &.no-pad { 26 | padding: 0; 27 | } 28 | &.no-pad-bot { 29 | padding-bottom: 0; 30 | } 31 | &.no-pad-top { 32 | padding-top: 0; 33 | } 34 | } 35 | 36 | 37 | .row { 38 | margin-left: auto; 39 | margin-right: auto; 40 | margin-bottom: 20px; 41 | 42 | // Clear floating children 43 | &:after { 44 | content: ""; 45 | display: table; 46 | clear: both; 47 | } 48 | 49 | .col { 50 | float: left; 51 | box-sizing: border-box; 52 | padding: 0 $gutter-width / 2; 53 | 54 | &[class*="push-"], 55 | &[class*="pull-"] { 56 | position: relative; 57 | } 58 | 59 | $i: 1; 60 | @while $i <= $num-cols { 61 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 62 | &.s#{$i} { 63 | width: $perc; 64 | margin-left: auto; 65 | left: auto; 66 | right: auto; 67 | } 68 | $i: $i + 1; 69 | } 70 | 71 | $i: 1; 72 | @while $i <= $num-cols { 73 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 74 | &.offset-s#{$i} { 75 | margin-left: $perc; 76 | } 77 | &.pull-s#{$i} { 78 | right: $perc; 79 | } 80 | &.push-s#{$i} { 81 | left: $perc; 82 | } 83 | $i: $i + 1; 84 | } 85 | 86 | @media #{$medium-and-up} { 87 | 88 | $i: 1; 89 | @while $i <= $num-cols { 90 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 91 | &.m#{$i} { 92 | width: $perc; 93 | margin-left: auto; 94 | left: auto; 95 | right: auto; 96 | } 97 | $i: $i + 1 98 | } 99 | 100 | $i: 1; 101 | @while $i <= $num-cols { 102 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 103 | &.offset-m#{$i} { 104 | margin-left: $perc; 105 | } 106 | &.pull-m#{$i} { 107 | right: $perc; 108 | } 109 | &.push-m#{$i} { 110 | left: $perc; 111 | } 112 | $i: $i + 1; 113 | } 114 | } 115 | 116 | @media #{$large-and-up} { 117 | 118 | $i: 1; 119 | @while $i <= $num-cols { 120 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 121 | &.l#{$i} { 122 | width: $perc; 123 | margin-left: auto; 124 | left: auto; 125 | right: auto; 126 | } 127 | $i: $i + 1; 128 | } 129 | 130 | $i: 1; 131 | @while $i <= $num-cols { 132 | $perc: unquote((100 / ($num-cols / $i)) + "%"); 133 | &.offset-l#{$i} { 134 | margin-left: $perc; 135 | } 136 | &.pull-l#{$i} { 137 | right: $perc; 138 | } 139 | &.push-l#{$i} { 140 | left: $perc; 141 | } 142 | $i: $i + 1; 143 | } 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /sass/components/forms/_radio-buttons.scss: -------------------------------------------------------------------------------- 1 | /* Radio Buttons 2 | ========================================================================== */ 3 | 4 | // Remove default Radio Buttons 5 | [type="radio"]:not(:checked), 6 | [type="radio"]:checked { 7 | position: absolute; 8 | left: -9999px; 9 | opacity: 0; 10 | } 11 | 12 | [type="radio"]:not(:checked) + label, 13 | [type="radio"]:checked + label { 14 | position: relative; 15 | padding-left: 35px; 16 | cursor: pointer; 17 | display: inline-block; 18 | height: 25px; 19 | line-height: 25px; 20 | font-size: 1rem; 21 | transition: .28s ease; 22 | 23 | -khtml-user-select: none; /* webkit (konqueror) browsers */ 24 | user-select: none; 25 | } 26 | 27 | [type="radio"] + label:before, 28 | [type="radio"] + label:after { 29 | content: ''; 30 | position: absolute; 31 | left: 0; 32 | top: 0; 33 | margin: 4px; 34 | width: 16px; 35 | height: 16px; 36 | z-index: 0; 37 | transition: .28s ease; 38 | } 39 | 40 | /* Unchecked styles */ 41 | [type="radio"]:not(:checked) + label:before, 42 | [type="radio"]:not(:checked) + label:after, 43 | [type="radio"]:checked + label:before, 44 | [type="radio"]:checked + label:after, 45 | [type="radio"].with-gap:checked + label:before, 46 | [type="radio"].with-gap:checked + label:after { 47 | border-radius: 50%; 48 | } 49 | 50 | [type="radio"]:not(:checked) + label:before, 51 | [type="radio"]:not(:checked) + label:after { 52 | border: 2px solid $radio-empty-color; 53 | } 54 | 55 | [type="radio"]:not(:checked) + label:after { 56 | z-index: -1; 57 | transform: scale(0); 58 | } 59 | 60 | /* Checked styles */ 61 | [type="radio"]:checked + label:before { 62 | border: 2px solid transparent; 63 | } 64 | 65 | [type="radio"]:checked + label:after, 66 | [type="radio"].with-gap:checked + label:before, 67 | [type="radio"].with-gap:checked + label:after { 68 | border: $radio-border; 69 | } 70 | 71 | [type="radio"]:checked + label:after, 72 | [type="radio"].with-gap:checked + label:after { 73 | background-color: $radio-fill-color; 74 | z-index: 0; 75 | } 76 | 77 | [type="radio"]:checked + label:after { 78 | transform: scale(1.02); 79 | } 80 | 81 | /* Radio With gap */ 82 | [type="radio"].with-gap:checked + label:after { 83 | transform: scale(.5); 84 | } 85 | 86 | /* Focused styles */ 87 | [type="radio"].tabbed:focus + label:before { 88 | box-shadow: 0 0 0 10px rgba(0,0,0,.1); 89 | } 90 | 91 | /* Disabled Radio With gap */ 92 | [type="radio"].with-gap:disabled:checked + label:before { 93 | border: 2px solid $input-disabled-color; 94 | } 95 | 96 | [type="radio"].with-gap:disabled:checked + label:after { 97 | border: none; 98 | background-color: $input-disabled-color; 99 | } 100 | 101 | /* Disabled style */ 102 | [type="radio"]:disabled:not(:checked) + label:before, 103 | [type="radio"]:disabled:checked + label:before { 104 | background-color: transparent; 105 | border-color: $input-disabled-color; 106 | } 107 | 108 | [type="radio"]:disabled + label { 109 | color: $input-disabled-color; 110 | } 111 | 112 | [type="radio"]:disabled:not(:checked) + label:before { 113 | border-color: $input-disabled-color; 114 | } 115 | 116 | [type="radio"]:disabled:checked + label:after { 117 | background-color: $input-disabled-color; 118 | border-color: $input-disabled-solid-color; 119 | } 120 | -------------------------------------------------------------------------------- /sass/components/date_picker/_default.time.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | $BASE-TIME-PICKER 3 | ========================================================================== */ 4 | /** 5 | * The list of times. 6 | */ 7 | .picker__list { 8 | list-style: none; 9 | padding: 0.75em 0 4.2em; 10 | margin: 0; 11 | } 12 | /** 13 | * The times on the clock. 14 | */ 15 | .picker__list-item { 16 | border-bottom: 1px solid #dddddd; 17 | border-top: 1px solid #dddddd; 18 | margin-bottom: -1px; 19 | position: relative; 20 | background: #ffffff; 21 | padding: .75em 1.25em; 22 | } 23 | @media (min-height: 46.75em) { 24 | .picker__list-item { 25 | padding: .5em 1em; 26 | } 27 | } 28 | /* Hovered time */ 29 | .picker__list-item:hover { 30 | cursor: pointer; 31 | color: #000000; 32 | background: #b1dcfb; 33 | border-color: #0089ec; 34 | z-index: 10; 35 | } 36 | /* Highlighted and hovered/focused time */ 37 | .picker__list-item--highlighted { 38 | border-color: #0089ec; 39 | z-index: 10; 40 | } 41 | .picker__list-item--highlighted:hover, 42 | .picker--focused .picker__list-item--highlighted { 43 | cursor: pointer; 44 | color: #000000; 45 | background: #b1dcfb; 46 | } 47 | /* Selected and hovered/focused time */ 48 | .picker__list-item--selected, 49 | .picker__list-item--selected:hover, 50 | .picker--focused .picker__list-item--selected { 51 | background: #0089ec; 52 | color: #ffffff; 53 | z-index: 10; 54 | } 55 | /* Disabled time */ 56 | .picker__list-item--disabled, 57 | .picker__list-item--disabled:hover, 58 | .picker--focused .picker__list-item--disabled { 59 | background: #f5f5f5; 60 | border-color: #f5f5f5; 61 | color: #dddddd; 62 | cursor: default; 63 | border-color: #dddddd; 64 | z-index: auto; 65 | } 66 | /** 67 | * The clear button 68 | */ 69 | .picker--time .picker__button--clear { 70 | display: block; 71 | width: 80%; 72 | margin: 1em auto 0; 73 | padding: 1em 1.25em; 74 | background: none; 75 | border: 0; 76 | font-weight: 500; 77 | font-size: .67em; 78 | text-align: center; 79 | text-transform: uppercase; 80 | color: #666; 81 | } 82 | .picker--time .picker__button--clear:hover, 83 | .picker--time .picker__button--clear:focus { 84 | color: #000000; 85 | background: #b1dcfb; 86 | background: #ee2200; 87 | border-color: #ee2200; 88 | cursor: pointer; 89 | color: #ffffff; 90 | outline: none; 91 | } 92 | .picker--time .picker__button--clear:before { 93 | top: -0.25em; 94 | color: #666; 95 | font-size: 1.25em; 96 | font-weight: bold; 97 | } 98 | .picker--time .picker__button--clear:hover:before, 99 | .picker--time .picker__button--clear:focus:before { 100 | color: #ffffff; 101 | } 102 | 103 | /* ========================================================================== 104 | $DEFAULT-TIME-PICKER 105 | ========================================================================== */ 106 | /** 107 | * The frame the bounds the time picker. 108 | */ 109 | .picker--time .picker__frame { 110 | min-width: 256px; 111 | max-width: 320px; 112 | } 113 | /** 114 | * The picker box. 115 | */ 116 | .picker--time .picker__box { 117 | font-size: 1em; 118 | background: #f2f2f2; 119 | padding: 0; 120 | } 121 | @media (min-height: 40.125em) { 122 | .picker--time .picker__box { 123 | margin-bottom: 5em; 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## v0.96.0 (April 1, 2015) 2 | - Toasts, transitions, scrollfire added under Materialize namespace 3 | - Dropdown is now created as a child of its parent 4 | - Collapsibles supports nesting 5 | - Modal Bottom Sheet added 6 | - Indeterminate Checkboxes added 7 | - New Checkbox Style added 8 | - Text Inputs supports placeholder/readonly 9 | - Google Inbox-like Collapsible added 10 | - Text Character Counter added 11 | - Waves no longer breaks on SVGs 12 | 13 | ## v0.95.3 (Feb 25, 2015) 14 | - Parallax image loading / responsiveness fixes 15 | - Date picker supports month/year as dropdown 16 | - Dismissable collection items 17 | - Avatar collection items 18 | - Pagination Added 19 | - ScrollFire fixes 20 | 21 | 22 | ## v0.95.2 (Feb 10, 2015) 23 | - Switches added 24 | - Transition animation functions added 25 | - ScrollFire Plugin added (fires functions dependent on scroll position) 26 | - Responsive Video tag added 27 | - Custom File Input Button added 28 | - Modals has a fixed footer option 29 | - SideNav implementation changed (needs 2 UL menus) 30 | - Slider Responsive Fixes 31 | 32 | 33 | ## v0.95.1 (Jan 26, 2015) 34 | - Sidenav Fixes 35 | - Dropdown alignment/gutter options added 36 | - Parallax fixes 37 | - JavaScript Initialization no longer needed for many components 38 | - HTML options through data-attributes 39 | - Site colors can be defined through Primary and Secondary color in Sass 40 | - Tables no longer resonsive by default 41 | 42 | 43 | ## v0.95.0 (Jan 17, 2015) 44 | - Drag Out Menu fixed with Touch Interactions 45 | - Toasts minor bugfix 46 | - OL element has default styling 47 | - Fullscreen Slider added 48 | - Footer requires page-footer class 49 | - Progress Bars added 50 | - Form autofill support added 51 | - Responsive Tables support added 52 | - Scrollspy Plugin released 53 | - Waves events are now delegated / behavior enhanced 54 | 55 | 56 | ## v0.94.0 (Dec 30, 2014) 57 | - Sidenav supports right edge positioning 58 | - Responsive Embeds 59 | - Image Vertical align classes 60 | - border-box added 61 | - Variable file created 62 | - Pushpin added 63 | - Tooltips support all directions 64 | - Layout helper classes added 65 | - Materialbox Fixes 66 | - Form Element Enhancements 67 | - Navbar supports search bar 68 | - Waves fixes 69 | - Materialbox Captions 70 | - Image Slider Fixes 71 | 72 | 73 | ## v0.93.1 (Dec 20, 2014) 74 | - Flexbox Sticky Footer removed due to IE incompatibility 75 | 76 | 77 | ## v0.93.0 (Dec 19, 2014) 78 | - Card Reveal 79 | - Image Slider 80 | - Dynamically loaded forms work correctly 81 | - Badges added 82 | - Circular Image 83 | - Waves Fixes 84 | - Footer Added 85 | - Toast support Custom HTML 86 | - Modals support programmatic opening/closing 87 | - Responsive Image support 88 | 89 | 90 | ## v0.92.1 (Dec 14, 2014) 91 | - Bower semver fix 92 | - Added new radio button style 93 | 94 | 95 | ## v0.92.0 (Dec 13, 2014) 96 | - Clicking icon in dropdown in navbar no longer closes dropdown immediately 97 | - Multiple select inputs now work properly 98 | - Mobile navbar no longer extends past screen width 99 | - Parallax improved 100 | - Modal restructured / can be opened programmatically 101 | - Callbacks added to modals 102 | - Added dist folder to repo 103 | - Cards restructured 104 | 105 | ## v0.91 (Dec 3, 2014) 106 | - bug fixes to forms 107 | - added waves color classes 108 | - toast thickened to look better on mobile 109 | - many other bug fixes 110 | 111 | 112 | ## v0.9 (Nov 30, 2014) 113 | - Touch interactions added 114 | - tons more... -------------------------------------------------------------------------------- /tests/spec/scrollFire/scrollFireFixture.html: -------------------------------------------------------------------------------- 1 |

2 | Filling up some content to enable scrolling 3 |

4 |

5 | Lorem ipsum dolor sit amet, 6 | consectetur adipisicing elit, 7 | sed do eiusmod tempor incididunt 8 | ut labore et dolore magna aliqua. 9 | Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 10 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 11 |

12 |

13 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 14 | Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 15 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 16 | Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 17 |

18 |
    19 |
  • 20 |

    List Item

    21 |

    This is a description

    22 |
  • 23 |
  • 24 |

    List Item

    25 |

    This is a description

    26 |
  • 27 |
  • 28 |

    List Item

    29 |

    This is a description

    30 |
  • 31 |
  • 32 |

    List Item

    33 |

    This is a description

    34 |
  • 35 |
  • 36 |

    List Item

    37 |

    This is a description

    38 |
  • 39 |
  • 40 |

    List Item

    41 |

    This is a description

    42 |
  • 43 |
  • 44 |

    List Item

    45 |

    This is a description

    46 |
  • 47 |
  • 48 |

    List Item

    49 |

    This is a description

    50 |
  • 51 |
  • 52 |

    List Item

    53 |

    This is a description

    54 |
  • 55 |
  • 56 |

    List Item

    57 |

    This is a description

    58 |
  • 59 |
  • 60 |

    List Item

    61 |

    This is a description

    62 |
  • 63 |
  • 64 |

    List Item

    65 |

    This is a description

    66 |
  • 67 |
  • 68 |

    List Item

    69 |

    This is a description

    70 |
  • 71 |
  • 72 |

    List Item

    73 |

    This is a description

    74 |
  • 75 |
  • 76 |

    List Item

    77 |

    This is a description

    78 |
  • 79 |
  • 80 |

    List Item

    81 |

    This is a description

    82 |
  • 83 |
  • 84 |

    List Item

    85 |

    This is the element right above the scroll zone

    86 |
  • 87 |
88 | 110 | -------------------------------------------------------------------------------- /test/html/fixed_navbar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Documentation - Materialize 7 | 8 | 9 | 10 | 11 | 13 | 14 | 30 | 31 |

Testing

32 |
33 |

Testing

34 |
35 |

Testing

36 |
37 |

Testing

38 |
39 |

Testing

40 |
41 |

Testing

42 |
43 |

Testing

44 |
45 |

Testing

46 |
47 |

Testing

48 |
49 |

Testing

50 |
51 |

Testing

52 |
53 |

Testing

54 |
55 |

Testing

56 |
57 |

Testing

58 |
59 |

Testing

60 |
61 |

Testing

62 |
63 |

Testing

64 |
65 |

Testing

66 |
67 |

Testing

68 |
69 |

Testing

70 |
71 |

Testing

72 |
73 |

Testing

74 |
75 |

Testing

76 |
77 |

Testing

78 |
79 |

Testing

80 |
81 |

Testing

82 |
83 |

Testing

84 |
85 |

Testing

86 |
87 |

Testing

88 |
89 |

Testing

90 |
91 |

Testing

92 |
93 |

Testing

94 |
95 |

Testing

96 |
97 |

Testing

98 |
99 |

Testing

100 |
101 |

Testing

102 |
103 | 104 | 105 | 106 | 107 | 108 | 109 | 120 | 121 | 122 | 123 | 124 | 125 | 138 | 139 | -------------------------------------------------------------------------------- /sass/components/forms/_range.scss: -------------------------------------------------------------------------------- 1 | /* Range 2 | ========================================================================== */ 3 | 4 | .range-field { 5 | position: relative; 6 | } 7 | 8 | input[type=range], 9 | input[type=range] + .thumb { 10 | @extend .no-select; 11 | cursor: pointer; 12 | } 13 | 14 | input[type=range] { 15 | position: relative; 16 | background-color: transparent; 17 | border: none; 18 | outline: none; 19 | width: 100%; 20 | margin: 15px 0; 21 | padding: 0; 22 | 23 | &:focus { 24 | outline: none; 25 | } 26 | } 27 | 28 | input[type=range] + .thumb { 29 | position: absolute; 30 | border: none; 31 | height: 0; 32 | width: 0; 33 | border-radius: 50%; 34 | background-color: $radio-fill-color; 35 | top: 10px; 36 | margin-left: -6px; 37 | 38 | transform-origin: 50% 50%; 39 | transform: rotate(-45deg); 40 | 41 | .value { 42 | display: block; 43 | width: 30px; 44 | text-align: center; 45 | color: $radio-fill-color; 46 | font-size: 0; 47 | transform: rotate(45deg); 48 | } 49 | 50 | &.active { 51 | border-radius: 50% 50% 50% 0; 52 | 53 | .value { 54 | color: $input-background; 55 | margin-left: -1px; 56 | margin-top: 8px; 57 | font-size: 10px; 58 | } 59 | } 60 | } 61 | 62 | // WebKit 63 | input[type=range] { 64 | -webkit-appearance: none; 65 | } 66 | 67 | input[type=range]::-webkit-slider-runnable-track { 68 | height: $track-height; 69 | background: #c2c0c2; 70 | border: none; 71 | } 72 | 73 | input[type=range]::-webkit-slider-thumb { 74 | -webkit-appearance: none; 75 | border: none; 76 | height: $range-height; 77 | width: $range-width; 78 | border-radius: 50%; 79 | background-color: $radio-fill-color; 80 | transform-origin: 50% 50%; 81 | margin: -5px 0 0 0; 82 | transition: .3s; 83 | } 84 | 85 | input[type=range]:focus::-webkit-slider-runnable-track { 86 | background: #ccc; 87 | } 88 | 89 | // FireFox 90 | input[type=range] { 91 | /* fix for FF unable to apply focus style bug */ 92 | border: 1px solid white; 93 | 94 | /*required for proper track sizing in FF*/ 95 | } 96 | 97 | input[type=range]::-moz-range-track { 98 | height: $track-height; 99 | background: #ddd; 100 | border: none; 101 | } 102 | 103 | input[type=range]::-moz-range-thumb { 104 | border: none; 105 | height: $range-height; 106 | width: $range-width; 107 | border-radius: 50%; 108 | background: $radio-fill-color; 109 | margin-top: -5px; 110 | } 111 | 112 | // hide the outline behind the border 113 | input[type=range]:-moz-focusring { 114 | outline: 1px solid #fff; 115 | outline-offset: -1px; 116 | } 117 | 118 | input[type=range]:focus::-moz-range-track { 119 | background: #ccc; 120 | } 121 | 122 | // IE 10+ 123 | input[type=range]::-ms-track { 124 | height: $track-height; 125 | 126 | // remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead 127 | background: transparent; 128 | 129 | // leave room for the larger thumb to overflow with a transparent border */ 130 | border-color: transparent; 131 | border-width: 6px 0; 132 | 133 | /*remove default tick marks*/ 134 | color: transparent; 135 | } 136 | 137 | input[type=range]::-ms-fill-lower { 138 | background: #777; 139 | } 140 | 141 | input[type=range]::-ms-fill-upper { 142 | background: #ddd; 143 | } 144 | 145 | input[type=range]::-ms-thumb { 146 | border: none; 147 | height: $range-height; 148 | width: $range-width; 149 | border-radius: 50%; 150 | background: $radio-fill-color; 151 | } 152 | 153 | input[type=range]:focus::-ms-fill-lower { 154 | background: #888; 155 | } 156 | 157 | input[type=range]:focus::-ms-fill-upper { 158 | background: #ccc; 159 | } 160 | -------------------------------------------------------------------------------- /sass/components/_navbar.scss: -------------------------------------------------------------------------------- 1 | nav { 2 | color: $navbar-font-color; 3 | @extend .z-depth-1; 4 | background-color: $primary-color; 5 | width: 100%; 6 | height: $navbar-height-mobile; 7 | line-height: $navbar-height-mobile; 8 | 9 | a { color: $navbar-font-color; } 10 | 11 | i, 12 | [class^="mdi-"], [class*="mdi-"], 13 | i.material-icons { 14 | display: block; 15 | font-size: 2rem; 16 | height: $navbar-height-mobile; 17 | line-height: $navbar-height-mobile; 18 | } 19 | 20 | .nav-wrapper { 21 | position: relative; 22 | height: 100%; 23 | } 24 | 25 | @media #{$large-and-up} { 26 | a.button-collapse { display: none; } 27 | } 28 | 29 | 30 | // Collapse button 31 | .button-collapse { 32 | float: left; 33 | position: relative; 34 | z-index: 1; 35 | height: $navbar-height-mobile; 36 | 37 | i { 38 | font-size: 2.7rem; 39 | height: $navbar-height-mobile; 40 | line-height: $navbar-height-mobile; 41 | } 42 | } 43 | 44 | 45 | // Logo 46 | .brand-logo { 47 | position: absolute; 48 | color: $navbar-font-color; 49 | display: inline-block; 50 | font-size: $navbar-brand-font-size; 51 | padding: 0; 52 | white-space: nowrap; 53 | 54 | &.center { 55 | left: 50%; 56 | transform: translateX(-50%); 57 | } 58 | 59 | @media #{$medium-and-down} { 60 | left: 50%; 61 | transform: translateX(-50%); 62 | 63 | &.left, &.right { 64 | padding: 0; 65 | transform: none; 66 | } 67 | 68 | &.left { left: 0.5rem; } 69 | &.right { 70 | right: 0.5rem; 71 | left: auto; 72 | } 73 | } 74 | 75 | &.right { 76 | right: 0.5rem; 77 | padding: 0; 78 | } 79 | } 80 | 81 | 82 | // Navbar Links 83 | ul { 84 | margin: 0; 85 | 86 | li { 87 | transition: background-color .3s; 88 | float: left; 89 | padding: 0; 90 | 91 | &.active { 92 | background-color: rgba(0,0,0,.1); 93 | } 94 | } 95 | a { 96 | transition: background-color .3s; 97 | font-size: 1rem; 98 | color: $navbar-font-color; 99 | display: inline-block; 100 | padding: 0 15px; 101 | cursor: pointer; 102 | 103 | &.btn, &.btn-large, &.btn-flat, &.btn-floating { 104 | margin-top: -2px; 105 | margin-left: 15px; 106 | margin-right: 15px; 107 | } 108 | 109 | &:hover { 110 | background-color: rgba(0,0,0,.1); 111 | } 112 | } 113 | 114 | &.left { 115 | float: left; 116 | } 117 | } 118 | 119 | // Navbar Search Form 120 | .input-field { 121 | margin: 0; 122 | 123 | input { 124 | height: 100%; 125 | font-size: 1.2rem; 126 | border: none; 127 | padding-left: 2rem; 128 | 129 | &:focus, &[type=text]:valid, &[type=password]:valid, 130 | &[type=email]:valid, &[type=url]:valid, &[type=date]:valid { 131 | border: none; 132 | box-shadow: none; 133 | } 134 | } 135 | label { 136 | top: 0; 137 | left: 0; 138 | 139 | i { 140 | color: rgba(255,255,255,.7); 141 | transition: color .3s; 142 | } 143 | &.active i { color: $navbar-font-color; } 144 | &.active { 145 | transform: translateY(0); 146 | } 147 | } 148 | 149 | } 150 | 151 | } 152 | 153 | // Fixed Navbar 154 | .navbar-fixed { 155 | position: relative; 156 | height: $navbar-height-mobile; 157 | z-index: 998; 158 | 159 | nav { 160 | position: fixed; 161 | } 162 | } 163 | @media #{$medium-and-up} { 164 | nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { 165 | height: $navbar-height; 166 | line-height: $navbar-height; 167 | } 168 | .navbar-fixed { 169 | height: $navbar-height; 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /tests/spec/collapsible/collapsibleSpec.js: -------------------------------------------------------------------------------- 1 | describe( "Collapsible Plugin", function () { 2 | var collapsible, accordion; 3 | 4 | beforeEach(function() { 5 | loadFixtures('collapsible/collapsible.html'); 6 | collapsible = $('.collapsible'); 7 | accordion = $('.accordion'); 8 | popout = $('.popout'); 9 | collapsible.collapsible(); 10 | }); 11 | 12 | describe( "collapsible", function () { 13 | 14 | it("should open all items, keeping all open", function () { 15 | // Collapsible body height should be 0 on start when hidden. 16 | var headers = collapsible.find('.collapsible-header'); 17 | var bodies = collapsible.find('.collapsible-body'); 18 | 19 | bodies.each(function() { 20 | expect($(this)).toBeHidden('because collapsible bodies should be hidden initially.'); 21 | }); 22 | 23 | // Collapsible body height should be > 0 after being opened. 24 | headers.each(function() { 25 | $(this).click(); 26 | }); 27 | bodies.each(function() { 28 | expect($(this)).toBeVisible('because collapsible bodies not visible after being opened.'); 29 | }); 30 | }); 31 | }); 32 | 33 | describe( "accordion", function () { 34 | 35 | it("should open first and second items, keeping only second open", function (done) { 36 | // Collapsible body height should be 0 on start when hidden. 37 | var firstHeader = accordion.find('.collapsible-header').first(); 38 | var firstBody = accordion.find('.collapsible-body').first(); 39 | var secondHeader = accordion.find('.collapsible-header').eq(1); 40 | var secondBody = accordion.find('.collapsible-body').eq(1); 41 | expect(firstBody).toBeHidden('because accordion bodies should be hidden initially.'); 42 | expect(secondBody).toBeHidden('because accordion bodies should be hidden initially.'); 43 | 44 | // Collapsible body height should be > 0 after being opened. 45 | firstHeader.click(); 46 | 47 | setTimeout(function() { 48 | expect(firstBody).toBeVisible('because accordion bodies not visible after being opened.'); 49 | secondHeader.click(); 50 | 51 | setTimeout(function() { 52 | expect(firstBody).toBeHidden('because accordion bodies should be hidden when another item is opened.'); 53 | expect(secondBody).toBeVisible('because accordion bodies not visible after being opened.'); 54 | done(); 55 | }, 400); 56 | }, 200); 57 | 58 | }); 59 | }); 60 | 61 | describe( "popout", function () { 62 | 63 | it("should open first and popout", function (done) { 64 | // Collapsible body height should be 0 on start when hidden. 65 | var firstLi = popout.find('li').first(); 66 | var firstHeader = popout.find('.collapsible-header').first(); 67 | var firstBody = popout.find('.collapsible-body').first(); 68 | expect(firstBody).toBeHidden('because accordion bodies should be hidden initially.'); 69 | 70 | // Expect margin to be > 0 because not popped out. 71 | popout.find('li').each(function () { 72 | var marginLeft = parseInt($(this).css('margin-left')); 73 | var marginRight = parseInt($(this).css('margin-right')); 74 | expect(marginLeft).toBeGreaterThan(0, 'because closed popout items should have horizontal margins.'); 75 | expect(marginRight).toBeGreaterThan(0, 'because closed popout items should have horizontal margins.'); 76 | }); 77 | 78 | // expect margin to be 0 because popped out. 79 | firstHeader.click(); 80 | setTimeout(function() { 81 | var firstMarginLeft = parseInt(firstLi.css('margin-left')); 82 | var firstMarginRight = parseInt(firstLi.css('margin-right')); 83 | expect(firstMarginLeft).toEqual(0, 'because opened popout items should have no horizontal margins.'); 84 | expect(firstMarginRight).toEqual(0, 'because opened popout items should have no horizontal margins.'); 85 | expect(firstBody).toBeVisible('because accordion bodies not visible after being opened.'); 86 | 87 | done(); 88 | }, 400); 89 | 90 | }); 91 | }); 92 | }); 93 | --------------------------------------------------------------------------------