├── .gitignore ├── material ├── release ├── src │ ├── components │ │ ├── content │ │ │ ├── content.spec.js │ │ │ ├── content-theme.scss │ │ │ ├── demoBasicUsage │ │ │ │ └── script.js │ │ │ └── content.scss │ │ ├── dialog │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ │ └── dialog-theme.scss │ │ ├── chips │ │ │ ├── demoStaticChips │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ ├── chips.js │ │ │ ├── demoCustomInputs │ │ │ │ └── style.css │ │ │ ├── js │ │ │ │ ├── chipTranscludeDirective.js │ │ │ │ └── contactChipsController.js │ │ │ ├── chips-theme.scss │ │ │ ├── demoContactChips │ │ │ │ └── style.scss │ │ │ └── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── style.scss │ │ ├── card │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ ├── card-theme.scss │ │ │ ├── card.spec.js │ │ │ └── card.scss │ │ ├── input │ │ │ ├── demoErrors │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ ├── demoIcons │ │ │ │ ├── script.js │ │ │ │ ├── style.scss │ │ │ │ └── index.html │ │ │ └── demoBasicUsage │ │ │ │ └── script.js │ │ ├── slider │ │ │ └── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ ├── whiteframe │ │ │ ├── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ │ ├── whiteframe.js │ │ │ └── whiteframe.scss │ │ ├── switch │ │ │ └── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ ├── toolbar │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── img │ │ │ │ │ └── icons │ │ │ │ │ ├── menu.svg │ │ │ │ │ ├── favorite.svg │ │ │ │ │ └── more_vert.svg │ │ │ ├── demoScrollShrink │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ └── toolbar-theme.scss │ │ ├── list │ │ │ ├── demoBasicUsage │ │ │ │ └── style.css │ │ │ ├── demoListControls │ │ │ │ ├── style.css │ │ │ │ └── img │ │ │ │ │ ├── 100-0.jpeg │ │ │ │ │ ├── 100-1.jpeg │ │ │ │ │ └── 100-2.jpeg │ │ │ └── list-theme.scss │ │ ├── divider │ │ │ ├── divider-theme.scss │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ ├── divider.scss │ │ │ └── divider.js │ │ ├── tabs │ │ │ ├── demoDynamicTabs │ │ │ │ ├── readme.html │ │ │ │ └── style.scss │ │ │ ├── demoStaticTabs │ │ │ │ ├── readme.html │ │ │ │ ├── style.scss │ │ │ │ └── script.js │ │ │ ├── demoDynamicHeight │ │ │ │ ├── readme.html │ │ │ │ └── style.scss │ │ │ ├── js │ │ │ │ ├── tabLabelDirective.js │ │ │ │ ├── tabItemDirective.js │ │ │ │ ├── tabScroll.js │ │ │ │ └── templateDirective.js │ │ │ └── tabs.js │ │ ├── sidenav │ │ │ ├── sidenav-theme.scss │ │ │ └── demoBasicUsage │ │ │ │ └── script.js │ │ ├── backdrop │ │ │ ├── backdrop-theme.scss │ │ │ ├── backdrop.js │ │ │ └── backdrop.scss │ │ ├── gridList │ │ │ ├── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── styles.css │ │ │ ├── gridList.spec.js │ │ │ ├── demoResponsiveUsage │ │ │ │ └── index.html │ │ │ └── demoDynamicTiles │ │ │ │ └── index.html │ │ ├── menu │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ ├── demoMenuPositionModes │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ ├── demoMenuWidth │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ └── menu-theme.scss │ │ ├── bottomSheet │ │ │ ├── demoBasicUsage │ │ │ │ ├── readme.html │ │ │ │ ├── img │ │ │ │ │ └── icons │ │ │ │ │ │ ├── share-arrow.svg │ │ │ │ │ │ ├── mail.svg │ │ │ │ │ │ ├── copy.svg │ │ │ │ │ │ ├── message.svg │ │ │ │ │ │ ├── copy2.svg │ │ │ │ │ │ ├── hangout.svg │ │ │ │ │ │ ├── print.svg │ │ │ │ │ │ ├── facebook.svg │ │ │ │ │ │ ├── upload.svg │ │ │ │ │ │ └── twitter.svg │ │ │ │ ├── style.css │ │ │ │ ├── bottom-sheet-grid-template.html │ │ │ │ ├── bottom-sheet-list-template.html │ │ │ │ └── index.html │ │ │ └── bottomSheet-theme.scss │ │ ├── subheader │ │ │ ├── demoBasicUsage │ │ │ │ └── style.css │ │ │ └── subheader-theme.scss │ │ ├── tooltip │ │ │ ├── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ └── tooltip-theme.scss │ │ ├── toast │ │ │ ├── demoBasicUsage │ │ │ │ ├── toast-template.html │ │ │ │ └── index.html │ │ │ └── toast-theme.scss │ │ ├── progressCircular │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ │ └── progressCircular.spec.js │ │ ├── progressLinear │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ └── progressLinear-theme.scss │ │ ├── fabToolbar │ │ │ └── demoBasicUsage │ │ │ │ ├── style.scss │ │ │ │ └── script.js │ │ ├── swipe │ │ │ └── demoBasicUsage │ │ │ │ ├── readme.html │ │ │ │ ├── style.css │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ ├── button │ │ │ └── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ ├── autocomplete │ │ │ ├── autocomplete.js │ │ │ ├── demoCustomTemplate │ │ │ │ ├── img │ │ │ │ │ └── icons │ │ │ │ │ │ └── octicon-repo.svg │ │ │ │ └── style.css │ │ │ ├── js │ │ │ │ ├── parentScope.js │ │ │ │ ├── listItemDirective.js │ │ │ │ └── highlightController.js │ │ │ └── autocomplete-theme.scss │ │ ├── icon │ │ │ ├── icon-theme.scss │ │ │ ├── demoLoadSvgIconsFromUrl │ │ │ │ ├── script.js │ │ │ │ ├── img │ │ │ │ │ └── icons │ │ │ │ │ │ ├── addShoppingCart.svg │ │ │ │ │ │ ├── cake.svg │ │ │ │ │ │ └── android.svg │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ │ ├── demoSvgIconSets │ │ │ │ ├── script.js │ │ │ │ ├── style.css │ │ │ │ ├── index.html │ │ │ │ └── assets │ │ │ │ │ └── cake.svg │ │ │ ├── demoUsingTemplateCache │ │ │ │ ├── style.css │ │ │ │ ├── assets │ │ │ │ │ ├── cake.svg │ │ │ │ │ └── android.svg │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ ├── demoFontIconsWithLigatures │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ └── demoFontIconsWithClassnames │ │ │ │ └── script.js │ │ ├── select │ │ │ ├── demoValidations │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ ├── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ ├── demoOptionsWithAsyncSearch │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ │ └── demoOptionGroups │ │ │ │ ├── script.js │ │ │ │ └── index.html │ │ ├── checkbox │ │ │ ├── demoBasicUsage │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ └── demoSyncing │ │ │ │ ├── style.css │ │ │ │ └── script.js │ │ ├── virtualRepeat │ │ │ └── demoVerticalUsage │ │ │ │ ├── script.js │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ ├── fabSpeedDial │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.scss │ │ │ │ └── script.js │ │ │ └── demoTooltips │ │ │ │ ├── style.scss │ │ │ │ └── script.js │ │ ├── sticky │ │ │ └── sticky.scss │ │ └── radioButton │ │ │ └── demoBasicUsage │ │ │ ├── style.css │ │ │ └── script.js │ └── core │ │ └── services │ │ └── ripple │ │ ├── ripple.spec.js │ │ ├── checkbox_ripple.js │ │ ├── list_ripple.js │ │ ├── tab_ripple.js │ │ ├── checkbox_ripple.spec.js │ │ ├── tab_ripple.spec.js │ │ └── list_ripple.spec.js ├── docs │ ├── guides │ │ └── component │ │ │ ├── _name_ │ │ │ ├── demoBasicUsage │ │ │ │ ├── style.css │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ ├── _name_.scss │ │ │ ├── _name_.spec.js │ │ │ ├── _name_-theme.scss │ │ │ └── _name_.js │ │ │ └── README.md │ ├── config │ │ ├── template │ │ │ ├── template.json │ │ │ ├── ngdoc │ │ │ │ ├── api │ │ │ │ │ ├── type.template.html │ │ │ │ │ ├── function.template.html │ │ │ │ │ ├── module.template.html │ │ │ │ │ ├── provider.template.html │ │ │ │ │ ├── service.template.html │ │ │ │ │ ├── input.template.html │ │ │ │ │ ├── object.template.html │ │ │ │ │ ├── componentGroup.template.html │ │ │ │ │ ├── filter.template.html │ │ │ │ │ └── api.template.html │ │ │ │ ├── base.template.html │ │ │ │ ├── lib │ │ │ │ │ ├── returns.template.html │ │ │ │ │ ├── this.template.html │ │ │ │ │ ├── properties.template.html │ │ │ │ │ ├── params.template.html │ │ │ │ │ ├── events.template.html │ │ │ │ │ └── methods.template.html │ │ │ │ └── content.template.html │ │ │ ├── build-config.js │ │ │ ├── constant-data.template.js │ │ │ └── demo-index.template.html │ │ └── processors │ │ │ ├── indexPage.js │ │ │ └── content.js │ ├── app │ │ ├── favicon.ico │ │ ├── img │ │ │ ├── bg9.jpg │ │ │ ├── 100-0.jpeg │ │ │ ├── 100-1.jpeg │ │ │ ├── 100-2.jpeg │ │ │ ├── angular.png │ │ │ ├── docArrow.png │ │ │ ├── list │ │ │ │ └── 60.jpeg │ │ │ ├── mangues.jpg │ │ │ ├── washedout.png │ │ │ ├── bgWhitePaper.jpg │ │ │ ├── testimonials │ │ │ │ ├── quote.png │ │ │ │ ├── logo-bradgreen@2x.png │ │ │ │ ├── logo-maxlynch@2x.png │ │ │ │ ├── logo-bradgreen@2x.fw.png │ │ │ │ ├── logo-maxlynch@2x.fw.png │ │ │ │ ├── testimonial-holly@2x.png │ │ │ │ ├── testimonial-james@2x.png │ │ │ │ ├── logo-thomasburleson@2x.png │ │ │ │ └── testimonial-hampton@2x.png │ │ │ ├── icons │ │ │ │ ├── list_control_down.png │ │ │ │ ├── ic_close_24px.svg │ │ │ │ ├── menu.svg │ │ │ │ ├── ic_school_24px.svg │ │ │ │ ├── ic_code_24px.svg │ │ │ │ ├── ic_play_circle_fill_24px.svg │ │ │ │ ├── ic_person_24px.svg │ │ │ │ ├── ic_insert_drive_file_24px.svg │ │ │ │ ├── ic_email_24px.svg │ │ │ │ ├── share-arrow.svg │ │ │ │ ├── ic_ondemand_video_24px.svg │ │ │ │ ├── launch.svg │ │ │ │ ├── ic_place_24px.svg │ │ │ │ ├── mail.svg │ │ │ │ ├── favorite.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── message.svg │ │ │ │ ├── copy2.svg │ │ │ │ ├── hangout.svg │ │ │ │ ├── ic_build_24px.svg │ │ │ │ ├── more_vert.svg │ │ │ │ ├── print.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── ic_phone_24px.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── octicon-repo.svg │ │ │ │ ├── addShoppingCart.svg │ │ │ │ ├── separator.svg │ │ │ │ ├── cake.svg │ │ │ │ ├── npm-logo.svg │ │ │ │ ├── android.svg │ │ │ │ ├── twitter.svg │ │ │ │ ├── tabs-arrow.svg │ │ │ │ ├── ic_play_arrow_24px.svg │ │ │ │ ├── ic_chevron_right_24px.svg │ │ │ │ ├── ic_menu_24px.svg │ │ │ │ ├── ic_arrow_back_24px.svg │ │ │ │ ├── ic_launch_24px.svg │ │ │ │ ├── ic_photo_24px.svg │ │ │ │ ├── ic_label_24px.svg │ │ │ │ ├── ic_comment_24px.svg │ │ │ │ ├── ic_refresh_24px.svg │ │ │ │ ├── ic_visibility_24px.svg │ │ │ │ ├── ic_more_vert_24px.svg │ │ │ │ ├── github-icon.svg │ │ │ │ ├── ic_access_time_24px.svg │ │ │ │ ├── ic_people_24px.svg │ │ │ │ └── angular-logo.svg │ │ │ └── logo.svg │ │ ├── fonts │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.ttf │ │ │ └── icomoon.woff │ │ ├── partials │ │ │ ├── demo.tmpl.html │ │ │ ├── menu-link.tmpl.html │ │ │ ├── menu-toggle.tmpl.html │ │ │ ├── view-source.tmpl.html │ │ │ └── layout-container.tmpl.html │ │ └── js │ │ │ └── scripts.js │ └── README.md ├── gulp │ ├── tasks │ │ ├── default.js │ │ ├── validate.js │ │ ├── build.js │ │ ├── build-js.js │ │ ├── watch.js │ │ ├── build-demo.js │ │ ├── karma-sauce.js │ │ ├── docs.js │ │ ├── site.js │ │ ├── build-resources.js │ │ ├── server.js │ │ ├── karma-watch.js │ │ ├── jshint.js │ │ ├── changelog.js │ │ ├── watch-demo.js │ │ └── build-all-modules.js │ ├── config.js │ └── const.js ├── .jshintrc ├── watch-hook.sh ├── .gitignore ├── start-hook.sh ├── config │ ├── build.config.js │ └── ngModuleData.js ├── scripts │ ├── build-asset-cache.sh │ ├── travis-build-init.sh │ ├── release.sh │ ├── bower-material-release.sh │ └── snapshot-docs-site.sh ├── gulpfile.js ├── .travis.yml └── LICENSE ├── shower-bright ├── pictures │ ├── exact.png │ ├── tall.png │ ├── wide.png │ ├── square.png │ ├── profile_pic.jpeg │ ├── u-need-aria.png │ ├── a11y-is-absurd.png │ ├── ng-aria-warning.png │ ├── react-a11y-warnings.png │ └── ember-a11y-testing-failed-test.png ├── fonts │ ├── OpenSans.woff │ ├── Anka.Coder.woff │ ├── OpenSans.Bold.woff │ ├── OpenSans.Light.woff │ ├── Anka.Coder.Italic.woff │ ├── OpenSans.Italic.woff │ └── OpenSans.Bold.Italic.woff ├── Readme.md └── images │ ├── grid-16x10.svg │ └── grid-4x3.svg ├── react-a11y ├── index.html ├── webpack.config.js ├── package.json └── src │ └── app.js └── shower-core └── Readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /material/release: -------------------------------------------------------------------------------- 1 | node --harmony release.js 2 | -------------------------------------------------------------------------------- /material/src/components/content/content.spec.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/dialog/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/gulp/tasks/default.js: -------------------------------------------------------------------------------- 1 | exports.dependencies = ['build']; 2 | -------------------------------------------------------------------------------- /material/docs/config/template/template.json: -------------------------------------------------------------------------------- 1 | {$ doc.content | json $} 2 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/_name_.scss: -------------------------------------------------------------------------------- 1 | 2 | md-_name_ { 3 | 4 | } 5 | -------------------------------------------------------------------------------- /material/gulp/tasks/validate.js: -------------------------------------------------------------------------------- 1 | exports.dependencies = ['jshint', 'karma']; 2 | -------------------------------------------------------------------------------- /material/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "expr": true, 3 | "boss": true, 4 | "laxbreak": true 5 | } 6 | -------------------------------------------------------------------------------- /material/src/components/chips/demoStaticChips/style.css: -------------------------------------------------------------------------------- 1 | p.note { 2 | font-size: 12px; 3 | } 4 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/type.template.html: -------------------------------------------------------------------------------- 1 | {% extends "api/object.template.html" %} 2 | -------------------------------------------------------------------------------- /material/gulp/tasks/build.js: -------------------------------------------------------------------------------- 1 | exports.dependencies = ['build-resources', 'build-scss', 'build-js']; 2 | -------------------------------------------------------------------------------- /material/src/components/card/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | 2 | md-card { 3 | min-height: 150px; 4 | } 5 | -------------------------------------------------------------------------------- /material/src/components/input/demoErrors/style.css: -------------------------------------------------------------------------------- 1 | .inputErrorsApp { 2 | min-height:48px; 3 | } 4 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/function.template.html: -------------------------------------------------------------------------------- 1 | {% extends "api/object.template.html" %} 2 | -------------------------------------------------------------------------------- /material/docs/config/template/build-config.js: -------------------------------------------------------------------------------- 1 | DocsApp.constant('BUILDCONFIG', {$ doc.buildConfig | json $}); 2 | -------------------------------------------------------------------------------- /material/docs/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/favicon.ico -------------------------------------------------------------------------------- /material/docs/app/img/bg9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/bg9.jpg -------------------------------------------------------------------------------- /material/docs/app/img/100-0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/100-0.jpeg -------------------------------------------------------------------------------- /material/docs/app/img/100-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/100-1.jpeg -------------------------------------------------------------------------------- /material/docs/app/img/100-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/100-2.jpeg -------------------------------------------------------------------------------- /material/src/components/slider/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | 2 | input[type="number"] { 3 | text-align: center; 4 | } 5 | -------------------------------------------------------------------------------- /material/src/components/whiteframe/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('whiteframeBasicUsage', ['ngMaterial']); 2 | -------------------------------------------------------------------------------- /shower-bright/pictures/exact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/exact.png -------------------------------------------------------------------------------- /shower-bright/pictures/tall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/tall.png -------------------------------------------------------------------------------- /shower-bright/pictures/wide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/wide.png -------------------------------------------------------------------------------- /material/docs/app/img/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/angular.png -------------------------------------------------------------------------------- /material/docs/app/img/docArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/docArrow.png -------------------------------------------------------------------------------- /material/docs/app/img/list/60.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/list/60.jpeg -------------------------------------------------------------------------------- /material/docs/app/img/mangues.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/mangues.jpg -------------------------------------------------------------------------------- /material/docs/config/template/constant-data.template.js: -------------------------------------------------------------------------------- 1 | DocsApp 2 | .constant('{$ doc.name $}', {$ doc.items | json $}); 3 | -------------------------------------------------------------------------------- /material/src/components/switch/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .inset { 2 | padding-left: 25px; 3 | padding-top:25px; 4 | } 5 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | md-toolbar md-icon.md-default-theme { 2 | color: white; 3 | } 4 | -------------------------------------------------------------------------------- /shower-bright/fonts/OpenSans.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/OpenSans.woff -------------------------------------------------------------------------------- /shower-bright/pictures/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/square.png -------------------------------------------------------------------------------- /material/docs/app/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/fonts/icomoon.eot -------------------------------------------------------------------------------- /material/docs/app/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/fonts/icomoon.ttf -------------------------------------------------------------------------------- /material/docs/app/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/fonts/icomoon.woff -------------------------------------------------------------------------------- /material/docs/app/img/washedout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/washedout.png -------------------------------------------------------------------------------- /material/src/components/list/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | md-divider { 2 | margin-top: 10px; 3 | margin-bottom: 10px; 4 | } 5 | -------------------------------------------------------------------------------- /material/src/components/list/demoListControls/style.css: -------------------------------------------------------------------------------- 1 | md-divider { 2 | margin-top: 10px; 3 | margin-bottom: 10px; 4 | } 5 | -------------------------------------------------------------------------------- /shower-bright/fonts/Anka.Coder.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/Anka.Coder.woff -------------------------------------------------------------------------------- /material/docs/app/img/bgWhitePaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/bgWhitePaper.jpg -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/base.template.html: -------------------------------------------------------------------------------- 1 |
2 | {% block content %} 3 | {% endblock %} 4 |
5 | -------------------------------------------------------------------------------- /material/src/components/divider/divider-theme.scss: -------------------------------------------------------------------------------- 1 | md-divider.md-THEME_NAME-theme { 2 | border-top-color: '{{foreground-4}}'; 3 | } 4 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoDynamicTabs/readme.html: -------------------------------------------------------------------------------- 1 |

The Dynamic Tabs demo shows how internal tab views can be easily used.

2 | -------------------------------------------------------------------------------- /shower-bright/fonts/OpenSans.Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/OpenSans.Bold.woff -------------------------------------------------------------------------------- /shower-bright/fonts/OpenSans.Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/OpenSans.Light.woff -------------------------------------------------------------------------------- /shower-bright/pictures/profile_pic.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/profile_pic.jpeg -------------------------------------------------------------------------------- /shower-bright/pictures/u-need-aria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/u-need-aria.png -------------------------------------------------------------------------------- /material/gulp/tasks/build-js.js: -------------------------------------------------------------------------------- 1 | var util = require('../util'); 2 | 3 | exports.task = function() { 4 | return util.buildJs(true); 5 | }; 6 | -------------------------------------------------------------------------------- /material/src/components/content/content-theme.scss: -------------------------------------------------------------------------------- 1 | md-content.md-THEME_NAME-theme { 2 | background-color: '{{background-color}}'; 3 | } 4 | -------------------------------------------------------------------------------- /material/src/components/sidenav/sidenav-theme.scss: -------------------------------------------------------------------------------- 1 | md-sidenav.md-THEME_NAME-theme { 2 | background-color: '{{background-color}}'; 3 | } 4 | -------------------------------------------------------------------------------- /shower-bright/fonts/Anka.Coder.Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/Anka.Coder.Italic.woff -------------------------------------------------------------------------------- /shower-bright/fonts/OpenSans.Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/OpenSans.Italic.woff -------------------------------------------------------------------------------- /shower-bright/pictures/a11y-is-absurd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/a11y-is-absurd.png -------------------------------------------------------------------------------- /shower-bright/pictures/ng-aria-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/ng-aria-warning.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/quote.png -------------------------------------------------------------------------------- /material/src/components/whiteframe/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | md-whiteframe { 2 | background: #fff; 3 | margin: 20px; 4 | padding: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /shower-bright/fonts/OpenSans.Bold.Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/fonts/OpenSans.Bold.Italic.woff -------------------------------------------------------------------------------- /shower-bright/pictures/react-a11y-warnings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/react-a11y-warnings.png -------------------------------------------------------------------------------- /material/docs/app/img/icons/list_control_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/icons/list_control_down.png -------------------------------------------------------------------------------- /material/src/components/backdrop/backdrop-theme.scss: -------------------------------------------------------------------------------- 1 | md-backdrop.md-opaque.md-THEME_NAME-theme { 2 | background-color: '{{foreground-4-0.5}}'; 3 | } 4 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoStaticTabs/readme.html: -------------------------------------------------------------------------------- 1 |

The Static Tabs demo shows how external content can be used with tabs.

2 | -------------------------------------------------------------------------------- /material/src/components/gridList/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('gridListDemo1', ['ngMaterial']) 3 | .controller('AppCtrl', function($scope) {}); 4 | -------------------------------------------------------------------------------- /material/src/components/menu/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .md-menu-demo { 2 | padding: 24px; 3 | } 4 | 5 | .menu-demo-container { 6 | min-height: 200px; 7 | } 8 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoDynamicHeight/readme.html: -------------------------------------------------------------------------------- 1 |

The Dynamic Height demo shows how tabs can be used to display content with varying heights.

2 | -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/logo-bradgreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/logo-bradgreen@2x.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/logo-maxlynch@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/logo-maxlynch@2x.png -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /material/src/components/divider/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .face { 2 | border-radius: 30px; 3 | border: 1px solid #ddd; 4 | width: 48px; 5 | margin: 16px; 6 | } 7 | -------------------------------------------------------------------------------- /material/src/components/menu/demoMenuPositionModes/style.css: -------------------------------------------------------------------------------- 1 | .md-menu-demo { 2 | padding: 24px; 3 | } 4 | 5 | .menu-demo-container { 6 | min-height: 200px; 7 | } 8 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoScrollShrink/style.css: -------------------------------------------------------------------------------- 1 | .face { 2 | width: 48px; 3 | margin: 16px; 4 | border-radius: 48px; 5 | border: 1px solid #ddd; 6 | } 7 | -------------------------------------------------------------------------------- /shower-bright/pictures/ember-a11y-testing-failed-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/shower-bright/pictures/ember-a11y-testing-failed-test.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/logo-bradgreen@2x.fw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/logo-bradgreen@2x.fw.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/logo-maxlynch@2x.fw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/logo-maxlynch@2x.fw.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/testimonial-holly@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/testimonial-holly@2x.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/testimonial-james@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/testimonial-james@2x.png -------------------------------------------------------------------------------- /material/src/components/content/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('contentDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | }); 7 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('toolbarDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | }); 7 | -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/logo-thomasburleson@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/logo-thomasburleson@2x.png -------------------------------------------------------------------------------- /material/docs/app/img/testimonials/testimonial-hampton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/docs/app/img/testimonials/testimonial-hampton@2x.png -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/readme.html: -------------------------------------------------------------------------------- 1 |

This UX pattern is intended for mobile devices only, and may not make sense to use 2 | on responsive sites.

3 | -------------------------------------------------------------------------------- /material/src/components/list/demoListControls/img/100-0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/src/components/list/demoListControls/img/100-0.jpeg -------------------------------------------------------------------------------- /material/src/components/list/demoListControls/img/100-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/src/components/list/demoListControls/img/100-1.jpeg -------------------------------------------------------------------------------- /material/src/components/list/demoListControls/img/100-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roman01la/a11y-in-spa/master/material/src/components/list/demoListControls/img/100-2.jpeg -------------------------------------------------------------------------------- /material/src/components/subheader/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | 2 | .face { 3 | border-radius: 30px; 4 | border: 1px solid #ddd; 5 | width: 48px; 6 | margin: 16px; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/returns.template.html: -------------------------------------------------------------------------------- 1 | {% if doc.returns -%} 2 |
3 | {$ returnTable(doc.returns) $} 4 |
5 | {%- endif %} 6 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('_name_Demo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /material/src/components/tooltip/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('tooltipDemo1', ['ngMaterial']) 2 | .controller('AppCtrl', function($scope) { 3 | $scope.demo = {}; 4 | }); 5 | -------------------------------------------------------------------------------- /material/src/components/whiteframe/whiteframe.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc module 3 | * @name material.components.whiteframe 4 | */ 5 | angular.module('material.components.whiteframe', []); 6 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/content.template.html: -------------------------------------------------------------------------------- 1 |
2 | {% block content %} 3 | {$ doc.description | marked $} 4 | {% endblock %} 5 |
6 | -------------------------------------------------------------------------------- /material/gulp/tasks/watch.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | 3 | exports.dependencies = ['docs']; 4 | 5 | exports.task = function() { 6 | gulp.watch(['docs/**/*', 'src/**/*'], ['docs']); 7 | }; 8 | -------------------------------------------------------------------------------- /material/src/components/toast/demoBasicUsage/toast-template.html: -------------------------------------------------------------------------------- 1 | 2 | Custom toast! 3 | 4 | Close 5 | 6 | 7 | -------------------------------------------------------------------------------- /material/src/components/tooltip/tooltip-theme.scss: -------------------------------------------------------------------------------- 1 | md-tooltip.md-THEME_NAME-theme { 2 | color: '{{background-A100}}'; 3 | .md-background { 4 | background-color: '{{foreground-2}}'; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /material/src/components/card/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('cardDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | $scope.imagePath = 'img/washedout.png'; 6 | }); 7 | -------------------------------------------------------------------------------- /material/src/components/menu/demoMenuWidth/style.css: -------------------------------------------------------------------------------- 1 | .md-menu-demo { 2 | padding: 24px; 3 | } 4 | 5 | .menu-demo-container { 6 | min-height: 200px; 7 | } 8 | 9 | 10 | .menus { 11 | width: 100%; 12 | } 13 | -------------------------------------------------------------------------------- /material/src/components/menu/menu-theme.scss: -------------------------------------------------------------------------------- 1 | md-menu-content.md-THEME_NAME-theme { 2 | background-color: '{{background-color}}'; 3 | 4 | md-menu-divider { 5 | background-color: '{{foreground-4}}'; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /material/src/components/progressCircular/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 20px; 3 | } 4 | 5 | h4 { 6 | margin: 10px 0; 7 | } 8 | 9 | md-progress-circular { 10 | margin-bottom:20px; 11 | } 12 | -------------------------------------------------------------------------------- /material/src/components/tabs/js/tabLabelDirective.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.tabs') 3 | .directive('mdTabLabel', MdTabLabel); 4 | 5 | function MdTabLabel () { 6 | return { terminal: true }; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/this.template.html: -------------------------------------------------------------------------------- 1 |
2 | {% if doc.this %} 3 |

Method's {% code %}this{% endcode %}

4 | {$ doc.this | marked $} 5 | {% endif %} 6 |
7 | 8 | -------------------------------------------------------------------------------- /material/gulp/tasks/build-demo.js: -------------------------------------------------------------------------------- 1 | var util = require('../util'); 2 | 3 | exports.dependencies = ['build', 'build-module-demo']; 4 | 5 | exports.task = function() { 6 | return util.buildModule(util.readModuleArg(), false); 7 | }; 8 | -------------------------------------------------------------------------------- /material/gulp/tasks/karma-sauce.js: -------------------------------------------------------------------------------- 1 | var karma = require('karma').server; 2 | var ROOT = require('../const').ROOT; 3 | 4 | exports.task = function(done) { 5 | karma.start(require(ROOT + '/config/karma-sauce.conf.js'), done); 6 | }; 7 | -------------------------------------------------------------------------------- /material/src/components/progressLinear/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 20px; 3 | } 4 | 5 | h4 { 6 | margin: 10px 0; 7 | } 8 | 9 | md-progress-linear { 10 | padding-top:10px; 11 | margin-bottom:20px; 12 | } 13 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_close_24px.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/fabToolbar/demoBasicUsage/style.scss: -------------------------------------------------------------------------------- 1 | md-fab-toolbar { 2 | &.md-left { 3 | md-fab-trigger.align-with-text { 4 | // Make sure the FAB lines up with the text for the demo 5 | left: 7px; 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /material/watch-hook.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd "$(dirname "$0")" 4 | 5 | # 6 | # spawns the hook, and restarts it if it goes down 7 | # 8 | # See: https://github.com/nodejitsu/forever 9 | # 10 | forever start -c bash start-hook.sh 11 | -------------------------------------------------------------------------------- /material/src/components/divider/divider.scss: -------------------------------------------------------------------------------- 1 | md-divider { 2 | display: block; 3 | border-top-width: 1px; 4 | border-top-style: solid; 5 | margin: 0; 6 | 7 | &[md-inset] { 8 | margin-left: $baseline-grid * 10; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /material/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.sw* 3 | .DS_STORE 4 | .sass-cache/ 5 | bower_components 6 | node_modules 7 | dist 8 | /src/themes/_default-theme.scss 9 | 10 | /.idea/ 11 | /components 12 | /vendor 13 | /material-font 14 | 15 | .polymer-qp 16 | -------------------------------------------------------------------------------- /material/gulp/tasks/docs.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var connect = require('gulp-connect'); 3 | 4 | exports.dependencies = ['docs-js', 'docs-css', 'docs-demo-scripts']; 5 | 6 | exports.task = function () { gulp.src('.').pipe(connect.reload()); }; 7 | -------------------------------------------------------------------------------- /react-a11y/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React A11y Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/_name_.spec.js: -------------------------------------------------------------------------------- 1 | 2 | describe('md-_name_', function() { 3 | 4 | beforeEach(module('ngAria')); 5 | beforeEach(module('material.components._name_')); 6 | 7 | it('should ', function() { 8 | 9 | }); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /material/src/components/gridList/gridList.spec.js: -------------------------------------------------------------------------------- 1 | 2 | describe('md-grid-list', function() { 3 | 4 | beforeEach(module('ngAria')); 5 | beforeEach(module('material.components.gridList')); 6 | 7 | it('should ', function() { 8 | 9 | }); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /material/gulp/tasks/site.js: -------------------------------------------------------------------------------- 1 | var connect = require('gulp-connect'); 2 | var LR_PORT = require('../const').LR_PORT; 3 | 4 | exports.task = function () { 5 | connect.server({ 6 | root: './dist/docs', 7 | livereload: true, 8 | port: LR_PORT 9 | }); 10 | }; 11 | -------------------------------------------------------------------------------- /material/src/components/input/demoErrors/script.js: -------------------------------------------------------------------------------- 1 | angular.module('inputErrorsApp', ['ngMaterial', 'ngMessages']) 2 | 3 | .controller('AppCtrl', function($scope) { 4 | $scope.project = { 5 | description: 'Nuclear Missile Defense System', 6 | rate: 500 7 | }; 8 | }); 9 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_school_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/swipe/demoBasicUsage/readme.html: -------------------------------------------------------------------------------- 1 |

This UX pattern is intended for mobile devices only, and 2 | may not make sense to use on responsive sites. To initiate a swipe 3 | gesture on a desktop, you must click, hold and drag either right or 4 | left

5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_code_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/gulp/tasks/build-resources.js: -------------------------------------------------------------------------------- 1 | var config = require('../config'); 2 | var gulp = require('gulp'); 3 | var path = require('path'); 4 | 5 | exports.task = function() { 6 | return gulp.src(['material-font/*']) 7 | .pipe(gulp.dest(path.join(config.outputDir, 'material-font'))); 8 | }; 9 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoBasicUsage/img/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /react-a11y/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | entry: './src/app.js', 4 | output: { 5 | filename: 'bundle.js' 6 | }, 7 | module: { 8 | loaders: [ 9 | { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?optional=runtime' } 10 | ] 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_play_circle_fill_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/module.template.html: -------------------------------------------------------------------------------- 1 | {% extends "base.template.html" %} 2 | 3 | {% block content %} 4 |

5 | {% if doc.title %}{$ doc.title | marked $}{% else %}{$ doc.name | code $}{% endif %} 6 |

7 | 8 | {$ doc.description | marked $} 9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /material/src/components/chips/chips.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc module 3 | * @name material.components.chips 4 | */ 5 | /* 6 | * @see js folder for chips implementation 7 | */ 8 | angular.module('material.components.chips', [ 9 | 'material.core', 10 | 'material.components.autocomplete' 11 | ]); 12 | -------------------------------------------------------------------------------- /material/src/components/chips/demoStaticChips/script.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | angular 4 | .module('staticChipsDemo', ['ngMaterial']) 5 | .controller('DemoCtrl', DemoCtrl); 6 | 7 | function DemoCtrl ($timeout, $q) { 8 | this.chipText = 'Football'; 9 | } 10 | })(); 11 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_person_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_insert_drive_file_24px.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/provider.template.html: -------------------------------------------------------------------------------- 1 | {% extends "api/object.template.html" %} 2 | 3 | {% block related_components %} 4 | {% if doc.serviceDoc -%} 5 |
  • 6 | - {$ doc.serviceDoc.name $} 7 |
  • 8 | {%- endif %} 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/service.template.html: -------------------------------------------------------------------------------- 1 | {% extends "api/object.template.html" %} 2 | 3 | {% block related_components %} 4 | {% if doc.providerDoc -%} 5 |
  • 6 | - {$ doc.providerDoc.name $} 7 |
  • 8 | {%- endif %} 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/_name_-theme.scss: -------------------------------------------------------------------------------- 1 | $g_name_-color-palette: $primary-color-palette !default; 2 | $g_name_-background-color: $foreground-tertiary-color !default; 3 | $g_name_-disabled-color: map-get($foreground-color-palette, '400') !default; 4 | 5 | md-_name_.md-#{$theme-name}-theme { 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_email_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/share-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/button/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('buttonsDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | $scope.title1 = 'Button'; 6 | $scope.title4 = 'Warn'; 7 | $scope.isDisabled = true; 8 | 9 | $scope.googleUrl = 'http://google.com'; 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /material/src/components/card/card-theme.scss: -------------------------------------------------------------------------------- 1 | $card-border-radius: 2px !default; 2 | 3 | md-card.md-THEME_NAME-theme { 4 | background-color: '{{background-color}}'; 5 | border-radius: $card-border-radius; 6 | 7 | .md-card-image { 8 | border-radius: $card-border-radius $card-border-radius 0 0; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/autocomplete.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc module 3 | * @name material.components.autocomplete 4 | */ 5 | /* 6 | * @see js folder for autocomplete implementation 7 | */ 8 | angular.module('material.components.autocomplete', [ 9 | 'material.core', 10 | 'material.components.icon' 11 | ]); 12 | -------------------------------------------------------------------------------- /material/src/components/input/demoIcons/script.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('inputIconDemo', ['ngMaterial', 'ngMessages']) 3 | .controller('DemoCtrl', function($scope) { 4 | $scope.user = { 5 | name: 'John Doe', 6 | email: '', 7 | phone: '', 8 | address: 'Mountain View, CA' 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /material/src/components/icon/icon-theme.scss: -------------------------------------------------------------------------------- 1 | md-icon.md-THEME_NAME-theme { 2 | color: '{{foreground-2}}'; 3 | 4 | &.md-primary { 5 | color: '{{primary-color}}'; 6 | } 7 | 8 | &.md-accent { 9 | color: '{{accent-color}}'; 10 | } 11 | 12 | &.md-warn { 13 | color: '{{warn-color}}'; 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_ondemand_video_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/launch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/dialog/dialog-theme.scss: -------------------------------------------------------------------------------- 1 | $dialog-border-radius: 4px !default; 2 | 3 | md-dialog.md-THEME_NAME-theme { 4 | border-radius: $dialog-border-radius; 5 | background-color: '{{background-color}}'; 6 | 7 | &.md-content-overflow .md-actions { 8 | border-top-color: '{{foreground-4}}'; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoDynamicHeight/style.scss: -------------------------------------------------------------------------------- 1 | md-content { 2 | background-color: transparent !important; 3 | md-tabs { 4 | background: #f6f6f6; 5 | border: 1px solid #e1e1e1; 6 | md-tabs-canvas { 7 | background: white; 8 | } 9 | } 10 | h1:first-child { 11 | margin-top: 0; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /material/src/components/select/demoValidations/script.js: -------------------------------------------------------------------------------- 1 | angular.module('selectDemoValidation', ['ngMaterial', 'ngMessages']) 2 | .controller('AppCtrl', function($scope) { 3 | $scope.clearValue = function() { 4 | $scope.myModel = undefined; 5 | }; 6 | $scope.save = function() { 7 | alert('Form was valid!'); 8 | }; 9 | }); 10 | -------------------------------------------------------------------------------- /material/start-hook.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd "$(dirname "$0")" 4 | 5 | # 6 | # starts a hookshot server that will `git pull` whenever 7 | # GitHub pings us 8 | # 9 | # See: https://github.com/Coreh/hookshot 10 | # 11 | hookshot -p 9010 "git fetch && git reset --hard origin/master && npm install && rm -rf dist/ && gulp docs --release" 12 | -------------------------------------------------------------------------------- /material/src/components/swipe/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .demo-swipe { 2 | padding: 20px 10px; 3 | } 4 | 5 | .no-select { 6 | pointer-events: none; 7 | -webkit-touch-callout: none; 8 | -webkit-user-select: none; 9 | -khtml-user-select: none; 10 | -moz-user-select: none; 11 | -ms-user-select: none; 12 | user-select: none; 13 | } 14 | -------------------------------------------------------------------------------- /material/config/build.config.js: -------------------------------------------------------------------------------- 1 | var pkg = require('../package.json'); 2 | var fs = require('fs'); 3 | var versionFile = __dirname + '/../dist/commit'; 4 | 5 | module.exports = { 6 | ngVersion: '1.4.1', 7 | version: pkg.version, 8 | repository: pkg.repository.url 9 | .replace(/^git/,'https') 10 | .replace(/(\.git)?\/?$/,'') 11 | }; 12 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_place_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/share-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('appDemoSvgIcons', ['ngMaterial']) 3 | .controller('DemoCtrl', function( $scope ) { 4 | 5 | $scope.insertDriveIconURL = 'img/icons/ic_insert_drive_file_24px.svg'; 6 | $scope.getAndroid = function() { 7 | return 'img/icons/android.svg'; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /material/docs/app/partials/demo.tmpl.html: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /material/src/components/icon/demoSvgIconSets/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('appSvgIconSets', ['ngMaterial']) 3 | .controller('DemoCtrl', function($scope) {}) 4 | .config(function($mdIconProvider) { 5 | $mdIconProvider 6 | .iconSet('social', 'img/icons/sets/social-icons.svg', 24) 7 | .defaultIconSet('img/icons/sets/core-icons.svg', 24); 8 | }); 9 | -------------------------------------------------------------------------------- /material/src/components/swipe/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('demoSwipe', ['ngMaterial']) 2 | .controller('demoSwipeCtrl', function($scope) { 3 | $scope.onSwipeLeft = function(ev) { 4 | alert('You swiped left!!'); 5 | }; 6 | 7 | $scope.onSwipeRight = function(ev) { 8 | alert('You swiped right!!'); 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /material/src/components/checkbox/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('checkboxDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | $scope.data = {}; 7 | $scope.data.cb1 = true; 8 | $scope.data.cb2 = false; 9 | $scope.data.cb3 = false; 10 | $scope.data.cb4 = false; 11 | $scope.data.cb5 = false; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /material/docs/app/partials/menu-link.tmpl.html: -------------------------------------------------------------------------------- 1 | 5 | {{section | humanizeDoc}} 6 | 8 | current page 9 | 10 | 11 | -------------------------------------------------------------------------------- /material/src/components/switch/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('switchDemo1', ['ngMaterial']) 2 | .controller('SwitchDemoCtrl', function($scope) { 3 | $scope.data = { 4 | cb1: true, 5 | cb4: true, 6 | cb5: false 7 | }; 8 | 9 | $scope.onChange = function(cbState) { 10 | $scope.message = "The switch is now: " + cbState; 11 | }; 12 | }); 13 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/mail.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/subheader/subheader-theme.scss: -------------------------------------------------------------------------------- 1 | .md-subheader.md-THEME_NAME-theme { 2 | color: '{{ foreground-2-0.23 }}'; 3 | background-color: '{{background-color}}'; 4 | 5 | &.md-primary { 6 | color: '{{primary-color}}' 7 | } 8 | &.md-accent { 9 | color: '{{accent-color}}' 10 | } 11 | &.md-warn { 12 | color: '{{warn-color}}' 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/favorite.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/gridList/demoBasicUsage/styles.css: -------------------------------------------------------------------------------- 1 | md-grid-list { margin: 8px; } 2 | .gray { background: #f5f5f5; } 3 | .green { background: #b9f6ca; } 4 | .yellow { background: #ffff8d; } 5 | .blue { background: #84ffff; } 6 | .purple { background: #b388ff; } 7 | .red { background: #ff8a80; } 8 | 9 | 10 | 11 | md-grid-tile { 12 | transition: all 400ms ease-out 50ms; 13 | } 14 | -------------------------------------------------------------------------------- /material/src/components/tabs/js/tabItemDirective.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.tabs') 3 | .directive('mdTabItem', MdTabItem); 4 | 5 | function MdTabItem () { 6 | return { 7 | require: '^?mdTabs', 8 | link: function link (scope, element, attr, ctrl) { 9 | if (!ctrl) return; 10 | ctrl.attachRipple(scope, element); 11 | } 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /material/src/components/virtualRepeat/demoVerticalUsage/script.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | 4 | angular 5 | .module('virtualRepeatVerticalDemo', ['ngMaterial']) 6 | .controller('AppCtrl', function() { 7 | this.items = []; 8 | for (var i = 0; i < 1000; i++) { 9 | this.items.push(i); 10 | } 11 | }); 12 | 13 | })(); 14 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/message.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/gulp/tasks/server.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var webserver = require('gulp-webserver'); 3 | var LR_PORT = require('../const').LR_PORT; 4 | 5 | exports.task = function() { 6 | return gulp.src('.') 7 | .pipe(webserver({ 8 | host: '0.0.0.0', 9 | livereload: true, 10 | port: LR_PORT, 11 | directoryListing: true 12 | })); 13 | }; 14 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/copy2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/fabToolbar/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | angular.module('fabToolbarBasicUsageDemo', ['ngMaterial']) 5 | .controller('AppCtrl', function($scope) { 6 | $scope.isOpen = false; 7 | 8 | $scope.demo = { 9 | isOpen: false, 10 | count: 0, 11 | selectedAlignment: 'md-left' 12 | }; 13 | }); 14 | })(); -------------------------------------------------------------------------------- /material/docs/app/img/icons/hangout.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_build_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/checkbox/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .checkboxDemo1 div { 2 | clear: both; 3 | } 4 | .checkboxDemo1 md-checkbox { 5 | float: left; 6 | } 7 | p { 8 | padding-left: 8px; 9 | } 10 | fieldset.standard { 11 | border-style: solid; 12 | border-width: 1px; 13 | } 14 | legend { 15 | color: #3F51B5; 16 | } 17 | legend code { 18 | color: #3F51B5; 19 | font-weight: normal; 20 | } 21 | -------------------------------------------------------------------------------- /material/src/components/swipe/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | Swipe me to the left 4 |
    5 | 6 |
    7 | Swipe me to the right 8 |
    9 |
    10 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/input.template.html: -------------------------------------------------------------------------------- 1 | {% include "lib/macros.html" -%} 2 | {% extends "api/directive.template.html" %} 3 | 4 | {% block usage %} 5 | {% code %} 6 | 10 | {% endcode %} 11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/mail.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoBasicUsage/img/icons/favorite.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/more_vert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/print.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/icon/demoSvgIconSets/style.css: -------------------------------------------------------------------------------- 1 | 2 | md-progress-circular { 3 | margin-bottom:20px; 4 | } 5 | 6 | md-icon { 7 | margin: 20px; 8 | margin-top: 0; 9 | width: 24px; 10 | height: 24px; 11 | } 12 | 13 | .demo-content { 14 | min-height: 210px; 15 | } 16 | 17 | .appSvgIconSets { 18 | padding:25px; 19 | } 20 | 21 | .s48 { 22 | width:48px; 23 | height:48px; 24 | } 25 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/message.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/copy2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/tooltip/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | 2 | md-toolbar .md-toolbar-tools .md-button, 3 | md-toolbar .md-toolbar-tools .md-button:hover { 4 | box-shadow: none; 5 | border: none; 6 | transform: none; 7 | -webkit-transform: none; 8 | } 9 | 10 | 11 | .left { 12 | top:70px !important; 13 | left:56px !important; 14 | } 15 | 16 | .right { 17 | top:70px !important; 18 | right:56px !important; 19 | } 20 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/hangout.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/fabSpeedDial/demoBasicUsage/style.scss: -------------------------------------------------------------------------------- 1 | .text-capitalize { 2 | text-transform: capitalize; 3 | } 4 | 5 | .md-fab:hover, .md-fab.md-focused { 6 | background-color: #000 !important; 7 | } 8 | 9 | p.note { 10 | font-size: 1.2rem; 11 | } 12 | 13 | .lock-size { 14 | min-width: 300px; 15 | min-height: 300px; 16 | width: 300px; 17 | height: 300px; 18 | margin-left: auto; 19 | margin-right: auto; 20 | } -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_phone_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/properties.template.html: -------------------------------------------------------------------------------- 1 | {%- if doc.properties %} 2 |
    3 |

    Properties

    4 | 12 |
    13 | {%- endif -%} 14 | -------------------------------------------------------------------------------- /material/src/components/toast/toast-theme.scss: -------------------------------------------------------------------------------- 1 | md-toast.md-THEME_NAME-theme { 2 | background-color: #323232; 3 | color: '{{background-50}}'; 4 | 5 | .md-button { 6 | color: '{{background-50}}'; 7 | &.md-highlight { 8 | color: '{{primary-A200}}'; 9 | &.md-accent { 10 | color: '{{accent-A200}}'; 11 | } 12 | &.md-warn { 13 | color: '{{warn-A200}}'; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /material/src/components/sticky/sticky.scss: -------------------------------------------------------------------------------- 1 | .md-sticky-clone { 2 | z-index: 2; 3 | top: 0; 4 | left: 0; 5 | right: 0; 6 | position: absolute !important; 7 | 8 | transform: translate3d(-9999px,-9999px,0); 9 | 10 | &[sticky-state="active"] { 11 | transform: translate3d(0, 0, 0); 12 | &:not(.md-sticky-no-effect) .md-subheader-inner { 13 | animation: subheaderStickyHoverIn 0.3s ease-out both; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/print.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoBasicUsage/img/icons/more_vert.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/bottomSheet-theme.scss: -------------------------------------------------------------------------------- 1 | 2 | md-bottom-sheet.md-THEME_NAME-theme { 3 | background-color: '{{background-50}}'; 4 | border-top-color: '{{background-300}}'; 5 | 6 | &.md-list { 7 | md-list-item { 8 | color: '{{foreground-1}}'; 9 | } 10 | } 11 | 12 | .md-subheader { 13 | background-color: '{{background-50}}'; 14 | } 15 | 16 | .md-subheader { 17 | color: '{{foreground-1}}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /material/src/components/input/demoIcons/style.scss: -------------------------------------------------------------------------------- 1 | .inputIconDemo { 2 | min-height:48px; 3 | } 4 | 5 | 6 | md-input-container:not(.md-input-invalid) > md-icon.email { 7 | color : green; 8 | } 9 | md-input-container:not(.md-input-invalid) > md-icon.name { 10 | color : dodgerblue; 11 | } 12 | 13 | md-input-container.md-input-invalid > md-icon.email, 14 | md-input-container.md-input-invalid > md-icon.name, 15 | { 16 | color : red; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | .md-inline-list-icon-label { 2 | display: inline-block; 3 | padding-left: 10px; 4 | padding-right:10px; 5 | margin-top: -10px; 6 | height: 24px; 7 | vertical-align: middle; 8 | 9 | } 10 | 11 | .md-grid-item-content { 12 | height:96px; 13 | } 14 | .md-grid-item-content md-icon { 15 | height: 48px; 16 | width: 48px; 17 | } 18 | 19 | .md-grid-text { 20 | padding-bottom: 5px; 21 | } 22 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/params.template.html: -------------------------------------------------------------------------------- 1 | {%- if doc.params %} 2 |
    3 |

    4 | {% if doc.paramType %} 5 | {$ doc.paramType $} 6 | {% elif doc.docType == 'directive' %} 7 | Attributes 8 | {% else %} 9 | Arguments 10 | {% endif %} 11 |

    12 |
    13 | {$ paramTable(doc.params) $} 14 |
    15 |
    16 | {%- endif -%} 17 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/bottom-sheet-grid-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
    {{ item.name }}
    8 |
    9 | 10 |
    11 |
    12 |
    13 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/gulp/tasks/karma-watch.js: -------------------------------------------------------------------------------- 1 | var karma = require('karma').server; 2 | var ROOT = require('../const').ROOT; 3 | var args = require('../util').args; 4 | 5 | // Make full build of JS and CSS 6 | exports.dependencies = ['build']; 7 | 8 | exports.task = function(done) { 9 | karma.start({ 10 | singleRun: false, 11 | autoWatch: true, 12 | configFile: ROOT + '/config/karma.conf.js', 13 | browsers : args.browsers ? args.browsers.trim().split(',') : ['Chrome'] 14 | },done); 15 | }; 16 | -------------------------------------------------------------------------------- /material/src/components/slider/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('sliderDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | $scope.color = { 7 | red: Math.floor(Math.random() * 255), 8 | green: Math.floor(Math.random() * 255), 9 | blue: Math.floor(Math.random() * 255) 10 | }; 11 | 12 | $scope.rating1 = 3; 13 | $scope.rating2 = 2; 14 | $scope.rating3 = 4; 15 | 16 | $scope.disabled1 = 0; 17 | $scope.disabled2 = 70; 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoScrollShrink/script.js: -------------------------------------------------------------------------------- 1 | var app = angular.module('toolbarDemo2', ['ngMaterial']); 2 | 3 | app.controller('AppCtrl', function($scope) { 4 | var imagePath = 'img/list/60.jpeg'; 5 | 6 | $scope.todos = []; 7 | for (var i = 0; i < 15; i++) { 8 | $scope.todos.push({ 9 | face: imagePath, 10 | what: "Brunch this weekend?", 11 | who: "Min Li Chan", 12 | notes: "I'll be in your neighborhood doing errands." 13 | }); 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/octicon-repo.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /material/src/components/button/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | section { 2 | background: #f7f7f7; 3 | border-radius: 3px; 4 | text-align: center; 5 | margin: 1em; 6 | position: relative !important; 7 | padding-bottom: 10px; 8 | } 9 | md-content { 10 | margin-right: 7px; 11 | } 12 | section .md-button { 13 | margin-top: 16px; 14 | margin-bottom: 16px; 15 | } 16 | .label { 17 | position: absolute; 18 | bottom: 5px; 19 | left: 7px; 20 | font-size: 14px; 21 | opacity: 0.54; 22 | } 23 | 24 | -------------------------------------------------------------------------------- /material/src/components/chips/demoCustomInputs/style.css: -------------------------------------------------------------------------------- 1 | md-content.autocomplete { 2 | min-height: 200px; 3 | } 4 | input[type=number] { 5 | width: 110px; 6 | } 7 | .veggie-option { 8 | float: left; 9 | width: 20%; 10 | box-sizing: border-box; 11 | padding: 0 8px; 12 | } 13 | .veggie-option .md-item-text { 14 | padding: 8px; 15 | background: #f0f0f0; 16 | border-radius: 3px; 17 | } 18 | .veggie-option .md-item-text h3, 19 | .veggie-option .md-item-text p { 20 | padding: 0; 21 | margin: 0; 22 | } -------------------------------------------------------------------------------- /material/gulp/tasks/jshint.js: -------------------------------------------------------------------------------- 1 | var config = require('../config'); 2 | var gulp = require('gulp'); 3 | var jshint = require('gulp-jshint'); 4 | 5 | exports.task = function() { 6 | return gulp.src(config.jsFiles) 7 | .pipe(jshint('.jshintrc')) 8 | .pipe(jshint.reporter(require('jshint-summary')({ 9 | fileColCol: ',bold', 10 | positionCol: ',bold', 11 | codeCol: 'green,bold', 12 | reasonCol: 'cyan' 13 | }))) 14 | .pipe(jshint.reporter('fail')); 15 | }; 16 | -------------------------------------------------------------------------------- /material/src/components/virtualRepeat/demoVerticalUsage/style.css: -------------------------------------------------------------------------------- 1 | #vertical-container { 2 | height: 292px; 3 | width: 400px; 4 | } 5 | 6 | .repeated-item { 7 | border-bottom: 1px solid #ddd; 8 | box-sizing: border-box; 9 | height: 40px; 10 | padding-top: 10px; 11 | } 12 | 13 | md-content { 14 | margin: 16px; 15 | } 16 | 17 | md-virtual-repeat-container { 18 | border: solid 1px grey; 19 | } 20 | 21 | .md-virtual-repeat-container .md-virtual-repeat-offsetter { 22 | padding-left: 16px; 23 | } 24 | -------------------------------------------------------------------------------- /material/src/components/progressLinear/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 | -------------------------------------------------------------------------------- /react-a11y/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-a11y-demo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "webpack -p" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "babel-core": "^5.6.15", 13 | "babel-loader": "^5.2.2", 14 | "babel-runtime": "^5.6.15", 15 | "node-libs-browser": "^0.5.2", 16 | "react": "^0.13.3", 17 | "react-a11y": "^0.2.6", 18 | "webpack": "^1.10.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/progressCircular/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('progressCircularDemo1', ['ngMaterial']) 2 | .controller('AppCtrl', ['$scope', '$interval', 3 | function($scope, $interval) { 4 | $scope.mode = 'query'; 5 | $scope.determinateValue = 30; 6 | 7 | $interval(function() { 8 | $scope.determinateValue += 1; 9 | if ($scope.determinateValue > 100) { 10 | $scope.determinateValue = 30; 11 | } 12 | }, 100, 0, true); 13 | } 14 | ]); 15 | -------------------------------------------------------------------------------- /material/src/components/icon/demoUsingTemplateCache/style.css: -------------------------------------------------------------------------------- 1 | 2 | md-progress-circular { 3 | margin-bottom:20px; 4 | } 5 | 6 | md-icon { 7 | margin: 20px; 8 | margin-top: 0; 9 | width: 24px; 10 | height: 24px; 11 | } 12 | 13 | .demo-content { 14 | min-height: 210px; 15 | } 16 | 17 | .appUsingTemplateCache { 18 | padding:25px; 19 | } 20 | 21 | .note { 22 | font-size: 12px; 23 | display: block; 24 | margin-top: -2px; 25 | padding-left: 25px; 26 | color: rgb(127, 126, 126); 27 | } 28 | -------------------------------------------------------------------------------- /material/src/components/whiteframe/whiteframe.scss: -------------------------------------------------------------------------------- 1 | .md-whiteframe-z1 { 2 | box-shadow: $whiteframe-shadow-z1; 3 | } 4 | .md-whiteframe-z2 { 5 | box-shadow: $whiteframe-shadow-z2; 6 | } 7 | .md-whiteframe-z3 { 8 | box-shadow: $whiteframe-shadow-z3; 9 | } 10 | .md-whiteframe-z4 { 11 | box-shadow: $whiteframe-shadow-z4; 12 | } 13 | .md-whiteframe-z5 { 14 | box-shadow: $whiteframe-shadow-z5; 15 | } 16 | 17 | @media screen and (-ms-high-contrast: active) { 18 | md-whiteframe { 19 | border: 1px solid #fff; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/addShoppingCart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/docs/config/processors/indexPage.js: -------------------------------------------------------------------------------- 1 | var buildConfig = require('../../../config/build.config'); 2 | 3 | module.exports = function indexPageProcessor(log) { 4 | return { 5 | $runAfter: ['componentsGenerateProcessor'], 6 | $runBefore: ['rendering-docs'], 7 | $process: process 8 | }; 9 | 10 | function process(docs) { 11 | docs.push({ 12 | template: 'index.template.html', 13 | outputPath: 'index.html', 14 | path: 'index.html', 15 | buildConfig: buildConfig 16 | }); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/demoCustomTemplate/img/icons/octicon-repo.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /material/src/components/checkbox/demoSyncing/style.css: -------------------------------------------------------------------------------- 1 | .checkboxDemo1 div { 2 | clear: both; 3 | } 4 | .checkboxDemo1 md-checkbox { 5 | float: left; 6 | } 7 | legend { 8 | color: #3F51B5; 9 | } 10 | legend code { 11 | color: #3F51B5; 12 | font-weight: normal; 13 | } 14 | p { 15 | padding-left: 8px; 16 | } 17 | 18 | .info { 19 | padding-left: 13px; 20 | } 21 | 22 | div.standard { 23 | padding: 8px; 24 | padding-left: 15px; 25 | } 26 | 27 | fieldset.standard { 28 | border-style: solid; 29 | border-width: 1px; 30 | } 31 | -------------------------------------------------------------------------------- /material/src/components/select/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | angular 4 | .module('selectDemoBasic', ['ngMaterial']) 5 | .controller('AppCtrl', function() { 6 | this.userState = ''; 7 | this.states = ('AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS ' + 8 | 'MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI ' + 9 | 'WY').split(' ').map(function (state) { return { abbrev: state }; }); 10 | }); 11 | })(); 12 | -------------------------------------------------------------------------------- /material/src/components/toolbar/toolbar-theme.scss: -------------------------------------------------------------------------------- 1 | md-toolbar.md-THEME_NAME-theme { 2 | background-color: '{{primary-color}}'; 3 | color: '{{primary-contrast}}'; 4 | 5 | md-icon { 6 | color: '{{primary-contrast}}'; 7 | } 8 | 9 | .md-button { 10 | color: '{{primary-contrast}}'; 11 | } 12 | 13 | &.md-accent { 14 | background-color: '{{accent-color}}'; 15 | color: '{{accent-contrast}}'; 16 | } 17 | &.md-warn { 18 | background-color: '{{warn-color}}'; 19 | color: '{{warn-contrast}}'; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /material/src/components/checkbox/demoSyncing/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('checkboxDemo1', ['ngMaterial']) 3 | 4 | .controller('AppCtrl', function($scope) { 5 | 6 | $scope.items = [1,2,3,4,5]; 7 | $scope.selected = []; 8 | 9 | $scope.toggle = function (item, list) { 10 | var idx = list.indexOf(item); 11 | if (idx > -1) list.splice(idx, 1); 12 | else list.push(item); 13 | }; 14 | 15 | $scope.exists = function (item, list) { 16 | return list.indexOf(item) > -1; 17 | }; 18 | }); 19 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/img/icons/addShoppingCart.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/bottom-sheet-list-template.html: -------------------------------------------------------------------------------- 1 | 2 | Comment Actions 3 | 4 | 5 | 6 | 7 | 8 | {{ item.name }} 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /material/src/components/tabs/js/tabScroll.js: -------------------------------------------------------------------------------- 1 | angular.module('material.components.tabs') 2 | .directive('mdTabScroll', MdTabScroll); 3 | 4 | function MdTabScroll ($parse) { 5 | return { 6 | restrict: 'A', 7 | compile: function ($element, attr) { 8 | var fn = $parse(attr.mdTabScroll, null, true); 9 | return function ngEventHandler (scope, element) { 10 | element.on('mousewheel', function (event) { 11 | scope.$apply(function () { fn(scope, { $event: event }); }); 12 | }); 13 | }; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /material/src/components/content/content.scss: -------------------------------------------------------------------------------- 1 | md-content { 2 | 3 | display: block; 4 | position: relative; 5 | overflow: auto; 6 | -webkit-overflow-scrolling: touch; 7 | 8 | &[md-scroll-y] { 9 | overflow-y: auto; 10 | overflow-x: hidden; 11 | } 12 | &[md-scroll-x] { 13 | overflow-x: auto; 14 | overflow-y: hidden; 15 | } 16 | &[md-scroll-xy] { 17 | } 18 | 19 | // For iOS allow disabling of momentum scrolling 20 | // @see issue #2640. 21 | 22 | &.autoScroll { 23 | -webkit-overflow-scrolling: auto; 24 | } 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoStaticTabs/style.scss: -------------------------------------------------------------------------------- 1 | md-tab-content { 2 | padding: 25px; 3 | &:nth-child(1) { 4 | background-color: #42A5F5; 5 | } 6 | &:nth-child(2) { 7 | background-color: #689F38; 8 | } 9 | &:nth-child(3) { 10 | background-color: #26C6DA; 11 | } 12 | } 13 | .after-tabs-area { 14 | > span { 15 | margin-top:25px; 16 | padding-right: 15px; 17 | vertical-align: middle; 18 | line-height: 30px; 19 | height: 35px; 20 | } 21 | > md-checkbox { 22 | margin-top:26px; 23 | margin-left: 0; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/demoCustomTemplate/style.css: -------------------------------------------------------------------------------- 1 | .autocomplete-custom-template li { 2 | border-bottom: 1px solid #ccc; 3 | height: auto; 4 | padding-top: 8px; 5 | padding-bottom: 8px; 6 | white-space: normal; 7 | } 8 | .autocomplete-custom-template li:last-child { 9 | border-bottom-width: 0; 10 | } 11 | .autocomplete-custom-template .item-title, 12 | .autocomplete-custom-template .item-metadata { 13 | display: block; 14 | line-height: 2; 15 | } 16 | .autocomplete-custom-template .item-title md-icon { 17 | height: 18px; 18 | width: 18px; 19 | } 20 | -------------------------------------------------------------------------------- /material/src/components/fabSpeedDial/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | angular.module('fabSpeedDialBasicUsageDemo', ['ngMaterial']) 5 | .controller('DemoCtrl', function() { 6 | this.topDirections = ['left', 'up']; 7 | this.bottomDirections = ['down', 'right']; 8 | 9 | this.isOpen = false; 10 | 11 | this.availableModes = ['md-fling', 'md-scale']; 12 | this.selectedMode = 'md-fling'; 13 | 14 | this.availableDirections = ['up', 'down', 'left', 'right']; 15 | this.selectedDirection = 'up'; 16 | }); 17 | })(); 18 | -------------------------------------------------------------------------------- /material/src/components/radioButton/demoBasicUsage/style.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | padding: 20px; 4 | } 5 | 6 | hr { 7 | margin-left:-20px; opacity:0.3; 8 | } 9 | 10 | md-radio-group { 11 | width:150px; 12 | } 13 | 14 | p:last-child { 15 | padding-bottom: 50px; 16 | } 17 | 18 | 19 | [ng-controller] { 20 | padding-left: 20px; 21 | } 22 | 23 | .radioValue { 24 | margin-left: 5px; 25 | color: #0f9d58; 26 | font-weight: bold; 27 | padding:5px; 28 | 29 | } 30 | 31 | md-icon { 32 | margin: 20px; 33 | margin-top: 0; 34 | width: 128px; 35 | height: 128px; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /material/scripts/build-asset-cache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Intended to generate an object literal of SVG images 4 | # key - relative path to file. 5 | # value - contents of the SVG. 6 | # 7 | # See the following guide about the process to update the asset cache: 8 | # https://github.com/angular/material/blob/feature/edit-example-on-codepen/docs/guides/CODEPEN.md 9 | 10 | echo { 11 | for i in $(find docs/app/{img/icons,icons} -type f -name *.svg); do 12 | filename=`echo $i | sed "s/docs\/app\///"` 13 | contents=`cat $i | tr -d '\r\n'` 14 | echo -e \'$filename\' : \'$contents\', 15 | done 16 | echo } 17 | -------------------------------------------------------------------------------- /material/src/components/icon/demoSvgIconSets/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |

    Display an icon from a pre-registered set of icons:

    4 | 5 |

    6 | 7 | 8 | 9 |

    10 | 11 |
    12 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/separator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /material/gulp/tasks/changelog.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var changelog = require('conventional-changelog'); 3 | var util = require('../util'); 4 | var ROOT = require('../const').ROOT; 5 | var SHA = require('../const').SHA; 6 | var VERSION = require('../const').VERSION; 7 | 8 | exports.task = function () { 9 | var options = { 10 | repository: 'https://github.com/angular/material', 11 | version: VERSION, 12 | file: 'CHANGELOG.md' 13 | }; 14 | if (SHA) { 15 | options.from = SHA; 16 | } 17 | changelog(options, function(err, log) { 18 | fs.writeFileSync(ROOT + '/CHANGELOG.md', log); 19 | }); 20 | }; 21 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | md-progress-circular { 6 | margin-bottom:20px; 7 | } 8 | 9 | md-icon { 10 | margin: 20px; 11 | margin-top: 0; 12 | width: 24px; 13 | height: 24px; 14 | } 15 | 16 | 17 | 18 | .demo-content { 19 | min-height: 210px; 20 | } 21 | 22 | 23 | .appDemoSvgIcons { 24 | padding:25px; 25 | } 26 | 27 | .s24 { 28 | width: 24px;height: 24px; 29 | color: #f00; 30 | } 31 | 32 | .s36 { 33 | width: 36px;height: 36px; 34 | color: #0f0; 35 | } 36 | 37 | .s48 { 38 | width: 48px;height: 48px; 39 | color: #00f; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/cake.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/select/demoOptionsWithAsyncSearch/script.js: -------------------------------------------------------------------------------- 1 | angular.module('selectDemoOptionsAsync', ['ngMaterial']) 2 | .controller('SelectAsyncController', function($timeout, $scope) { 3 | 4 | $scope.loadUsers = function() { 5 | // Use timeout to simulate a 650ms request. 6 | $scope.users = []; 7 | return $timeout(function() { 8 | $scope.users = [ 9 | { id: 1, name: 'Scooby Doo' }, 10 | { id: 2, name: 'Shaggy Rodgers' }, 11 | { id: 3, name: 'Fred Jones' }, 12 | { id: 4, name: 'Daphne Blake' }, 13 | { id: 5, name: 'Velma Dinkley' }, 14 | ]; 15 | }, 650); 16 | }; 17 | }); 18 | -------------------------------------------------------------------------------- /material/src/components/fabSpeedDial/demoTooltips/style.scss: -------------------------------------------------------------------------------- 1 | .text-capitalize { 2 | text-transform: capitalize; 3 | } 4 | 5 | .md-fab:hover, .md-fab.md-focused { 6 | background-color: #000 !important; 7 | } 8 | 9 | p.note { 10 | font-size: 1.2rem; 11 | } 12 | 13 | .lock-size { 14 | min-width: 300px; 15 | min-height: 300px; 16 | width: 300px; 17 | height: 300px; 18 | margin-left: auto; 19 | margin-right: auto; 20 | } 21 | 22 | .md-fab.demo-fab.trigger-fab, .md-fab.demo-fab.action-fab { 23 | &:hover, &.md-focused { 24 | background-color: #333; 25 | } 26 | } 27 | 28 | .md-fab.demo-fab.action-fab { 29 | background-color: #aaa; 30 | } 31 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/npm-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /material/src/components/icon/demoSvgIconSets/assets/cake.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/menu/demoMenuWidth/script.js: -------------------------------------------------------------------------------- 1 | angular.module('menuDemoWidth', ['ngMaterial']) 2 | .config(function($mdIconProvider) { 3 | $mdIconProvider 4 | .iconSet("call", 'img/icons/sets/communication-icons.svg', 24) 5 | .iconSet("social", 'img/icons/sets/social-icons.svg', 24); 6 | }) 7 | .controller('WidthDemoCtrl', DemoCtrl); 8 | 9 | function DemoCtrl($mdDialog) { 10 | var vm = this; 11 | 12 | this.announceClick = function(index) { 13 | $mdDialog.show( 14 | $mdDialog.alert() 15 | .title('You clicked!') 16 | .content('You clicked the menu item at index ' + index) 17 | .ok('Nice') 18 | ); 19 | }; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /material/src/components/icon/demoUsingTemplateCache/assets/cake.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/progressCircular/progressCircular.spec.js: -------------------------------------------------------------------------------- 1 | describe('mdProgressCircular', function() { 2 | beforeEach(module('material.components.progressCircular')); 3 | 4 | it('should update aria-valuenow', inject(function($compile, $rootScope) { 5 | var element = $compile('
    ' + 6 | '' + 7 | '' + 8 | '
    ')($rootScope); 9 | 10 | $rootScope.$apply(function() { 11 | $rootScope.progress = 50; 12 | }); 13 | 14 | var progress = element.find('md-progress-circular'); 15 | 16 | expect(progress.eq(0).attr('aria-valuenow')).toEqual('50'); 17 | })); 18 | }); 19 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/android.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/img/icons/cake.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/js/parentScope.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.autocomplete') 3 | .directive('mdAutocompleteParentScope', MdAutocompleteParentScope); 4 | 5 | function MdAutocompleteParentScope ($compile, $mdUtil) { 6 | return { 7 | restrict: 'A', 8 | terminal: true, 9 | link: postLink, 10 | scope: false 11 | }; 12 | function postLink (scope, element, attr) { 13 | var ctrl = scope.$parent.$mdAutocompleteCtrl; 14 | $compile(element.contents())(ctrl.parent); 15 | if (attr.hasOwnProperty('mdAutocompleteReplace')) { 16 | element.after(element.contents()); 17 | element.remove(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /material/src/components/gridList/demoResponsiveUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 7 | 14 | 15 | 16 | 17 |
    18 | -------------------------------------------------------------------------------- /material/src/components/menu/demoMenuPositionModes/script.js: -------------------------------------------------------------------------------- 1 | angular.module('menuDemoPosition', ['ngMaterial']) 2 | .config(function($mdIconProvider) { 3 | $mdIconProvider 4 | .iconSet("call", 'img/icons/sets/communication-icons.svg', 24) 5 | .iconSet("social", 'img/icons/sets/social-icons.svg', 24); 6 | }) 7 | .controller('PositionDemoCtrl', DemoCtrl); 8 | 9 | function DemoCtrl($mdDialog) { 10 | var vm = this; 11 | 12 | this.announceClick = function(index) { 13 | $mdDialog.show( 14 | $mdDialog.alert() 15 | .title('You clicked!') 16 | .content('You clicked the menu item at index ' + index) 17 | .ok('Nice') 18 | ); 19 | }; 20 | } 21 | 22 | 23 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoStaticTabs/script.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | 4 | angular 5 | .module('tabsDemoStaticTabs', ['ngMaterial'] ) 6 | .controller('AppCtrl', AppCtrl); 7 | 8 | function AppCtrl ( $scope ) { 9 | $scope.data = { 10 | selectedIndex: 0, 11 | secondLocked: true, 12 | secondLabel: "Item Two", 13 | bottom: false 14 | }; 15 | $scope.next = function() { 16 | $scope.data.selectedIndex = Math.min($scope.data.selectedIndex + 1, 2) ; 17 | }; 18 | $scope.previous = function() { 19 | $scope.data.selectedIndex = Math.max($scope.data.selectedIndex - 1, 0); 20 | }; 21 | } 22 | })(); 23 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /material/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var fs = require('fs'); 3 | 4 | //-- include docs gulpfile (should eventually be factored out) 5 | require('./docs/gulpfile'); 6 | 7 | //-- read in all files from gulp/tasks and create tasks for them 8 | fs.readdirSync('./gulp/tasks') 9 | .filter(function (filename) { 10 | return filename.match(/\.js$/i); 11 | }) 12 | .map(function (filename) { 13 | return { 14 | name: filename.substr(0, filename.length - 3), 15 | contents: require('./gulp/tasks/' + filename) 16 | }; 17 | }) 18 | .filter(function (file) { 19 | gulp.task(file.name, file.contents.dependencies, file.contents.task); 20 | }); 21 | -------------------------------------------------------------------------------- /material/docs/guides/component/README.md: -------------------------------------------------------------------------------- 1 | ### Component Templates 2 | 3 | This folder and its contents provide a starting template for any Angular Material component. It is easy to use these assets for your own custom component development. 4 | 5 | > Please do all of your development work in a Git branch; labelled with a WIP prefix!! 6 | 7 | Simply: 8 | 9 | - Create a work-in-progress Git branch; 10 | - Clone this directory to the `/src/components/` 11 | - Rename all files from `_name_*.js` with the name of your component; 12 | > e.g.     gridlist.js,    select.js 13 | - Rename **jsDoc** ** references to `_name_` 14 | - Rename **source** references to `_name_` 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/img/icons/android.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/icon/demoUsingTemplateCache/assets/android.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /material/src/components/backdrop/backdrop.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @ngdoc module 3 | * @name material.components.backdrop 4 | * @description Backdrop 5 | */ 6 | 7 | /** 8 | * @ngdoc directive 9 | * @name mdBackdrop 10 | * @module material.components.backdrop 11 | * 12 | * @restrict E 13 | * 14 | * @description 15 | * `` is a backdrop element used by other components, such as dialog and bottom sheet. 16 | * Apply class `opaque` to make the backdrop use the theme backdrop color. 17 | * 18 | */ 19 | 20 | angular.module('material.components.backdrop', [ 21 | 'material.core' 22 | ]) 23 | .directive('mdBackdrop', BackdropDirective); 24 | 25 | function BackdropDirective($mdTheming) { 26 | return $mdTheming; 27 | } 28 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/autocomplete-theme.scss: -------------------------------------------------------------------------------- 1 | md-autocomplete.md-THEME_NAME-theme { 2 | background: '{{background-50}}'; 3 | &[disabled] { 4 | background: '{{background-100}}'; 5 | } 6 | button { 7 | md-icon { 8 | path { 9 | fill: '{{background-600}}'; 10 | } 11 | } 12 | &:after { 13 | background: '{{background-600-0.3}}'; 14 | } 15 | } 16 | } 17 | .md-autocomplete-suggestions.md-THEME_NAME-theme { 18 | background: '{{background-50}}'; 19 | li { 20 | color: '{{background-900}}'; 21 | .highlight { 22 | color: '{{background-600}}'; 23 | } 24 | &:hover, 25 | &.selected { 26 | background: '{{background-200}}'; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/img/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /material/src/components/chips/js/chipTranscludeDirective.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.chips') 3 | .directive('mdChipTransclude', MdChipTransclude); 4 | 5 | function MdChipTransclude ($compile, $mdUtil) { 6 | return { 7 | restrict: 'EA', 8 | terminal: true, 9 | link: link, 10 | scope: false 11 | }; 12 | function link (scope, element, attr) { 13 | var ctrl = scope.$parent.$mdChipsCtrl, 14 | newScope = ctrl.parent.$new(false, ctrl.parent); 15 | newScope.$$replacedScope = scope; 16 | newScope.$chip = scope.$chip; 17 | newScope.$mdChipsCtrl = ctrl; 18 | element.html(ctrl.$scope.$eval(attr.mdChipTransclude)); 19 | $compile(element.contents())(newScope); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /material/src/components/gridList/demoDynamicTiles/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 6 | 7 | 12 | 13 |

    {{tile.title}}

    14 |
    15 |
    16 |
    17 | -------------------------------------------------------------------------------- /material/docs/app/js/scripts.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | DocsApp 3 | .factory('$demoAngularScripts', ['BUILDCONFIG', DemoAngularScripts]); 4 | 5 | function DemoAngularScripts(BUILDCONFIG) { 6 | var scripts = [ 7 | 'angular.js', 8 | 'angular-animate.min.js', 9 | 'angular-route.min.js', 10 | 'angular-aria.min.js', 11 | 'angular-messages.min.js' 12 | ]; 13 | 14 | return { 15 | all: allAngularScripts 16 | }; 17 | 18 | function allAngularScripts() { 19 | return scripts.map(fullPathToScript); 20 | }; 21 | 22 | function fullPathToScript(script) { 23 | return "https://ajax.googleapis.com/ajax/libs/angularjs/" + BUILDCONFIG.ngVersion + "/" + script; 24 | }; 25 | }; 26 | })(); 27 | -------------------------------------------------------------------------------- /material/src/components/icon/demoUsingTemplateCache/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |

    4 | Pre-fetch with $http & cache SVG icons using $templateCache.
    5 | NOTE: Show the Source views for details... 6 |

    7 | 8 |

    9 | 10 | 11 | 12 | 13 |

    14 | 15 |
    16 | -------------------------------------------------------------------------------- /shower-bright/Readme.md: -------------------------------------------------------------------------------- 1 | # Bright theme for Shower 2 | 3 | Follow [@shower_me](https://twitter.com/shower_me) for support and updates 4 | 5 | To see Bright theme for Shower in action: 6 | 7 | - Open [shwr.me/shower/themes/bright](http://shwr.me/shower/themes/bright/) 8 | - Click any slide to enter presentation mode 9 | - Use arrow keys or presenter remote to navigate 10 | - Press `Esc` to exit presentation mode 11 | 12 | Part of [Shower presentation template](https://github.com/shower/shower/). See [Wiki](https://github.com/shower/shower/wiki) for more information how to use Shower. 13 | 14 | --- 15 | Licensed under [MIT License](http://en.wikipedia.org/wiki/MIT_License), see [license page](https://github.com/shower/shower/wiki/MIT-License) for details. 16 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/tabs-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /material/src/components/fabSpeedDial/demoTooltips/script.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | angular.module('fabSpeedDialModalDemo', ['ngMaterial']) 5 | .controller('DemoCtrl', function($mdDialog) { 6 | this.openDialog = function($event) { 7 | $mdDialog.show({ 8 | clickOutsideToClose: true, 9 | controller: function($mdDialog) { 10 | this.close = function() { 11 | $mdDialog.cancel(); 12 | }; 13 | this.submit = function() { 14 | $mdDialog.hide(); 15 | }; 16 | }, 17 | controllerAs: 'dialog', 18 | templateUrl: 'dialog.html', 19 | targetEvent: $event 20 | }); 21 | } 22 | }); 23 | })(); 24 | -------------------------------------------------------------------------------- /material/src/components/select/demoOptionsWithAsyncSearch/index.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Select can call an arbitrary function on show. If this function returns a promise, it will display a loading indicator while it is being resolved:

    3 |
    4 | 5 | {{user.name}} 6 | 7 |

    You have assigned the task to: {{ user ? user.name : 'No one yet' }}

    8 |
    9 |
    10 | -------------------------------------------------------------------------------- /material/config/ngModuleData.js: -------------------------------------------------------------------------------- 1 | // Regex adapted from https://github.com/ceymard/gulp-ngcompile 2 | 3 | module.exports = function processContent(fileContent) { 4 | var NG_MODULE_REGEX = /\.module\(('[^']*'|"[^"]*")\s*,(?:\s*\[([^\]]+)\])?/g; 5 | var match = NG_MODULE_REGEX.exec(fileContent || ''); 6 | var module = match && match[1] && match[1].slice(1, -1); //remove quotes 7 | var depsMatch = match && match[2] && match[2].trim(); 8 | 9 | var dependencies = []; 10 | if (depsMatch) { 11 | dependencies = depsMatch.split(/\s*,\s*/).map(function(dep) { 12 | dep = dep.slice(1, -1); //remove quotes 13 | return dep; 14 | }); 15 | } 16 | 17 | return { 18 | module: module || '', 19 | dependencies: dependencies 20 | }; 21 | }; 22 | -------------------------------------------------------------------------------- /material/gulp/tasks/watch-demo.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var gutil = require('gulp-util'); 3 | var util = require('../util'); 4 | 5 | exports.dependencies = ['build-demo']; 6 | 7 | exports.task = function() { 8 | var module = util.readModuleArg(); 9 | var name = module.split('.').pop(); 10 | var dir = "/dist/demos/"+name.trim(); 11 | gutil.log('\n', 12 | '-- Rebuilding', dir, 'when source files change...\n', 13 | '--', gutil.colors.green('Hint:'), 'Run', 14 | gutil.colors.cyan('`gulp server`'), 15 | 'to start a livereload server in root, then navigate to\n', 16 | '--', gutil.colors.green('"dist/demos/' + name + '/"'), 'in your browser to develop.' 17 | ); 18 | 19 | return gulp.watch('src/**/*', ['build-demo']); 20 | }; 21 | -------------------------------------------------------------------------------- /material/src/components/chips/demoStaticChips/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |

    Display a set of items as chips.

    5 | 6 | 7 | Hockey 8 | Lacrosse 9 | Baseball 10 | 11 | 12 | {{ctrl.chipText}} 13 | 14 |

    15 | Static chips cannot be selected, removed or edited, and are not part of any model.
    16 | If no ng-model is provided, there are no input elements in md-chips. 17 |

    18 | 19 |
    20 |
    21 | -------------------------------------------------------------------------------- /material/src/components/card/card.spec.js: -------------------------------------------------------------------------------- 1 | describe('mdCard directive', function() { 2 | 3 | beforeEach(module('material.components.card')); 4 | 5 | it('should have the default theme class when the md-theme attribute is not defined', inject(function($compile, $rootScope) { 6 | var card = $compile('')($rootScope.$new()); 7 | $rootScope.$apply(); 8 | expect(card.hasClass('md-default-theme')).toBe(true); 9 | })); 10 | 11 | it('should have the correct theme class when the md-theme attribute is defined', inject(function($compile, $rootScope) { 12 | var card = $compile('')($rootScope.$new()); 13 | $rootScope.$apply(); 14 | expect(card.hasClass('md-green-theme')).toBe(true); 15 | })); 16 | }); 17 | -------------------------------------------------------------------------------- /material/src/components/autocomplete/js/listItemDirective.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.autocomplete') 3 | .directive('mdAutocompleteListItem', MdAutocompleteListItem); 4 | 5 | function MdAutocompleteListItem ($compile, $mdUtil) { 6 | return { 7 | terminal: true, 8 | link: postLink, 9 | scope: false 10 | }; 11 | function postLink (scope, element, attr) { 12 | var ctrl = scope.$parent.$mdAutocompleteCtrl, 13 | newScope = ctrl.parent.$new(false, ctrl.parent), 14 | itemName = ctrl.scope.$eval(attr.mdAutocompleteListItem); 15 | newScope[itemName] = scope.item; 16 | $compile(element.contents())(newScope); 17 | element.attr({ 18 | role: 'option', 19 | id: 'item_' + $mdUtil.nextUid() 20 | }); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /material/src/components/select/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Enter an address

    4 |
    5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {{state.abbrev}} 17 | 18 | 19 |
    20 |
    21 |
    22 | -------------------------------------------------------------------------------- /shower-core/Readme.md: -------------------------------------------------------------------------------- 1 | # Core for Shower [![Build Status](https://travis-ci.org/shower/core.svg?branch=master)](https://travis-ci.org/shower/core) 2 | 3 | Follow [@shower_me](https://twitter.com/shower_me) for support and updates 4 | 5 | To see Shower in action: 6 | 7 | - Open [shwr.me](http://shwr.me/) 8 | - Click any slide to enter presentation mode 9 | - Use arrow keys or presenter remote to navigate 10 | - Press `Esc` to exit presentation mode 11 | 12 | Part of [Shower presentation template](https://github.com/shower/shower/). See [Wiki](https://github.com/shower/shower/wiki) for more information how to use Shower. 13 | 14 | --- 15 | Licensed under [MIT License](http://en.wikipedia.org/wiki/MIT_License), see [license page](https://github.com/shower/shower/wiki/MIT-License) for details. 16 | -------------------------------------------------------------------------------- /material/docs/app/partials/menu-toggle.tmpl.html: -------------------------------------------------------------------------------- 1 | 5 |
    6 | {{section.name}} 7 | 8 | 12 |
    13 | 14 | Toggle {{isOpen()? 'expanded' : 'collapsed'}} 15 | 16 |
    17 | 18 | 23 | -------------------------------------------------------------------------------- /material/scripts/travis-build-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ARG_DEFS=( 4 | "--sha=(.*)" 5 | ) 6 | 7 | function init { 8 | # If --git-push-dryrun or --verbose are set, be sure to export them 9 | # so they are set in all the other scripts too 10 | export GIT_PUSH_DRYRUN=$GIT_PUSH_DRYRUN 11 | export VERBOSE=$VERBOSE 12 | } 13 | 14 | function run { 15 | if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then 16 | echo "-- This is a pull request; not pushing out build." 17 | exit 0 18 | fi 19 | 20 | cd ../ 21 | 22 | NEW_VERSION="$(readJsonProp "package.json" "version")-master-$(echo $SHA | head -c 7)" 23 | 24 | ./scripts/bower-material-release.sh --version=$NEW_VERSION 25 | ./scripts/snapshot-docs-site.sh --version=$NEW_VERSION 26 | } 27 | 28 | source $(dirname $0)/utils.inc 29 | -------------------------------------------------------------------------------- /material/src/components/icon/demoLoadSvgIconsFromUrl/index.html: -------------------------------------------------------------------------------- 1 |
    2 |

    The simplest way to display a single SVG icon is by referencing it by URL:

    3 |

    4 | 6 | 7 |

    8 | 9 |

    Style the icon size and color with CSS:

    10 |

    11 | 12 | 13 | 14 |

    15 |
    16 | 17 | -------------------------------------------------------------------------------- /material/src/components/progressLinear/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('progressLinearDemo1', ['ngMaterial']) 2 | .config(function($mdThemingProvider) { 3 | }) 4 | .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) { 5 | $scope.mode = 'query'; 6 | $scope.determinateValue = 30; 7 | $scope.determinateValue2 = 30; 8 | 9 | $interval(function() { 10 | $scope.determinateValue += 1; 11 | $scope.determinateValue2 += 1.5; 12 | if ($scope.determinateValue > 100) { 13 | $scope.determinateValue = 30; 14 | $scope.determinateValue2 = 30; 15 | } 16 | }, 100, 0, true); 17 | 18 | $interval(function() { 19 | $scope.mode = ($scope.mode == 'query' ? 'determinate' : 'query'); 20 | }, 7200, 0, true); 21 | }]); 22 | -------------------------------------------------------------------------------- /material/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - '0.12' 5 | env: 6 | global: 7 | secure: TWmpBzRG68b9e5wbJ7I6ox8TrZTnU/XpOkBvggJyuMgvUz27accp92Y9U7DWUPiXYXcWnoc7pqVAvEbwd1/ykHKCqezmyEXsrzZo6POg2lNFXkI9vSuDukL8A4Ct9zANVmr+5Y+kEBtQ/viyO5Rxc5H9bZskSeMaegqR60ZT2E8= 8 | 9 | branches: 10 | only: 11 | - master 12 | 13 | before_script: 14 | - export DISPLAY=:99.0 # firefox virtual screen 15 | - sh -e /etc/init.d/xvfb start # firefox virtual screen 16 | - git config --global user.email "ngmaterial@googlegroups.com" 17 | - git config --global user.name "ngMaterial Bot" 18 | 19 | script: 20 | - gulp karma 21 | 22 | after_success: 23 | - ./scripts/travis-build-init.sh --sha=$TRAVIS_COMMIT 24 | 25 | notifications: 26 | flowdock: ca58afe1354053b15fe75a763138829d 27 | -------------------------------------------------------------------------------- /material/src/core/services/ripple/ripple.spec.js: -------------------------------------------------------------------------------- 1 | describe('mdInkRipple diretive', function() { 2 | 3 | beforeEach(module('material.core')); 4 | 5 | it('should support custom colors via md-ink-ripple', inject(function ($timeout, $compile, $rootScope) { 6 | var elem = $compile('
    ')($rootScope.$new()), 7 | container, ripple; 8 | 9 | expect(elem.children('.md-ripple-container').length).toBe(0); 10 | 11 | elem.controller('mdInkRipple').createRipple(0, 0); 12 | container = elem.children('.md-ripple-container'); 13 | expect(container.length).toBe(1); 14 | 15 | ripple = container.children('.md-ripple'); 16 | expect(ripple.length).toBe(1); 17 | expect(ripple.css('backgroundColor')).toBe('rgb(187, 187, 187)'); 18 | })); 19 | 20 | }); 21 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/object.template.html: -------------------------------------------------------------------------------- 1 | {% include "lib/macros.html" %} 2 | {% extends "api/api.template.html" %} 3 | 4 | {% block additional %} 5 | 6 | {% if doc.usage %} 7 |
    8 |

    Usage

    9 | {$ doc.usage | marked $} 10 |
    11 | {% endif %} 12 | 13 | {% if doc.params or doc.returns or doc.this or doc.kind == 'function' -%} 14 |
    15 | {% include "lib/params.template.html" %} 16 | {% include "lib/this.template.html" %} 17 | {% include "lib/returns.template.html" %} 18 |
    19 | {%- endif %} 20 | 21 | {% include "lib/methods.template.html" %} 22 | {% include "lib/events.template.html" %} 23 | {% include "lib/properties.template.html" %} 24 | 25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /material/docs/app/partials/view-source.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | {{file.viewType}} 8 | 9 | 10 | 11 | 12 |
    13 | 16 | 17 |
    18 |
    19 | 20 |
    21 | 22 | Done 23 | 24 |
    25 |
    26 | -------------------------------------------------------------------------------- /material/src/components/chips/chips-theme.scss: -------------------------------------------------------------------------------- 1 | md-chips.md-THEME_NAME-theme { 2 | .md-chips { 3 | box-shadow: 0 1px '{{background-300}}'; 4 | &.md-focused { 5 | box-shadow: 0 2px '{{primary-color}}'; 6 | } 7 | } 8 | .md-chip { 9 | background: '{{background-300}}'; 10 | color: '{{background-800}}'; 11 | &.md-focused { 12 | background: '{{primary-color}}'; 13 | color: '{{primary-contrast}}'; 14 | md-icon { 15 | color: '{{primary-contrast}}'; 16 | } 17 | } 18 | } 19 | md-chip-remove { 20 | .md-button { 21 | md-icon { 22 | path { 23 | fill: '{{background-500}}'; 24 | } 25 | } 26 | } 27 | } 28 | } 29 | 30 | .md-contact-suggestion { 31 | span.md-contact-email { 32 | color: '{{background-400}}'; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /material/src/components/select/demoOptionGroups/script.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('selectDemoOptGroups', ['ngMaterial']) 3 | .controller('SelectOptGroupController', function($scope) { 4 | $scope.sizes = [ 5 | "small (12-inch)", 6 | "medium (14-inch)", 7 | "large (16-inch)", 8 | "insane (42-inch)" 9 | ]; 10 | $scope.toppings = [ 11 | { category: 'meat', name: 'Pepperoni' }, 12 | { category: 'meat', name: 'Sausage' }, 13 | { category: 'meat', name: 'Ground Beef' }, 14 | { category: 'meat', name: 'Bacon' }, 15 | { category: 'veg', name: 'Mushrooms' }, 16 | { category: 'veg', name: 'Onion' }, 17 | { category: 'veg', name: 'Green Pepper' }, 18 | { category: 'veg', name: 'Green Olives' } 19 | ]; 20 | }); 21 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/componentGroup.template.html: -------------------------------------------------------------------------------- 1 | {% block content %} 2 |

    3 | {%- if doc.title -%} 4 | {$ doc.title $} 5 | {%- elif doc.module -%} 6 | {$ doc.groupType | title $} components in {$ doc.module | code $} 7 | {%- else -%} 8 | Pages 9 | {%- endif -%} 10 |

    11 | 12 | {$ doc.description | marked $} 13 | 14 |
    15 |
    16 | 17 | 18 | 19 | 20 | 21 | {% for page in doc.components %} 22 | 23 | 24 | 25 | 26 | {% endfor %} 27 |
    NameDescription
    {$ page.id | link(page.name, page) $}{$ page.description | firstParagraph | marked $}
    28 |
    29 |
    30 | 31 | {% endblock %} 32 | -------------------------------------------------------------------------------- /material/src/components/list/list-theme.scss: -------------------------------------------------------------------------------- 1 | md-list.md-THEME_NAME-theme { 2 | md-list-item.md-2-line .md-list-item-text, 3 | md-list-item.md-3-line .md-list-item-text { 4 | h3, h4 { 5 | color: '{{foreground-1}}'; 6 | } 7 | p { 8 | color: '{{foreground-2}}'; 9 | } 10 | } 11 | .md-proxy-focus.md-focused div.md-no-style { 12 | background-color: '{{background-100}}'; 13 | } 14 | 15 | md-list-item > md-icon { 16 | color: '{{foreground-2}}'; 17 | 18 | &.md-highlight { 19 | color: '{{primary-color}}'; 20 | &.md-accent { 21 | color: '{{accent-color}}'; 22 | } 23 | } 24 | } 25 | md-list-item button { 26 | background-color: '{{background-color}}'; 27 | 28 | &.md-button:not([disabled]):hover { 29 | background-color: '{{background-color}}'; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /material/src/components/chips/js/contactChipsController.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('material.components.chips') 3 | .controller('MdContactChipsCtrl', MdContactChipsCtrl); 4 | 5 | 6 | 7 | /** 8 | * Controller for the MdContactChips component 9 | * @constructor 10 | */ 11 | function MdContactChipsCtrl () { 12 | /** @type {Object} */ 13 | this.selectedItem = null; 14 | 15 | /** @type {string} */ 16 | this.searchText = ''; 17 | } 18 | 19 | 20 | MdContactChipsCtrl.prototype.queryContact = function(searchText) { 21 | var results = this.contactQuery({'$query': searchText}); 22 | return this.filterSelected ? 23 | results.filter(angular.bind(this, this.filterSelectedContacts)) : results; 24 | }; 25 | 26 | 27 | MdContactChipsCtrl.prototype.filterSelectedContacts = function(contact) { 28 | return this.contacts.indexOf(contact) == -1; 29 | }; 30 | -------------------------------------------------------------------------------- /material/src/components/icon/demoFontIconsWithLigatures/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular 3 | .module('appDemoFontIconsWithLigatures', ['ngMaterial']) 4 | .controller('DemoCtrl', function( $scope ) { 5 | // Specify a list of font-icons with ligatures and color overrides 6 | var iconData = [ 7 | {name: 'accessibility' , color: "#777" }, 8 | {name: 'question_answer', color: "rgb(89, 226, 168)" }, 9 | {name: 'backup' , color: "#A00" }, 10 | {name: 'email' , color: "#00A" } 11 | ]; 12 | 13 | $scope.fonts = [].concat(iconData); 14 | 15 | // Create a set of sizes... 16 | $scope.sizes = [ 17 | {size:"md-18",padding:0}, 18 | {size:"md-24",padding:2}, 19 | {size:"md-36",padding:6}, 20 | {size:"md-48",padding:10} 21 | ]; 22 | 23 | }); 24 | -------------------------------------------------------------------------------- /material/src/components/toolbar/demoScrollShrink/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |
    5 |

    6 | My App Title 7 |

    8 |
    9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | {{item.who}} 17 |
    18 |

    {{item.what}}

    19 |

    {{item.who}}

    20 |

    21 | {{item.notes}} 22 |

    23 |
    24 | 25 |
    26 | 27 |
    28 | 29 |
    30 | 31 |
    32 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/events.template.html: -------------------------------------------------------------------------------- 1 | {%- if doc.events %} 2 |
    3 |

    Events

    4 | 26 |
    27 | {% endif -%} 28 | -------------------------------------------------------------------------------- /material/src/components/input/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular 2 | .module('inputBasicDemo', ['ngMaterial', 'ngMessages']) 3 | .controller('DemoCtrl', function($scope) { 4 | $scope.user = { 5 | title: 'Developer', 6 | email: 'ipsum@lorem.com', 7 | firstName: '', 8 | lastName: '' , 9 | company: 'Google' , 10 | address: '1600 Amphitheatre Pkwy' , 11 | city: 'Mountain View' , 12 | state: 'CA' , 13 | biography: 'Loves kittens, snowboarding, and can type at 130 WPM.\n\nAnd rumor has it she bouldered up Castle Craig!', 14 | postalCode : '94043' 15 | }; 16 | }) 17 | .config( function($mdThemingProvider){ 18 | 19 | // Configure a dark theme with primary foreground yellow 20 | 21 | $mdThemingProvider.theme('docs-dark', 'default') 22 | .primaryPalette('yellow') 23 | .dark(); 24 | 25 | }); 26 | -------------------------------------------------------------------------------- /material/docs/app/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /material/scripts/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ARG_DEFS=( 4 | "--version=(.*)" 5 | ) 6 | 7 | function run { 8 | cd ../ 9 | 10 | if [[ "$GH_TOKEN" == "" ]]; then 11 | echo "ERROR: Environment variable GH_TOKEN needed to push a release." 12 | echo "Please set GH_TOKEN to a valid github push token for angular/material," 13 | echo "then try again." 14 | exit 1 15 | fi 16 | 17 | ./scripts/bower-material-release.sh --version=$VERSION 18 | 19 | replaceJsonProp "package.json" "version" "$VERSION" 20 | 21 | echo "-- Committing, tagging and pushing bower.json and package.json..." 22 | git commit package.json -m "release: version $VERSION" 23 | git tag -f v$VERSION 24 | git push -q origin master 25 | git push -q origin v$VERSION 26 | 27 | echo "-- Version $VERSION pushed successfully to angular/material!" 28 | } 29 | 30 | source $(dirname $0)/utils.inc 31 | -------------------------------------------------------------------------------- /material/src/components/whiteframe/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | .md-whiteframe-z1 5 | 6 | 7 | 8 | .md-whiteframe-z2 9 | 10 | 11 | 12 | .md-whiteframe-z3 13 | 14 | 15 | 16 | .md-whiteframe-z4 17 | 18 | 19 | 20 | .md-whiteframe-z5 21 | 22 | 23 |
    24 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/api/filter.template.html: -------------------------------------------------------------------------------- 1 | {% include "lib/macros.html" -%} 2 | {% extends "api/api.template.html" %} 3 | 4 | {% block additional %} 5 |

    In HTML Template Binding

    6 | {% if doc.usage %} 7 | {$ doc.usage | code $} 8 | {% else %} 9 | {% code -%} 10 | {{ {$ doc.name $}_expression | {$ doc.name $} 11 | {%- for param in doc.params %}{% if not loop.first %} : {$ param.name $}{% endif %}{% endfor -%} 12 | }} 13 | {%- endcode %} 14 | {% endif %} 15 | 16 |

    In JavaScript

    17 | {% code -%} 18 | {%- set sep = joiner(', ') -%} 19 | $filter('{$ doc.name $}')({% for param in doc.params %}{$ sep() $}{$ param.name $}{% endfor -%}) 20 | {%- endcode %} 21 | 22 | {% include "lib/params.template.html" %} 23 | {% include "lib/this.template.html" %} 24 | {% include "lib/returns.template.html" %} 25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /material/src/components/virtualRepeat/demoVerticalUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |

    4 | Display 1000 item in a virtual-list with viewport of only 7 rows (height=40px). 5 |

    6 | This demo shows scroll and rendering performance gains when using md-virtual-repeat; 7 | achieved with the dynamic reuse of rows visible in the viewport area. Developers are required to 8 | explicitly use md-virtual-repeat-container as a wrapping parent container. 9 |

    10 | 11 | 12 |
    15 | {{item}} 16 |
    17 |
    18 |
    19 | 20 |
    21 | -------------------------------------------------------------------------------- /material/src/components/tabs/demoDynamicTabs/style.scss: -------------------------------------------------------------------------------- 1 | md-content { 2 | background-color: transparent !important; 3 | md-tabs { 4 | border: 1px solid #e1e1e1; 5 | md-tab-content { 6 | background: #f6f6f6; 7 | } 8 | md-tabs-canvas { 9 | background: white; 10 | } 11 | } 12 | h1:first-child { 13 | margin-top: 0; 14 | } 15 | } 16 | md-input-container { 17 | padding-bottom: 0; 18 | } 19 | .remove-tab { 20 | margin-bottom: 40px; 21 | } 22 | .demo-tab > div > div { 23 | padding: 25px; 24 | box-sizing: border-box; 25 | } 26 | .edit-form input { 27 | width: 100%; 28 | } 29 | md-tabs { 30 | border-bottom: 1px solid rgba(0,0,0,0.12); 31 | } 32 | md-tab[disabled] { 33 | opacity: 0.5; 34 | } 35 | label { 36 | text-align: left; 37 | } 38 | 39 | .long > input { 40 | width: 264px; 41 | } 42 | .md-button.add-tab { 43 | transform: translateY(5px); 44 | } 45 | -------------------------------------------------------------------------------- /material/src/components/card/card.scss: -------------------------------------------------------------------------------- 1 | $card-padding: 16px !default; 2 | $card-box-shadow: $whiteframe-shadow-z1 !default; 3 | 4 | md-card { 5 | box-sizing: border-box; 6 | display: flex; 7 | flex-direction: column; 8 | margin: $baseline-grid; 9 | 10 | box-shadow: $card-box-shadow; 11 | 12 | > img, 13 | > :not(md-card-content) img { 14 | width: 100%; 15 | } 16 | 17 | md-card-content { 18 | padding: $card-padding; 19 | } 20 | .md-actions { 21 | margin: 0; 22 | 23 | .md-button { 24 | margin-bottom: $baseline-grid; 25 | margin-top: $baseline-grid; 26 | margin-right: $baseline-grid * .5; 27 | margin-left: $baseline-grid * .5; 28 | } 29 | } 30 | md-card-footer { 31 | padding: $card-padding; 32 | } 33 | } 34 | 35 | @media screen and (-ms-high-contrast: active) { 36 | md-card { 37 | border: 1px solid #fff; 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /shower-bright/images/grid-16x10.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_play_arrow_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_chevron_right_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/src/components/tabs/tabs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc module 3 | * @name material.components.tabs 4 | * @description 5 | * 6 | * Tabs, created with the `` directive provide *tabbed* navigation with different styles. 7 | * The Tabs component consists of clickable tabs that are aligned horizontally side-by-side. 8 | * 9 | * Features include support for: 10 | * 11 | * - static or dynamic tabs, 12 | * - responsive designs, 13 | * - accessibility support (ARIA), 14 | * - tab pagination, 15 | * - external or internal tab content, 16 | * - focus indicators and arrow-key navigations, 17 | * - programmatic lookup and access to tab controllers, and 18 | * - dynamic transitions through different tab contents. 19 | * 20 | */ 21 | /* 22 | * @see js folder for tabs implementation 23 | */ 24 | angular.module('material.components.tabs', [ 25 | 'material.core', 26 | 'material.components.icon' 27 | ]); 28 | -------------------------------------------------------------------------------- /material/src/components/chips/demoContactChips/style.scss: -------------------------------------------------------------------------------- 1 | md-content.autocomplete { 2 | min-height: 250px; 3 | } 4 | .md-item-text.compact { 5 | padding-top: 8px; 6 | padding-bottom: 8px; 7 | } 8 | .contact-item { 9 | box-sizing: border-box; 10 | &.selected { 11 | opacity: 0.5; 12 | h3 { 13 | opacity: 0.5; 14 | } 15 | } 16 | .md-list-item-text { 17 | padding: 14px 0; 18 | h3 { 19 | margin: 0 !important; 20 | padding: 0; 21 | line-height: 1.2em !important; 22 | } 23 | h3, p { 24 | text-overflow: ellipsis; 25 | white-space: nowrap; 26 | overflow: hidden; 27 | } 28 | } 29 | @media (min-width: 900px) { 30 | float: left; 31 | width: 33%; 32 | } 33 | } 34 | 35 | md-contact-chips { 36 | margin-bottom : 10px; 37 | } 38 | 39 | .md-chips { 40 | padding: 5px 0 8px; 41 | } 42 | 43 | 44 | .fixedRows { 45 | height: 250px; 46 | overflow:hidden; 47 | } 48 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_menu_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_arrow_back_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/src/components/bottomSheet/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 |

    Usage

    3 |

    Bottom sheets can be displayed by clicking one of the buttons below. Once shown, it can be 4 | dismissed by either swiping down or clicking in the shaded area.

    5 |

    Actions

    6 |

    Use one of the following buttons to display a bottom sheet.

    7 |
    8 | Show as List 9 | Show as Grid 10 |
    11 | 12 |
    13 |
    14 | 15 | {{alert}} 16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /material/src/components/menu/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | angular.module('menuDemoBasic', ['ngMaterial']) 2 | .config(function($mdIconProvider) { 3 | $mdIconProvider 4 | .iconSet("call", 'img/icons/sets/communication-icons.svg', 24) 5 | .iconSet("social", 'img/icons/sets/social-icons.svg', 24); 6 | }) 7 | .controller('BasicDemoCtrl', DemoCtrl); 8 | 9 | function DemoCtrl($mdDialog) { 10 | var vm = this; 11 | vm.notificationsEnabled = true; 12 | vm.toggleNotifications = function() { 13 | vm.notificationsEnabled = !vm.notificationsEnabled; 14 | }; 15 | 16 | vm.redial = function(e) { 17 | $mdDialog.show( 18 | $mdDialog.alert() 19 | .title('Suddenly, a redial') 20 | .content('You just called someone back. They told you the most amazing story that has ever been told. Have a cookie.') 21 | .ok('That was easy') 22 | ); 23 | }; 24 | 25 | vm.checkVoicemail = function() { 26 | // This never happens. 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /material/src/components/chips/demoBasicUsage/script.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | angular 4 | .module('chipsDemo', ['ngMaterial']) 5 | .controller('BasicDemoCtrl', DemoCtrl); 6 | 7 | function DemoCtrl ($timeout, $q) { 8 | var self = this; 9 | 10 | self.readonly = false; 11 | 12 | // Lists of fruit names and Vegetable objects 13 | self.fruitNames = ['Apple', 'Banana', 'Orange']; 14 | self.roFruitNames = angular.copy(self.fruitNames); 15 | self.tags = []; 16 | self.vegObjs = [ 17 | { 18 | 'name' : 'Broccoli', 19 | 'type' : 'Brassica' 20 | }, 21 | { 22 | 'name' : 'Cabbage', 23 | 'type' : 'Brassica' 24 | }, 25 | { 26 | 'name' : 'Carrot', 27 | 'type' : 'Umbelliferous' 28 | } 29 | ]; 30 | 31 | self.newVeg = function(chip) { 32 | return { 33 | name: chip, 34 | type: 'unknown' 35 | }; 36 | }; 37 | } 38 | })(); 39 | -------------------------------------------------------------------------------- /material/src/components/dialog/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | Open a dialog over the app's content. Press escape or click outside to close the dialog and 4 | send focus back to the triggering button. 5 |

    6 | 7 |
    8 | 9 | Alert Dialog 10 | 11 | 12 | Confirm Dialog 13 | 14 | 15 | Custom Dialog 16 | 17 |
    18 | 19 |
    20 |
    21 | 22 | {{alert}} 23 | 24 |
    25 |
    26 | -------------------------------------------------------------------------------- /material/docs/guides/component/_name_/_name_.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | /** 5 | * @ngdoc module 6 | * @name material.components._name_list 7 | */ 8 | angular.module('material.components._name_list', ['material.core']) 9 | .directive('md_name_list', _name_listDirective); 10 | 11 | /** 12 | * @ngdoc directive 13 | * @name md_name_list 14 | * @module material.components._name_list 15 | * @restrict E 16 | * @description 17 | * 18 | * @usage 19 | * 20 | */ 21 | function _name_listDirective() { 22 | return { 23 | scope: {}, 24 | require: [], 25 | controller: _name_listController, 26 | link: postLink 27 | }; 28 | 29 | function postLink(scope, element, attr, ctrls) { 30 | 31 | } 32 | } 33 | 34 | /** 35 | * We use a controller for all the logic so that we can expose a few 36 | * things to unit tests 37 | */ 38 | function _name_listController($scope, $element, $attrs, $mdAria, $mdUtil, $mdConstant) { 39 | 40 | } 41 | 42 | })(); 43 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_launch_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /shower-bright/images/grid-4x3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_photo_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_label_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /material/docs/config/template/demo-index.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= name %> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <% js.forEach(function(file) { %> 16 | 17 | <% }); %> 18 | <% css.forEach(function(file) { %> 19 | 20 | <% }); %> 21 | 22 | 23 | 24 | <%= index.contents %> 25 | 26 | 27 | -------------------------------------------------------------------------------- /material/src/components/icon/demoUsingTemplateCache/script.js: -------------------------------------------------------------------------------- 1 | 2 | angular.module('appUsingTemplateCache', ['ngMaterial']) 3 | .controller('DemoCtrl', function($scope) {}) 4 | .config(function($mdIconProvider) { 5 | 6 | // Register icon IDs with sources. Future $mdIcon( ) lookups 7 | // will load by url and retrieve the data via the $http and $templateCache 8 | 9 | $mdIconProvider 10 | .iconSet('core', 'img/icons/sets/core-icons.svg',24) 11 | .icon('social:cake', 'img/icons/cake.svg',24); 12 | 13 | }) 14 | .run(function($http, $templateCache) { 15 | 16 | var urls = [ 17 | 'img/icons/sets/core-icons.svg', 18 | 'img/icons/cake.svg', 19 | 'img/icons/android.svg' 20 | ]; 21 | 22 | // Pre-fetch icons sources by URL and cache in the $templateCache... 23 | // subsequent $http calls will look there first. 24 | 25 | angular.forEach(urls, function(url) { 26 | $http.get(url, {cache: $templateCache}); 27 | }); 28 | 29 | }) 30 | ; 31 | -------------------------------------------------------------------------------- /material/docs/config/processors/content.js: -------------------------------------------------------------------------------- 1 | var _ = require('lodash'); 2 | 3 | module.exports = function contentProcessor(templateFinder) { 4 | return { 5 | $runAfter: ['paths-computed'], 6 | $runBefore: ['rendering-docs'], 7 | $process: function(docs) { 8 | var contentDocs = _(docs) 9 | .filter(function(doc) { 10 | return doc.docType === 'content'; 11 | }) 12 | .groupBy('area') 13 | .mapValues(function(areaDocs) { 14 | return _.map(areaDocs, function(areaDoc) { 15 | return { 16 | name: areaDoc.name, 17 | outputPath: areaDoc.outputPath, 18 | url: '/' + areaDoc.path, 19 | label: areaDoc.label || areaDoc.name 20 | }; 21 | }); 22 | }). 23 | value(); 24 | 25 | docs.push({ 26 | name: 'PAGES', 27 | template: 'constant-data.template.js', 28 | outputPath: 'js/content-data.js', 29 | items: contentDocs 30 | }); 31 | } 32 | }; 33 | }; 34 | -------------------------------------------------------------------------------- /material/docs/config/template/ngdoc/lib/methods.template.html: -------------------------------------------------------------------------------- 1 | {%- if doc.methods %} 2 |
    3 |

    Methods

    4 |
    5 |
      6 | {%- for method in doc.methods %} 7 |
    • 8 |

      9 | {$ doc.name $}.{$ functionSyntax(method) $} 10 |

      11 |
      {$ method.description | marked $}
      12 | 13 |
      14 | 15 | {% if method.params %} 16 | {$ paramTable(method.params) $} 17 | {% endif %} 18 | 19 | {% if method.this %} 20 |

      Method's {% code %}this{% endcode %}

      21 | {$ method.this | marked $} 22 | {% endif %} 23 | 24 | {% if method.returns %} 25 | {$ returnTable(method.returns) $} 26 | {% endif %} 27 | 28 |
      29 | 30 |
    • 31 | {% endfor -%} 32 |
    33 |
    34 | {%- endif -%} 35 | -------------------------------------------------------------------------------- /material/src/components/divider/divider.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc module 3 | * @name material.components.divider 4 | * @description Divider module! 5 | */ 6 | angular.module('material.components.divider', [ 7 | 'material.core' 8 | ]) 9 | .directive('mdDivider', MdDividerDirective); 10 | 11 | /** 12 | * @ngdoc directive 13 | * @name mdDivider 14 | * @module material.components.divider 15 | * @restrict E 16 | * 17 | * @description 18 | * Dividers group and separate content within lists and page layouts using strong visual and spatial distinctions. This divider is a thin rule, lightweight enough to not distract the user from content. 19 | * 20 | * @param {boolean=} md-inset Add this attribute to activate the inset divider style. 21 | * @usage 22 | * 23 | * 24 | * 25 | * 26 | * 27 | * 28 | */ 29 | function MdDividerDirective($mdTheming) { 30 | return { 31 | restrict: 'E', 32 | link: $mdTheming 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /material/src/components/select/demoValidations/index.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Note that invalid styling only applies if invalid and dirty

    4 | 5 | 6 | 7 | One 8 | Two 9 | 10 |
    11 |
    Required
    12 |
    13 |
    14 |
    15 | Clear 16 | Save 17 |
    18 |
    19 |
    20 | -------------------------------------------------------------------------------- /material/src/components/switch/demoBasicUsage/index.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | Switch 1: {{ data.cb1 }} 4 | 5 | 6 | 7 | Switch 2 (md-warn): {{ data.cb2 }} 8 | 9 | 10 | 11 | Switch (Disabled) 12 | 13 | 14 | 15 | Switch (Disabled, Active) 16 | 17 | 18 | 19 | Switch (md-primary): No Ink 20 | 21 | 22 | 23 | Switch 6 message: {{ message }} 24 | 25 |
    26 | -------------------------------------------------------------------------------- /material/gulp/tasks/build-all-modules.js: -------------------------------------------------------------------------------- 1 | var BUILD_MODE = require('../const').BUILD_MODE; 2 | 3 | var gulp = require('gulp'); 4 | var path = require('path'); 5 | var through2 = require('through2'); 6 | var series = require('stream-series'); 7 | var util = require('../util'); 8 | var gulpif = require('gulp-if'); 9 | var utils = require('../../scripts/gulp-utils.js'); 10 | 11 | exports.task = function() { 12 | return gulp.src(['src/core/', 'src/components/*' ]) 13 | .pipe(through2.obj(function(folder, enc, next) { 14 | var moduleId = folder.path.indexOf('components') > -1 15 | ? 'material.components.' + path.basename(folder.path) 16 | : 'material.' + path.basename(folder.path); 17 | var stream = BUILD_MODE.useBower 18 | ? series(util.buildModule(moduleId, true), util.buildModule(moduleId, false)) 19 | : util.buildModule(moduleId, false); 20 | stream.on('end', function() { next(); }); 21 | })) 22 | .pipe(BUILD_MODE.transform()); 23 | 24 | }; 25 | -------------------------------------------------------------------------------- /material/docs/app/img/icons/ic_comment_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /react-a11y/src/app.js: -------------------------------------------------------------------------------- 1 | var a11y = require('react-a11y'); 2 | var React = require('react'); 3 | 4 | a11y(React); 5 | 6 | var btnStyle = { 7 | backgroundColor: '#DB762D', 8 | display: 'inline-block', 9 | borderRadius: 2, 10 | color: '#fafafa', 11 | fontSize: 24, 12 | fontFamily: 'sans-serif', 13 | border: '4px solid rgba(0, 0, 0, 0.15)', 14 | boxSizing: 'border-box', 15 | width: 240, 16 | height: 76, 17 | textAlign: 'center', 18 | margin: 'auto', 19 | position: 'absolute', 20 | top: 0, 21 | left: 0, 22 | right: 0, 23 | bottom: 0, 24 | lineHeight: '70px' 25 | }; 26 | 27 | var Button = React.createClass({ 28 | 29 | getInitialState() { 30 | 31 | return { title: 'I\'m a button!' }; 32 | }, 33 | 34 | _onClick() { 35 | 36 | this.setState({ title: 'That\'s right' }); 37 | }, 38 | 39 | render() { 40 | 41 | return
    {this.state.title}
    ; 43 | } 44 | }); 45 | 46 | React.render(