voom-presenters 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +54 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +104 -0
  6. data/LICENSE +21 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +45 -0
  9. data/ROADMAP.md +21 -0
  10. data/Rakefile +6 -0
  11. data/app/demo/component_status.pom +76 -0
  12. data/app/demo/components.pom +19 -0
  13. data/app/demo/components/badges.pom +25 -0
  14. data/app/demo/components/buttons.pom +51 -0
  15. data/app/demo/components/cards.pom +79 -0
  16. data/app/demo/components/chips.pom +91 -0
  17. data/app/demo/components/dialogs.pom +27 -0
  18. data/app/demo/components/drawers.pom +34 -0
  19. data/app/demo/components/expansion_panels.pom +21 -0
  20. data/app/demo/components/fabs-mini.pom +18 -0
  21. data/app/demo/components/fabs.pom +16 -0
  22. data/app/demo/components/footers.pom +36 -0
  23. data/app/demo/components/forms.pom +30 -0
  24. data/app/demo/components/headers.pom +37 -0
  25. data/app/demo/components/hidden_fields.pom +20 -0
  26. data/app/demo/components/icons.pom +94 -0
  27. data/app/demo/components/layouts.pom +44 -0
  28. data/app/demo/components/lists.pom +124 -0
  29. data/app/demo/components/menus.pom +43 -0
  30. data/app/demo/components/nav/drawer.pom +5 -0
  31. data/app/demo/components/nav/menu.pom +15 -0
  32. data/app/demo/components/selects.pom +30 -0
  33. data/app/demo/components/snackbar.pom +24 -0
  34. data/app/demo/components/snackbar_attached.pom +6 -0
  35. data/app/demo/components/tables.pom +39 -0
  36. data/app/demo/components/text_areas.pom +19 -0
  37. data/app/demo/components/text_fields.pom +57 -0
  38. data/app/demo/components/toggles.pom +29 -0
  39. data/app/demo/components/tooltips.pom +120 -0
  40. data/app/demo/event/actions.rb +86 -0
  41. data/app/demo/event/actions/dialog/show_dialog.pom +9 -0
  42. data/app/demo/event/actions/dialog/trigger.pom +86 -0
  43. data/app/demo/event/actions/nav/drawer.pom +5 -0
  44. data/app/demo/event/actions/nav/menu.pom +19 -0
  45. data/app/demo/event/autocomplete.pom +27 -0
  46. data/app/demo/event/field_level.pom +22 -0
  47. data/app/demo/event/form_level.pom +26 -0
  48. data/app/demo/event/nav/drawer.pom +5 -0
  49. data/app/demo/event/nav/menu.pom +14 -0
  50. data/app/demo/event/new_text.pom +6 -0
  51. data/app/demo/events.pom +98 -0
  52. data/app/demo/helpers/indented_grid.rb +14 -0
  53. data/app/demo/index.pom +19 -0
  54. data/app/demo/markdown.pom +73 -0
  55. data/app/demo/nav/top_nav.pom +42 -0
  56. data/app/demo/shared/code.pom +20 -0
  57. data/app/demo/shared/context_list.pom +29 -0
  58. data/app/demo/shared/debug.pom +17 -0
  59. data/app/demo/styles.pom +26 -0
  60. data/bin/console +22 -0
  61. data/bin/setup +8 -0
  62. data/component-status.yml +219 -0
  63. data/config.ru +21 -0
  64. data/lib/voom-presenters.rb +9 -0
  65. data/lib/voom/container_methods.rb +40 -0
  66. data/lib/voom/logger_methods.rb +11 -0
  67. data/lib/voom/parameters.rb +73 -0
  68. data/lib/voom/presenters-engine.rb +40 -0
  69. data/lib/voom/presenters.rb +13 -0
  70. data/lib/voom/presenters/api/app.rb +53 -0
  71. data/lib/voom/presenters/api/router.rb +94 -0
  72. data/lib/voom/presenters/app.rb +55 -0
  73. data/lib/voom/presenters/container_item.rb +16 -0
  74. data/lib/voom/presenters/demo/echo.rb +29 -0
  75. data/lib/voom/presenters/demo/search-terms.yml +50 -0
  76. data/lib/voom/presenters/demo/search.rb +29 -0
  77. data/lib/voom/presenters/dsl.rb +60 -0
  78. data/lib/voom/presenters/dsl/components/action.rb +35 -0
  79. data/lib/voom/presenters/dsl/components/avatar.rb +27 -0
  80. data/lib/voom/presenters/dsl/components/badge.rb +21 -0
  81. data/lib/voom/presenters/dsl/components/base.rb +78 -0
  82. data/lib/voom/presenters/dsl/components/button.rb +49 -0
  83. data/lib/voom/presenters/dsl/components/card.rb +119 -0
  84. data/lib/voom/presenters/dsl/components/checkbox.rb +16 -0
  85. data/lib/voom/presenters/dsl/components/chip.rb +48 -0
  86. data/lib/voom/presenters/dsl/components/content.rb +33 -0
  87. data/lib/voom/presenters/dsl/components/date_time.rb +17 -0
  88. data/lib/voom/presenters/dsl/components/dialog.rb +50 -0
  89. data/lib/voom/presenters/dsl/components/drawer.rb +40 -0
  90. data/lib/voom/presenters/dsl/components/event.rb +101 -0
  91. data/lib/voom/presenters/dsl/components/event_base.rb +20 -0
  92. data/lib/voom/presenters/dsl/components/expansion_panel.rb +46 -0
  93. data/lib/voom/presenters/dsl/components/footer.rb +25 -0
  94. data/lib/voom/presenters/dsl/components/form.rb +42 -0
  95. data/lib/voom/presenters/dsl/components/grid.rb +64 -0
  96. data/lib/voom/presenters/dsl/components/header.rb +33 -0
  97. data/lib/voom/presenters/dsl/components/hidden_field.rb +25 -0
  98. data/lib/voom/presenters/dsl/components/icon.rb +21 -0
  99. data/lib/voom/presenters/dsl/components/icon_base.rb +24 -0
  100. data/lib/voom/presenters/dsl/components/icon_toggle.rb +21 -0
  101. data/lib/voom/presenters/dsl/components/image.rb +36 -0
  102. data/lib/voom/presenters/dsl/components/input.rb +19 -0
  103. data/lib/voom/presenters/dsl/components/list.rb +39 -0
  104. data/lib/voom/presenters/dsl/components/lists/action.rb +72 -0
  105. data/lib/voom/presenters/dsl/components/lists/line.rb +83 -0
  106. data/lib/voom/presenters/dsl/components/lists/separator.rb +16 -0
  107. data/lib/voom/presenters/dsl/components/menu.rb +66 -0
  108. data/lib/voom/presenters/dsl/components/mixins/append.rb +20 -0
  109. data/lib/voom/presenters/dsl/components/mixins/attaches.rb +18 -0
  110. data/lib/voom/presenters/dsl/components/mixins/avatar.rb +18 -0
  111. data/lib/voom/presenters/dsl/components/mixins/buttons.rb +15 -0
  112. data/lib/voom/presenters/dsl/components/mixins/chips.rb +21 -0
  113. data/lib/voom/presenters/dsl/components/mixins/common.rb +50 -0
  114. data/lib/voom/presenters/dsl/components/mixins/content.rb +15 -0
  115. data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +19 -0
  116. data/lib/voom/presenters/dsl/components/mixins/event.rb +19 -0
  117. data/lib/voom/presenters/dsl/components/mixins/expansion_panels.rb +15 -0
  118. data/lib/voom/presenters/dsl/components/mixins/grids.rb +15 -0
  119. data/lib/voom/presenters/dsl/components/mixins/helpers.rb +20 -0
  120. data/lib/voom/presenters/dsl/components/mixins/icons.rb +17 -0
  121. data/lib/voom/presenters/dsl/components/mixins/images.rb +15 -0
  122. data/lib/voom/presenters/dsl/components/mixins/menus.rb +15 -0
  123. data/lib/voom/presenters/dsl/components/mixins/selects.rb +17 -0
  124. data/lib/voom/presenters/dsl/components/mixins/snackbars.rb +18 -0
  125. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +35 -0
  126. data/lib/voom/presenters/dsl/components/mixins/toggles.rb +40 -0
  127. data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +18 -0
  128. data/lib/voom/presenters/dsl/components/mixins/typography.rb +37 -0
  129. data/lib/voom/presenters/dsl/components/page.rb +29 -0
  130. data/lib/voom/presenters/dsl/components/radio_button.rb +14 -0
  131. data/lib/voom/presenters/dsl/components/select.rb +64 -0
  132. data/lib/voom/presenters/dsl/components/snackbar.rb +32 -0
  133. data/lib/voom/presenters/dsl/components/switch.rb +14 -0
  134. data/lib/voom/presenters/dsl/components/table.rb +102 -0
  135. data/lib/voom/presenters/dsl/components/text_area.rb +20 -0
  136. data/lib/voom/presenters/dsl/components/text_field.rb +74 -0
  137. data/lib/voom/presenters/dsl/components/toggle_base.rb +26 -0
  138. data/lib/voom/presenters/dsl/components/tooltip.rb +25 -0
  139. data/lib/voom/presenters/dsl/components/typography.rb +25 -0
  140. data/lib/voom/presenters/dsl/definer.rb +13 -0
  141. data/lib/voom/presenters/dsl/definition.rb +31 -0
  142. data/lib/voom/presenters/dsl/invalid_presenter.rb +8 -0
  143. data/lib/voom/presenters/dsl/lockable.rb +15 -0
  144. data/lib/voom/presenters/dsl/user_interface.rb +135 -0
  145. data/lib/voom/presenters/errors/parameter_validation.rb +10 -0
  146. data/lib/voom/presenters/errors/unprocessable.rb +8 -0
  147. data/lib/voom/presenters/helpers.rb +18 -0
  148. data/lib/voom/presenters/helpers/currency.rb +14 -0
  149. data/lib/voom/presenters/helpers/date.rb +22 -0
  150. data/lib/voom/presenters/helpers/errors.rb +11 -0
  151. data/lib/voom/presenters/helpers/inflector.rb +16 -0
  152. data/lib/voom/presenters/helpers/rails.rb +60 -0
  153. data/lib/voom/presenters/helpers/route.rb +11 -0
  154. data/lib/voom/presenters/helpers/time.rb +27 -0
  155. data/lib/voom/presenters/settings.rb +35 -0
  156. data/lib/voom/presenters/version.rb +5 -0
  157. data/lib/voom/presenters/web_client/app.rb +128 -0
  158. data/lib/voom/presenters/web_client/markdown_render.rb +16 -0
  159. data/lib/voom/presenters/web_client/router.rb +96 -0
  160. data/lib/voom/serializer.rb +43 -0
  161. data/lib/voom/symbol/to_str.rb +29 -0
  162. data/lib/voom/trace.rb +19 -0
  163. data/presenters.gemspec +37 -0
  164. data/public/.gitignore +2 -0
  165. data/public/bundle.css +11413 -0
  166. data/public/bundle.js +16456 -0
  167. data/public/dialog-polyfill.js +738 -0
  168. data/public/favicon.ico +0 -0
  169. data/public/img/demo/dog.png +0 -0
  170. data/public/img/demo/image_card.jpg +0 -0
  171. data/public/img/demo/rx.png +0 -0
  172. data/public/img/demo/welcome_card.jpg +0 -0
  173. data/public/img/settings/blue.png +0 -0
  174. data/public/img/settings/green.png +0 -0
  175. data/public/img/settings/orange.png +0 -0
  176. data/public/img/settings/purple.png +0 -0
  177. data/public/img/settings/red.png +0 -0
  178. data/public/img/settings/teal.png +0 -0
  179. data/public/img/settings/white.png +0 -0
  180. data/public/img/settings/yellow.png +0 -0
  181. data/public/scripts.js +289 -0
  182. data/public/style-bundle.js +73 -0
  183. data/public/styles.css +16 -0
  184. data/views/mdc/.gitignore +1 -0
  185. data/views/mdc/assets/js/app.js +10 -0
  186. data/views/mdc/assets/js/components/base-component.js +5 -0
  187. data/views/mdc/assets/js/components/button.js +15 -0
  188. data/views/mdc/assets/js/components/cards.js +3 -0
  189. data/views/mdc/assets/js/components/checkboxes.js +15 -0
  190. data/views/mdc/assets/js/components/chips.js +12 -0
  191. data/views/mdc/assets/js/components/date-time.js +6 -0
  192. data/views/mdc/assets/js/components/dialogs.js +32 -0
  193. data/views/mdc/assets/js/components/events.js +151 -0
  194. data/views/mdc/assets/js/components/events/autocomplete.js +96 -0
  195. data/views/mdc/assets/js/components/events/base.js +41 -0
  196. data/views/mdc/assets/js/components/events/dialog.js +25 -0
  197. data/views/mdc/assets/js/components/events/errors.js +142 -0
  198. data/views/mdc/assets/js/components/events/loads.js +22 -0
  199. data/views/mdc/assets/js/components/events/navigates.js +17 -0
  200. data/views/mdc/assets/js/components/events/posts.js +99 -0
  201. data/views/mdc/assets/js/components/events/replaces.js +82 -0
  202. data/views/mdc/assets/js/components/events/selects.js +28 -0
  203. data/views/mdc/assets/js/components/events/snackbar.js +23 -0
  204. data/views/mdc/assets/js/components/events/toggle_visiblity.js +19 -0
  205. data/views/mdc/assets/js/components/forms.js +57 -0
  206. data/views/mdc/assets/js/components/icon-toggles.js +21 -0
  207. data/views/mdc/assets/js/components/initialize.js +34 -0
  208. data/views/mdc/assets/js/components/lists.js +4 -0
  209. data/views/mdc/assets/js/components/menus.js +31 -0
  210. data/views/mdc/assets/js/components/mixins/event-handler.js +13 -0
  211. data/views/mdc/assets/js/components/selects.js +45 -0
  212. data/views/mdc/assets/js/components/snackbar.js +32 -0
  213. data/views/mdc/assets/js/components/text-fields.js +77 -0
  214. data/views/mdc/assets/js/dialog-polyfill.js +738 -0
  215. data/views/mdc/assets/js/material.js +3996 -0
  216. data/views/mdc/assets/js/utils/urls.js +54 -0
  217. data/views/mdc/assets/scss/app.scss +31 -0
  218. data/views/mdc/assets/scss/components/avatar.scss +41 -0
  219. data/views/mdc/assets/scss/components/button.scss +47 -0
  220. data/views/mdc/assets/scss/components/card.scss +54 -0
  221. data/views/mdc/assets/scss/components/checkbox.scss +5 -0
  222. data/views/mdc/assets/scss/components/chip.scss +30 -0
  223. data/views/mdc/assets/scss/components/datetime.scss +0 -0
  224. data/views/mdc/assets/scss/components/dialog.scss +3 -0
  225. data/views/mdc/assets/scss/components/expansion-panel.scss +153 -0
  226. data/views/mdc/assets/scss/components/fab.scss +8 -0
  227. data/views/mdc/assets/scss/components/grid.scss +10 -0
  228. data/views/mdc/assets/scss/components/icon-toggles.scss +9 -0
  229. data/views/mdc/assets/scss/components/icon.scss +34 -0
  230. data/views/mdc/assets/scss/components/image.scss +24 -0
  231. data/views/mdc/assets/scss/components/list.scss +9 -0
  232. data/views/mdc/assets/scss/components/menu.scss +17 -0
  233. data/views/mdc/assets/scss/components/select.scss +16 -0
  234. data/views/mdc/assets/scss/components/snackbar.scss +5 -0
  235. data/views/mdc/assets/scss/components/switch.scss +6 -0
  236. data/views/mdc/assets/scss/components/table-pagination.scss +65 -0
  237. data/views/mdc/assets/scss/components/textfield.scss +1 -0
  238. data/views/mdc/assets/scss/components/typography.scss +25 -0
  239. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +8 -0
  240. data/views/mdc/assets/scss/styles.scss +11 -0
  241. data/views/mdc/assets/scss/theme.scss +5 -0
  242. data/views/mdc/body/drawer.erb +18 -0
  243. data/views/mdc/body/drawers/menu.erb +25 -0
  244. data/views/mdc/body/footer.erb +1 -0
  245. data/views/mdc/body/footers/large.erb +27 -0
  246. data/views/mdc/body/footers/menu_item.erb +6 -0
  247. data/views/mdc/body/footers/small.erb +14 -0
  248. data/views/mdc/body/header.erb +25 -0
  249. data/views/mdc/body/snackbar.erb +10 -0
  250. data/views/mdc/components/avatar.erb +24 -0
  251. data/views/mdc/components/badge.erb +2 -0
  252. data/views/mdc/components/body.erb +2 -0
  253. data/views/mdc/components/button.erb +17 -0
  254. data/views/mdc/components/buttons/button.erb +20 -0
  255. data/views/mdc/components/buttons/fab.erb +22 -0
  256. data/views/mdc/components/buttons/icon.erb +24 -0
  257. data/views/mdc/components/card.erb +49 -0
  258. data/views/mdc/components/checkbox.erb +22 -0
  259. data/views/mdc/components/chip.erb +31 -0
  260. data/views/mdc/components/content.erb +11 -0
  261. data/views/mdc/components/date_time.erb +30 -0
  262. data/views/mdc/components/dialog.erb +27 -0
  263. data/views/mdc/components/display.erb +2 -0
  264. data/views/mdc/components/event.erb +18 -0
  265. data/views/mdc/components/expansion_panel.erb +11 -0
  266. data/views/mdc/components/form.erb +15 -0
  267. data/views/mdc/components/grid.erb +24 -0
  268. data/views/mdc/components/headline.erb +2 -0
  269. data/views/mdc/components/hidden_field.erb +1 -0
  270. data/views/mdc/components/icon.erb +30 -0
  271. data/views/mdc/components/icon_toggle.erb +15 -0
  272. data/views/mdc/components/image.erb +7 -0
  273. data/views/mdc/components/link.erb +14 -0
  274. data/views/mdc/components/list.erb +14 -0
  275. data/views/mdc/components/list/actions.erb +6 -0
  276. data/views/mdc/components/list/actions/button.erb +1 -0
  277. data/views/mdc/components/list/actions/checkbox.erb +1 -0
  278. data/views/mdc/components/list/actions/icon.erb +1 -0
  279. data/views/mdc/components/list/actions/icon_toggle.erb +1 -0
  280. data/views/mdc/components/list/actions/radio_button.erb +1 -0
  281. data/views/mdc/components/list/actions/switch.erb +1 -0
  282. data/views/mdc/components/list/avatar.erb +5 -0
  283. data/views/mdc/components/list/checkbox.erb +5 -0
  284. data/views/mdc/components/list/icon.erb +5 -0
  285. data/views/mdc/components/list/info.erb +1 -0
  286. data/views/mdc/components/list/line.erb +34 -0
  287. data/views/mdc/components/list/menu.erb +23 -0
  288. data/views/mdc/components/list/separator.erb +1 -0
  289. data/views/mdc/components/menu.erb +29 -0
  290. data/views/mdc/components/modal.erb +15 -0
  291. data/views/mdc/components/radio_button.erb +11 -0
  292. data/views/mdc/components/render.erb +4 -0
  293. data/views/mdc/components/select.erb +22 -0
  294. data/views/mdc/components/snackbar.erb +17 -0
  295. data/views/mdc/components/static.erb +7 -0
  296. data/views/mdc/components/subheading.erb +2 -0
  297. data/views/mdc/components/switch.erb +13 -0
  298. data/views/mdc/components/table.erb +13 -0
  299. data/views/mdc/components/table/header.erb +7 -0
  300. data/views/mdc/components/table/pagination.erb +24 -0
  301. data/views/mdc/components/table/row.erb +14 -0
  302. data/views/mdc/components/text_area.erb +8 -0
  303. data/views/mdc/components/text_field.erb +27 -0
  304. data/views/mdc/components/title.erb +4 -0
  305. data/views/mdc/components/tooltip.erb +5 -0
  306. data/views/mdc/components/typography.erb +13 -0
  307. data/views/mdc/init-depends.sh +2 -0
  308. data/views/mdc/layout.erb +50 -0
  309. data/views/mdc/package-lock.json +11524 -0
  310. data/views/mdc/package.json +39 -0
  311. data/views/mdc/web.erb +1 -0
  312. data/views/mdc/webpack.config.js +47 -0
  313. metadata +539 -0
@@ -0,0 +1,79 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:cards) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+
9
+ indented_grid do
10
+ display 'Cards'
11
+
12
+ headline 'Wide'
13
+ card width: '512px' do
14
+ media do
15
+ image 'img/demo/welcome_card.jpg', width: 512, height: 176
16
+ title 'Welcome', color: :white, position: :bottom
17
+ button icon: :share_icon, color: :white do
18
+ menu do
19
+ item 'Share with mom'
20
+ end
21
+ end
22
+ end
23
+ text "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis pellentesque lacus eleifend lacinia... "
24
+
25
+ actions do
26
+ button 'Get Started', color: :primary
27
+ end
28
+ end
29
+
30
+ headline 'Square'
31
+ card width: '330px' do
32
+ media height: '200px', color: '#46B6AC' do
33
+ image 'img/demo/dog.png', position: [:bottom, :right]
34
+ title 'Update', color: :white, position: :bottom
35
+ end
36
+ text "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis."
37
+
38
+ actions do
39
+ button 'View Updates', color: :primary
40
+ end
41
+ end
42
+
43
+ headline 'Image'
44
+ card width: '330px' do
45
+ media do
46
+ image 'img/demo/image_card.jpg', width: 330, height: 330
47
+ title 'image.jpg', position: :bottom, color: :white
48
+ end
49
+ end
50
+
51
+ headline 'Event'
52
+ card width: '330px' do
53
+ media height: '230px', color: :MidnightBlue do
54
+ title ['Featured event:',
55
+ "May 24, 2016",
56
+ "7-11pm"],
57
+ color: :white, position: :top
58
+ end
59
+ actions do
60
+ button 'Add to Calendar'
61
+ button icon: :event
62
+ end
63
+ end
64
+
65
+ #
66
+ # headline 'Example'
67
+ # card width: '21rem', height: '42rem' do
68
+ # title ['Auckland Sky Tower',
69
+ # 'Auckland, New Zealand'] do
70
+ # background 'https://www.askideas.com/media/43/The-Sky-Tower-In-Auckland-New-Zealand.jpg'
71
+ # end
72
+ # text ["The Sky Tower is an observation and telecommunications tower located in Auckland,",
73
+ # "New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure",
74
+ # "in the Southern Hemisphere."].join(' ')
75
+ # end
76
+
77
+ attach :code, file: __FILE__
78
+ end
79
+ end
@@ -0,0 +1,91 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:chips) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ heading 'Chips'
10
+
11
+ chip 'Chip 1'
12
+ chip 'Chip 1', color: :primary
13
+ chip 'Chip 2', color: :secondary
14
+ chip color: :hotpink do
15
+ text 'Chip 3', color: :white
16
+ end
17
+
18
+ subheading 'leading icon'
19
+ chip 'Jane Smith', icon: :face
20
+
21
+ subheading 'trailing icon'
22
+ chip 'Jane Smith' do
23
+ icon :more_vert, position: :right
24
+ end
25
+
26
+ subheading 'leading and trailing icon'
27
+ chip 'Jane Smith' do
28
+ icon :face, position: :left
29
+ icon :more_vert, position: :right
30
+ end
31
+ heading 'Events'
32
+
33
+ chip 'Jane Smith' do
34
+ icon :face, position: :left
35
+ icon :more_vert, position: :right
36
+ event :click do
37
+ snackbar 'chip clicked!'
38
+ end
39
+ end
40
+
41
+ chip do
42
+ text 'Jane Smith' do
43
+ event :click do
44
+ snackbar 'text clicked'
45
+ end
46
+ end
47
+ icon :face, position: :left
48
+ icon :more_vert, position: :right
49
+ event :click do
50
+ snackbar 'chip clicked!'
51
+ end
52
+ end
53
+
54
+ chip do
55
+ text 'Jane Smith' do
56
+ event :click do
57
+ snackbar 'text clicked'
58
+ end
59
+ end
60
+ icon :face, position: :left do
61
+ event :click do
62
+ snackbar 'left icon clicked'
63
+ end
64
+ end
65
+ icon :more_vert, position: :right
66
+ event :click do
67
+ snackbar 'chip clicked!'
68
+ end
69
+ end
70
+
71
+ chip do
72
+ text 'Jane Smith' do
73
+ event :click do
74
+ snackbar 'text clicked'
75
+ end
76
+ end
77
+ icon :face, position: :left do
78
+ event :click do
79
+ snackbar 'left icon clicked'
80
+ end
81
+ end
82
+ icon :more_vert, position: :right do
83
+ event :click do
84
+ snackbar 'right icon clicked'
85
+ end
86
+ end
87
+ end
88
+
89
+ attach :code, file: __FILE__
90
+ end
91
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:dialogs) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Dialogs'
10
+
11
+ button 'Show Dialog' do
12
+ event :click do
13
+ dialog :hold_on
14
+ end
15
+ end
16
+
17
+ dialog id: :hold_on do
18
+ title "MDL Dialog"
19
+ body 'This is an example of the Material Design Lite dialog component. Please use responsibly.'
20
+
21
+ button 'Disabled action', disabled: true
22
+ button 'Close'
23
+ end
24
+
25
+ attach :code, file: __FILE__
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:drawers) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+
7
+ drawer do
8
+ menu do
9
+ item 'About (Drawer)' do
10
+ event :click do
11
+ loads :index
12
+ end
13
+ end
14
+
15
+ item 'Components (Drawer)' do
16
+ event :click do
17
+ loads :components
18
+ end
19
+ end
20
+
21
+ item 'Styles (Drawer)' do
22
+ event :click do
23
+ loads :styles
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ indented_grid do
30
+ display 'Drawers'
31
+
32
+ attach :code, file: __FILE__
33
+ end
34
+ end
@@ -0,0 +1,21 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:expansion_panels) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Expansion Panels'
10
+
11
+ expansion_panel do
12
+ text 'Personal data'
13
+ secondary_text 'Type your name and age'
14
+ content do
15
+ body "The canvas is 'transparent' for screen reader users. HTML content included in the HTML5 canvas sub DOM is announced and navigable by screen reader users and is navigable by keyboard users."
16
+ end
17
+ end
18
+
19
+ attach :code, file: __FILE__
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:fabs_mini) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Float Action Button'
10
+
11
+ # Mini Floating action buttons
12
+ headline 'Mini FAB'
13
+ body '*Mini size: Only used to create visual continuity with other screen elements*'
14
+ button icon: :add, type: :fab, size: :small
15
+
16
+ attach :code, file: __FILE__
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:fabs) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Floating Action Button'
10
+
11
+ headline 'FAB'
12
+ button icon: :add, type: :fab, color: :primary
13
+
14
+ attach :code, file: __FILE__
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:footers) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+
9
+ footer type: :small do
10
+ menu 'Stuff' do
11
+ item 'About (Footer)' do
12
+ event :click do
13
+ loads :index
14
+ end
15
+ end
16
+
17
+ item 'Components (Footer)' do
18
+ event :click do
19
+ loads :components
20
+ end
21
+ end
22
+
23
+ item 'Styles (Footer)' do
24
+ event :click do
25
+ loads :styles
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ indented_grid do
32
+ display 'Footers'
33
+
34
+ attach :code, file: __FILE__
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:forms) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ grid do
9
+ column 1
10
+ column 4 do
11
+ card do
12
+ display 'Posts in Form'
13
+ body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
14
+ 'This works with posts and replace actions'
15
+ form do
16
+ text_field name: :myfield do
17
+ label 'Data to post'
18
+ end
19
+ text_field name: :myfield2 do
20
+ label 'More Data to post'
21
+ end
22
+ event :change do
23
+ replaces :context_list, :context_list
24
+ end
25
+ end
26
+ attach :context_list
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:headers) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+
6
+ attach :top_nav
7
+ attach :component_drawer
8
+
9
+
10
+ header 'Presenters Demo' do
11
+ menu do
12
+ item 'About (Header)' do
13
+ event :click do
14
+ loads :index
15
+ end
16
+ end
17
+
18
+ item 'Components (Header)' do
19
+ event :click do
20
+ loads :components
21
+ end
22
+ end
23
+
24
+ item 'Styles (Header)' do
25
+ event :click do
26
+ loads :styles
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ indented_grid do
33
+ display 'Headers'
34
+
35
+ attach :code, file: __FILE__
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:hidden_fields) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+
6
+ attach :top_nav
7
+ attach :component_drawer
8
+
9
+ indented_grid do
10
+ headline 'Hidden'
11
+
12
+ form do
13
+ hidden_field name: :idoit_id do
14
+ value 'do it!'
15
+ end
16
+ end
17
+
18
+ attach :code, file: __FILE__
19
+ end
20
+ end
@@ -0,0 +1,94 @@
1
+ Voom::Presenters.define(:icons) do
2
+ attach :top_nav
3
+ attach :component_drawer
4
+
5
+ helpers do
6
+ def small_card(&block)
7
+ card height: '100px', width: '100px' do
8
+ yield_to(&block) # Special method that yields in the correct binding context
9
+ end
10
+ end
11
+ end
12
+
13
+ grid do
14
+ column 1
15
+ column 10 do
16
+ display 'Icons'
17
+ body 'An icon is commonly used on a menu, button, chip, list or card. They can be used standalone as well.'
18
+
19
+ headline 'Plain'
20
+ title 'Material design icons'
21
+ body 'By default the icon name will be assumed to be [material design](https://material.io/icons/).'
22
+ icon :thumb_up
23
+
24
+ title 'Font awesome icons'
25
+ body "[Font awesome](https://fontawesome.com/icons?d=gallery) icons can also be used."\
26
+ 'You provide the font awesome class.'
27
+ body 'For example: `fa-thumbs-up`:', level: 2
28
+ icon 'fa-thumbs-up'
29
+ body 'You can also optionally add the font awesome style prefix, if not provided it defaults to `fas` (solid).', level: 2
30
+ body 'For example: `far fa-thumbs-up`:', level: 2
31
+ icon 'far fa-thumbs-up'
32
+
33
+
34
+ headline 'Color'
35
+ title 'primary'
36
+ icon :thumb_up, color: :primary
37
+ title 'secondary'
38
+ icon :thumb_up, color: :secondary
39
+ title 'custom'
40
+ icon :thumb_up, color: :hotpink
41
+
42
+ headline 'Size'
43
+ body 'You can specify the size of an icon'
44
+ icon :thumb_up, color: :hotpink, size: '64px'
45
+
46
+ title 'Position'
47
+ body "'Icon's can be positioned to left, right, top, and bottom"
48
+
49
+ grid do
50
+ column 1 do
51
+ small_card do
52
+ icon :face, position: :left
53
+ end
54
+ end
55
+ column 1 do
56
+ small_card do
57
+ icon :face, position: :right
58
+ end
59
+ end
60
+ column 1 do
61
+ small_card do
62
+ icon :face, position: :top
63
+ end
64
+ end
65
+ column 1 do
66
+ small_card do
67
+ icon :face, position: :bottom
68
+ end
69
+ end
70
+ column 1 do
71
+ small_card do
72
+ icon :face, position: [:top, :right]
73
+ end
74
+ end
75
+ column 1 do
76
+ small_card do
77
+ icon :face, position: [:bottom, :right]
78
+ end
79
+ end
80
+ end
81
+
82
+ headline 'Events'
83
+ body 'Icons can be bound to events. For example the `click` event.'
84
+
85
+ icon :face, position: :left do
86
+ event :click do
87
+ snackbar 'icon clicked'
88
+ end
89
+ end
90
+
91
+ attach :code, file: __FILE__
92
+ end
93
+ end
94
+ end