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.
Files changed (426) hide show
  1. checksums.yaml +4 -4
  2. data/lib/todo_rails/version.rb +1 -1
  3. data/vendor/assets/bower.json +8 -0
  4. data/vendor/assets/bower_components/angular-animate/README.md +68 -0
  5. data/vendor/assets/bower_components/angular-animate/angular-animate.js +3721 -0
  6. data/vendor/assets/bower_components/angular-animate/angular-animate.min.js +52 -0
  7. data/vendor/assets/bower_components/angular-animate/angular-animate.min.js.map +8 -0
  8. data/vendor/assets/bower_components/angular-animate/bower.json +9 -0
  9. data/vendor/assets/bower_components/angular-animate/index.js +2 -0
  10. data/vendor/assets/bower_components/angular-animate/package.json +26 -0
  11. data/vendor/assets/bower_components/angular-aria/README.md +67 -0
  12. data/vendor/assets/bower_components/angular-aria/angular-aria.js +393 -0
  13. data/vendor/assets/bower_components/angular-aria/angular-aria.min.js +13 -0
  14. data/vendor/assets/bower_components/angular-aria/angular-aria.min.js.map +8 -0
  15. data/vendor/assets/bower_components/angular-aria/bower.json +9 -0
  16. data/vendor/assets/bower_components/angular-aria/index.js +2 -0
  17. data/vendor/assets/bower_components/angular-aria/package.json +27 -0
  18. data/vendor/assets/bower_components/angular-material/CHANGELOG.md +1599 -0
  19. data/vendor/assets/bower_components/angular-material/LICENSE +21 -0
  20. data/vendor/assets/bower_components/angular-material/README.md +211 -0
  21. data/vendor/assets/bower_components/angular-material/angular-material-mocks.js +77 -0
  22. data/vendor/assets/bower_components/angular-material/angular-material.css +7183 -0
  23. data/vendor/assets/bower_components/angular-material/angular-material.js +15406 -0
  24. data/vendor/assets/bower_components/angular-material/angular-material.min.css +6 -0
  25. data/vendor/assets/bower_components/angular-material/angular-material.min.js +14 -0
  26. data/vendor/assets/bower_components/angular-material/bower.json +14 -0
  27. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/copy.svg +1 -0
  28. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/copy2.svg +1 -0
  29. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/facebook.svg +1 -0
  30. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/hangout.svg +1 -0
  31. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/mail.svg +1 -0
  32. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/message.svg +1 -0
  33. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/print.svg +1 -0
  34. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/share-arrow.svg +1 -0
  35. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/twitter.svg +2 -0
  36. data/vendor/assets/bower_components/angular-material/demos/bottomSheet/demoBasicUsage/img/icons/upload.svg +1 -0
  37. data/vendor/assets/bower_components/angular-material/demos/chips/demoBasicUsage/style.scss +39 -0
  38. data/vendor/assets/bower_components/angular-material/demos/chips/demoContactChips/style.scss +47 -0
  39. data/vendor/assets/bower_components/angular-material/demos/gridList/demoBasicUsage/style.scss +75 -0
  40. data/vendor/assets/bower_components/angular-material/demos/gridList/demoDynamicTiles/style.scss +78 -0
  41. data/vendor/assets/bower_components/angular-material/demos/gridList/demoResponsiveUsage/style.scss +0 -0
  42. data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/addShoppingCart.svg +1 -0
  43. data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/android.svg +1 -0
  44. data/vendor/assets/bower_components/angular-material/demos/icon/demoLoadSvgIconsFromUrl/img/icons/cake.svg +1 -0
  45. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/cake.svg +1 -0
  46. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/core-icons.svg +26 -0
  47. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconSets/assets/social-icons.svg +26 -0
  48. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/addShoppingCart.svg +1 -0
  49. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/android.svg +1 -0
  50. data/vendor/assets/bower_components/angular-material/demos/icon/demoSvgIconsFromURL/img/icons/cake.svg +1 -0
  51. data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/android.svg +1 -0
  52. data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/cake.svg +1 -0
  53. data/vendor/assets/bower_components/angular-material/demos/icon/demoUsingTemplateCache/assets/core-icons.svg +26 -0
  54. data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_email_24px.svg +4 -0
  55. data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_person_24px.svg +4 -0
  56. data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_phone_24px.svg +4 -0
  57. data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/icons/ic_place_24px.svg +4 -0
  58. data/vendor/assets/bower_components/angular-material/demos/input/demoIcons/style.scss +18 -0
  59. data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-0.jpeg +0 -0
  60. data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-1.jpeg +0 -0
  61. data/vendor/assets/bower_components/angular-material/demos/list/demoListControls/img/100-2.jpeg +0 -0
  62. data/vendor/assets/bower_components/angular-material/demos/tabs/demoDynamicHeight/style.scss +13 -0
  63. data/vendor/assets/bower_components/angular-material/demos/tabs/demoDynamicTabs/style.scss +44 -0
  64. data/vendor/assets/bower_components/angular-material/demos/tabs/demoStaticTabs/style.scss +25 -0
  65. data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/favorite.svg +4 -0
  66. data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/menu.svg +4 -0
  67. data/vendor/assets/bower_components/angular-material/demos/toolbar/demoBasicUsage/img/icons/more_vert.svg +4 -0
  68. data/vendor/assets/bower_components/angular-material/index.js +12 -0
  69. data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete-default-theme.css +24 -0
  70. data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete.css +220 -0
  71. data/vendor/assets/bower_components/angular-material/modules/closure/autocomplete/autocomplete.js +951 -0
  72. data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop-default-theme.css +9 -0
  73. data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop.css +59 -0
  74. data/vendor/assets/bower_components/angular-material/modules/closure/backdrop/backdrop.js +38 -0
  75. data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet-default-theme.css +16 -0
  76. data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.css +170 -0
  77. data/vendor/assets/bower_components/angular-material/modules/closure/bottomSheet/bottomSheet.js +267 -0
  78. data/vendor/assets/bower_components/angular-material/modules/closure/button/button-default-theme.css +94 -0
  79. data/vendor/assets/bower_components/angular-material/modules/closure/button/button.css +158 -0
  80. data/vendor/assets/bower_components/angular-material/modules/closure/button/button.js +135 -0
  81. data/vendor/assets/bower_components/angular-material/modules/closure/card/card-default-theme.css +12 -0
  82. data/vendor/assets/bower_components/angular-material/modules/closure/card/card.css +34 -0
  83. data/vendor/assets/bower_components/angular-material/modules/closure/card/card.js +84 -0
  84. data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox-default-theme.css +47 -0
  85. data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox.css +124 -0
  86. data/vendor/assets/bower_components/angular-material/modules/closure/checkbox/checkbox.js +166 -0
  87. data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips-default-theme.css +24 -0
  88. data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips.css +131 -0
  89. data/vendor/assets/bower_components/angular-material/modules/closure/chips/chips.js +949 -0
  90. data/vendor/assets/bower_components/angular-material/modules/closure/content/content-default-theme.css +9 -0
  91. data/vendor/assets/bower_components/angular-material/modules/closure/content/content.css +20 -0
  92. data/vendor/assets/bower_components/angular-material/modules/closure/content/content.js +84 -0
  93. data/vendor/assets/bower_components/angular-material/modules/closure/core/core.css +2594 -0
  94. data/vendor/assets/bower_components/angular-material/modules/closure/core/core.js +3772 -0
  95. data/vendor/assets/bower_components/angular-material/modules/closure/core/default-theme.js +4 -0
  96. data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog-default-theme.css +12 -0
  97. data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog.css +111 -0
  98. data/vendor/assets/bower_components/angular-material/modules/closure/dialog/dialog.js +713 -0
  99. data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider-default-theme.css +9 -0
  100. data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider.css +14 -0
  101. data/vendor/assets/bower_components/angular-material/modules/closure/divider/divider.js +45 -0
  102. data/vendor/assets/bower_components/angular-material/modules/closure/fabActions/fabActions.js +57 -0
  103. data/vendor/assets/bower_components/angular-material/modules/closure/fabSpeedDial/fabSpeedDial.css +100 -0
  104. data/vendor/assets/bower_components/angular-material/modules/closure/fabSpeedDial/fabSpeedDial.js +236 -0
  105. data/vendor/assets/bower_components/angular-material/modules/closure/fabToolbar/fabToolbar.css +74 -0
  106. data/vendor/assets/bower_components/angular-material/modules/closure/fabToolbar/fabToolbar.js +218 -0
  107. data/vendor/assets/bower_components/angular-material/modules/closure/fabTrigger/fabTrigger.js +54 -0
  108. data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList-default-theme.css +6 -0
  109. data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList.css +68 -0
  110. data/vendor/assets/bower_components/angular-material/modules/closure/gridList/gridList.js +762 -0
  111. data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon-default-theme.css +15 -0
  112. data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon.css +20 -0
  113. data/vendor/assets/bower_components/angular-material/modules/closure/icon/icon.js +783 -0
  114. data/vendor/assets/bower_components/angular-material/modules/closure/input/input-default-theme.css +46 -0
  115. data/vendor/assets/bower_components/angular-material/modules/closure/input/input.css +162 -0
  116. data/vendor/assets/bower_components/angular-material/modules/closure/input/input.js +371 -0
  117. data/vendor/assets/bower_components/angular-material/modules/closure/list/list-default-theme.css +23 -0
  118. data/vendor/assets/bower_components/angular-material/modules/closure/list/list.css +147 -0
  119. data/vendor/assets/bower_components/angular-material/modules/closure/list/list.js +273 -0
  120. data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu-default-theme.css +11 -0
  121. data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu.css +121 -0
  122. data/vendor/assets/bower_components/angular-material/modules/closure/menu/menu.js +620 -0
  123. data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular-default-theme.css +36 -0
  124. data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular.css +1409 -0
  125. data/vendor/assets/bower_components/angular-material/modules/closure/progressCircular/progressCircular.js +109 -0
  126. data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear-default-theme.css +27 -0
  127. data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear.css +287 -0
  128. data/vendor/assets/bower_components/angular-material/modules/closure/progressLinear/progressLinear.js +126 -0
  129. data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton-default-theme.css +47 -0
  130. data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton.css +91 -0
  131. data/vendor/assets/bower_components/angular-material/modules/closure/radioButton/radioButton.js +312 -0
  132. data/vendor/assets/bower_components/angular-material/modules/closure/select/select-default-theme.css +42 -0
  133. data/vendor/assets/bower_components/angular-material/modules/closure/select/select.css +170 -0
  134. data/vendor/assets/bower_components/angular-material/modules/closure/select/select.js +1055 -0
  135. data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav-default-theme.css +9 -0
  136. data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav.css +99 -0
  137. data/vendor/assets/bower_components/angular-material/modules/closure/sidenav/sidenav.js +424 -0
  138. data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider-default-theme.css +56 -0
  139. data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider.css +220 -0
  140. data/vendor/assets/bower_components/angular-material/modules/closure/slider/slider.js +403 -0
  141. data/vendor/assets/bower_components/angular-material/modules/closure/sticky/sticky.css +21 -0
  142. data/vendor/assets/bower_components/angular-material/modules/closure/sticky/sticky.js +315 -0
  143. data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader-default-theme.css +16 -0
  144. data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader.css +63 -0
  145. data/vendor/assets/bower_components/angular-material/modules/closure/subheader/subheader.js +93 -0
  146. data/vendor/assets/bower_components/angular-material/modules/closure/swipe/swipe.js +72 -0
  147. data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch-default-theme.css +33 -0
  148. data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch.css +110 -0
  149. data/vendor/assets/bower_components/angular-material/modules/closure/switch/switch.js +169 -0
  150. data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs-arrow.svg +7 -0
  151. data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs-default-theme.css +82 -0
  152. data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs.css +274 -0
  153. data/vendor/assets/bower_components/angular-material/modules/closure/tabs/tabs.js +1060 -0
  154. data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField-default-theme.css +30 -0
  155. data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField.css +111 -0
  156. data/vendor/assets/bower_components/angular-material/modules/closure/textField/textField.js +145 -0
  157. data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast-default-theme.css +18 -0
  158. data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast.css +119 -0
  159. data/vendor/assets/bower_components/angular-material/modules/closure/toast/toast.js +265 -0
  160. data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar-default-theme.css +20 -0
  161. data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar.css +83 -0
  162. data/vendor/assets/bower_components/angular-material/modules/closure/toolbar/toolbar.js +169 -0
  163. data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip-default-theme.css +11 -0
  164. data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip.css +72 -0
  165. data/vendor/assets/bower_components/angular-material/modules/closure/tooltip/tooltip.js +267 -0
  166. data/vendor/assets/bower_components/angular-material/modules/closure/whiteframe/whiteframe.css +25 -0
  167. data/vendor/assets/bower_components/angular-material/modules/closure/whiteframe/whiteframe.js +15 -0
  168. data/vendor/assets/bower_components/angular-material/modules/css/angular-material-layout.css +2375 -0
  169. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete-default-theme.css +24 -0
  170. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete-default-theme.min.css +6 -0
  171. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.css +220 -0
  172. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.js +951 -0
  173. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.min.css +6 -0
  174. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/autocomplete.min.js +7 -0
  175. data/vendor/assets/bower_components/angular-material/modules/js/autocomplete/bower.json +8 -0
  176. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.css +9 -0
  177. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop-default-theme.min.css +6 -0
  178. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.css +59 -0
  179. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.js +39 -0
  180. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.min.css +6 -0
  181. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/backdrop.min.js +7 -0
  182. data/vendor/assets/bower_components/angular-material/modules/js/backdrop/bower.json +7 -0
  183. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.css +16 -0
  184. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet-default-theme.min.css +6 -0
  185. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.css +170 -0
  186. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.js +267 -0
  187. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.css +6 -0
  188. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bottomSheet.min.js +7 -0
  189. data/vendor/assets/bower_components/angular-material/modules/js/bottomSheet/bower.json +8 -0
  190. data/vendor/assets/bower_components/angular-material/modules/js/button/bower.json +7 -0
  191. data/vendor/assets/bower_components/angular-material/modules/js/button/button-default-theme.css +94 -0
  192. data/vendor/assets/bower_components/angular-material/modules/js/button/button-default-theme.min.css +6 -0
  193. data/vendor/assets/bower_components/angular-material/modules/js/button/button.css +158 -0
  194. data/vendor/assets/bower_components/angular-material/modules/js/button/button.js +136 -0
  195. data/vendor/assets/bower_components/angular-material/modules/js/button/button.min.css +6 -0
  196. data/vendor/assets/bower_components/angular-material/modules/js/button/button.min.js +7 -0
  197. data/vendor/assets/bower_components/angular-material/modules/js/card/bower.json +7 -0
  198. data/vendor/assets/bower_components/angular-material/modules/js/card/card-default-theme.css +12 -0
  199. data/vendor/assets/bower_components/angular-material/modules/js/card/card-default-theme.min.css +6 -0
  200. data/vendor/assets/bower_components/angular-material/modules/js/card/card.css +34 -0
  201. data/vendor/assets/bower_components/angular-material/modules/js/card/card.js +85 -0
  202. data/vendor/assets/bower_components/angular-material/modules/js/card/card.min.css +6 -0
  203. data/vendor/assets/bower_components/angular-material/modules/js/card/card.min.js +7 -0
  204. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/bower.json +7 -0
  205. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.css +47 -0
  206. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox-default-theme.min.css +6 -0
  207. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.css +124 -0
  208. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.js +167 -0
  209. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.min.css +6 -0
  210. data/vendor/assets/bower_components/angular-material/modules/js/checkbox/checkbox.min.js +7 -0
  211. data/vendor/assets/bower_components/angular-material/modules/js/chips/bower.json +8 -0
  212. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips-default-theme.css +24 -0
  213. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips-default-theme.min.css +6 -0
  214. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.css +131 -0
  215. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.js +949 -0
  216. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.min.css +6 -0
  217. data/vendor/assets/bower_components/angular-material/modules/js/chips/chips.min.js +7 -0
  218. data/vendor/assets/bower_components/angular-material/modules/js/content/bower.json +7 -0
  219. data/vendor/assets/bower_components/angular-material/modules/js/content/content-default-theme.css +9 -0
  220. data/vendor/assets/bower_components/angular-material/modules/js/content/content-default-theme.min.css +6 -0
  221. data/vendor/assets/bower_components/angular-material/modules/js/content/content.css +20 -0
  222. data/vendor/assets/bower_components/angular-material/modules/js/content/content.js +85 -0
  223. data/vendor/assets/bower_components/angular-material/modules/js/content/content.min.css +6 -0
  224. data/vendor/assets/bower_components/angular-material/modules/js/content/content.min.js +7 -0
  225. data/vendor/assets/bower_components/angular-material/modules/js/core/bower.json +8 -0
  226. data/vendor/assets/bower_components/angular-material/modules/js/core/core.css +2594 -0
  227. data/vendor/assets/bower_components/angular-material/modules/js/core/core.js +3772 -0
  228. data/vendor/assets/bower_components/angular-material/modules/js/core/core.min.css +6 -0
  229. data/vendor/assets/bower_components/angular-material/modules/js/core/core.min.js +10 -0
  230. data/vendor/assets/bower_components/angular-material/modules/js/core/default-theme.js +4 -0
  231. data/vendor/assets/bower_components/angular-material/modules/js/dialog/bower.json +8 -0
  232. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog-default-theme.css +12 -0
  233. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog-default-theme.min.css +6 -0
  234. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.css +111 -0
  235. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.js +713 -0
  236. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.min.css +6 -0
  237. data/vendor/assets/bower_components/angular-material/modules/js/dialog/dialog.min.js +7 -0
  238. data/vendor/assets/bower_components/angular-material/modules/js/divider/bower.json +7 -0
  239. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider-default-theme.css +9 -0
  240. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider-default-theme.min.css +6 -0
  241. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.css +14 -0
  242. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.js +46 -0
  243. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.min.css +6 -0
  244. data/vendor/assets/bower_components/angular-material/modules/js/divider/divider.min.js +7 -0
  245. data/vendor/assets/bower_components/angular-material/modules/js/fabActions/bower.json +7 -0
  246. data/vendor/assets/bower_components/angular-material/modules/js/fabActions/fabActions.js +58 -0
  247. data/vendor/assets/bower_components/angular-material/modules/js/fabActions/fabActions.min.js +7 -0
  248. data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/bower.json +9 -0
  249. data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.css +100 -0
  250. data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.js +235 -0
  251. data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.min.css +6 -0
  252. data/vendor/assets/bower_components/angular-material/modules/js/fabSpeedDial/fabSpeedDial.min.js +7 -0
  253. data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/bower.json +9 -0
  254. data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.css +74 -0
  255. data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.js +217 -0
  256. data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.min.css +6 -0
  257. data/vendor/assets/bower_components/angular-material/modules/js/fabToolbar/fabToolbar.min.js +7 -0
  258. data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/bower.json +7 -0
  259. data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/fabTrigger.js +55 -0
  260. data/vendor/assets/bower_components/angular-material/modules/js/fabTrigger/fabTrigger.min.js +7 -0
  261. data/vendor/assets/bower_components/angular-material/modules/js/gridList/bower.json +7 -0
  262. data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.css +68 -0
  263. data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.js +763 -0
  264. data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.min.css +6 -0
  265. data/vendor/assets/bower_components/angular-material/modules/js/gridList/gridList.min.js +7 -0
  266. data/vendor/assets/bower_components/angular-material/modules/js/icon/bower.json +7 -0
  267. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon-default-theme.css +15 -0
  268. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon-default-theme.min.css +6 -0
  269. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.css +20 -0
  270. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.js +784 -0
  271. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.min.css +6 -0
  272. data/vendor/assets/bower_components/angular-material/modules/js/icon/icon.min.js +7 -0
  273. data/vendor/assets/bower_components/angular-material/modules/js/input/bower.json +7 -0
  274. data/vendor/assets/bower_components/angular-material/modules/js/input/input-default-theme.css +46 -0
  275. data/vendor/assets/bower_components/angular-material/modules/js/input/input-default-theme.min.css +6 -0
  276. data/vendor/assets/bower_components/angular-material/modules/js/input/input.css +162 -0
  277. data/vendor/assets/bower_components/angular-material/modules/js/input/input.js +372 -0
  278. data/vendor/assets/bower_components/angular-material/modules/js/input/input.min.css +6 -0
  279. data/vendor/assets/bower_components/angular-material/modules/js/input/input.min.js +7 -0
  280. data/vendor/assets/bower_components/angular-material/modules/js/list/bower.json +7 -0
  281. data/vendor/assets/bower_components/angular-material/modules/js/list/list-default-theme.css +23 -0
  282. data/vendor/assets/bower_components/angular-material/modules/js/list/list-default-theme.min.css +6 -0
  283. data/vendor/assets/bower_components/angular-material/modules/js/list/list.css +147 -0
  284. data/vendor/assets/bower_components/angular-material/modules/js/list/list.js +274 -0
  285. data/vendor/assets/bower_components/angular-material/modules/js/list/list.min.css +6 -0
  286. data/vendor/assets/bower_components/angular-material/modules/js/list/list.min.js +7 -0
  287. data/vendor/assets/bower_components/angular-material/modules/js/menu/bower.json +8 -0
  288. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu-default-theme.css +11 -0
  289. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu-default-theme.min.css +6 -0
  290. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.css +121 -0
  291. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.js +620 -0
  292. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.min.css +6 -0
  293. data/vendor/assets/bower_components/angular-material/modules/js/menu/menu.min.js +7 -0
  294. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/bower.json +7 -0
  295. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.css +36 -0
  296. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular-default-theme.min.css +6 -0
  297. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.css +1409 -0
  298. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.js +110 -0
  299. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.css +6 -0
  300. data/vendor/assets/bower_components/angular-material/modules/js/progressCircular/progressCircular.min.js +7 -0
  301. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/bower.json +7 -0
  302. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.css +27 -0
  303. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear-default-theme.min.css +6 -0
  304. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.css +287 -0
  305. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.js +127 -0
  306. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.css +6 -0
  307. data/vendor/assets/bower_components/angular-material/modules/js/progressLinear/progressLinear.min.js +7 -0
  308. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/bower.json +7 -0
  309. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.css +47 -0
  310. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton-default-theme.min.css +6 -0
  311. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.css +91 -0
  312. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.js +313 -0
  313. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.min.css +6 -0
  314. data/vendor/assets/bower_components/angular-material/modules/js/radioButton/radioButton.min.js +7 -0
  315. data/vendor/assets/bower_components/angular-material/modules/js/select/bower.json +8 -0
  316. data/vendor/assets/bower_components/angular-material/modules/js/select/select-default-theme.css +42 -0
  317. data/vendor/assets/bower_components/angular-material/modules/js/select/select-default-theme.min.css +6 -0
  318. data/vendor/assets/bower_components/angular-material/modules/js/select/select.css +170 -0
  319. data/vendor/assets/bower_components/angular-material/modules/js/select/select.js +1055 -0
  320. data/vendor/assets/bower_components/angular-material/modules/js/select/select.min.css +6 -0
  321. data/vendor/assets/bower_components/angular-material/modules/js/select/select.min.js +7 -0
  322. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/bower.json +8 -0
  323. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.css +9 -0
  324. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav-default-theme.min.css +6 -0
  325. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.css +99 -0
  326. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.js +424 -0
  327. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.min.css +6 -0
  328. data/vendor/assets/bower_components/angular-material/modules/js/sidenav/sidenav.min.js +7 -0
  329. data/vendor/assets/bower_components/angular-material/modules/js/slider/bower.json +7 -0
  330. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider-default-theme.css +56 -0
  331. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider-default-theme.min.css +6 -0
  332. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.css +220 -0
  333. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.js +404 -0
  334. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.min.css +6 -0
  335. data/vendor/assets/bower_components/angular-material/modules/js/slider/slider.min.js +7 -0
  336. data/vendor/assets/bower_components/angular-material/modules/js/sticky/bower.json +8 -0
  337. data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.css +21 -0
  338. data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.js +315 -0
  339. data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.min.css +6 -0
  340. data/vendor/assets/bower_components/angular-material/modules/js/sticky/sticky.min.js +7 -0
  341. data/vendor/assets/bower_components/angular-material/modules/js/subheader/bower.json +8 -0
  342. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader-default-theme.css +16 -0
  343. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader-default-theme.min.css +6 -0
  344. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.css +63 -0
  345. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.js +93 -0
  346. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.min.css +6 -0
  347. data/vendor/assets/bower_components/angular-material/modules/js/subheader/subheader.min.js +7 -0
  348. data/vendor/assets/bower_components/angular-material/modules/js/swipe/bower.json +7 -0
  349. data/vendor/assets/bower_components/angular-material/modules/js/swipe/swipe.js +73 -0
  350. data/vendor/assets/bower_components/angular-material/modules/js/swipe/swipe.min.js +7 -0
  351. data/vendor/assets/bower_components/angular-material/modules/js/switch/bower.json +8 -0
  352. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch-default-theme.css +33 -0
  353. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch-default-theme.min.css +6 -0
  354. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.css +110 -0
  355. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.js +169 -0
  356. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.min.css +6 -0
  357. data/vendor/assets/bower_components/angular-material/modules/js/switch/switch.min.js +7 -0
  358. data/vendor/assets/bower_components/angular-material/modules/js/tabs/bower.json +8 -0
  359. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs-default-theme.css +82 -0
  360. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs-default-theme.min.css +6 -0
  361. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.css +274 -0
  362. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.js +1060 -0
  363. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.min.css +6 -0
  364. data/vendor/assets/bower_components/angular-material/modules/js/tabs/tabs.min.js +7 -0
  365. data/vendor/assets/bower_components/angular-material/modules/js/textField/bower.json +7 -0
  366. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField-default-theme.css +30 -0
  367. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField-default-theme.min.css +6 -0
  368. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.css +111 -0
  369. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.js +143 -0
  370. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.min.css +6 -0
  371. data/vendor/assets/bower_components/angular-material/modules/js/textField/textField.min.js +7 -0
  372. data/vendor/assets/bower_components/angular-material/modules/js/toast/bower.json +8 -0
  373. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast-default-theme.css +18 -0
  374. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast-default-theme.min.css +6 -0
  375. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.css +119 -0
  376. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.js +265 -0
  377. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.min.css +6 -0
  378. data/vendor/assets/bower_components/angular-material/modules/js/toast/toast.min.js +7 -0
  379. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/bower.json +8 -0
  380. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.css +20 -0
  381. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar-default-theme.min.css +6 -0
  382. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.css +83 -0
  383. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.js +169 -0
  384. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.min.css +6 -0
  385. data/vendor/assets/bower_components/angular-material/modules/js/toolbar/toolbar.min.js +7 -0
  386. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/bower.json +7 -0
  387. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.css +11 -0
  388. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip-default-theme.min.css +6 -0
  389. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.css +72 -0
  390. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.js +268 -0
  391. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.min.css +6 -0
  392. data/vendor/assets/bower_components/angular-material/modules/js/tooltip/tooltip.min.js +7 -0
  393. data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/bower.json +5 -0
  394. data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.css +25 -0
  395. data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.js +16 -0
  396. data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.css +6 -0
  397. data/vendor/assets/bower_components/angular-material/modules/js/whiteframe/whiteframe.min.js +7 -0
  398. data/vendor/assets/bower_components/angular-material/package.json +48 -0
  399. data/vendor/assets/bower_components/angular/README.md +64 -0
  400. data/vendor/assets/bower_components/angular/angular-csp.css +21 -0
  401. data/vendor/assets/bower_components/angular/angular.js +28364 -0
  402. data/vendor/assets/bower_components/angular/angular.min.js +290 -0
  403. data/vendor/assets/bower_components/angular/angular.min.js.gzip +0 -0
  404. data/vendor/assets/bower_components/angular/angular.min.js.map +8 -0
  405. data/vendor/assets/bower_components/angular/bower.json +8 -0
  406. data/vendor/assets/bower_components/angular/index.js +2 -0
  407. data/vendor/assets/bower_components/angular/package.json +25 -0
  408. data/vendor/assets/bower_components/lodash/LICENSE +22 -0
  409. data/vendor/assets/bower_components/lodash/bower.json +19 -0
  410. data/vendor/assets/bower_components/lodash/lodash.js +12351 -0
  411. data/vendor/assets/bower_components/lodash/lodash.min.js +99 -0
  412. data/vendor/assets/bower_components/restangular/CHANGELOG.md +18 -0
  413. data/vendor/assets/bower_components/restangular/CONTRIBUTE.md +31 -0
  414. data/vendor/assets/bower_components/restangular/Gruntfile.js +149 -0
  415. data/vendor/assets/bower_components/restangular/README.md +1336 -0
  416. data/vendor/assets/bower_components/restangular/bower.json +19 -0
  417. data/vendor/assets/bower_components/restangular/dist/restangular.js +1355 -0
  418. data/vendor/assets/bower_components/restangular/dist/restangular.min.js +6 -0
  419. data/vendor/assets/bower_components/restangular/dist/restangular.zip +0 -0
  420. data/vendor/assets/bower_components/restangular/karma.conf.js +74 -0
  421. data/vendor/assets/bower_components/restangular/karma.underscore.conf.js +74 -0
  422. data/vendor/assets/bower_components/restangular/license.md +21 -0
  423. data/vendor/assets/bower_components/restangular/package.json +55 -0
  424. data/vendor/assets/bower_components/restangular/src/restangular.js +1350 -0
  425. data/vendor/assets/bower_components/restangular/test/restangularSpec.js +1136 -0
  426. metadata +424 -1
@@ -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,6 @@
1
+ /*!
2
+ * Angular Material Design
3
+ * https://github.com/angular/material
4
+ * @license MIT
5
+ * v0.8.0-rc1-master-91053dc
6
+ */
@@ -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");