voom-presenters 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,44 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:layouts) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+
6
+ attach :top_nav
7
+ attach :component_drawer
8
+
9
+ indented_grid do
10
+ display 'Layouts'
11
+
12
+ display 'Grid'
13
+
14
+ grid do
15
+ (1..12).each do |size|
16
+ column 1, color: :lightgray do
17
+ body '1'
18
+ end
19
+ end
20
+ end
21
+
22
+ grid do
23
+ (1..3).each do |size|
24
+ column 4, color: :lightgray do
25
+ body '4'
26
+ end
27
+ end
28
+ end
29
+
30
+ grid do
31
+ column 6, color: :lightgray do
32
+ body '6'
33
+ end
34
+ column 4, color: :lightgray do
35
+ body '4'
36
+ end
37
+ column 2, color: :lightgray do
38
+ body '2'
39
+ end
40
+ end
41
+
42
+ attach :code, file: __FILE__
43
+ end
44
+ end
@@ -0,0 +1,124 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:lists) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ helpers do
9
+ def actors
10
+ [OpenStruct.new(name: "<strong>Bryan Cranston</strong>", episodes: 62, body: 'Bryan Cranston played the role of Walter in Breaking Bad. He is also known for playing Hal in Malcom in the Middle.'),
11
+ OpenStruct.new(name: "Aaron Paul", episodes: 62, body: 'Aaron Paul played the role of Jesse in Breaking Bad. He also featured in the "Need For Speed" Movie'),
12
+ OpenStruct.new(name: "Bob Odenkirk", episodes: 62, body: 'Bob Odinkrik played the role of Saul in Breaking Bad. Due to public fondness for the character, Bob stars in his own show now, called "Better Call Saul".'),
13
+ OpenStruct.new(name: "Giancarlo Esposito", episodes: 24, body: 'Giancarlo Giuseppe Alessandro Esposito played the role of Gustavo "Gus" Fring on the AMC shows Breaking Bad and Better Call Saul.')]
14
+ end
15
+ end
16
+
17
+ indented_grid do
18
+ display 'Lists'
19
+
20
+ headline 'Simple'
21
+ list do
22
+ actors.each do |actor|
23
+ line do
24
+ text actor.name
25
+ end
26
+ end
27
+ end
28
+
29
+ headline 'Simple with Separators'
30
+ list do
31
+ actors.each do |actor|
32
+ line do
33
+ text actor.name
34
+ end
35
+ separator unless actor == actors.last
36
+ end
37
+ end
38
+
39
+ headline 'Simple with Selected'
40
+ list do
41
+ actors.each do |actor|
42
+ line selected: actors.first == actor do
43
+ text actor.name
44
+ end
45
+ end
46
+ end
47
+
48
+
49
+ headline 'Icons'
50
+ list do
51
+ actors.each do |actor|
52
+ line do
53
+ text actor.name
54
+ icon :person
55
+ end
56
+ end
57
+ end
58
+
59
+
60
+ headline 'Avatars and actions'
61
+ list do
62
+ actors.each do |actor|
63
+ line do
64
+ text actor.name
65
+ avatar :person
66
+ action do
67
+ icon :star
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ headline 'Avatars and controls'
74
+ list do
75
+ actors.each_with_index do |actor, index|
76
+ line do
77
+ text actor.name
78
+ avatar :person
79
+ action do
80
+ case index%4
81
+ when 0
82
+ checkbox
83
+ when 1
84
+ radio_button
85
+ when 2
86
+ switch
87
+ when 3
88
+ icon_toggle :star
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ headline 'Two line'
96
+
97
+ list do
98
+ actors.each_with_index do |actor, index|
99
+ line do
100
+ text actor.name
101
+ avatar :person
102
+ info 'actor' if index == 0
103
+ action do
104
+ icon_toggle :star
105
+ end
106
+ subtitle "#{actor.episodes} episodes"
107
+ end
108
+ end
109
+ end
110
+ #
111
+ # headline 'Three line'
112
+ #
113
+ # list do
114
+ # actors.each do |actor|
115
+ # line actor.name, avatar: :person do
116
+ # action icon: :star
117
+ # body actor.body
118
+ # end
119
+ # end
120
+ # end
121
+
122
+ attach :code, file: __FILE__
123
+ end
124
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:menus) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Menus'
10
+
11
+ grid do
12
+ column 1
13
+ column 5 do
14
+ card height: '300px' do
15
+ button icon: :more_vert do
16
+ menu do
17
+ item 'Some Action'
18
+ item 'Another Action'
19
+ divider
20
+ item 'Disabled Action', disabled: true
21
+ item 'Yet Another Action'
22
+ end
23
+ end
24
+ end
25
+ end
26
+ column 5 do
27
+ card height: '300px' do
28
+ button icon: :more_vert, position: :right do
29
+ menu do
30
+ item 'Some Action'
31
+ item 'Another Action'
32
+ divider
33
+ item 'Disabled Action', disabled: true
34
+ item 'Yet Another Action'
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ attach :code, file: __FILE__
42
+ end
43
+ end
@@ -0,0 +1,5 @@
1
+ Voom::Presenters.define(:component_drawer) do
2
+ drawer 'Presenters Demo' do
3
+ attach :component_menu
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ Voom::Presenters.define('component_menu') do
2
+ helpers Voom::Presenters::Helpers::Inflector
3
+ menu side: :left do
4
+ %i(cards lists expansion_panels tables text_fields selects buttons fabs fabs_mini dialogs layouts headers drawers
5
+ footers menus toggles chips snackbar badges tooltips hidden_fields text_areas forms icons).sort.each do |comp|
6
+ item titleize(comp) do
7
+ event :click do
8
+ loads comp
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+
@@ -0,0 +1,30 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:selects) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Select Fields'
10
+
11
+ form do
12
+ select do
13
+ label 'Text...'
14
+ option do
15
+ value 'value1'
16
+ text 'First value'
17
+ end
18
+ option do
19
+ value 'value2'
20
+ text 'Second value'
21
+ end
22
+ event :change do
23
+ snackbar 'item changed'
24
+ end
25
+ end
26
+ end
27
+
28
+ attach :code, file: __FILE__
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:snackbar) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ title 'On Page'
10
+ body 'You can attach a snackbar on the server side and will render after load.'
11
+ snackbar 'Top Level Important Information!'
12
+
13
+ attach :snackbar_attached
14
+
15
+ title 'As Event'
16
+ button 'Show Snackbar', id: :show_snackbar do
17
+ event :click do
18
+ snackbar 'You clicked snackbar the button!'
19
+ end
20
+ end
21
+ end
22
+
23
+ attach :code, file: __FILE__
24
+ end
@@ -0,0 +1,6 @@
1
+
2
+ Voom::Presenters.define(:snackbar_attached) do
3
+ title 'In Attached'
4
+ body 'This can be done in an attached presenter as well'
5
+ snackbar 'Attached Snackbar Displayed!'
6
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:tables) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ helpers do
9
+ def items
10
+ [
11
+ OpenStruct.new(material: 'Acrylic (Transparent)', quantity: 50, price: '$2.90'),
12
+ OpenStruct.new(material: 'Plywood (Birch)', quantity: 10, price: '$1.25'),
13
+ OpenStruct.new(material: 'Laminate (Gold on Blue)', quantity: 50, price: '$2.35')
14
+ ]
15
+ end
16
+ end
17
+
18
+ indented_grid do
19
+ display 'Tables'
20
+
21
+ table selectable: true do
22
+ header do
23
+ column 'Material'
24
+ column 'Quantity'
25
+ column 'Unit price'
26
+ end
27
+
28
+ items.each do |item|
29
+ row do
30
+ column item.material
31
+ column item.quantity
32
+ column item.price
33
+ end
34
+ end
35
+ end
36
+
37
+ attach :code, file: __FILE__
38
+ end
39
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:text_areas) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Text Areas'
10
+
11
+ headline 'Multiple line'
12
+
13
+ text_area name: :notes, rows: 3 do
14
+ label 'Text lines...'
15
+ end
16
+
17
+ attach :code, file: __FILE__
18
+ end
19
+ end
@@ -0,0 +1,57 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:text_fields) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Text Fields'
10
+
11
+ headline 'Text'
12
+
13
+ text_field name: :text do
14
+ label 'Text...'
15
+ end
16
+
17
+ headline 'Password'
18
+
19
+ text_field name: :password, password: true do
20
+ label 'Password'
21
+ end
22
+
23
+ headline 'Numeric'
24
+
25
+ # Client side validation with hints
26
+ headline 'With Hints'
27
+ text_field name: :numeric do
28
+ label 'Number...'
29
+ pattern /-?[0-9]*(\.[0-9]+)?/
30
+ hint 'Input is not a number!'
31
+ end
32
+
33
+ headline 'With Errors'
34
+ text_field name: :guess_me do
35
+ label 'Guess a number...'
36
+ pattern /-?[0-9]*(\.[0-9]+)?/
37
+ value '7'
38
+ error 'Input is not a the right number!'
39
+ end
40
+
41
+ card do
42
+ display 'Field Level Events'
43
+ heading 'Text Fields'
44
+ body 'This demonstrates that a change event will submit the field value to the event action. '\
45
+ 'This works with posts and replace actions'
46
+ text_field name: :myfield do
47
+ label 'Data to post'
48
+ event :change do
49
+ replaces :context_list, :context_list
50
+ end
51
+ end
52
+ attach :context_list
53
+ end
54
+
55
+ attach :code, file: __FILE__
56
+ end
57
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:toggles) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+
8
+ indented_grid do
9
+ display 'Toggles'
10
+
11
+ headline 'CHECKBOX'
12
+ checkbox
13
+ checkbox checked: true
14
+
15
+ headline 'RADIO BUTTON'
16
+ radio_button checked: true
17
+ radio_button
18
+
19
+ headline 'ICON TOGGLE'
20
+ icon_toggle 'format_bold', checked: true
21
+ icon_toggle 'format_italic'
22
+
23
+ headline 'SWITCH'
24
+ switch checked: true
25
+ switch
26
+
27
+ attach :code, file: __FILE__
28
+ end
29
+ end