voom-presenters 0.1.12 → 2.0.2

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 (515) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.gem_release.yml +1 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.github/ISSUE_TEMPLATE/questions-support.md +10 -0
  7. data/.github/workflows/semantic-release.yml +42 -0
  8. data/.gitignore +4 -2
  9. data/.releaserc +15 -0
  10. data/.ruby-version +2 -1
  11. data/CHANGELOG.md +143 -0
  12. data/CODE-OF-CONDUCT.md +73 -0
  13. data/CONTRIBUTING.md +60 -0
  14. data/Gemfile +12 -3
  15. data/Gemfile.lock +104 -64
  16. data/HISTORY.md +61 -0
  17. data/Procfile +1 -0
  18. data/README.md +48 -24
  19. data/app/demo/component_status.pom +1 -1
  20. data/app/demo/components/avatars.pom +40 -0
  21. data/app/demo/components/cards.pom +11 -4
  22. data/app/demo/components/chips.pom +65 -52
  23. data/app/demo/components/content.pom +111 -0
  24. data/app/demo/components/date_fields.pom +1 -1
  25. data/app/demo/components/datetime_fields.pom +6 -0
  26. data/app/demo/components/dialogs.pom +175 -6
  27. data/app/demo/components/drawers.pom +1 -1
  28. data/app/demo/components/file_inputs.pom +52 -0
  29. data/app/demo/components/footers.pom +1 -1
  30. data/app/demo/components/google_maps.pom +22 -0
  31. data/app/demo/components/headers.pom +80 -20
  32. data/app/demo/components/icons.pom +86 -55
  33. data/app/demo/components/image_lists.pom +100 -0
  34. data/app/demo/components/images.pom +45 -0
  35. data/app/demo/components/layouts.pom +15 -5
  36. data/app/demo/components/lists.pom +51 -17
  37. data/app/demo/components/menus.pom +14 -4
  38. data/app/demo/components/nav/menu.pom +40 -2
  39. data/app/demo/components/nav/pattern_drawer.pom +5 -0
  40. data/app/demo/components/nav/pattern_menu.pom +12 -0
  41. data/app/demo/components/number_fields.pom +53 -0
  42. data/app/demo/components/padding.pom +96 -0
  43. data/app/demo/components/progress.pom +71 -0
  44. data/app/demo/components/selects.pom +44 -5
  45. data/app/demo/components/sliders.pom +54 -0
  46. data/app/demo/components/snackbar.pom +10 -0
  47. data/app/demo/components/steppers.pom +178 -0
  48. data/app/demo/components/tab_bars.pom +66 -0
  49. data/app/demo/components/tables.pom +96 -13
  50. data/app/demo/components/text_areas.pom +23 -3
  51. data/app/demo/components/text_fields.pom +75 -17
  52. data/app/demo/components/toggles.pom +83 -16
  53. data/app/demo/components/tooltips.pom +10 -10
  54. data/app/demo/components/unordered_list.pom +81 -0
  55. data/app/demo/custom_css.pom +37 -0
  56. data/app/demo/events/actions/autocomplete.pom +3 -3
  57. data/app/demo/events/actions/clear.pom +25 -0
  58. data/app/demo/events/actions/dialogs/discard.pom +9 -0
  59. data/app/demo/events/actions/dialogs/show_dialog.pom +4 -2
  60. data/app/demo/events/actions/last_response.pom +40 -0
  61. data/app/demo/events/actions/loads.pom +16 -6
  62. data/app/demo/events/actions/posts.pom +1 -1
  63. data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
  64. data/app/demo/events/actions/toggle_visiblity.pom +4 -3
  65. data/app/demo/events/content_as_form.pom +313 -0
  66. data/app/demo/events/nav/drawer.pom +7 -3
  67. data/app/demo/events/parallel.pom +44 -0
  68. data/app/demo/events/tagged_input.pom +37 -0
  69. data/app/demo/hello_world.pom +3 -0
  70. data/app/demo/markdown.pom +1 -0
  71. data/app/demo/namespaces.pom +89 -0
  72. data/app/demo/nav/top_nav.pom +24 -0
  73. data/app/demo/patterns.pom +19 -0
  74. data/app/demo/patterns/drag_drop.pom +89 -0
  75. data/app/demo/patterns/floating_card.pom +29 -0
  76. data/app/demo/patterns/search_select.pom +106 -0
  77. data/app/demo/plugins/chart.pom +254 -0
  78. data/app/demo/plugins/image_crop.pom +44 -0
  79. data/app/demo/plugins/index.pom +29 -0
  80. data/app/demo/plugins/nav/drawer.pom +19 -0
  81. data/app/demo/shared/context_list.pom +2 -2
  82. data/app/demo/styles.pom +24 -12
  83. data/bin/console +4 -4
  84. data/component-status.yml +26 -26
  85. data/config.ru +21 -10
  86. data/docs/settings.md +81 -0
  87. data/exe/presenters +3 -0
  88. data/lib/hash_ext/traverse.rb +14 -0
  89. data/lib/voom.rb +25 -0
  90. data/lib/voom/container_methods.rb +2 -2
  91. data/lib/voom/engine.rb +5 -0
  92. data/lib/voom/presenters/api/app.rb +46 -13
  93. data/lib/voom/presenters/api/router.rb +3 -87
  94. data/lib/voom/presenters/app.rb +3 -3
  95. data/lib/voom/presenters/cli.rb +28 -0
  96. data/lib/voom/presenters/demo/dragon_drop.rb +48 -0
  97. data/lib/voom/presenters/demo/echo.rb +7 -0
  98. data/lib/voom/presenters/demo/slow.rb +18 -0
  99. data/lib/voom/presenters/dsl/components/actions/autocomplete.rb +15 -0
  100. data/lib/voom/presenters/dsl/components/actions/base.rb +65 -0
  101. data/lib/voom/presenters/dsl/components/actions/clear.rb +15 -0
  102. data/lib/voom/presenters/dsl/components/actions/close_dialog.rb +17 -0
  103. data/lib/voom/presenters/dsl/components/actions/deletes.rb +15 -0
  104. data/lib/voom/presenters/dsl/components/actions/dialog.rb +15 -0
  105. data/lib/voom/presenters/dsl/components/actions/loads.rb +31 -0
  106. data/lib/voom/presenters/dsl/components/actions/navigates.rb +15 -0
  107. data/lib/voom/presenters/dsl/components/actions/post_message.rb +17 -0
  108. data/lib/voom/presenters/dsl/components/actions/posts.rb +20 -0
  109. data/lib/voom/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
  110. data/lib/voom/presenters/dsl/components/actions/remove.rb +15 -0
  111. data/lib/voom/presenters/dsl/components/actions/replaces.rb +25 -0
  112. data/lib/voom/presenters/dsl/components/actions/snackbar.rb +15 -0
  113. data/lib/voom/presenters/dsl/components/actions/stepper.rb +15 -0
  114. data/lib/voom/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
  115. data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
  116. data/lib/voom/presenters/dsl/components/actions/updates.rb +20 -0
  117. data/lib/voom/presenters/dsl/components/avatar.rb +5 -10
  118. data/lib/voom/presenters/dsl/components/badge.rb +0 -2
  119. data/lib/voom/presenters/dsl/components/base.rb +37 -21
  120. data/lib/voom/presenters/dsl/components/button.rb +23 -17
  121. data/lib/voom/presenters/dsl/components/card.rb +54 -42
  122. data/lib/voom/presenters/dsl/components/checkbox.rb +2 -2
  123. data/lib/voom/presenters/dsl/components/chip.rb +10 -13
  124. data/lib/voom/presenters/dsl/components/chipset.rb +33 -0
  125. data/lib/voom/presenters/dsl/components/content.rb +33 -13
  126. data/lib/voom/presenters/dsl/components/date_field.rb +1 -1
  127. data/lib/voom/presenters/dsl/components/datetime_base.rb +0 -3
  128. data/lib/voom/presenters/dsl/components/datetime_field.rb +0 -2
  129. data/lib/voom/presenters/dsl/components/dialog.rb +41 -13
  130. data/lib/voom/presenters/dsl/components/drawer.rb +13 -8
  131. data/lib/voom/presenters/dsl/components/event.rb +117 -60
  132. data/lib/voom/presenters/dsl/components/event_base.rb +1 -3
  133. data/lib/voom/presenters/dsl/components/expansion_panel.rb +3 -6
  134. data/lib/voom/presenters/dsl/components/file_input.rb +34 -0
  135. data/lib/voom/presenters/dsl/components/footer.rb +2 -2
  136. data/lib/voom/presenters/dsl/components/form.rb +3 -16
  137. data/lib/voom/presenters/dsl/components/grid.rb +64 -22
  138. data/lib/voom/presenters/dsl/components/header.rb +19 -6
  139. data/lib/voom/presenters/dsl/components/hidden_field.rb +1 -3
  140. data/lib/voom/presenters/dsl/components/icon.rb +3 -6
  141. data/lib/voom/presenters/dsl/components/icon_base.rb +6 -8
  142. data/lib/voom/presenters/dsl/components/icon_toggle.rb +3 -5
  143. data/lib/voom/presenters/dsl/components/image.rb +61 -13
  144. data/lib/voom/presenters/dsl/components/image_list.rb +43 -0
  145. data/lib/voom/presenters/dsl/components/input.rb +14 -5
  146. data/lib/voom/presenters/dsl/components/link.rb +33 -0
  147. data/lib/voom/presenters/dsl/components/list.rb +11 -16
  148. data/lib/voom/presenters/dsl/components/lists/action.rb +11 -14
  149. data/lib/voom/presenters/dsl/components/lists/actions.rb +60 -0
  150. data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
  151. data/lib/voom/presenters/dsl/components/lists/line.rb +40 -29
  152. data/lib/voom/presenters/dsl/components/lists/separator.rb +2 -2
  153. data/lib/voom/presenters/dsl/components/menu.rb +56 -16
  154. data/lib/voom/presenters/dsl/components/mixins/append.rb +2 -2
  155. data/lib/voom/presenters/dsl/components/mixins/attaches.rb +7 -3
  156. data/lib/voom/presenters/dsl/components/mixins/avatar.rb +1 -4
  157. data/lib/voom/presenters/dsl/components/mixins/buttons.rb +1 -1
  158. data/lib/voom/presenters/dsl/components/mixins/chips.rb +0 -3
  159. data/lib/voom/presenters/dsl/components/mixins/chipset.rb +19 -0
  160. data/lib/voom/presenters/dsl/components/mixins/common.rb +21 -16
  161. data/lib/voom/presenters/dsl/components/mixins/content.rb +1 -1
  162. data/lib/voom/presenters/dsl/components/mixins/date_time_fields.rb +0 -3
  163. data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +0 -3
  164. data/lib/voom/presenters/dsl/components/mixins/event.rb +2 -4
  165. data/lib/voom/presenters/dsl/components/mixins/expansion_panels.rb +1 -1
  166. data/lib/voom/presenters/dsl/components/mixins/file_inputs.rb +16 -0
  167. data/lib/voom/presenters/dsl/components/mixins/google_maps.rb +15 -0
  168. data/lib/voom/presenters/dsl/components/mixins/grids.rb +1 -1
  169. data/lib/voom/presenters/dsl/components/mixins/icons.rb +0 -1
  170. data/lib/voom/presenters/dsl/components/mixins/image_lists.rb +15 -0
  171. data/lib/voom/presenters/dsl/components/mixins/last_response.rb +48 -0
  172. data/lib/voom/presenters/dsl/components/mixins/menus.rb +1 -1
  173. data/lib/voom/presenters/dsl/components/mixins/padding.rb +42 -0
  174. data/lib/voom/presenters/dsl/components/mixins/progress.rb +16 -0
  175. data/lib/voom/presenters/dsl/components/mixins/selects.rb +0 -1
  176. data/lib/voom/presenters/dsl/components/mixins/sliders.rb +15 -0
  177. data/lib/voom/presenters/dsl/components/mixins/snackbars.rb +0 -1
  178. data/lib/voom/presenters/dsl/components/mixins/steppers.rb +15 -0
  179. data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +17 -0
  180. data/lib/voom/presenters/dsl/components/mixins/tables.rb +15 -0
  181. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +10 -3
  182. data/lib/voom/presenters/dsl/components/mixins/toggles.rb +0 -5
  183. data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +0 -1
  184. data/lib/voom/presenters/dsl/components/mixins/typography.rb +91 -14
  185. data/lib/voom/presenters/dsl/components/mixins/yield_to.rb +2 -2
  186. data/lib/voom/presenters/dsl/components/number_field.rb +20 -0
  187. data/lib/voom/presenters/dsl/components/page.rb +0 -1
  188. data/lib/voom/presenters/dsl/components/page_title.rb +31 -0
  189. data/lib/voom/presenters/dsl/components/progress.rb +27 -0
  190. data/lib/voom/presenters/dsl/components/radio_button.rb +0 -1
  191. data/lib/voom/presenters/dsl/components/rich_text_area.rb +20 -0
  192. data/lib/voom/presenters/dsl/components/select.rb +23 -12
  193. data/lib/voom/presenters/dsl/components/separator.rb +21 -0
  194. data/lib/voom/presenters/dsl/components/slider.rb +38 -0
  195. data/lib/voom/presenters/dsl/components/snackbar.rb +2 -2
  196. data/lib/voom/presenters/dsl/components/stepper.rb +96 -0
  197. data/lib/voom/presenters/dsl/components/switch.rb +0 -2
  198. data/lib/voom/presenters/dsl/components/tab_bar.rb +50 -0
  199. data/lib/voom/presenters/dsl/components/table.rb +126 -35
  200. data/lib/voom/presenters/dsl/components/text_area.rb +4 -5
  201. data/lib/voom/presenters/dsl/components/text_field.rb +55 -16
  202. data/lib/voom/presenters/dsl/components/time_field.rb +0 -2
  203. data/lib/voom/presenters/dsl/components/toggle_base.rb +8 -6
  204. data/lib/voom/presenters/dsl/components/tooltip.rb +1 -2
  205. data/lib/voom/presenters/dsl/components/typography.rb +6 -7
  206. data/lib/voom/presenters/dsl/components/unordered_list.rb +50 -0
  207. data/lib/voom/presenters/dsl/definer.rb +0 -4
  208. data/lib/voom/presenters/dsl/definition.rb +9 -6
  209. data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
  210. data/lib/voom/presenters/dsl/user_interface.rb +43 -32
  211. data/lib/voom/presenters/errors.rb +1 -0
  212. data/lib/voom/presenters/errors/invalid_dsl.rb +8 -0
  213. data/lib/voom/presenters/errors/parameter_validation.rb +1 -3
  214. data/lib/voom/presenters/generators/inflectors.rb +59 -0
  215. data/lib/voom/presenters/generators/plugin.rb +115 -0
  216. data/lib/voom/presenters/generators/templates/plugin/.gitignore +12 -0
  217. data/lib/voom/presenters/generators/templates/plugin/Gemfile +6 -0
  218. data/lib/voom/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  219. data/lib/voom/presenters/generators/templates/plugin/README.md +253 -0
  220. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/action.rb.tt +16 -0
  221. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  222. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/component.rb.tt +18 -0
  223. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/dsl.rb.tt +19 -0
  224. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/helpers/helper.rb.tt +15 -0
  225. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/plugin.rb.tt +9 -0
  226. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  227. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/render.rb.tt +23 -0
  228. data/lib/voom/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  229. data/lib/voom/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  230. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  231. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  232. data/lib/voom/presenters/generators/templates/plugin/views/components/component.erb.tt +14 -0
  233. data/lib/voom/presenters/generators/templates/plugin/views/components/component_header.erb.tt +20 -0
  234. data/lib/voom/presenters/helpers.rb +2 -8
  235. data/lib/voom/presenters/helpers/date.rb +3 -3
  236. data/lib/voom/presenters/helpers/inflector.rb +1 -1
  237. data/lib/voom/presenters/helpers/rails.rb +18 -6
  238. data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
  239. data/lib/voom/presenters/helpers/redact.rb +13 -0
  240. data/lib/voom/presenters/helpers/route.rb +15 -2
  241. data/lib/voom/presenters/helpers/time.rb +1 -1
  242. data/lib/voom/presenters/namespace.rb +12 -0
  243. data/lib/voom/presenters/pluggable.rb +37 -0
  244. data/lib/voom/presenters/plugins.rb +7 -0
  245. data/lib/voom/presenters/plugins/google_maps.rb +24 -0
  246. data/lib/voom/presenters/plugins/google_maps/google_map.erb +10 -0
  247. data/lib/voom/presenters/plugins/google_maps/google_map.rb +41 -0
  248. data/lib/voom/presenters/{dsl.rb → registry.rb} +14 -10
  249. data/lib/voom/presenters/router.rb +59 -0
  250. data/lib/voom/presenters/settings.rb +70 -39
  251. data/lib/voom/presenters/version.rb +3 -1
  252. data/lib/voom/presenters/web_client/app.rb +121 -34
  253. data/lib/voom/presenters/web_client/component_decorator_factory.rb +27 -0
  254. data/lib/voom/presenters/web_client/component_html_decorator.rb +50 -0
  255. data/lib/voom/presenters/web_client/component_renderer.rb +49 -0
  256. data/lib/voom/presenters/web_client/custom_css.rb +65 -0
  257. data/lib/voom/presenters/web_client/custom_render.rb +31 -0
  258. data/lib/voom/presenters/web_client/helpers/expand_hash.rb +19 -0
  259. data/lib/voom/presenters/web_client/helpers/form_helpers.rb +14 -0
  260. data/lib/voom/presenters/web_client/helpers/padding_helpers.rb +21 -0
  261. data/lib/voom/presenters/web_client/plugin_headers.rb +37 -0
  262. data/lib/voom/presenters/web_client/router.rb +3 -89
  263. data/lib/voom/railtie.rb +37 -0
  264. data/lib/voom/serializer.rb +2 -2
  265. data/lib/voom/symbol/to_str.rb +3 -3
  266. data/lib/voom/trace.rb +0 -2
  267. data/presenters.gemspec +11 -6
  268. data/public/bundle.css +18221 -0
  269. data/public/bundle.js +59949 -0
  270. data/public/img/demo/avatar.jpg +0 -0
  271. data/public/presenters/custom_css.css +26 -0
  272. data/public/style-bundle.js +2 -2
  273. data/public/wc.js +52704 -0
  274. data/scripts/build.sh +10 -0
  275. data/views/mdc/.babelrc +8 -0
  276. data/views/mdc/.eslintrc.yml +24 -0
  277. data/views/mdc/.nvmrc +1 -0
  278. data/views/mdc/assets/js/app.js +30 -6
  279. data/views/mdc/assets/js/components/base-component.js +160 -2
  280. data/views/mdc/assets/js/components/base-container.js +87 -0
  281. data/views/mdc/assets/js/components/base-toggle.js +56 -0
  282. data/views/mdc/assets/js/components/button.js +71 -9
  283. data/views/mdc/assets/js/components/cards.js +13 -2
  284. data/views/mdc/assets/js/components/checkboxes.js +11 -11
  285. data/views/mdc/assets/js/components/chips.js +104 -7
  286. data/views/mdc/assets/js/components/content.js +14 -0
  287. data/views/mdc/assets/js/components/data-tables.js +15 -0
  288. data/views/mdc/assets/js/components/datetime.js +83 -20
  289. data/views/mdc/assets/js/components/dialogs.js +130 -27
  290. data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
  291. data/views/mdc/assets/js/components/drawer.js +43 -0
  292. data/views/mdc/assets/js/components/events.js +195 -68
  293. data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
  294. data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
  295. data/views/mdc/assets/js/components/events/autocomplete.js +15 -17
  296. data/views/mdc/assets/js/components/events/base.js +142 -16
  297. data/views/mdc/assets/js/components/events/clears.js +15 -12
  298. data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
  299. data/views/mdc/assets/js/components/events/dialog.js +32 -14
  300. data/views/mdc/assets/js/components/events/encode.js +8 -0
  301. data/views/mdc/assets/js/components/events/errors.js +175 -92
  302. data/views/mdc/assets/js/components/events/loads.js +50 -11
  303. data/views/mdc/assets/js/components/events/navigates.js +17 -15
  304. data/views/mdc/assets/js/components/events/plugin.js +18 -0
  305. data/views/mdc/assets/js/components/events/post_message.js +21 -0
  306. data/views/mdc/assets/js/components/events/posts.js +169 -47
  307. data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
  308. data/views/mdc/assets/js/components/events/removes.js +21 -0
  309. data/views/mdc/assets/js/components/events/replaces.js +110 -57
  310. data/views/mdc/assets/js/components/events/snackbar.js +10 -10
  311. data/views/mdc/assets/js/components/events/stepper.js +21 -0
  312. data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
  313. data/views/mdc/assets/js/components/events/toggle_visibility.js +62 -16
  314. data/views/mdc/assets/js/components/file-inputs.js +76 -0
  315. data/views/mdc/assets/js/components/form-fields.js +16 -0
  316. data/views/mdc/assets/js/components/forms.js +9 -60
  317. data/views/mdc/assets/js/components/get_event_target.js +15 -0
  318. data/views/mdc/assets/js/components/grid.js +21 -0
  319. data/views/mdc/assets/js/components/header.js +20 -0
  320. data/views/mdc/assets/js/components/hidden-fields.js +44 -0
  321. data/views/mdc/assets/js/components/icon-toggles.js +10 -17
  322. data/views/mdc/assets/js/components/images.js +19 -0
  323. data/views/mdc/assets/js/components/initialize.js +62 -18
  324. data/views/mdc/assets/js/components/lists.js +10 -5
  325. data/views/mdc/assets/js/components/menus.js +66 -20
  326. data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
  327. data/views/mdc/assets/js/components/mixins/event-handler.js +7 -7
  328. data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -0
  329. data/views/mdc/assets/js/components/plugins.js +86 -0
  330. data/views/mdc/assets/js/components/progress.js +31 -0
  331. data/views/mdc/assets/js/components/radios.js +14 -0
  332. data/views/mdc/assets/js/components/rich-text-area.js +227 -0
  333. data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
  334. data/views/mdc/assets/js/components/root_document.js +5 -0
  335. data/views/mdc/assets/js/components/selects.js +41 -30
  336. data/views/mdc/assets/js/components/sliders.js +67 -0
  337. data/views/mdc/assets/js/components/snackbar.js +17 -23
  338. data/views/mdc/assets/js/components/steppers.js +48 -0
  339. data/views/mdc/assets/js/components/switches.js +10 -32
  340. data/views/mdc/assets/js/components/tab-bars.js +28 -0
  341. data/views/mdc/assets/js/components/text-fields.js +117 -43
  342. data/views/mdc/assets/js/components/tooltip.js +17 -0
  343. data/views/mdc/assets/js/components/typography.js +28 -0
  344. data/views/mdc/assets/js/components/uninitialize.js +7 -0
  345. data/views/mdc/assets/js/config.js +27 -0
  346. data/views/mdc/assets/js/mdl-stepper.js +1108 -0
  347. data/views/mdc/assets/js/utils/compatibility.js +9 -0
  348. data/views/mdc/assets/js/utils/config.js +73 -0
  349. data/views/mdc/assets/js/utils/config.test.js +59 -0
  350. data/views/mdc/assets/js/utils/urls.js +5 -2
  351. data/views/mdc/assets/js/wc.js +111 -0
  352. data/views/mdc/assets/scss/app.scss +20 -5
  353. data/views/mdc/assets/scss/components/avatar.scss +51 -7
  354. data/views/mdc/assets/scss/components/button.scss +20 -7
  355. data/views/mdc/assets/scss/components/card.scss +13 -7
  356. data/views/mdc/assets/scss/components/checkbox.scss +0 -4
  357. data/views/mdc/assets/scss/components/chip.scss +4 -0
  358. data/views/mdc/assets/scss/components/content.scss +36 -0
  359. data/views/mdc/assets/scss/components/data-table.scss +91 -0
  360. data/views/mdc/assets/scss/components/datetime.scss +7 -2
  361. data/views/mdc/assets/scss/components/dialog.scss +7 -2
  362. data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
  363. data/views/mdc/assets/scss/components/drawer.scss +82 -0
  364. data/views/mdc/assets/scss/components/expansion-panel.scss +2 -2
  365. data/views/mdc/assets/scss/components/fab.scss +23 -4
  366. data/views/mdc/assets/scss/components/file-input.scss +18 -0
  367. data/views/mdc/assets/scss/components/grid.scss +74 -3
  368. data/views/mdc/assets/scss/components/header.scss +21 -0
  369. data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
  370. data/views/mdc/assets/scss/components/icon.scss +23 -0
  371. data/views/mdc/assets/scss/components/image-list.scss +18 -0
  372. data/views/mdc/assets/scss/components/image.scss +14 -16
  373. data/views/mdc/assets/scss/components/list.scss +19 -0
  374. data/views/mdc/assets/scss/components/menu.scss +14 -3
  375. data/views/mdc/assets/scss/components/progress.scss +1 -0
  376. data/views/mdc/assets/scss/components/radio.scss +4 -0
  377. data/views/mdc/assets/scss/components/rich-text-area.scss +73 -0
  378. data/views/mdc/assets/scss/components/select.scss +6 -3
  379. data/views/mdc/assets/scss/components/separator.scss +3 -0
  380. data/views/mdc/assets/scss/components/slider.scss +1 -0
  381. data/views/mdc/assets/scss/components/snackbar.scss +1 -5
  382. data/views/mdc/assets/scss/components/stepper.scss +235 -0
  383. data/views/mdc/assets/scss/components/switch.scss +13 -4
  384. data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
  385. data/views/mdc/assets/scss/components/textfield.scss +14 -3
  386. data/views/mdc/assets/scss/components/tooltip.scss +3 -0
  387. data/views/mdc/assets/scss/components/typography.scss +10 -0
  388. data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
  389. data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
  390. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +1 -1
  391. data/views/mdc/assets/scss/media.scss +39 -0
  392. data/views/mdc/assets/scss/palette.scss +16 -0
  393. data/views/mdc/assets/scss/styles.scss +40 -1
  394. data/views/mdc/assets/scss/theme.scss +25 -2
  395. data/views/mdc/body/dismissable-drawer.erb +34 -0
  396. data/views/mdc/body/drawer/divider.erb +1 -0
  397. data/views/mdc/body/drawer/item.erb +13 -0
  398. data/views/mdc/body/drawer/label.erb +1 -0
  399. data/views/mdc/body/drawers/menu.erb +1 -1
  400. data/views/mdc/body/footers/menu_item.erb +2 -2
  401. data/views/mdc/body/header.erb +38 -30
  402. data/views/mdc/body/modal-drawer.erb +35 -0
  403. data/views/mdc/body/snackbar.erb +12 -6
  404. data/views/mdc/components/actions/autocomplete.rb +8 -0
  405. data/views/mdc/components/actions/clear.rb +11 -0
  406. data/views/mdc/components/actions/close_dialog.rb +10 -0
  407. data/views/mdc/components/actions/delete.rb +11 -0
  408. data/views/mdc/components/actions/dialog.rb +11 -0
  409. data/views/mdc/components/actions/loads.rb +17 -0
  410. data/views/mdc/components/actions/navigates.rb +11 -0
  411. data/views/mdc/components/actions/post.rb +14 -0
  412. data/views/mdc/components/actions/post_message.rb +10 -0
  413. data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
  414. data/views/mdc/components/actions/remove.rb +10 -0
  415. data/views/mdc/components/actions/replaces.rb +16 -0
  416. data/views/mdc/components/actions/resolver.rb +39 -0
  417. data/views/mdc/components/actions/snackbar.rb +12 -0
  418. data/views/mdc/components/actions/stepper.rb +10 -0
  419. data/views/mdc/components/actions/toggle_disabled.rb +10 -0
  420. data/views/mdc/components/actions/toggle_visibility.rb +10 -0
  421. data/views/mdc/components/actions/update.rb +10 -0
  422. data/views/mdc/components/avatar.erb +12 -7
  423. data/views/mdc/components/badge.erb +1 -1
  424. data/views/mdc/components/button.erb +10 -8
  425. data/views/mdc/components/buttons/button.erb +19 -14
  426. data/views/mdc/components/buttons/fab.erb +9 -2
  427. data/views/mdc/components/buttons/icon.erb +12 -5
  428. data/views/mdc/components/buttons/image.erb +11 -5
  429. data/views/mdc/components/{display.erb → caption.erb} +0 -0
  430. data/views/mdc/components/card.erb +67 -41
  431. data/views/mdc/components/checkbox.erb +32 -23
  432. data/views/mdc/components/chip.erb +39 -22
  433. data/views/mdc/components/chipset.erb +18 -0
  434. data/views/mdc/components/content.erb +37 -11
  435. data/views/mdc/components/datetime.erb +12 -17
  436. data/views/mdc/components/dialog.erb +45 -22
  437. data/views/mdc/components/drag_and_drop/drag_and_drop.rb +16 -0
  438. data/views/mdc/components/event.erb +3 -9
  439. data/views/mdc/components/expansion_panel.erb +8 -6
  440. data/views/mdc/components/file_input.erb +17 -0
  441. data/views/mdc/components/form.erb +7 -8
  442. data/views/mdc/components/grid.erb +27 -10
  443. data/views/mdc/components/headline.erb +2 -0
  444. data/views/mdc/components/hidden_field.erb +5 -1
  445. data/views/mdc/components/icon.erb +7 -5
  446. data/views/mdc/components/icon_toggle.erb +9 -8
  447. data/views/mdc/components/image.erb +23 -5
  448. data/views/mdc/components/image_list.erb +38 -0
  449. data/views/mdc/components/link.erb +3 -13
  450. data/views/mdc/components/list.erb +9 -4
  451. data/views/mdc/components/list/actions/switch.erb +1 -1
  452. data/views/mdc/components/list/avatar.erb +2 -1
  453. data/views/mdc/components/list/header.erb +5 -3
  454. data/views/mdc/components/list/hidden_field.erb +3 -0
  455. data/views/mdc/components/list/icon.erb +2 -1
  456. data/views/mdc/components/list/line.erb +24 -13
  457. data/views/mdc/components/list/menu.erb +7 -2
  458. data/views/mdc/components/list/separator.erb +1 -1
  459. data/views/mdc/components/menu.erb +20 -16
  460. data/views/mdc/components/number_field.erb +38 -0
  461. data/views/mdc/components/{subheading.erb → overline.erb} +0 -0
  462. data/views/mdc/components/page_title.erb +2 -2
  463. data/views/mdc/components/progress.erb +11 -0
  464. data/views/mdc/components/radio_button.erb +19 -10
  465. data/views/mdc/components/render.erb +2 -3
  466. data/views/mdc/components/rich_text_area.erb +22 -0
  467. data/views/mdc/components/select.erb +28 -8
  468. data/views/mdc/components/separator.erb +3 -0
  469. data/views/mdc/components/shared/hint_error_display.erb +9 -0
  470. data/views/mdc/components/shared/input_label.erb +7 -0
  471. data/views/mdc/components/slider.erb +43 -0
  472. data/views/mdc/components/snackbar.erb +2 -6
  473. data/views/mdc/components/stepper.erb +47 -0
  474. data/views/mdc/components/stepper/step.erb +33 -0
  475. data/views/mdc/components/{title.erb → subtitle.erb} +0 -0
  476. data/views/mdc/components/switch.erb +28 -12
  477. data/views/mdc/components/tab_bar.erb +35 -0
  478. data/views/mdc/components/table.erb +28 -13
  479. data/views/mdc/components/table/checkbox.erb +20 -0
  480. data/views/mdc/components/table/column.erb +18 -0
  481. data/views/mdc/components/table/footer.erb +8 -0
  482. data/views/mdc/components/table/header.erb +14 -4
  483. data/views/mdc/components/table/pagination.erb +11 -24
  484. data/views/mdc/components/table/row.erb +7 -5
  485. data/views/mdc/components/text_area.erb +15 -7
  486. data/views/mdc/components/text_field.erb +38 -28
  487. data/views/mdc/components/tooltip.erb +2 -2
  488. data/views/mdc/components/typography.erb +7 -5
  489. data/views/mdc/components/unordered_list.erb +10 -0
  490. data/views/mdc/components/unordered_list/icon.erb +3 -0
  491. data/views/mdc/components/unordered_list/list_item.erb +7 -0
  492. data/views/mdc/layout.erb +45 -31
  493. data/views/mdc/package-lock.json +11786 -6868
  494. data/views/mdc/package.json +66 -29
  495. data/views/mdc/web.erb +4 -0
  496. data/views/mdc/webpack.config.js +14 -1
  497. metadata +341 -32
  498. data/app/demo/components/forms.pom +0 -31
  499. data/lib/voom-presenters.rb +0 -9
  500. data/lib/voom/presenters-engine.rb +0 -41
  501. data/lib/voom/presenters.rb +0 -13
  502. data/lib/voom/presenters/dsl/components/action.rb +0 -35
  503. data/lib/voom/presenters/web_client/markdown_render.rb +0 -16
  504. data/public/.gitignore +0 -2
  505. data/scripts/bump.sh +0 -4
  506. data/scripts/deploy-demo.sh +0 -2
  507. data/scripts/release.sh +0 -5
  508. data/views/mdc/assets/js/dialog-polyfill.js +0 -738
  509. data/views/mdc/assets/js/material.js +0 -3996
  510. data/views/mdc/assets/scss/components/icon-toggles.scss +0 -9
  511. data/views/mdc/assets/scss/components/table-pagination.scss +0 -65
  512. data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +0 -13
  513. data/views/mdc/body/drawer.erb +0 -18
  514. data/views/mdc/components/modal.erb +0 -15
  515. data/views/mdc/components/static.erb +0 -7
data/Gemfile CHANGED
@@ -1,15 +1,24 @@
1
1
  source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
2
3
 
3
4
  ruby `cat .ruby-version`
4
5
  # Specify your gem's dependencies in voom-console.gemspec
5
6
  gemspec
6
7
 
8
+ gem 'pry', group: :development
9
+
7
10
  group :test do
8
11
  gem 'rspec'
9
12
  gem 'rspec-html-matchers'
10
- gem 'watir', '~> 6.10.3'
11
- gem "webdrivers", "~> 3.0"
12
- gem 'watir-rspec'
13
+ gem 'watir', '~> 6.16'
14
+ gem 'webdrivers', '~> 4.1'
15
+ gem 'watir-rspec', '~> 3.0'
13
16
  gem 'rspec_junit_formatter'
14
17
  gem 'simplecov', require: false
15
18
  end
19
+
20
+ gem 'foo_presenter_plugin', github:'rx/foo_presenter_plugin'
21
+ gem 'image_crop_presenter_plugin', github:'rx/image_crop_presenter_plugin'
22
+ gem 'chart_presenter_plugin', github:'rx/chart_presenter_plugin'
23
+ gem 'rack-cors'
24
+ gem 'honeybadger' if ENV.fetch('HONEYBADGER_API_KEY'){false}
data/Gemfile.lock CHANGED
@@ -1,120 +1,160 @@
1
+ GIT
2
+ remote: https://github.com/rx/chart_presenter_plugin.git
3
+ revision: e2afb1cf0292ea92371cfc83be16b2ad95dee26d
4
+ specs:
5
+ chart_presenter_plugin (0.1.0)
6
+
7
+ GIT
8
+ remote: https://github.com/rx/foo_presenter_plugin.git
9
+ revision: 313dddfef05f740990c509b89831b69730b4ce12
10
+ specs:
11
+ foo_presenter_plugin (0.0.1)
12
+
13
+ GIT
14
+ remote: https://github.com/rx/image_crop_presenter_plugin.git
15
+ revision: c0814ffa5a0f40fd15d697e72a5bd4c9e4117d1e
16
+ specs:
17
+ image_crop_presenter_plugin (0.1.0)
18
+
1
19
  PATH
2
20
  remote: .
3
21
  specs:
4
- voom-presenters (0.1.12)
22
+ voom-presenters (1.0.0)
5
23
  dry-configurable (> 0.1, <= 7.0)
6
24
  dry-container (~> 0.6)
7
25
  dry-inflector (~> 0.1)
26
+ filewatcher (~> 1.1.1)
8
27
  ice_nine (~> 0.11)
9
28
  redcarpet (~> 3.4)
10
29
  sinatra (>= 1.4, < 3.0)
11
- tzinfo (~> 1.2)
30
+ tzinfo (>= 1.1, < 3.0)
12
31
  tzinfo-data (~> 1.2018)
32
+ zeitwerk (~> 2.1)
13
33
 
14
34
  GEM
15
35
  remote: https://rubygems.org/
16
36
  specs:
17
- childprocess (0.9.0)
18
- ffi (~> 1.0, >= 1.0.11)
19
- coderay (1.1.1)
20
- concurrent-ruby (1.0.5)
21
- diff-lcs (1.2.5)
22
- docile (1.1.5)
23
- dry-configurable (0.7.0)
37
+ childprocess (3.0.0)
38
+ coderay (1.1.2)
39
+ concurrent-ruby (1.1.7)
40
+ diff-lcs (1.3)
41
+ docile (1.3.1)
42
+ dry-configurable (0.11.6)
24
43
  concurrent-ruby (~> 1.0)
25
- dry-container (0.6.0)
44
+ dry-core (~> 0.4, >= 0.4.7)
45
+ dry-equalizer (~> 0.2)
46
+ dry-container (0.7.2)
26
47
  concurrent-ruby (~> 1.0)
27
48
  dry-configurable (~> 0.1, >= 0.1.3)
28
- dry-inflector (0.1.2)
29
- ffi (1.9.23)
49
+ dry-core (0.5.0)
50
+ concurrent-ruby (~> 1.0)
51
+ dry-equalizer (0.3.0)
52
+ dry-inflector (0.2.0)
53
+ filewatcher (1.1.1)
54
+ optimist (~> 3.0)
30
55
  gem-release (2.0.1)
31
56
  ice_nine (0.11.2)
32
- json (2.1.0)
33
- method_source (0.8.2)
34
- mini_portile2 (2.3.0)
35
- mustermann (1.0.2)
36
- nokogiri (1.8.2)
37
- mini_portile2 (~> 2.3.0)
38
- pry (0.10.4)
57
+ json (2.3.1)
58
+ method_source (0.9.0)
59
+ mini_portile2 (2.4.0)
60
+ mustermann (1.1.1)
61
+ ruby2_keywords (~> 0.0.1)
62
+ nokogiri (1.10.9)
63
+ mini_portile2 (~> 2.4.0)
64
+ optimist (3.0.1)
65
+ pry (0.11.3)
39
66
  coderay (~> 1.1.0)
40
- method_source (~> 0.8.1)
41
- slop (~> 3.4)
42
- rack (2.0.5)
43
- rack-protection (2.0.3)
67
+ method_source (~> 0.9.0)
68
+ rack (2.2.3)
69
+ rack-cors (1.1.0)
70
+ rack (>= 2.0.0)
71
+ rack-protection (2.1.0)
44
72
  rack
45
- rack-test (0.8.2)
73
+ rack-test (0.8.3)
46
74
  rack (>= 1.0, < 3)
47
- rake (11.3.0)
48
- redcarpet (3.4.0)
49
- rspec (3.5.0)
50
- rspec-core (~> 3.5.0)
51
- rspec-expectations (~> 3.5.0)
52
- rspec-mocks (~> 3.5.0)
53
- rspec-core (3.5.4)
54
- rspec-support (~> 3.5.0)
55
- rspec-expectations (3.5.0)
75
+ rake (13.0.1)
76
+ redcarpet (3.5.1)
77
+ regexp_parser (1.6.0)
78
+ rspec (3.8.0)
79
+ rspec-core (~> 3.8.0)
80
+ rspec-expectations (~> 3.8.0)
81
+ rspec-mocks (~> 3.8.0)
82
+ rspec-core (3.8.2)
83
+ rspec-support (~> 3.8.0)
84
+ rspec-expectations (3.8.4)
56
85
  diff-lcs (>= 1.2.0, < 2.0)
57
- rspec-support (~> 3.5.0)
86
+ rspec-support (~> 3.8.0)
58
87
  rspec-html-matchers (0.9.1)
59
88
  nokogiri (~> 1)
60
89
  rspec (>= 3.0.0.a, < 4)
61
- rspec-mocks (3.5.0)
90
+ rspec-mocks (3.8.1)
62
91
  diff-lcs (>= 1.2.0, < 2.0)
63
- rspec-support (~> 3.5.0)
64
- rspec-support (3.5.0)
65
- rspec_junit_formatter (0.3.0)
92
+ rspec-support (~> 3.8.0)
93
+ rspec-support (3.8.2)
94
+ rspec_junit_formatter (0.4.1)
66
95
  rspec-core (>= 2, < 4, != 2.12.0)
67
- rubyzip (1.2.1)
68
- selenium-webdriver (3.11.0)
69
- childprocess (~> 0.5)
70
- rubyzip (~> 1.2)
71
- simplecov (0.15.1)
72
- docile (~> 1.1.0)
96
+ ruby2_keywords (0.0.2)
97
+ rubyzip (1.3.0)
98
+ selenium-webdriver (3.142.7)
99
+ childprocess (>= 0.5, < 4.0)
100
+ rubyzip (>= 1.2.2)
101
+ shotgun (0.9.2)
102
+ rack (>= 1.0)
103
+ simplecov (0.16.1)
104
+ docile (~> 1.1)
73
105
  json (>= 1.8, < 3)
74
106
  simplecov-html (~> 0.10.0)
75
107
  simplecov-html (0.10.2)
76
- sinatra (2.0.3)
108
+ sinatra (2.1.0)
77
109
  mustermann (~> 1.0)
78
- rack (~> 2.0)
79
- rack-protection (= 2.0.3)
110
+ rack (~> 2.2)
111
+ rack-protection (= 2.1.0)
80
112
  tilt (~> 2.0)
81
- slop (3.6.0)
82
- thread_safe (0.3.6)
83
- tilt (2.0.8)
84
- tzinfo (1.2.5)
85
- thread_safe (~> 0.1)
86
- tzinfo-data (1.2018.5)
113
+ thor (1.0.1)
114
+ tilt (2.0.10)
115
+ tzinfo (2.0.4)
116
+ concurrent-ruby (~> 1.0)
117
+ tzinfo-data (1.2020.4)
87
118
  tzinfo (>= 1.0.0)
88
- watir (6.10.3)
89
- selenium-webdriver (~> 3.4, >= 3.4.1)
119
+ watir (6.16.5)
120
+ regexp_parser (~> 1.2)
121
+ selenium-webdriver (~> 3.6)
90
122
  watir-rspec (3.0.0)
91
123
  rspec (~> 3.0)
92
124
  watir (>= 6.0.0.beta4)
93
- webdrivers (3.2.4)
125
+ webdrivers (4.1.0)
94
126
  nokogiri (~> 1.6)
95
127
  rubyzip (~> 1.0)
96
- selenium-webdriver (~> 3.0)
128
+ selenium-webdriver (>= 3.0, < 4.0)
129
+ zeitwerk (2.4.2)
97
130
 
98
131
  PLATFORMS
99
132
  ruby
100
133
 
101
134
  DEPENDENCIES
102
135
  bundler (~> 1.13)
136
+ chart_presenter_plugin!
137
+ foo_presenter_plugin!
103
138
  gem-release (~> 2.0)
104
- pry (~> 0.10)
139
+ image_crop_presenter_plugin!
140
+ pry
141
+ rack (>= 2.0.6)
142
+ rack-cors
105
143
  rack-test (~> 0.8)
106
- rake (~> 11.3)
144
+ rake (~> 13.0)
107
145
  rspec
108
146
  rspec-html-matchers
109
147
  rspec_junit_formatter
148
+ shotgun (~> 0.9)
110
149
  simplecov
150
+ thor (~> 1.0.1)
111
151
  voom-presenters!
112
- watir (~> 6.10.3)
113
- watir-rspec
114
- webdrivers (~> 3.0)
152
+ watir (~> 6.16)
153
+ watir-rspec (~> 3.0)
154
+ webdrivers (~> 4.1)
115
155
 
116
156
  RUBY VERSION
117
- ruby 2.5.1p57
157
+ ruby 2.5.5p157
118
158
 
119
159
  BUNDLED WITH
120
- 1.16.3
160
+ 1.17.3
data/HISTORY.md ADDED
@@ -0,0 +1,61 @@
1
+ # HISTORY
2
+ This is the manual changelog, managed before switching to github_changelog_generator.
3
+
4
+ ## [0.2.00] - 2018-09-18
5
+ ### Added
6
+ - This change log
7
+ - [Namespaces]
8
+ - [Slider component]
9
+ - [Rich text component]
10
+ - [Map component]
11
+ - [Chip as input]
12
+ - [Tagged Input]
13
+ - [Grid Padding]
14
+ - [Grid Wide/Table scrolling]
15
+ - [Overline Text Style]
16
+ - [Blank lines]
17
+ - [Page separator]
18
+ - [Clear action]
19
+ - Floating content blocks
20
+ - Request logging
21
+
22
+ ### Removed
23
+ - Autocomplete event
24
+
25
+ ### Changed
26
+ - Text field - draw with outlined style by default
27
+ - Text field - support for leading or trailing icons
28
+ - Text field - disabled support
29
+ - Text area - can specify cols to control width
30
+ - Select options - can pass the option text as the first parameter, or in the block.
31
+ - List - component action blocks are now actions
32
+ - List - color and border
33
+ - Content blocks - icons support
34
+ - Events - aliases focus and blur (maps to focusin and focusout)
35
+ - Typography - available in menu items, including markdown
36
+ - Typography - removed trailing line breaks
37
+ - Rails helper table_for helper - accepts timezone for auto time formatting
38
+ - Date time - default format changed
39
+ - Webclient FAB button - shifted up and out to make room for list actions
40
+
41
+ ### Fixed
42
+ - Text field - Removed excessive trailing spacing
43
+ - Context is no longer copied and it is not included in the pom json
44
+ - List - selected lists can render selected with the checked option
45
+
46
+ [Unreleased]: https://github.com/rx/presenters/compare/v0.1.14...HEAD
47
+ [0.1.14]: https://github.com/rx/presenters/compare/v0.1.14...v0.1.13
48
+ [Namespaces]: https://powerful-bastion-96181.herokuapp.com/namespaces
49
+ [Stepper]: https://powerful-bastion-96181.herokuapp.com/steppers
50
+ [Rich text component]: https://powerful-bastion-96181.herokuapp.com/text_areas
51
+ [Slider component]: https://powerful-bastion-96181.herokuapp.com/sliders
52
+ [Tagged Input]: https://powerful-bastion-96181.herokuapp.com/tagged_input
53
+ [Overline Text Style]: https://powerful-bastion-96181.herokuapp.com/styles
54
+ [Page separator]: https://powerful-bastion-96181.herokuapp.com/separator
55
+ [Blank lines]: https://powerful-bastion-96181.herokuapp.com/styles
56
+ [Grid Padding]: https://powerful-bastion-96181.herokuapp.com/layouts
57
+ [Map component]: https://powerful-bastion-96181.herokuapp.com/maps
58
+ [Clear action]: https://powerful-bastion-96181.herokuapp.com/clear_action
59
+ [Chip as input]: https://powerful-bastion-96181.herokuapp.com/chips#input_chips
60
+ [Floating content blocks]:https://powerful-bastion-96181.herokuapp.com/content#floating
61
+ [Grid Wide/Table scrolling]:https://powerful-bastion-96181.herokuapp.com/tables
data/Procfile ADDED
@@ -0,0 +1 @@
1
+ web: rackup -p $PORT
data/README.md CHANGED
@@ -1,20 +1,21 @@
1
1
  # Voom::Presenters
2
2
 
3
3
  ## TLDR;
4
- Presenters are to HTML/User Interfaces what C is to assembly.
4
+ Do you wish you could write a modern user interface in pure Ruby?
5
5
 
6
- A Ruby DSL for describing user interfaces.
6
+ Now you can. Presenters are a Ruby DSL for rendering user interfaces.
7
7
  The semantics are adopted from [Material Design](https://material.io/).
8
8
 
9
- A presenter generates a Presenter Object Model (POM).
10
- A POM fully describes a user interface.
11
- A POM client can fully render user interface from POM.
9
+ * Presenters are to HTML/User Interfaces what C is to assembly
10
+ * A presenter generates a Presenter Object Model (POM)
11
+ * A POM fully describes a user interface
12
+ * A POM client can fully render user interface from POM
12
13
 
13
14
  ## What are voom-presenters?
14
15
 
15
- * A Ruby user interface abstraction.
16
- * A Ruby DSL to build a user interface.
17
- * A power washer for building user interfaces.
16
+ * A Ruby user interface abstraction
17
+ * A Ruby DSL to build a user interface
18
+ * A power washer for building user interfaces
18
19
 
19
20
  ## Why?
20
21
 
@@ -38,43 +39,60 @@ This concept was initially inspired by the Presenters concepts of Ivar Jacobson
38
39
 
39
40
  ## Demo
40
41
 
41
- [Demo](https://powerful-bastion-96181.herokuapp.com)
42
+ [Demo]
42
43
 
43
44
  Or to run locally:
44
45
 
45
46
  git clone git@github.com:rx/presenters.git
46
47
  cd presenters/
47
48
  bundle install
48
- rackup
49
+ bundle exec rackup
49
50
 
50
51
  open http://localhost:9292
51
52
 
52
53
  To see the POM:
53
54
 
54
55
  open http://localhost:9292/index.pom
55
-
56
+
57
+ ## Usage
58
+
59
+ To use it, add this line to your Gemfile:
56
60
 
57
- ## User Interface Engine
61
+ gem 'voom-presenters', github('rx/presenters'), require: false
62
+
63
+ Create the file app/presenters/index.pom with the contents:
64
+
65
+ Voom::Presenters.define(:hello_world) do
66
+ heading 'hello world'
67
+ end
58
68
 
59
- The POM + A POM Client is an interface engine.
69
+ ### Rails
70
+ For rails: Mount the web-client in your rails config/routes.rb
60
71
 
61
- This example downloads the POM of the index page.
62
- Then posts it to the reference web client.
63
- That result is then saved to a file and opened up with a browser.
72
+ mount ::Voom::Presenters::WebClient::App, at: '/'
73
+ # the api is optional
74
+ # mount ::Voom::Presenters::Api::App, at: '/'
64
75
 
65
- curl localhost:9292/index.pom > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html
76
+ Create an initializer `config/initializers/presenters.rb` with the following:
77
+
78
+ require 'voom'
79
+
80
+ ### Rack
81
+ Presenters are rack based. If your framework uses a rack config file add the following:
82
+
83
+ use Voom::Presenters::WebClient::App
84
+ # the api is optional
85
+ # use Voom::Presenters::Api::App
86
+
87
+ Start your app and goto [/hello_world](http://127.0.0.1:3000/hello_world)
88
+
89
+ Use the [Demo] to get example code to drop into your presetners.
66
90
 
67
91
  ## Status
68
- This project is in a pre-beta status. It is changing frequently as the first user interfaces are being built with it.
69
- Any use should be for internal use only until the status becomes beta.
92
+ This project is in a released status.
70
93
 
71
94
  [![CircleCI](https://circleci.com/gh/rx/presenters.svg?style=svg)](https://circleci.com/gh/rx/presenters)
72
- [![Maintainability](https://api.codeclimate.com/v1/badges/8fcea717485230e60f27/maintainability)](https://codeclimate.com/github/rx/presenters/maintainability)
73
95
  [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=plastic)](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
74
-
75
- ## Usage
76
-
77
- TODO: Write usage instructions here
78
96
 
79
97
  ## Contributing
80
98
 
@@ -84,3 +102,9 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/rx/pre
84
102
 
85
103
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
86
104
 
105
+ ## Code of Conduct
106
+
107
+ Everyone interacting in the Voom::Presenters project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rx/presenters/blob/master/CODE-OF-CONDUCT.md).
108
+
109
+
110
+ [Demo]:https://powerful-bastion-96181.herokuapp.com
@@ -42,7 +42,7 @@ Voom::Presenters.define(:component_status) do
42
42
 
43
43
  ]
44
44
  table do
45
- row do
45
+ header do
46
46
  items.each do |item|
47
47
  column color: item_color(item)
48
48
  column item[:text]
@@ -0,0 +1,40 @@
1
+ Voom::Presenters.define(:avatars) do
2
+ attach :top_nav
3
+ attach :component_drawer
4
+ page_title 'Avatars'
5
+
6
+ grid do
7
+ column 1
8
+ column 10 do
9
+ body 'An avatar can contain an image or icon. Avatars can be used within a list line, the media section of a card, a content block or column.'
10
+
11
+ grid do
12
+ column 6 do
13
+ headline 'Types'
14
+ body '**With an Icon**'
15
+ avatar :thumb_up
16
+ body '**With an Image**'
17
+ avatar 'img/demo/avatar.jpg'
18
+ end
19
+ end
20
+
21
+ grid do
22
+ column 6 do
23
+ headline 'Sizes'
24
+ body '**small**'
25
+ avatar :person, size: :small
26
+ body '**medium** (default)'
27
+ avatar 'img/demo/image_card.jpg', size: :medium
28
+ body '**large**'
29
+ avatar :cake, size: :large
30
+ body '**x-large**'
31
+ avatar :golf_course, size: 'x-large'
32
+ body '**xx-large**'
33
+ avatar 'img/demo/avatar.jpg', size: 'xx-large'
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+
40
+ end