voom-presenters 0.1.10 → 2.0.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 (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 +39 -0
  8. data/.gitignore +4 -2
  9. data/.releaserc +8 -0
  10. data/.ruby-version +2 -1
  11. data/CHANGELOG.md +136 -0
  12. data/CODE-OF-CONDUCT.md +73 -0
  13. data/CONTRIBUTING.md +60 -0
  14. data/Gemfile +12 -3
  15. data/Gemfile.lock +106 -64
  16. data/HISTORY.md +61 -0
  17. data/Procfile +1 -0
  18. data/README.md +75 -22
  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/bin/presenters +3 -0
  85. data/component-status.yml +26 -26
  86. data/config.ru +21 -10
  87. data/docs/settings.md +81 -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 -59
  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/lockable.rb +1 -5
  210. data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
  211. data/lib/voom/presenters/dsl/user_interface.rb +50 -33
  212. data/lib/voom/presenters/errors.rb +1 -0
  213. data/lib/voom/presenters/errors/invalid_dsl.rb +8 -0
  214. data/lib/voom/presenters/errors/parameter_validation.rb +1 -3
  215. data/lib/voom/presenters/generators/inflectors.rb +59 -0
  216. data/lib/voom/presenters/generators/plugin.rb +115 -0
  217. data/lib/voom/presenters/generators/templates/plugin/.gitignore +12 -0
  218. data/lib/voom/presenters/generators/templates/plugin/Gemfile +6 -0
  219. data/lib/voom/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  220. data/lib/voom/presenters/generators/templates/plugin/README.md +253 -0
  221. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/action.rb.tt +16 -0
  222. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  223. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/component.rb.tt +18 -0
  224. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/dsl.rb.tt +19 -0
  225. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/helpers/helper.rb.tt +15 -0
  226. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/plugin.rb.tt +9 -0
  227. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  228. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/render.rb.tt +23 -0
  229. data/lib/voom/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  230. data/lib/voom/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  231. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  232. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  233. data/lib/voom/presenters/generators/templates/plugin/views/components/component.erb.tt +14 -0
  234. data/lib/voom/presenters/generators/templates/plugin/views/components/component_header.erb.tt +20 -0
  235. data/lib/voom/presenters/helpers.rb +2 -8
  236. data/lib/voom/presenters/helpers/date.rb +3 -3
  237. data/lib/voom/presenters/helpers/inflector.rb +1 -1
  238. data/lib/voom/presenters/helpers/rails.rb +18 -6
  239. data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
  240. data/lib/voom/presenters/helpers/redact.rb +13 -0
  241. data/lib/voom/presenters/helpers/route.rb +15 -2
  242. data/lib/voom/presenters/helpers/time.rb +1 -1
  243. data/lib/voom/presenters/namespace.rb +12 -0
  244. data/lib/voom/presenters/pluggable.rb +37 -0
  245. data/lib/voom/presenters/plugins.rb +7 -0
  246. data/lib/voom/presenters/plugins/google_maps.rb +24 -0
  247. data/lib/voom/presenters/plugins/google_maps/google_map.erb +10 -0
  248. data/lib/voom/presenters/plugins/google_maps/google_map.rb +41 -0
  249. data/lib/voom/presenters/{dsl.rb → registry.rb} +14 -10
  250. data/lib/voom/presenters/router.rb +59 -0
  251. data/lib/voom/presenters/settings.rb +70 -39
  252. data/lib/voom/presenters/version.rb +1 -1
  253. data/lib/voom/presenters/web_client/app.rb +125 -38
  254. data/lib/voom/presenters/web_client/component_decorator_factory.rb +27 -0
  255. data/lib/voom/presenters/web_client/component_html_decorator.rb +50 -0
  256. data/lib/voom/presenters/web_client/component_renderer.rb +49 -0
  257. data/lib/voom/presenters/web_client/custom_css.rb +65 -0
  258. data/lib/voom/presenters/web_client/custom_render.rb +31 -0
  259. data/lib/voom/presenters/web_client/helpers/expand_hash.rb +19 -0
  260. data/lib/voom/presenters/web_client/helpers/form_helpers.rb +14 -0
  261. data/lib/voom/presenters/web_client/helpers/padding_helpers.rb +21 -0
  262. data/lib/voom/presenters/web_client/plugin_headers.rb +37 -0
  263. data/lib/voom/presenters/web_client/router.rb +3 -89
  264. data/lib/voom/railtie.rb +37 -0
  265. data/lib/voom/serializer.rb +2 -2
  266. data/lib/voom/symbol/to_str.rb +3 -3
  267. data/lib/voom/trace.rb +0 -2
  268. data/presenters.gemspec +12 -5
  269. data/public/bundle.css +18221 -0
  270. data/public/bundle.js +59949 -0
  271. data/public/img/demo/avatar.jpg +0 -0
  272. data/public/presenters/custom_css.css +26 -0
  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 -10
  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 +23 -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 +10 -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 +2 -2
  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 +43 -0
  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 +353 -31
  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 -40
  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 -3
  506. data/scripts/deploy-demo.sh +0 -2
  507. data/scripts/release.sh +0 -4
  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
@@ -1,118 +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.9)
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)
55
+ gem-release (2.0.1)
30
56
  ice_nine (0.11.2)
31
- json (2.1.0)
32
- method_source (0.8.2)
33
- mini_portile2 (2.3.0)
34
- mustermann (1.0.2)
35
- nokogiri (1.8.2)
36
- mini_portile2 (~> 2.3.0)
37
- 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)
38
66
  coderay (~> 1.1.0)
39
- method_source (~> 0.8.1)
40
- slop (~> 3.4)
41
- rack (2.0.5)
42
- 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)
43
72
  rack
44
- rack-test (0.8.2)
73
+ rack-test (0.8.3)
45
74
  rack (>= 1.0, < 3)
46
- rake (11.3.0)
47
- redcarpet (3.4.0)
48
- rspec (3.5.0)
49
- rspec-core (~> 3.5.0)
50
- rspec-expectations (~> 3.5.0)
51
- rspec-mocks (~> 3.5.0)
52
- rspec-core (3.5.4)
53
- rspec-support (~> 3.5.0)
54
- 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)
55
85
  diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.5.0)
86
+ rspec-support (~> 3.8.0)
57
87
  rspec-html-matchers (0.9.1)
58
88
  nokogiri (~> 1)
59
89
  rspec (>= 3.0.0.a, < 4)
60
- rspec-mocks (3.5.0)
90
+ rspec-mocks (3.8.1)
61
91
  diff-lcs (>= 1.2.0, < 2.0)
62
- rspec-support (~> 3.5.0)
63
- rspec-support (3.5.0)
64
- 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)
65
95
  rspec-core (>= 2, < 4, != 2.12.0)
66
- rubyzip (1.2.1)
67
- selenium-webdriver (3.11.0)
68
- childprocess (~> 0.5)
69
- rubyzip (~> 1.2)
70
- simplecov (0.15.1)
71
- 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)
72
105
  json (>= 1.8, < 3)
73
106
  simplecov-html (~> 0.10.0)
74
107
  simplecov-html (0.10.2)
75
- sinatra (2.0.3)
108
+ sinatra (2.1.0)
76
109
  mustermann (~> 1.0)
77
- rack (~> 2.0)
78
- rack-protection (= 2.0.3)
110
+ rack (~> 2.2)
111
+ rack-protection (= 2.1.0)
79
112
  tilt (~> 2.0)
80
- slop (3.6.0)
81
- thread_safe (0.3.6)
82
- tilt (2.0.8)
83
- tzinfo (1.2.5)
84
- thread_safe (~> 0.1)
85
- 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)
86
118
  tzinfo (>= 1.0.0)
87
- watir (6.10.3)
88
- selenium-webdriver (~> 3.4, >= 3.4.1)
119
+ watir (6.16.5)
120
+ regexp_parser (~> 1.2)
121
+ selenium-webdriver (~> 3.6)
89
122
  watir-rspec (3.0.0)
90
123
  rspec (~> 3.0)
91
124
  watir (>= 6.0.0.beta4)
92
- webdrivers (3.2.4)
125
+ webdrivers (4.1.0)
93
126
  nokogiri (~> 1.6)
94
127
  rubyzip (~> 1.0)
95
- selenium-webdriver (~> 3.0)
128
+ selenium-webdriver (>= 3.0, < 4.0)
129
+ zeitwerk (2.4.2)
96
130
 
97
131
  PLATFORMS
98
132
  ruby
99
133
 
100
134
  DEPENDENCIES
101
135
  bundler (~> 1.13)
102
- pry (~> 0.10)
136
+ chart_presenter_plugin!
137
+ foo_presenter_plugin!
138
+ gem-release (~> 2.0)
139
+ image_crop_presenter_plugin!
140
+ pry
141
+ rack (>= 2.0.6)
142
+ rack-cors
103
143
  rack-test (~> 0.8)
104
- rake (~> 11.3)
144
+ rake (~> 13.0)
105
145
  rspec
106
146
  rspec-html-matchers
107
147
  rspec_junit_formatter
148
+ shotgun (~> 0.9)
108
149
  simplecov
150
+ thor (~> 1.0.1)
109
151
  voom-presenters!
110
- watir (~> 6.10.3)
111
- watir-rspec
112
- webdrivers (~> 3.0)
152
+ watir (~> 6.16)
153
+ watir-rspec (~> 3.0)
154
+ webdrivers (~> 4.1)
113
155
 
114
156
  RUBY VERSION
115
- ruby 2.5.0p0
157
+ ruby 2.5.5p157
116
158
 
117
159
  BUNDLED WITH
118
- 1.16.1
160
+ 1.17.3
@@ -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
@@ -0,0 +1 @@
1
+ web: rackup -p $PORT
data/README.md CHANGED
@@ -1,51 +1,98 @@
1
1
  # Voom::Presenters
2
2
 
3
- A Ruby DSL for describing user interfaces.
3
+ ## TLDR;
4
+ Do you wish you could write a modern user interface in pure Ruby?
5
+
6
+ Now you can. Presenters are a Ruby DSL for rendering user interfaces.
4
7
  The semantics are adopted from [Material Design](https://material.io/).
5
8
 
6
- A presenter generates a Presenter Object Model (POM).
7
- A POM fully describes a user interface.
8
- 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
13
+
14
+ ## What are voom-presenters?
15
+
16
+ * A Ruby user interface abstraction
17
+ * A Ruby DSL to build a user interface
18
+ * A power washer for building user interfaces
19
+
20
+ ## Why?
21
+
22
+ Building a user interface should like Ruby itself:
23
+ > ... a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
24
+
25
+ Instead building a user interface has turned into:
26
+ > How many languages/technologies/frameworks do I need to learn to build a rich user interface/experience?"
27
+
28
+ A typical web client requires at a minimum the following: HTML, CSS, Javascript, in addition we need Ruby on the server, plus some SQL.
29
+ That is 5 technologies/languages.
30
+ Now lets talk about a new client like an iOS or Android client. If we go native, we can now add Java and Swift to that list. We are up to 7 technologies/languages!
31
+ We didn't even add any popular extras like coffeescript, haml, sass, and we left out frameworks.
32
+
33
+ What if you could write all my user interface in Ruby and have it rendered natively in ANY client? The voom-presenters _enable_ that. It is a Ruby DSL that describes a user interface.
34
+ It generates an intermediate Presenter Object Model (POM).
35
+ The POM is a declarative user interface that can be rendered by a POM client.
36
+ The core presenters gem provides a Web client as a fully functional reference implementation.
37
+
38
+ This concept was initially inspired by the Presenters concepts of Ivar Jacobson as presented by Robert Martin.
9
39
 
10
40
  ## Demo
11
41
 
12
- [Demo](https://powerful-bastion-96181.herokuapp.com)
42
+ [Demo]
13
43
 
14
44
  Or to run locally:
15
45
 
16
46
  git clone git@github.com:rx/presenters.git
17
47
  cd presenters/
18
48
  bundle install
19
- rackup
49
+ bundle exec rackup
20
50
 
21
- open htt://localhost:9292
51
+ open http://localhost:9292
22
52
 
23
53
  To see the POM:
24
54
 
25
- open htt://localhost:9292/pom
26
-
55
+ open http://localhost:9292/index.pom
56
+
57
+ ## Usage
58
+
59
+ To use it, add this line to your Gemfile:
60
+
61
+ gem 'voom-presenters', github('rx/presenters'), require: false
27
62
 
28
- ## User Interface Engine
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
29
68
 
30
- The POM + A POM Client is an interface engine.
69
+ ### Rails
70
+ For rails: Mount the web-client in your rails config/routes.rb
31
71
 
32
- This example downloads the POM of the index page.
33
- Then posts it to the reference web client.
34
- 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: '/'
75
+
76
+ Create an initializer `config/initializers/presenters.rb` with the following:
35
77
 
36
- curl localhost:9292/pom/index > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html
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.
37
90
 
38
91
  ## Status
39
- This project is in a pre-beta status. It is changing frequently as the first user interfaces are being built with it.
40
- Any use should be for internal use only until the status becomes beta.
92
+ This project is in a released status.
41
93
 
42
94
  [![CircleCI](https://circleci.com/gh/rx/presenters.svg?style=svg)](https://circleci.com/gh/rx/presenters)
43
- [![Maintainability](https://api.codeclimate.com/v1/badges/8fcea717485230e60f27/maintainability)](https://codeclimate.com/github/rx/presenters/maintainability)
44
95
  [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=plastic)](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
45
-
46
- ## Usage
47
-
48
- TODO: Write usage instructions here
49
96
 
50
97
  ## Contributing
51
98
 
@@ -55,3 +102,9 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/rx/pre
55
102
 
56
103
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
57
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