todo_rails 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/todo_rails/version.rb +1 -1
- data/vendor/assets/bower.json +8 -0
- data/vendor/assets/bower_components/angular-animate/README.md +68 -0
- data/vendor/assets/bower_components/angular-animate/angular-animate.js +3721 -0
- data/vendor/assets/bower_components/angular-animate/angular-animate.min.js +52 -0
- data/vendor/assets/bower_components/angular-animate/angular-animate.min.js.map +8 -0
- data/vendor/assets/bower_components/angular-animate/bower.json +9 -0
- data/vendor/assets/bower_components/angular-animate/index.js +2 -0
- data/vendor/assets/bower_components/angular-animate/package.json +26 -0
- data/vendor/assets/bower_components/angular-aria/README.md +67 -0
- data/vendor/assets/bower_components/angular-aria/angular-aria.js +393 -0
- data/vendor/assets/bower_components/angular-aria/angular-aria.min.js +13 -0
- data/vendor/assets/bower_components/angular-aria/angular-aria.min.js.map +8 -0
- data/vendor/assets/bower_components/angular-aria/bower.json +9 -0
- data/vendor/assets/bower_components/angular-aria/index.js +2 -0
- data/vendor/assets/bower_components/angular-aria/package.json +27 -0
- data/vendor/assets/bower_components/angular-material/CHANGELOG.md +1599 -0
- data/vendor/assets/bower_components/angular-material/LICENSE +21 -0
- data/vendor/assets/bower_components/angular-material/README.md +211 -0
- data/vendor/assets/bower_components/angular-material/angular-material-mocks.js +77 -0
- data/vendor/assets/bower_components/angular-material/angular-material.css +7183 -0
- data/vendor/assets/bower_components/angular-material/angular-material.js +15406 -0
- data/vendor/assets/bower_components/angular-material/angular-material.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/angular-material.min.js +14 -0
- data/vendor/assets/bower_components/angular-material/bower.json +14 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/copy.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/copy2.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/facebook.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/hangout.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/mail.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/message.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/print.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/share-arrow.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/twitter.svg +2 -0
- data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/upload.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/chips/demoBasicUsage/style.scss +39 -0
- data/vendor/assets/bower_components/angular-material/demos/chips/demoContactChips/style.scss +47 -0
- data/vendor/assets/bower_components/angular-material/demos/gridList/demoBasicUsage/style.scss +75 -0
- data/vendor/assets/bower_components/angular-material/demos/gridList/demoDynamicTiles/style.scss +78 -0
- data/vendor/assets/bower_components/angular-material/demos/gridList/demoResponsiveUsage/style.scss +0 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/addShoppingCart.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/android.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/cake.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/cake.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/core-icons.svg +26 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/social-icons.svg +26 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/addShoppingCart.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/android.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/cake.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/android.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/cake.svg +1 -0
- data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/core-icons.svg +26 -0
- data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_email_24px.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_person_24px.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_phone_24px.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_place_24px.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/style.scss +18 -0
- data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-0.jpeg +0 -0
- data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-1.jpeg +0 -0
- data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-2.jpeg +0 -0
- data/vendor/assets/bower_components/angular-material/demos/tabs/demoDynamicHeight/style.scss +13 -0
- data/vendor/assets/bower_components/angular-material/demos/tabs/demoDynamicTabs/style.scss +44 -0
- data/vendor/assets/bower_components/angular-material/demos/tabs/demoStaticTabs/style.scss +25 -0
- data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/favorite.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/menu.svg +4 -0
- data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/more_vert.svg +4 -0
- data/vendor/assets/bower_components/angular-material/index.js +12 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete-default-theme.css +24 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete.css +220 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete.js +951 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop.css +59 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop.js +38 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet-default-theme.css +16 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.css +170 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.js +267 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/button/button-default-theme.css +94 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/button/button.css +158 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/button/button.js +135 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/card/card-default-theme.css +12 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/card/card.css +34 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/card/card.js +84 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox-default-theme.css +47 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox.css +124 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox.js +166 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips-default-theme.css +24 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips.css +131 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips.js +949 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/content/content-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/content/content.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/content/content.js +84 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/core/core.css +2594 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/core/core.js +3772 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/core/default-theme.js +4 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog-default-theme.css +12 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog.css +111 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog.js +713 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider.css +14 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider.js +45 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabActions/fabActions.js +57 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabSpeedDial/fabSpeedDial.css +100 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabSpeedDial/fabSpeedDial.js +236 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabToolbar/fabToolbar.css +74 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabToolbar/fabToolbar.js +218 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/fabTrigger/fabTrigger.js +54 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList-default-theme.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList.css +68 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList.js +762 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon-default-theme.css +15 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon.js +783 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/input/input-default-theme.css +46 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/input/input.css +162 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/input/input.js +371 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/list/list-default-theme.css +23 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/list/list.css +147 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/list/list.js +273 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu-default-theme.css +11 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu.css +121 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu.js +620 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular-default-theme.css +36 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular.css +1409 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular.js +109 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear-default-theme.css +27 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear.css +287 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear.js +126 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton-default-theme.css +47 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton.css +91 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton.js +312 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/select/select-default-theme.css +42 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/select/select.css +170 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/select/select.js +1055 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav.css +99 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav.js +424 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider-default-theme.css +56 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider.css +220 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider.js +403 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/sticky/sticky.css +21 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/sticky/sticky.js +315 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader-default-theme.css +16 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader.css +63 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader.js +93 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/swipe/swipe.js +72 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch-default-theme.css +33 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch.css +110 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch.js +169 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs-arrow.svg +7 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs-default-theme.css +82 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs.css +274 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs.js +1060 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField-default-theme.css +30 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField.css +111 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField.js +145 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast-default-theme.css +18 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast.css +119 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast.js +265 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar-default-theme.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar.css +83 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar.js +169 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip-default-theme.css +11 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip.css +72 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip.js +267 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/whiteframe/whiteframe.css +25 -0
- data/vendor/assets/bower_components/angular-material/modules/closure/whiteframe/whiteframe.js +15 -0
- data/vendor/assets/bower_components/angular-material/modules/css/angular-material-layout.css +2375 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete-default-theme.css +24 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.css +220 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.js +951 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.css +59 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.js +39 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/backdrop/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.css +16 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.css +170 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.js +267 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button-default-theme.css +94 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button.css +158 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button.js +136 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/button/button.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card-default-theme.css +12 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card.css +34 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card.js +85 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/card/card.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.css +47 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.css +124 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.js +167 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips-default-theme.css +24 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.css +131 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.js +949 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content.js +85 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/content/content.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/core.css +2594 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/core.js +3772 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/core.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/core.min.js +10 -0
- data/vendor/assets/bower_components/angular-material/modules/js/core/default-theme.js +4 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog-default-theme.css +12 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.css +111 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.js +713 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.css +14 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.js +46 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabActions/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabActions/fabActions.js +58 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabActions/fabActions.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/bower.json +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.css +100 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.js +235 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/bower.json +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.css +74 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.js +217 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/fabTrigger.js +55 -0
- data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/fabTrigger.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/gridList/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.css +68 -0
- data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.js +763 -0
- data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon-default-theme.css +15 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.js +784 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input-default-theme.css +46 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input.css +162 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input.js +372 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/input/input.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list-default-theme.css +23 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list.css +147 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list.js +274 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/list/list.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu-default-theme.css +11 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.css +121 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.js +620 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.css +36 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.css +1409 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.js +110 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.css +27 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.css +287 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.js +127 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.css +47 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.css +91 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.js +313 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select-default-theme.css +42 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select.css +170 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select.js +1055 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/select/select.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.css +9 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.css +99 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.js +424 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider-default-theme.css +56 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.css +220 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.js +404 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sticky/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.css +21 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.js +315 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader-default-theme.css +16 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.css +63 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.js +93 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/swipe/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/swipe/swipe.js +73 -0
- data/vendor/assets/bower_components/angular-material/modules/js/swipe/swipe.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch-default-theme.css +33 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.css +110 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.js +169 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs-default-theme.css +82 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.css +274 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.js +1060 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField-default-theme.css +30 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.css +111 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.js +143 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast-default-theme.css +18 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.css +119 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.js +265 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/bower.json +8 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.css +20 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.css +83 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.js +169 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/bower.json +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.css +11 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.css +72 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.js +268 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/bower.json +5 -0
- data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.css +25 -0
- data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.js +16 -0
- data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.css +6 -0
- data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.js +7 -0
- data/vendor/assets/bower_components/angular-material/package.json +48 -0
- data/vendor/assets/bower_components/angular/README.md +64 -0
- data/vendor/assets/bower_components/angular/angular-csp.css +21 -0
- data/vendor/assets/bower_components/angular/angular.js +28364 -0
- data/vendor/assets/bower_components/angular/angular.min.js +290 -0
- data/vendor/assets/bower_components/angular/angular.min.js.gzip +0 -0
- data/vendor/assets/bower_components/angular/angular.min.js.map +8 -0
- data/vendor/assets/bower_components/angular/bower.json +8 -0
- data/vendor/assets/bower_components/angular/index.js +2 -0
- data/vendor/assets/bower_components/angular/package.json +25 -0
- data/vendor/assets/bower_components/lodash/LICENSE +22 -0
- data/vendor/assets/bower_components/lodash/bower.json +19 -0
- data/vendor/assets/bower_components/lodash/lodash.js +12351 -0
- data/vendor/assets/bower_components/lodash/lodash.min.js +99 -0
- data/vendor/assets/bower_components/restangular/CHANGELOG.md +18 -0
- data/vendor/assets/bower_components/restangular/CONTRIBUTE.md +31 -0
- data/vendor/assets/bower_components/restangular/Gruntfile.js +149 -0
- data/vendor/assets/bower_components/restangular/README.md +1336 -0
- data/vendor/assets/bower_components/restangular/bower.json +19 -0
- data/vendor/assets/bower_components/restangular/dist/restangular.js +1355 -0
- data/vendor/assets/bower_components/restangular/dist/restangular.min.js +6 -0
- data/vendor/assets/bower_components/restangular/dist/restangular.zip +0 -0
- data/vendor/assets/bower_components/restangular/karma.conf.js +74 -0
- data/vendor/assets/bower_components/restangular/karma.underscore.conf.js +74 -0
- data/vendor/assets/bower_components/restangular/license.md +21 -0
- data/vendor/assets/bower_components/restangular/package.json +55 -0
- data/vendor/assets/bower_components/restangular/src/restangular.js +1350 -0
- data/vendor/assets/bower_components/restangular/test/restangularSpec.js +1136 -0
- metadata +424 -1
data/vendor/assets/bower_components/angular-material/modules/closure/fabToolbar/fabToolbar.css
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
/*!
|
2
|
+
* Angular Material Design
|
3
|
+
* https://github.com/angular/material
|
4
|
+
* @license MIT
|
5
|
+
* v0.10.0
|
6
|
+
*/
|
7
|
+
/* mixin definition ; sets LTR and RTL within the same style call */
|
8
|
+
md-fab-toolbar {
|
9
|
+
display: block;
|
10
|
+
/*
|
11
|
+
* Closed styling
|
12
|
+
*/
|
13
|
+
/*
|
14
|
+
* Hover styling
|
15
|
+
*/ }
|
16
|
+
md-fab-toolbar .md-fab-toolbar-wrapper {
|
17
|
+
display: block;
|
18
|
+
position: relative;
|
19
|
+
overflow: hidden;
|
20
|
+
height: 6.8rem; }
|
21
|
+
md-fab-toolbar md-fab-trigger {
|
22
|
+
position: absolute;
|
23
|
+
z-index: 20; }
|
24
|
+
md-fab-toolbar md-fab-trigger button {
|
25
|
+
overflow: visible !important; }
|
26
|
+
md-fab-toolbar md-fab-trigger .md-fab-toolbar-background {
|
27
|
+
display: block;
|
28
|
+
position: absolute;
|
29
|
+
z-index: 21;
|
30
|
+
opacity: 1;
|
31
|
+
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2); }
|
32
|
+
md-fab-toolbar md-fab-trigger md-icon {
|
33
|
+
position: relative;
|
34
|
+
z-index: 22;
|
35
|
+
opacity: 1;
|
36
|
+
transition: all 200ms ease-in; }
|
37
|
+
md-fab-toolbar.md-left md-fab-trigger {
|
38
|
+
left: 0; }
|
39
|
+
md-fab-toolbar.md-left .md-toolbar-tools {
|
40
|
+
-webkit-flex-direction: row;
|
41
|
+
-ms-flex-direction: row;
|
42
|
+
flex-direction: row; }
|
43
|
+
md-fab-toolbar.md-right md-fab-trigger {
|
44
|
+
right: 0; }
|
45
|
+
md-fab-toolbar.md-right .md-toolbar-tools {
|
46
|
+
-webkit-flex-direction: row-reverse;
|
47
|
+
-ms-flex-direction: row-reverse;
|
48
|
+
flex-direction: row-reverse; }
|
49
|
+
md-fab-toolbar.md-right .md-toolbar-tools > .md-button:first-child {
|
50
|
+
margin-left: 0.6rem; }
|
51
|
+
md-fab-toolbar.md-right .md-toolbar-tools > .md-button:first-child {
|
52
|
+
margin-right: -0.8rem; }
|
53
|
+
md-fab-toolbar.md-right .md-toolbar-tools > .md-button:last-child {
|
54
|
+
margin-right: 8px; }
|
55
|
+
md-fab-toolbar md-toolbar {
|
56
|
+
background-color: transparent !important;
|
57
|
+
z-index: 23; }
|
58
|
+
md-fab-toolbar md-toolbar .md-toolbar-tools {
|
59
|
+
padding: 0 20px;
|
60
|
+
margin-top: 3px; }
|
61
|
+
md-fab-toolbar md-toolbar .md-fab-action-item {
|
62
|
+
opacity: 0;
|
63
|
+
-webkit-transform: scale(0);
|
64
|
+
transform: scale(0);
|
65
|
+
transition: all 0.3s cubic-bezier(0.55, 0, 0.55, 0.2);
|
66
|
+
transition-duration: 0.15s; }
|
67
|
+
md-fab-toolbar.md-is-open md-fab-trigger > button {
|
68
|
+
box-shadow: none; }
|
69
|
+
md-fab-toolbar.md-is-open md-fab-trigger > button md-icon {
|
70
|
+
opacity: 0; }
|
71
|
+
md-fab-toolbar.md-is-open .md-fab-action-item {
|
72
|
+
opacity: 1;
|
73
|
+
-webkit-transform: scale(1);
|
74
|
+
transform: scale(1); }
|
@@ -0,0 +1,218 @@
|
|
1
|
+
/*!
|
2
|
+
* Angular Material Design
|
3
|
+
* https://github.com/angular/material
|
4
|
+
* @license MIT
|
5
|
+
* v0.10.0
|
6
|
+
*/
|
7
|
+
goog.provide('ng.material.components.fabToolbar');
|
8
|
+
goog.require('ng.material.components.fabActions');
|
9
|
+
goog.require('ng.material.components.fabTrigger');
|
10
|
+
goog.require('ng.material.core');
|
11
|
+
(function() {
|
12
|
+
'use strict';
|
13
|
+
|
14
|
+
angular
|
15
|
+
.module('material.components.fabToolbar', [
|
16
|
+
'material.core',
|
17
|
+
'material.components.fabTrigger',
|
18
|
+
'material.components.fabActions'
|
19
|
+
])
|
20
|
+
.directive('mdFabToolbar', MdFabToolbarDirective)
|
21
|
+
.animation('.md-fab-toolbar', MdFabToolbarAnimation);
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @ngdoc directive
|
25
|
+
* @name mdFabToolbar
|
26
|
+
* @module material.components.fabToolbar
|
27
|
+
*
|
28
|
+
* @restrict E
|
29
|
+
*
|
30
|
+
* @description
|
31
|
+
*
|
32
|
+
* The `<md-fab-toolbar>` directive is used present a toolbar of elements (usually `<md-button>`s)
|
33
|
+
* for quick access to common actions when a floating action button is activated (via hover or
|
34
|
+
* keyboard navigation).
|
35
|
+
*
|
36
|
+
* @usage
|
37
|
+
*
|
38
|
+
* <hljs lang="html">
|
39
|
+
* <md-fab-toolbar>
|
40
|
+
* <md-fab-trigger>
|
41
|
+
* <md-button aria-label="Add..."><md-icon icon="/img/icons/plus.svg"></md-icon></md-button>
|
42
|
+
* </md-fab-trigger>
|
43
|
+
*
|
44
|
+
* <md-fab-actions>
|
45
|
+
* <md-button aria-label="Add User">
|
46
|
+
* <md-icon icon="/img/icons/user.svg"></md-icon>
|
47
|
+
* </md-button>
|
48
|
+
*
|
49
|
+
* <md-button aria-label="Add Group">
|
50
|
+
* <md-icon icon="/img/icons/group.svg"></md-icon>
|
51
|
+
* </md-button>
|
52
|
+
* </md-fab-actions>
|
53
|
+
* </md-fab-toolbar>
|
54
|
+
* </hljs>
|
55
|
+
*
|
56
|
+
* @param {expression=} md-open Programmatically control whether or not the toolbar is visible.
|
57
|
+
*/
|
58
|
+
function MdFabToolbarDirective() {
|
59
|
+
FabToolbarController.$inject = ["$scope", "$element", "$animate"];
|
60
|
+
return {
|
61
|
+
restrict: 'E',
|
62
|
+
transclude: true,
|
63
|
+
template:
|
64
|
+
'<div class="md-fab-toolbar-wrapper">' +
|
65
|
+
' <div class="md-fab-toolbar-content" ng-transclude></div>' +
|
66
|
+
'</div>',
|
67
|
+
|
68
|
+
scope: {
|
69
|
+
isOpen: '=?mdOpen'
|
70
|
+
},
|
71
|
+
|
72
|
+
bindToController: true,
|
73
|
+
controller: FabToolbarController,
|
74
|
+
controllerAs: 'vm',
|
75
|
+
|
76
|
+
link: link
|
77
|
+
};
|
78
|
+
|
79
|
+
function FabToolbarController($scope, $element, $animate) {
|
80
|
+
var vm = this;
|
81
|
+
|
82
|
+
// Set the default to be closed
|
83
|
+
vm.isOpen = vm.isOpen || false;
|
84
|
+
|
85
|
+
vm.open = function() {
|
86
|
+
vm.isOpen = true;
|
87
|
+
$scope.$apply();
|
88
|
+
};
|
89
|
+
|
90
|
+
vm.close = function() {
|
91
|
+
vm.isOpen = false;
|
92
|
+
$scope.$apply();
|
93
|
+
};
|
94
|
+
|
95
|
+
// Add our class so we can trigger the animation on start
|
96
|
+
$element.addClass('md-fab-toolbar');
|
97
|
+
|
98
|
+
// Setup some mouse events so the hover effect can be triggered
|
99
|
+
// anywhere over the toolbar
|
100
|
+
$element.on('mouseenter', vm.open);
|
101
|
+
$element.on('mouseleave', vm.close);
|
102
|
+
|
103
|
+
// Watch for changes to md-open and toggle our class
|
104
|
+
$scope.$watch('vm.isOpen', function(isOpen) {
|
105
|
+
var toAdd = isOpen ? 'md-is-open' : '';
|
106
|
+
var toRemove = isOpen ? '' : 'md-is-open';
|
107
|
+
|
108
|
+
$animate.setClass($element, toAdd, toRemove);
|
109
|
+
});
|
110
|
+
}
|
111
|
+
|
112
|
+
function link(scope, element, attributes) {
|
113
|
+
// Don't allow focus on the trigger
|
114
|
+
element.find('md-fab-trigger').find('button').attr('tabindex', '-1');
|
115
|
+
|
116
|
+
// Prepend the background element to the trigger's button
|
117
|
+
element.find('md-fab-trigger').find('button')
|
118
|
+
.prepend('<div class="md-fab-toolbar-background"></div>');
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
function MdFabToolbarAnimation() {
|
123
|
+
var originalIconDelay;
|
124
|
+
|
125
|
+
function runAnimation(element, className, done) {
|
126
|
+
var el = element[0];
|
127
|
+
var ctrl = element.controller('mdFabToolbar');
|
128
|
+
|
129
|
+
// Grab the relevant child elements
|
130
|
+
var backgroundElement = el.querySelector('.md-fab-toolbar-background');
|
131
|
+
var triggerElement = el.querySelector('md-fab-trigger button');
|
132
|
+
var iconElement = el.querySelector('md-fab-trigger button md-icon');
|
133
|
+
var actions = element.find('md-fab-actions').children();
|
134
|
+
|
135
|
+
// If we have both elements, use them to position the new background
|
136
|
+
if (triggerElement && backgroundElement) {
|
137
|
+
// Get our variables
|
138
|
+
var color = window.getComputedStyle(triggerElement).getPropertyValue('background-color');
|
139
|
+
var width = el.offsetWidth;
|
140
|
+
var height = el.offsetHeight;
|
141
|
+
|
142
|
+
// Make a square
|
143
|
+
var scale = width * 2;
|
144
|
+
|
145
|
+
// Set some basic styles no matter what animation we're doing
|
146
|
+
backgroundElement.style.backgroundColor = color;
|
147
|
+
backgroundElement.style.borderRadius = width + 'px';
|
148
|
+
|
149
|
+
// If we're open
|
150
|
+
if (ctrl.isOpen) {
|
151
|
+
|
152
|
+
// Set the width/height to take up the full toolbar width
|
153
|
+
backgroundElement.style.width = scale + 'px';
|
154
|
+
backgroundElement.style.height = scale + 'px';
|
155
|
+
|
156
|
+
// Set the top/left to move up/left (or right) by the scale width/height
|
157
|
+
backgroundElement.style.top = -(scale / 2) + 'px';
|
158
|
+
|
159
|
+
if (element.hasClass('md-left')) {
|
160
|
+
backgroundElement.style.left = -(scale / 2) + 'px';
|
161
|
+
backgroundElement.style.right = null;
|
162
|
+
}
|
163
|
+
|
164
|
+
if (element.hasClass('md-right')) {
|
165
|
+
backgroundElement.style.right = -(scale / 2) + 'px';
|
166
|
+
backgroundElement.style.left = null;
|
167
|
+
}
|
168
|
+
|
169
|
+
// Set the next close animation to have the proper delays
|
170
|
+
backgroundElement.style.transitionDelay = '0ms';
|
171
|
+
iconElement.style.transitionDelay = '.3s';
|
172
|
+
|
173
|
+
// Apply a transition delay to actions
|
174
|
+
angular.forEach(actions, function(action, index) {
|
175
|
+
action.style.transitionDelay = (actions.length - index) * 25 + 'ms';
|
176
|
+
});
|
177
|
+
} else {
|
178
|
+
// Otherwise, set the width/height to the trigger's width/height
|
179
|
+
backgroundElement.style.width = triggerElement.offsetWidth + 'px';
|
180
|
+
backgroundElement.style.height = triggerElement.offsetHeight + 'px';
|
181
|
+
|
182
|
+
// Reset the position
|
183
|
+
backgroundElement.style.top = '0px';
|
184
|
+
|
185
|
+
if (element.hasClass('md-left')) {
|
186
|
+
backgroundElement.style.left = '0px';
|
187
|
+
backgroundElement.style.right = null;
|
188
|
+
}
|
189
|
+
|
190
|
+
if (element.hasClass('md-right')) {
|
191
|
+
backgroundElement.style.right = '0px';
|
192
|
+
backgroundElement.style.left = null;
|
193
|
+
}
|
194
|
+
|
195
|
+
// Set the next open animation to have the proper delays
|
196
|
+
backgroundElement.style.transitionDelay = '200ms';
|
197
|
+
iconElement.style.transitionDelay = '0ms';
|
198
|
+
|
199
|
+
// Apply a transition delay to actions
|
200
|
+
angular.forEach(actions, function(action, index) {
|
201
|
+
action.style.transitionDelay = (index * 25) + 'ms';
|
202
|
+
});
|
203
|
+
}
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
207
|
+
return {
|
208
|
+
addClass: function(element, className, done) {
|
209
|
+
runAnimation(element, className, done);
|
210
|
+
},
|
211
|
+
|
212
|
+
removeClass: function(element, className, done) {
|
213
|
+
runAnimation(element, className, done);
|
214
|
+
}
|
215
|
+
}
|
216
|
+
}
|
217
|
+
})();
|
218
|
+
ng.material.components.fabToolbar = angular.module("material.components.fabToolbar");
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/*!
|
2
|
+
* Angular Material Design
|
3
|
+
* https://github.com/angular/material
|
4
|
+
* @license MIT
|
5
|
+
* v0.10.0
|
6
|
+
*/
|
7
|
+
goog.provide('ng.material.components.fabTrigger');
|
8
|
+
goog.require('ng.material.core');
|
9
|
+
(function() {
|
10
|
+
'use strict';
|
11
|
+
|
12
|
+
angular
|
13
|
+
.module('material.components.fabTrigger', [ 'material.core' ])
|
14
|
+
.directive('mdFabTrigger', MdFabTriggerDirective);
|
15
|
+
|
16
|
+
/**
|
17
|
+
* @ngdoc directive
|
18
|
+
* @name mdFabTrigger
|
19
|
+
* @module material.components.fabSpeedDial
|
20
|
+
*
|
21
|
+
* @restrict E
|
22
|
+
*
|
23
|
+
* @description
|
24
|
+
* The `<md-fab-trigger>` directive is used inside of a `<md-fab-speed-dial>` or
|
25
|
+
* `<md-fab-toolbar>` directive to mark the an element (or elements) as the trigger and setup the
|
26
|
+
* proper event listeners.
|
27
|
+
*
|
28
|
+
* @usage
|
29
|
+
* See the `<md-fab-speed-dial>` or `<md-fab-toolbar>` directives for example usage.
|
30
|
+
*/
|
31
|
+
function MdFabTriggerDirective() {
|
32
|
+
return {
|
33
|
+
restrict: 'E',
|
34
|
+
|
35
|
+
require: ['^?mdFabSpeedDial', '^?mdFabToolbar'],
|
36
|
+
|
37
|
+
link: function(scope, element, attributes, controllers) {
|
38
|
+
// Grab whichever parent controller is used
|
39
|
+
var controller = controllers[0] || controllers[1];
|
40
|
+
|
41
|
+
// Make the children open/close their parent directive
|
42
|
+
if (controller) {
|
43
|
+
angular.forEach(element.children(), function(child) {
|
44
|
+
angular.element(child).on('focus', controller.open);
|
45
|
+
angular.element(child).on('blur', controller.close);
|
46
|
+
});
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
})();
|
52
|
+
|
53
|
+
|
54
|
+
ng.material.components.fabTrigger = angular.module("material.components.fabTrigger");
|
@@ -0,0 +1,68 @@
|
|
1
|
+
/*!
|
2
|
+
* Angular Material Design
|
3
|
+
* https://github.com/angular/material
|
4
|
+
* @license MIT
|
5
|
+
* v0.10.0
|
6
|
+
*/
|
7
|
+
/* mixin definition ; sets LTR and RTL within the same style call */
|
8
|
+
md-grid-list {
|
9
|
+
box-sizing: border-box;
|
10
|
+
display: block;
|
11
|
+
position: relative; }
|
12
|
+
md-grid-list *, md-grid-list *:before, md-grid-list *:after {
|
13
|
+
box-sizing: border-box; }
|
14
|
+
md-grid-list md-grid-tile {
|
15
|
+
display: block;
|
16
|
+
position: absolute; }
|
17
|
+
md-grid-list md-grid-tile figure {
|
18
|
+
display: -webkit-flex;
|
19
|
+
display: -ms-flexbox;
|
20
|
+
display: flex;
|
21
|
+
-webkit-align-items: center;
|
22
|
+
-ms-flex-align: center;
|
23
|
+
align-items: center;
|
24
|
+
-webkit-justify-content: center;
|
25
|
+
-ms-flex-pack: center;
|
26
|
+
justify-content: center;
|
27
|
+
height: 100%;
|
28
|
+
position: absolute;
|
29
|
+
top: 0;
|
30
|
+
right: 0;
|
31
|
+
bottom: 0;
|
32
|
+
left: 0;
|
33
|
+
padding: 0;
|
34
|
+
margin: 0; }
|
35
|
+
md-grid-list md-grid-tile md-grid-tile-header, md-grid-list md-grid-tile md-grid-tile-footer {
|
36
|
+
display: -webkit-flex;
|
37
|
+
display: -ms-flexbox;
|
38
|
+
display: flex;
|
39
|
+
-webkit-flex-direction: row;
|
40
|
+
-ms-flex-direction: row;
|
41
|
+
flex-direction: row;
|
42
|
+
-webkit-align-items: center;
|
43
|
+
-ms-flex-align: center;
|
44
|
+
align-items: center;
|
45
|
+
height: 48px;
|
46
|
+
color: #fff;
|
47
|
+
background: rgba(0, 0, 0, 0.18);
|
48
|
+
overflow: hidden;
|
49
|
+
position: absolute;
|
50
|
+
left: 0;
|
51
|
+
right: 0; }
|
52
|
+
md-grid-list md-grid-tile md-grid-tile-header h3, md-grid-list md-grid-tile md-grid-tile-header h4, md-grid-list md-grid-tile md-grid-tile-footer h3, md-grid-list md-grid-tile md-grid-tile-footer h4 {
|
53
|
+
font-weight: 400;
|
54
|
+
margin: 0 0 0 16px; }
|
55
|
+
md-grid-list md-grid-tile md-grid-tile-header h3, md-grid-list md-grid-tile md-grid-tile-footer h3 {
|
56
|
+
font-size: 14px; }
|
57
|
+
md-grid-list md-grid-tile md-grid-tile-header h4, md-grid-list md-grid-tile md-grid-tile-footer h4 {
|
58
|
+
font-size: 12px; }
|
59
|
+
md-grid-list md-grid-tile md-grid-tile-header {
|
60
|
+
top: 0; }
|
61
|
+
md-grid-list md-grid-tile md-grid-tile-footer {
|
62
|
+
bottom: 0; }
|
63
|
+
|
64
|
+
@media screen and (-ms-high-contrast: active) {
|
65
|
+
md-grid-tile {
|
66
|
+
border: 1px solid #fff; }
|
67
|
+
md-grid-tile-footer {
|
68
|
+
border-top: 1px solid #fff; } }
|
@@ -0,0 +1,762 @@
|
|
1
|
+
/*!
|
2
|
+
* Angular Material Design
|
3
|
+
* https://github.com/angular/material
|
4
|
+
* @license MIT
|
5
|
+
* v0.10.0
|
6
|
+
*/
|
7
|
+
goog.provide('ng.material.components.gridList');
|
8
|
+
goog.require('ng.material.core');
|
9
|
+
/**
|
10
|
+
* @ngdoc module
|
11
|
+
* @name material.components.gridList
|
12
|
+
*/
|
13
|
+
angular.module('material.components.gridList', ['material.core'])
|
14
|
+
.directive('mdGridList', GridListDirective)
|
15
|
+
.directive('mdGridTile', GridTileDirective)
|
16
|
+
.directive('mdGridTileFooter', GridTileCaptionDirective)
|
17
|
+
.directive('mdGridTileHeader', GridTileCaptionDirective)
|
18
|
+
.factory('$mdGridLayout', GridLayoutFactory);
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @ngdoc directive
|
22
|
+
* @name mdGridList
|
23
|
+
* @module material.components.gridList
|
24
|
+
* @restrict E
|
25
|
+
* @description
|
26
|
+
* Grid lists are an alternative to standard list views. Grid lists are distinct
|
27
|
+
* from grids used for layouts and other visual presentations.
|
28
|
+
*
|
29
|
+
* A grid list is best suited to presenting a homogenous data type, typically
|
30
|
+
* images, and is optimized for visual comprehension and differentiating between
|
31
|
+
* like data types.
|
32
|
+
*
|
33
|
+
* A grid list is a continuous element consisting of tessellated, regular
|
34
|
+
* subdivisions called cells that contain tiles (`md-grid-tile`).
|
35
|
+
*
|
36
|
+
* <img src="//material-design.storage.googleapis.com/publish/v_2/material_ext_publish/0Bx4BSt6jniD7OVlEaXZ5YmU1Xzg/components_grids_usage2.png"
|
37
|
+
* style="width: 300px; height: auto; margin-right: 16px;" alt="Concept of grid explained visually">
|
38
|
+
* <img src="//material-design.storage.googleapis.com/publish/v_2/material_ext_publish/0Bx4BSt6jniD7VGhsOE5idWlJWXM/components_grids_usage3.png"
|
39
|
+
* style="width: 300px; height: auto;" alt="Grid concepts legend">
|
40
|
+
*
|
41
|
+
* Cells are arrayed vertically and horizontally within the grid.
|
42
|
+
*
|
43
|
+
* Tiles hold content and can span one or more cells vertically or horizontally.
|
44
|
+
*
|
45
|
+
* ### Responsive Attributes
|
46
|
+
*
|
47
|
+
* The `md-grid-list` directive supports "responsive" attributes, which allow
|
48
|
+
* different `md-cols`, `md-gutter` and `md-row-height` values depending on the
|
49
|
+
* currently matching media query (as defined in `$mdConstant.MEDIA`).
|
50
|
+
*
|
51
|
+
* In order to set a responsive attribute, first define the fallback value with
|
52
|
+
* the standard attribute name, then add additional attributes with the
|
53
|
+
* following convention: `{base-attribute-name}-{media-query-name}="{value}"`
|
54
|
+
* (ie. `md-cols-lg="8"`)
|
55
|
+
*
|
56
|
+
* @param {number} md-cols Number of columns in the grid.
|
57
|
+
* @param {string} md-row-height One of
|
58
|
+
* <ul>
|
59
|
+
* <li>CSS length - Fixed height rows (eg. `8px` or `1rem`)</li>
|
60
|
+
* <li>`{width}:{height}` - Ratio of width to height (eg.
|
61
|
+
* `md-row-height="16:9"`)</li>
|
62
|
+
* <li>`"fit"` - Height will be determined by subdividing the available
|
63
|
+
* height by the number of rows</li>
|
64
|
+
* </ul>
|
65
|
+
* @param {string=} md-gutter The amount of space between tiles in CSS units
|
66
|
+
* (default 1px)
|
67
|
+
* @param {expression=} md-on-layout Expression to evaluate after layout. Event
|
68
|
+
* object is available as `$event`, and contains performance information.
|
69
|
+
*
|
70
|
+
* @usage
|
71
|
+
* Basic:
|
72
|
+
* <hljs lang="html">
|
73
|
+
* <md-grid-list md-cols="5" md-gutter="1em" md-row-height="4:3">
|
74
|
+
* <md-grid-tile></md-grid-tile>
|
75
|
+
* </md-grid-list>
|
76
|
+
* </hljs>
|
77
|
+
*
|
78
|
+
* Fixed-height rows:
|
79
|
+
* <hljs lang="html">
|
80
|
+
* <md-grid-list md-cols="4" md-row-height="200px" ...>
|
81
|
+
* <md-grid-tile></md-grid-tile>
|
82
|
+
* </md-grid-list>
|
83
|
+
* </hljs>
|
84
|
+
*
|
85
|
+
* Fit rows:
|
86
|
+
* <hljs lang="html">
|
87
|
+
* <md-grid-list md-cols="4" md-row-height="fit" style="height: 400px;" ...>
|
88
|
+
* <md-grid-tile></md-grid-tile>
|
89
|
+
* </md-grid-list>
|
90
|
+
* </hljs>
|
91
|
+
*
|
92
|
+
* Using responsive attributes:
|
93
|
+
* <hljs lang="html">
|
94
|
+
* <md-grid-list
|
95
|
+
* md-cols-sm="2"
|
96
|
+
* md-cols-md="4"
|
97
|
+
* md-cols-lg="8"
|
98
|
+
* md-cols-gt-lg="12"
|
99
|
+
* ...>
|
100
|
+
* <md-grid-tile></md-grid-tile>
|
101
|
+
* </md-grid-list>
|
102
|
+
* </hljs>
|
103
|
+
*/
|
104
|
+
function GridListDirective($interpolate, $mdConstant, $mdGridLayout, $mdMedia) {
|
105
|
+
return {
|
106
|
+
restrict: 'E',
|
107
|
+
controller: GridListController,
|
108
|
+
scope: {
|
109
|
+
mdOnLayout: '&'
|
110
|
+
},
|
111
|
+
link: postLink
|
112
|
+
};
|
113
|
+
|
114
|
+
function postLink(scope, element, attrs, ctrl) {
|
115
|
+
// Apply semantics
|
116
|
+
element.attr('role', 'list');
|
117
|
+
|
118
|
+
// Provide the controller with a way to trigger layouts.
|
119
|
+
ctrl.layoutDelegate = layoutDelegate;
|
120
|
+
|
121
|
+
var invalidateLayout = angular.bind(ctrl, ctrl.invalidateLayout),
|
122
|
+
unwatchAttrs = watchMedia();
|
123
|
+
scope.$on('$destroy', unwatchMedia);
|
124
|
+
|
125
|
+
/**
|
126
|
+
* Watches for changes in media, invalidating layout as necessary.
|
127
|
+
*/
|
128
|
+
function watchMedia() {
|
129
|
+
for (var mediaName in $mdConstant.MEDIA) {
|
130
|
+
$mdMedia(mediaName); // initialize
|
131
|
+
$mdMedia.getQuery($mdConstant.MEDIA[mediaName])
|
132
|
+
.addListener(invalidateLayout);
|
133
|
+
}
|
134
|
+
return $mdMedia.watchResponsiveAttributes(
|
135
|
+
['md-cols', 'md-row-height'], attrs, layoutIfMediaMatch);
|
136
|
+
}
|
137
|
+
|
138
|
+
function unwatchMedia() {
|
139
|
+
ctrl.layoutDelegate = angular.noop;
|
140
|
+
|
141
|
+
unwatchAttrs();
|
142
|
+
for (var mediaName in $mdConstant.MEDIA) {
|
143
|
+
$mdMedia.getQuery($mdConstant.MEDIA[mediaName])
|
144
|
+
.removeListener(invalidateLayout);
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Performs grid layout if the provided mediaName matches the currently
|
150
|
+
* active media type.
|
151
|
+
*/
|
152
|
+
function layoutIfMediaMatch(mediaName) {
|
153
|
+
if (mediaName == null) {
|
154
|
+
// TODO(shyndman): It would be nice to only layout if we have
|
155
|
+
// instances of attributes using this media type
|
156
|
+
ctrl.invalidateLayout();
|
157
|
+
} else if ($mdMedia(mediaName)) {
|
158
|
+
ctrl.invalidateLayout();
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
var lastLayoutProps;
|
163
|
+
|
164
|
+
/**
|
165
|
+
* Invokes the layout engine, and uses its results to lay out our
|
166
|
+
* tile elements.
|
167
|
+
*
|
168
|
+
* @param {boolean} tilesInvalidated Whether tiles have been
|
169
|
+
* added/removed/moved since the last layout. This is to avoid situations
|
170
|
+
* where tiles are replaced with properties identical to their removed
|
171
|
+
* counterparts.
|
172
|
+
*/
|
173
|
+
function layoutDelegate(tilesInvalidated) {
|
174
|
+
var tiles = getTileElements();
|
175
|
+
var props = {
|
176
|
+
tileSpans: getTileSpans(tiles),
|
177
|
+
colCount: getColumnCount(),
|
178
|
+
rowMode: getRowMode(),
|
179
|
+
rowHeight: getRowHeight(),
|
180
|
+
gutter: getGutter()
|
181
|
+
};
|
182
|
+
|
183
|
+
if (!tilesInvalidated && angular.equals(props, lastLayoutProps)) {
|
184
|
+
return;
|
185
|
+
}
|
186
|
+
|
187
|
+
var performance =
|
188
|
+
$mdGridLayout(props.colCount, props.tileSpans, tiles)
|
189
|
+
.map(function(tilePositions, rowCount) {
|
190
|
+
return {
|
191
|
+
grid: {
|
192
|
+
element: element,
|
193
|
+
style: getGridStyle(props.colCount, rowCount,
|
194
|
+
props.gutter, props.rowMode, props.rowHeight)
|
195
|
+
},
|
196
|
+
tiles: tilePositions.map(function(ps, i) {
|
197
|
+
return {
|
198
|
+
element: angular.element(tiles[i]),
|
199
|
+
style: getTileStyle(ps.position, ps.spans,
|
200
|
+
props.colCount, props.rowCount,
|
201
|
+
props.gutter, props.rowMode, props.rowHeight)
|
202
|
+
}
|
203
|
+
})
|
204
|
+
}
|
205
|
+
})
|
206
|
+
.reflow()
|
207
|
+
.performance();
|
208
|
+
|
209
|
+
// Report layout
|
210
|
+
scope.mdOnLayout({
|
211
|
+
$event: {
|
212
|
+
performance: performance
|
213
|
+
}
|
214
|
+
});
|
215
|
+
|
216
|
+
lastLayoutProps = props;
|
217
|
+
}
|
218
|
+
|
219
|
+
// Use $interpolate to do some simple string interpolation as a convenience.
|
220
|
+
|
221
|
+
var startSymbol = $interpolate.startSymbol();
|
222
|
+
var endSymbol = $interpolate.endSymbol();
|
223
|
+
|
224
|
+
// Returns an expression wrapped in the interpolator's start and end symbols.
|
225
|
+
function expr(exprStr) {
|
226
|
+
return startSymbol + exprStr + endSymbol;
|
227
|
+
}
|
228
|
+
|
229
|
+
// The amount of space a single 1x1 tile would take up (either width or height), used as
|
230
|
+
// a basis for other calculations. This consists of taking the base size percent (as would be
|
231
|
+
// if evenly dividing the size between cells), and then subtracting the size of one gutter.
|
232
|
+
// However, since there are no gutters on the edges, each tile only uses a fration
|
233
|
+
// (gutterShare = numGutters / numCells) of the gutter size. (Imagine having one gutter per
|
234
|
+
// tile, and then breaking up the extra gutter on the edge evenly among the cells).
|
235
|
+
var UNIT = $interpolate(expr('share') + '% - (' + expr('gutter') + ' * ' + expr('gutterShare') + ')');
|
236
|
+
|
237
|
+
// The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.
|
238
|
+
// The position comes the size of a 1x1 tile plus gutter for each previous tile in the
|
239
|
+
// row/column (offset).
|
240
|
+
var POSITION = $interpolate('calc((' + expr('unit') + ' + ' + expr('gutter') + ') * ' + expr('offset') + ')');
|
241
|
+
|
242
|
+
// The actual size of a tile, e.g., width or height, taking rowSpan or colSpan into account.
|
243
|
+
// This is computed by multiplying the base unit by the rowSpan/colSpan, and then adding back
|
244
|
+
// in the space that the gutter would normally have used (which was already accounted for in
|
245
|
+
// the base unit calculation).
|
246
|
+
var DIMENSION = $interpolate('calc((' + expr('unit') + ') * ' + expr('span') + ' + (' + expr('span') + ' - 1) * ' + expr('gutter') + ')');
|
247
|
+
|
248
|
+
/**
|
249
|
+
* Gets the styles applied to a tile element described by the given parameters.
|
250
|
+
* @param {{row: number, col: number}} position The row and column indices of the tile.
|
251
|
+
* @param {{row: number, col: number}} spans The rowSpan and colSpan of the tile.
|
252
|
+
* @param {number} colCount The number of columns.
|
253
|
+
* @param {number} rowCount The number of rows.
|
254
|
+
* @param {string} gutter The amount of space between tiles. This will be something like
|
255
|
+
* '5px' or '2em'.
|
256
|
+
* @param {string} rowMode The row height mode. Can be one of:
|
257
|
+
* 'fixed': all rows have a fixed size, given by rowHeight,
|
258
|
+
* 'ratio': row height defined as a ratio to width, or
|
259
|
+
* 'fit': fit to the grid-list element height, divinding evenly among rows.
|
260
|
+
* @param {string|number} rowHeight The height of a row. This is only used for 'fixed' mode and
|
261
|
+
* for 'ratio' mode. For 'ratio' mode, this is the *ratio* of width-to-height (e.g., 0.75).
|
262
|
+
* @returns {Object} Map of CSS properties to be applied to the style element. Will define
|
263
|
+
* values for top, left, width, height, marginTop, and paddingTop.
|
264
|
+
*/
|
265
|
+
function getTileStyle(position, spans, colCount, rowCount, gutter, rowMode, rowHeight) {
|
266
|
+
// TODO(shyndman): There are style caching opportunities here.
|
267
|
+
|
268
|
+
// Percent of the available horizontal space that one column takes up.
|
269
|
+
var hShare = (1 / colCount) * 100;
|
270
|
+
|
271
|
+
// Fraction of the gutter size that each column takes up.
|
272
|
+
var hGutterShare = (colCount - 1) / colCount;
|
273
|
+
|
274
|
+
// Base horizontal size of a column.
|
275
|
+
var hUnit = UNIT({share: hShare, gutterShare: hGutterShare, gutter: gutter});
|
276
|
+
|
277
|
+
// The width and horizontal position of each tile is always calculated the same way, but the
|
278
|
+
// height and vertical position depends on the rowMode.
|
279
|
+
var style = {
|
280
|
+
left: POSITION({ unit: hUnit, offset: position.col, gutter: gutter }),
|
281
|
+
width: DIMENSION({ unit: hUnit, span: spans.col, gutter: gutter }),
|
282
|
+
// resets
|
283
|
+
paddingTop: '',
|
284
|
+
marginTop: '',
|
285
|
+
top: '',
|
286
|
+
height: ''
|
287
|
+
};
|
288
|
+
|
289
|
+
switch (rowMode) {
|
290
|
+
case 'fixed':
|
291
|
+
// In fixed mode, simply use the given rowHeight.
|
292
|
+
style.top = POSITION({ unit: rowHeight, offset: position.row, gutter: gutter });
|
293
|
+
style.height = DIMENSION({ unit: rowHeight, span: spans.row, gutter: gutter });
|
294
|
+
break;
|
295
|
+
|
296
|
+
case 'ratio':
|
297
|
+
// Percent of the available vertical space that one row takes up. Here, rowHeight holds
|
298
|
+
// the ratio value. For example, if the width:height ratio is 4:3, rowHeight = 1.333.
|
299
|
+
var vShare = hShare / rowHeight;
|
300
|
+
|
301
|
+
// Base veritcal size of a row.
|
302
|
+
var vUnit = UNIT({ share: vShare, gutterShare: hGutterShare, gutter: gutter });
|
303
|
+
|
304
|
+
// padidngTop and marginTop are used to maintain the given aspect ratio, as
|
305
|
+
// a percentage-based value for these properties is applied to the *width* of the
|
306
|
+
// containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties
|
307
|
+
style.paddingTop = DIMENSION({ unit: vUnit, span: spans.row, gutter: gutter});
|
308
|
+
style.marginTop = POSITION({ unit: vUnit, offset: position.row, gutter: gutter });
|
309
|
+
break;
|
310
|
+
|
311
|
+
case 'fit':
|
312
|
+
// Fraction of the gutter size that each column takes up.
|
313
|
+
var vGutterShare = (rowCount - 1) / rowCount;
|
314
|
+
|
315
|
+
// Percent of the available vertical space that one row takes up.
|
316
|
+
var vShare = (1 / rowCount) * 100;
|
317
|
+
|
318
|
+
// Base vertical size of a row.
|
319
|
+
var vUnit = UNIT({share: vShare, gutterShare: vGutterShare, gutter: gutter});
|
320
|
+
|
321
|
+
style.top = POSITION({unit: vUnit, offset: position.row, gutter: gutter});
|
322
|
+
style.height = DIMENSION({unit: vUnit, span: spans.row, gutter: gutter});
|
323
|
+
break;
|
324
|
+
}
|
325
|
+
|
326
|
+
return style;
|
327
|
+
}
|
328
|
+
|
329
|
+
function getGridStyle(colCount, rowCount, gutter, rowMode, rowHeight) {
|
330
|
+
var style = {
|
331
|
+
height: '',
|
332
|
+
paddingBottom: ''
|
333
|
+
};
|
334
|
+
|
335
|
+
switch(rowMode) {
|
336
|
+
case 'fixed':
|
337
|
+
style.height = DIMENSION({ unit: rowHeight, span: rowCount, gutter: gutter });
|
338
|
+
break;
|
339
|
+
|
340
|
+
case 'ratio':
|
341
|
+
// rowHeight is width / height
|
342
|
+
var hGutterShare = colCount === 1 ? 0 : (colCount - 1) / colCount,
|
343
|
+
hShare = (1 / colCount) * 100,
|
344
|
+
vShare = hShare * (1 / rowHeight),
|
345
|
+
vUnit = UNIT({ share: vShare, gutterShare: hGutterShare, gutter: gutter });
|
346
|
+
|
347
|
+
style.paddingBottom = DIMENSION({ unit: vUnit, span: rowCount, gutter: gutter});
|
348
|
+
break;
|
349
|
+
|
350
|
+
case 'fit':
|
351
|
+
// noop, as the height is user set
|
352
|
+
break;
|
353
|
+
}
|
354
|
+
|
355
|
+
return style;
|
356
|
+
}
|
357
|
+
|
358
|
+
function getTileElements() {
|
359
|
+
return [].filter.call(element.children(), function(ele) {
|
360
|
+
return ele.tagName == 'MD-GRID-TILE';
|
361
|
+
});
|
362
|
+
}
|
363
|
+
|
364
|
+
/**
|
365
|
+
* Gets an array of objects containing the rowspan and colspan for each tile.
|
366
|
+
* @returns {Array<{row: number, col: number}>}
|
367
|
+
*/
|
368
|
+
function getTileSpans(tileElements) {
|
369
|
+
return [].map.call(tileElements, function(ele) {
|
370
|
+
var ctrl = angular.element(ele).controller('mdGridTile');
|
371
|
+
return {
|
372
|
+
row: parseInt(
|
373
|
+
$mdMedia.getResponsiveAttribute(ctrl.$attrs, 'md-rowspan'), 10) || 1,
|
374
|
+
col: parseInt(
|
375
|
+
$mdMedia.getResponsiveAttribute(ctrl.$attrs, 'md-colspan'), 10) || 1
|
376
|
+
};
|
377
|
+
});
|
378
|
+
}
|
379
|
+
|
380
|
+
function getColumnCount() {
|
381
|
+
var colCount = parseInt($mdMedia.getResponsiveAttribute(attrs, 'md-cols'), 10);
|
382
|
+
if (isNaN(colCount)) {
|
383
|
+
throw 'md-grid-list: md-cols attribute was not found, or contained a non-numeric value';
|
384
|
+
}
|
385
|
+
return colCount;
|
386
|
+
}
|
387
|
+
|
388
|
+
function getGutter() {
|
389
|
+
return applyDefaultUnit($mdMedia.getResponsiveAttribute(attrs, 'md-gutter') || 1);
|
390
|
+
}
|
391
|
+
|
392
|
+
function getRowHeight() {
|
393
|
+
var rowHeight = $mdMedia.getResponsiveAttribute(attrs, 'md-row-height');
|
394
|
+
switch (getRowMode()) {
|
395
|
+
case 'fixed':
|
396
|
+
return applyDefaultUnit(rowHeight);
|
397
|
+
case 'ratio':
|
398
|
+
var whRatio = rowHeight.split(':');
|
399
|
+
return parseFloat(whRatio[0]) / parseFloat(whRatio[1]);
|
400
|
+
case 'fit':
|
401
|
+
return 0; // N/A
|
402
|
+
}
|
403
|
+
}
|
404
|
+
|
405
|
+
function getRowMode() {
|
406
|
+
var rowHeight = $mdMedia.getResponsiveAttribute(attrs, 'md-row-height');
|
407
|
+
if (rowHeight == 'fit') {
|
408
|
+
return 'fit';
|
409
|
+
} else if (rowHeight.indexOf(':') !== -1) {
|
410
|
+
return 'ratio';
|
411
|
+
} else {
|
412
|
+
return 'fixed';
|
413
|
+
}
|
414
|
+
}
|
415
|
+
|
416
|
+
function applyDefaultUnit(val) {
|
417
|
+
return /\D$/.test(val) ? val : val + 'px';
|
418
|
+
}
|
419
|
+
}
|
420
|
+
}
|
421
|
+
GridListDirective.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia"];
|
422
|
+
|
423
|
+
/* ngInject */
|
424
|
+
function GridListController($timeout) {
|
425
|
+
this.layoutInvalidated = false;
|
426
|
+
this.tilesInvalidated = false;
|
427
|
+
this.$timeout_ = $timeout;
|
428
|
+
this.layoutDelegate = angular.noop;
|
429
|
+
}
|
430
|
+
GridListController.$inject = ["$timeout"];
|
431
|
+
|
432
|
+
GridListController.prototype = {
|
433
|
+
invalidateTiles: function() {
|
434
|
+
this.tilesInvalidated = true;
|
435
|
+
this.invalidateLayout();
|
436
|
+
},
|
437
|
+
|
438
|
+
invalidateLayout: function() {
|
439
|
+
if (this.layoutInvalidated) {
|
440
|
+
return;
|
441
|
+
}
|
442
|
+
this.layoutInvalidated = true;
|
443
|
+
this.$timeout_(angular.bind(this, this.layout));
|
444
|
+
},
|
445
|
+
|
446
|
+
layout: function() {
|
447
|
+
try {
|
448
|
+
this.layoutDelegate(this.tilesInvalidated);
|
449
|
+
} finally {
|
450
|
+
this.layoutInvalidated = false;
|
451
|
+
this.tilesInvalidated = false;
|
452
|
+
}
|
453
|
+
}
|
454
|
+
};
|
455
|
+
|
456
|
+
|
457
|
+
/* ngInject */
|
458
|
+
function GridLayoutFactory($mdUtil) {
|
459
|
+
var defaultAnimator = GridTileAnimator;
|
460
|
+
|
461
|
+
/**
|
462
|
+
* Set the reflow animator callback
|
463
|
+
*/
|
464
|
+
GridLayout.animateWith = function(customAnimator) {
|
465
|
+
defaultAnimator = !angular.isFunction(customAnimator) ? GridTileAnimator : customAnimator;
|
466
|
+
};
|
467
|
+
|
468
|
+
return GridLayout;
|
469
|
+
|
470
|
+
/**
|
471
|
+
* Publish layout function
|
472
|
+
*/
|
473
|
+
function GridLayout(colCount, tileSpans) {
|
474
|
+
var self, layoutInfo, gridStyles, layoutTime, mapTime, reflowTime;
|
475
|
+
|
476
|
+
layoutTime = $mdUtil.time(function() {
|
477
|
+
layoutInfo = calculateGridFor(colCount, tileSpans);
|
478
|
+
});
|
479
|
+
|
480
|
+
return self = {
|
481
|
+
|
482
|
+
/**
|
483
|
+
* An array of objects describing each tile's position in the grid.
|
484
|
+
*/
|
485
|
+
layoutInfo: function() {
|
486
|
+
return layoutInfo;
|
487
|
+
},
|
488
|
+
|
489
|
+
/**
|
490
|
+
* Maps grid positioning to an element and a set of styles using the
|
491
|
+
* provided updateFn.
|
492
|
+
*/
|
493
|
+
map: function(updateFn) {
|
494
|
+
mapTime = $mdUtil.time(function() {
|
495
|
+
var info = self.layoutInfo();
|
496
|
+
gridStyles = updateFn(info.positioning, info.rowCount);
|
497
|
+
});
|
498
|
+
return self;
|
499
|
+
},
|
500
|
+
|
501
|
+
/**
|
502
|
+
* Default animator simply sets the element.css( <styles> ). An alternate
|
503
|
+
* animator can be provided as an argument. The function has the following
|
504
|
+
* signature:
|
505
|
+
*
|
506
|
+
* function({grid: {element: JQLite, style: Object}, tiles: Array<{element: JQLite, style: Object}>)
|
507
|
+
*/
|
508
|
+
reflow: function(animatorFn) {
|
509
|
+
reflowTime = $mdUtil.time(function() {
|
510
|
+
var animator = animatorFn || defaultAnimator;
|
511
|
+
animator(gridStyles.grid, gridStyles.tiles);
|
512
|
+
});
|
513
|
+
return self;
|
514
|
+
},
|
515
|
+
|
516
|
+
/**
|
517
|
+
* Timing for the most recent layout run.
|
518
|
+
*/
|
519
|
+
performance: function() {
|
520
|
+
return {
|
521
|
+
tileCount: tileSpans.length,
|
522
|
+
layoutTime: layoutTime,
|
523
|
+
mapTime: mapTime,
|
524
|
+
reflowTime: reflowTime,
|
525
|
+
totalTime: layoutTime + mapTime + reflowTime
|
526
|
+
};
|
527
|
+
}
|
528
|
+
};
|
529
|
+
}
|
530
|
+
|
531
|
+
/**
|
532
|
+
* Default Gridlist animator simple sets the css for each element;
|
533
|
+
* NOTE: any transitions effects must be manually set in the CSS.
|
534
|
+
* e.g.
|
535
|
+
*
|
536
|
+
* md-grid-tile {
|
537
|
+
* transition: all 700ms ease-out 50ms;
|
538
|
+
* }
|
539
|
+
*
|
540
|
+
*/
|
541
|
+
function GridTileAnimator(grid, tiles) {
|
542
|
+
grid.element.css(grid.style);
|
543
|
+
tiles.forEach(function(t) {
|
544
|
+
t.element.css(t.style);
|
545
|
+
})
|
546
|
+
}
|
547
|
+
|
548
|
+
/**
|
549
|
+
* Calculates the positions of tiles.
|
550
|
+
*
|
551
|
+
* The algorithm works as follows:
|
552
|
+
* An Array<Number> with length colCount (spaceTracker) keeps track of
|
553
|
+
* available tiling positions, where elements of value 0 represents an
|
554
|
+
* empty position. Space for a tile is reserved by finding a sequence of
|
555
|
+
* 0s with length <= than the tile's colspan. When such a space has been
|
556
|
+
* found, the occupied tile positions are incremented by the tile's
|
557
|
+
* rowspan value, as these positions have become unavailable for that
|
558
|
+
* many rows.
|
559
|
+
*
|
560
|
+
* If the end of a row has been reached without finding space for the
|
561
|
+
* tile, spaceTracker's elements are each decremented by 1 to a minimum
|
562
|
+
* of 0. Rows are searched in this fashion until space is found.
|
563
|
+
*/
|
564
|
+
function calculateGridFor(colCount, tileSpans) {
|
565
|
+
var curCol = 0,
|
566
|
+
curRow = 0,
|
567
|
+
spaceTracker = newSpaceTracker();
|
568
|
+
|
569
|
+
return {
|
570
|
+
positioning: tileSpans.map(function(spans, i) {
|
571
|
+
return {
|
572
|
+
spans: spans,
|
573
|
+
position: reserveSpace(spans, i)
|
574
|
+
};
|
575
|
+
}),
|
576
|
+
rowCount: curRow + Math.max.apply(Math, spaceTracker)
|
577
|
+
};
|
578
|
+
|
579
|
+
function reserveSpace(spans, i) {
|
580
|
+
if (spans.col > colCount) {
|
581
|
+
throw 'md-grid-list: Tile at position ' + i + ' has a colspan ' +
|
582
|
+
'(' + spans.col + ') that exceeds the column count ' +
|
583
|
+
'(' + colCount + ')';
|
584
|
+
}
|
585
|
+
|
586
|
+
var start = 0,
|
587
|
+
end = 0;
|
588
|
+
|
589
|
+
// TODO(shyndman): This loop isn't strictly necessary if you can
|
590
|
+
// determine the minimum number of rows before a space opens up. To do
|
591
|
+
// this, recognize that you've iterated across an entire row looking for
|
592
|
+
// space, and if so fast-forward by the minimum rowSpan count. Repeat
|
593
|
+
// until the required space opens up.
|
594
|
+
while (end - start < spans.col) {
|
595
|
+
if (curCol >= colCount) {
|
596
|
+
nextRow();
|
597
|
+
continue;
|
598
|
+
}
|
599
|
+
|
600
|
+
start = spaceTracker.indexOf(0, curCol);
|
601
|
+
if (start === -1 || (end = findEnd(start + 1)) === -1) {
|
602
|
+
start = end = 0;
|
603
|
+
nextRow();
|
604
|
+
continue;
|
605
|
+
}
|
606
|
+
|
607
|
+
curCol = end + 1;
|
608
|
+
}
|
609
|
+
|
610
|
+
adjustRow(start, spans.col, spans.row);
|
611
|
+
curCol = start + spans.col;
|
612
|
+
|
613
|
+
return {
|
614
|
+
col: start,
|
615
|
+
row: curRow
|
616
|
+
};
|
617
|
+
}
|
618
|
+
|
619
|
+
function nextRow() {
|
620
|
+
curCol = 0;
|
621
|
+
curRow++;
|
622
|
+
adjustRow(0, colCount, -1); // Decrement row spans by one
|
623
|
+
}
|
624
|
+
|
625
|
+
function adjustRow(from, cols, by) {
|
626
|
+
for (var i = from; i < from + cols; i++) {
|
627
|
+
spaceTracker[i] = Math.max(spaceTracker[i] + by, 0);
|
628
|
+
}
|
629
|
+
}
|
630
|
+
|
631
|
+
function findEnd(start) {
|
632
|
+
var i;
|
633
|
+
for (i = start; i < spaceTracker.length; i++) {
|
634
|
+
if (spaceTracker[i] !== 0) {
|
635
|
+
return i;
|
636
|
+
}
|
637
|
+
}
|
638
|
+
|
639
|
+
if (i === spaceTracker.length) {
|
640
|
+
return i;
|
641
|
+
}
|
642
|
+
}
|
643
|
+
|
644
|
+
function newSpaceTracker() {
|
645
|
+
var tracker = [];
|
646
|
+
for (var i = 0; i < colCount; i++) {
|
647
|
+
tracker.push(0);
|
648
|
+
}
|
649
|
+
return tracker;
|
650
|
+
}
|
651
|
+
}
|
652
|
+
}
|
653
|
+
GridLayoutFactory.$inject = ["$mdUtil"];
|
654
|
+
|
655
|
+
/**
|
656
|
+
* @ngdoc directive
|
657
|
+
* @name mdGridTile
|
658
|
+
* @module material.components.gridList
|
659
|
+
* @restrict E
|
660
|
+
* @description
|
661
|
+
* Tiles contain the content of an `md-grid-list`. They span one or more grid
|
662
|
+
* cells vertically or horizontally, and use `md-grid-tile-{footer,header}` to
|
663
|
+
* display secondary content.
|
664
|
+
*
|
665
|
+
* ### Responsive Attributes
|
666
|
+
*
|
667
|
+
* The `md-grid-tile` directive supports "responsive" attributes, which allow
|
668
|
+
* different `md-rowspan` and `md-colspan` values depending on the currently
|
669
|
+
* matching media query (as defined in `$mdConstant.MEDIA`).
|
670
|
+
*
|
671
|
+
* In order to set a responsive attribute, first define the fallback value with
|
672
|
+
* the standard attribute name, then add additional attributes with the
|
673
|
+
* following convention: `{base-attribute-name}-{media-query-name}="{value}"`
|
674
|
+
* (ie. `md-colspan-sm="4"`)
|
675
|
+
*
|
676
|
+
* @param {number=} md-colspan The number of columns to span (default 1). Cannot
|
677
|
+
* exceed the number of columns in the grid. Supports interpolation.
|
678
|
+
* @param {number=} md-rowspan The number of rows to span (default 1). Supports
|
679
|
+
* interpolation.
|
680
|
+
*
|
681
|
+
* @usage
|
682
|
+
* With header:
|
683
|
+
* <hljs lang="html">
|
684
|
+
* <md-grid-tile>
|
685
|
+
* <md-grid-tile-header>
|
686
|
+
* <h3>This is a header</h3>
|
687
|
+
* </md-grid-tile-header>
|
688
|
+
* </md-grid-tile>
|
689
|
+
* </hljs>
|
690
|
+
*
|
691
|
+
* With footer:
|
692
|
+
* <hljs lang="html">
|
693
|
+
* <md-grid-tile>
|
694
|
+
* <md-grid-tile-footer>
|
695
|
+
* <h3>This is a footer</h3>
|
696
|
+
* </md-grid-tile-footer>
|
697
|
+
* </md-grid-tile>
|
698
|
+
* </hljs>
|
699
|
+
*
|
700
|
+
* Spanning multiple rows/columns:
|
701
|
+
* <hljs lang="html">
|
702
|
+
* <md-grid-tile md-colspan="2" md-rowspan="3">
|
703
|
+
* </md-grid-tile>
|
704
|
+
* </hljs>
|
705
|
+
*
|
706
|
+
* Responsive attributes:
|
707
|
+
* <hljs lang="html">
|
708
|
+
* <md-grid-tile md-colspan="1" md-colspan-sm="3" md-colspan-md="5">
|
709
|
+
* </md-grid-tile>
|
710
|
+
* </hljs>
|
711
|
+
*/
|
712
|
+
function GridTileDirective($mdMedia) {
|
713
|
+
return {
|
714
|
+
restrict: 'E',
|
715
|
+
require: '^mdGridList',
|
716
|
+
template: '<figure ng-transclude></figure>',
|
717
|
+
transclude: true,
|
718
|
+
scope: {},
|
719
|
+
// Simple controller that exposes attributes to the grid directive
|
720
|
+
controller: ["$attrs", function($attrs) {
|
721
|
+
this.$attrs = $attrs;
|
722
|
+
}],
|
723
|
+
link: postLink
|
724
|
+
};
|
725
|
+
|
726
|
+
function postLink(scope, element, attrs, gridCtrl) {
|
727
|
+
// Apply semantics
|
728
|
+
element.attr('role', 'listitem');
|
729
|
+
|
730
|
+
// If our colspan or rowspan changes, trigger a layout
|
731
|
+
var unwatchAttrs = $mdMedia.watchResponsiveAttributes(['md-colspan', 'md-rowspan'],
|
732
|
+
attrs, angular.bind(gridCtrl, gridCtrl.invalidateLayout));
|
733
|
+
|
734
|
+
// Tile registration/deregistration
|
735
|
+
gridCtrl.invalidateTiles();
|
736
|
+
scope.$on('$destroy', function() {
|
737
|
+
unwatchAttrs();
|
738
|
+
gridCtrl.invalidateLayout();
|
739
|
+
});
|
740
|
+
|
741
|
+
if (angular.isDefined(scope.$parent.$index)) {
|
742
|
+
scope.$watch(function() { return scope.$parent.$index; },
|
743
|
+
function indexChanged(newIdx, oldIdx) {
|
744
|
+
if (newIdx === oldIdx) {
|
745
|
+
return;
|
746
|
+
}
|
747
|
+
gridCtrl.invalidateTiles();
|
748
|
+
});
|
749
|
+
}
|
750
|
+
}
|
751
|
+
}
|
752
|
+
GridTileDirective.$inject = ["$mdMedia"];
|
753
|
+
|
754
|
+
|
755
|
+
function GridTileCaptionDirective() {
|
756
|
+
return {
|
757
|
+
template: '<figcaption ng-transclude></figcaption>',
|
758
|
+
transclude: true
|
759
|
+
};
|
760
|
+
}
|
761
|
+
|
762
|
+
ng.material.components.gridList = angular.module("material.components.gridList");
|