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,14 @@
1
+ module Demo
2
+ module Helpers
3
+ module IndentedGrid
4
+ def indented_grid(&block)
5
+ grid do
6
+ column 1
7
+ column 10 do
8
+ yield_to(&block)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:index) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+
7
+ indented_grid do
8
+ headline 'Presenters', id: :headline
9
+ subheading 'Presenters are to HTML what C is to assembly'
10
+ body ['A presenter describes a user interface. It is evaluated and a presenter object model (POM) is returned.',
11
+ 'A client that renders POM can display the given user interface.']
12
+
13
+ subheading 'For example this is the presentation for this page:', level: 2
14
+
15
+ attach 'code', file: __FILE__
16
+ end
17
+
18
+
19
+ end
@@ -0,0 +1,73 @@
1
+ require_relative 'helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:markdown) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+
7
+ indented_grid do
8
+ heading 'Markdown'
9
+
10
+ body 'Markdown on all text elements is supported.',
11
+ 'It uses [redcarpet](https://github.com/vmg/redcarpet) with the Safe render.'
12
+ title 'Line breaks'
13
+ body 'Passing multiple text strings', 'creates line breaks'
14
+ body ['Arrays of text strings is the same', 'it creates line breaks']
15
+ body "You can also do line breaks with two line feeds\n\nThis is on another line"
16
+ body "You can also do line breaks with two carriage returns\r\rThis is on another line"
17
+ body 'Line two carriage returns in a single string does the same thing
18
+
19
+ This is on another line'
20
+ body "Line two carriage returns in a double quoted string does the same thing\n\n\tThis is also another line"
21
+ body "A single line feed does not add a line\nThis is on the same line."
22
+ body "A single carriage return does not add a line\rThis is on the same line."
23
+ body "A carriage return followed by a line feed.\r\nDoes not break up the line."
24
+ title 'Escaping HTML'
25
+ body '<h1>HTML is escaped</h1>'
26
+ body '<script>console.log("so are script tags")</script>'
27
+ title 'Lists'
28
+ body '1. Item 1', '2. Item 2'
29
+
30
+ title 'Full Sample'
31
+ body <<-HEREDOC
32
+ # Markdown Sample
33
+
34
+ ----
35
+ ## what is Markdown?
36
+ see [Wikipedia](http://en.wikipedia.org/wiki/Markdown)
37
+
38
+ > Markdown is a lightweight markup language, originally created by John Gruber and Aaron Swartz allowing people "to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML)".
39
+
40
+ ----
41
+ ## markdown quick reference
42
+ # headers
43
+
44
+ *emphasis*
45
+
46
+ **strong**
47
+
48
+ * list
49
+
50
+ >block quote
51
+
52
+ `code inline`
53
+
54
+ ```ruby
55
+ require 'redcarpet'
56
+ markdown = Redcarpet.new("Hello World!")
57
+ puts markdown.to_html
58
+ ```
59
+ [links](http://wikipedia.org)
60
+
61
+ ----
62
+ ## changelog
63
+ * 17-Feb-2013 re-design
64
+
65
+ ----
66
+ ## thanks
67
+ * [markdown-js](https://github.com/evilstreak/markdown-js)
68
+
69
+ HEREDOC
70
+
71
+
72
+ end
73
+ end
@@ -0,0 +1,42 @@
1
+ Voom::Presenters.define('top_nav') do
2
+ page do
3
+ title 'Presenters Demo'
4
+ end
5
+
6
+ header 'Presenters Demo' do
7
+ menu do
8
+ item 'About' do
9
+ event :click do
10
+ loads :index
11
+ end
12
+ end
13
+
14
+ item 'Components' do
15
+ event :click do
16
+ loads :components
17
+ end
18
+ end
19
+
20
+ item 'Styles' do
21
+ event :click do
22
+ loads :styles
23
+ end
24
+ end
25
+
26
+ item 'Events' do
27
+ event :click do
28
+ loads :events
29
+ end
30
+ end
31
+
32
+ item 'Status' do
33
+ event :click do
34
+ loads :component_status
35
+ end
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+
42
+
@@ -0,0 +1,20 @@
1
+ Voom::Presenters.define(:code) do
2
+ if context[:file]
3
+ grid do
4
+ column 12 do
5
+ body ''
6
+ expansion_panel 'Show Source' do
7
+ content do
8
+ form do
9
+ source = File.read(context[:file])
10
+ text_area full_width: true, rows: source.split("\n").size do
11
+ value source
12
+ label 'Source'
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ Voom::Presenters.define(:context_list) do
2
+ helpers do
3
+ def title
4
+ context.fetch(:title) {'Context'}
5
+ end
6
+
7
+ def time
8
+ Time.now unless context.fetch('testing') {false}
9
+ end
10
+
11
+ def scrubbed_context
12
+ scrubbed_keys = context.fetch(:exclude) {%w{title file testing}}
13
+ context.select {|k, _| !scrubbed_keys.include?(k.to_s)}
14
+ end
15
+ end
16
+ content id: :context_list do
17
+ grid do
18
+ column 12 do
19
+ display title
20
+ subheading "#{time}"
21
+ list do
22
+ scrubbed_context.map {|k, v| "#{k}: #{v}"}.each do |param|
23
+ line param
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ Voom::Presenters.define(:debug) do
2
+ if context[:debug]
3
+ grid do
4
+ column 1
5
+ column 11 do
6
+ headline 'Debug Info'
7
+ title 'Context:'
8
+ form do
9
+ text_area full_width: true, rows: context.size do
10
+ value context.inspect
11
+ label 'Context'
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:styles) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+
7
+ indented_grid do
8
+ display 'Styles'
9
+
10
+ # heading is an alias for display
11
+ heading 'Typography', level: 4
12
+ display 'Display 4', level: 4
13
+ display 'Display 3', level: 3
14
+ display 'Display 2', level: 2
15
+ display 'Display 1', level: 1
16
+ headline 'Headline'
17
+ title 'Title'
18
+ subheading 'Subheading 2', level: 2
19
+ subheading 'Subheading 1', level: 1
20
+ body ['Body 1 paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut',
21
+ 'labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut',
22
+ 'aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat',
23
+ 'nulla pariatur.'], level: 1
24
+ body 'Body 2 text, calling something out.', level: 2
25
+ end
26
+ end
data/bin/console ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ ENV['VOOM_ROOT'] = File.expand_path(__dir__)
5
+ libdir = File.join(ENV['VOOM_ROOT'], 'lib')
6
+ $:.unshift(libdir) unless $:.include?(libdir)
7
+ require 'voom-presenters'
8
+
9
+ Voom::Presenters::Settings.configure do |config|
10
+ config.presenters.root = File.join(ENV['VOOM_ROOT'], 'app')
11
+ end
12
+ Voom::Presenters::App.boot!
13
+
14
+ # You can add fixtures and/or initialization code here to make experimenting
15
+ # with your gem easier. You can also use a different console, if you like.
16
+
17
+ # (If you use this, don't forget to add pry to your Gemfile!)
18
+ # require "pry"
19
+ # Pry.start
20
+
21
+ require 'irb'
22
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,219 @@
1
+ ---
2
+ -
3
+ Components: Bottom navigation
4
+ Implementation: N
5
+ MDL: N
6
+ MDC: N
7
+ Priority: low
8
+ Completeness:
9
+ Notes:
10
+ -
11
+ Components: Bottom sheets
12
+ Implementation: N
13
+ MDL: N
14
+ MDC: N
15
+ Priority: not planned
16
+ Completeness:
17
+ Notes:
18
+ -
19
+ Components: Buttons
20
+ Implementation: MDC
21
+ MDL:
22
+ MDC:
23
+ Priority:
24
+ Completeness: 3
25
+ Notes:
26
+ -
27
+ Components: "Buttons: Floating Action Button"
28
+ Implementation: MDC
29
+ MDL:
30
+ MDC:
31
+ Priority:
32
+ Completeness: 3
33
+ Notes:
34
+ -
35
+ Components: Cards
36
+ Implementation: MDL
37
+ MDL:
38
+ MDC: Y
39
+ Priority:
40
+ Completeness: 2
41
+ Notes:
42
+ -
43
+ Components: Chips
44
+ Implementation: MDC
45
+ MDL:
46
+ MDC:
47
+ Priority:
48
+ Completeness: 2
49
+ Notes:
50
+ -
51
+ Components: Data tables
52
+ Implementation: MDL
53
+ MDL:
54
+ MDC: N
55
+ Priority:
56
+ Completeness: 2
57
+ Notes:
58
+ -
59
+ Components: Dialogs
60
+ Implementation: MDL
61
+ MDL:
62
+ MDC: Y
63
+ Priority:
64
+ Completeness: 3
65
+ Notes:
66
+ -
67
+ Components: Dividers
68
+ Implementation: N
69
+ MDL: N
70
+ MDC: N
71
+ Priority: not planned
72
+ Completeness:
73
+ Notes:
74
+ -
75
+ Components: Expansion panels
76
+ Implementation: Y
77
+ MDL: N
78
+ MDC: N
79
+ Priority:
80
+ Completeness: 2
81
+ Notes: Custom
82
+ -
83
+ Components: Grid lists
84
+ Implementation: N
85
+ MDL:
86
+ MDC: Y
87
+ Priority: not planned
88
+ Completeness:
89
+ Notes:
90
+ -
91
+ Components: Lists
92
+ Implementation: MDC
93
+ MDL:
94
+ MDC:
95
+ Priority:
96
+ Completeness: 2
97
+ Notes:
98
+ -
99
+ Components: "Lists: Controls"
100
+ Implementation: MDL/MDC
101
+ MDL:
102
+ MDC:
103
+ Priority:
104
+ Completeness: 1
105
+ Notes: Missing Leave-behinds, MDL controls don't update on replace.
106
+ -
107
+ Components: Menus
108
+ Implementation: MDC/MDL
109
+ MDL:
110
+ MDC:
111
+ Priority:
112
+ Completeness: 2
113
+ Notes:
114
+ -
115
+ Components: Pickers
116
+ Implementation: N
117
+ MDL: N
118
+ MDC: N
119
+ Priority: medium
120
+ Completeness:
121
+ Notes: Need date/time selection
122
+ -
123
+ Components: Progress & activity
124
+ Implementation: N
125
+ MDL:
126
+ MDC: Y
127
+ Priority: medium
128
+ Completeness:
129
+ Notes:
130
+ -
131
+ Components: Selection controls/switches
132
+ Implementation: MDL/MDC
133
+ MDL:
134
+ MDC: Y
135
+ Priority:
136
+ Completeness: 1
137
+ Notes: The checkboxes and radio buttons from MDL need to be ported.
138
+ -
139
+ Components: Select fields
140
+ Implementation: MDC
141
+ MDL:
142
+ MDC:
143
+ Priority:
144
+ Completeness: 2
145
+ Notes:
146
+ -
147
+ Components: Sliders
148
+ Implementation: N
149
+ MDL:
150
+ MDC: Y
151
+ Priority: medium
152
+ Completeness:
153
+ Notes:
154
+ -
155
+ Components: Snackbars & toasts
156
+ Implementation: MDL
157
+ MDL:
158
+ MDC: Y
159
+ Priority:
160
+ Completeness: 2
161
+ Notes:
162
+ -
163
+ Components: Steppers
164
+ Implementation: N
165
+ MDL: N
166
+ MDC: N
167
+ Priority: medium
168
+ Completeness:
169
+ Notes:
170
+ -
171
+ Components: Subheaders
172
+ Implementation: NA
173
+ MDL:
174
+ MDC:
175
+ Priority: not planned
176
+ Completeness:
177
+ Notes: This should be doable using typography
178
+ -
179
+ Components: Tabs
180
+ Implementation: N
181
+ MDL:
182
+ MDC: Y
183
+ Priority: medium
184
+ Completeness:
185
+ Notes:
186
+ -
187
+ Components: Text fields
188
+ Implementation: MDC
189
+ MDL:
190
+ MDC:
191
+ Priority: high
192
+ Completeness: 2
193
+ Notes:
194
+ -
195
+ Components: Toolbars
196
+ Implementation: MDL
197
+ MDL:
198
+ MDC: Y
199
+ Priority:
200
+ Completeness: 2
201
+ Notes:
202
+ -
203
+ Components: Tooltips
204
+ Implementation: MDL
205
+ MDL:
206
+ MDC:
207
+ Priority:
208
+ Completeness: 1
209
+ Notes: |
210
+ The list icons are not displaying tooltips.
211
+ **Help wanted**
212
+ -
213
+ Components: Widgets
214
+ Implementation: N
215
+ MDL: N
216
+ MDC: N
217
+ Priority: not planned
218
+ Completeness:
219
+ Notes: