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
@@ -0,0 +1,254 @@
1
+ Voom::Presenters.define(:chart, namespace: :plugins) do
2
+ helpers Demo::Helpers::IndentedGrid
3
+ attach :top_nav
4
+ attach :plugin_drawer
5
+ plugin :chart
6
+
7
+ page_title 'Chart'
8
+
9
+ indented_grid do
10
+ text 'Based on the [c3 charting library](https://c3js.org/examples.html).'
11
+
12
+ title 'Line Chart'
13
+ text '[Line chart with sequential data](https://c3js.org/samples/simple_multiple.html).'
14
+ chart data: {
15
+ columns: [
16
+ ['data1', 30, 200, 100, 400, 150, 250],
17
+ ['data2', 50, 20, 10, 40, 15, 25]
18
+ ]
19
+ }
20
+
21
+ title 'Timeseries Chart'
22
+ text '[Simple line chart with timeseries data](https://c3js.org/samples/timeseries.html).'
23
+ chart data: {
24
+ x: 'x',
25
+ columns: [
26
+ ['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'],
27
+ ['data1', 30, 200, 100, 400, 150, 250],
28
+ ['data2', 130, 340, 200, 500, 250, 350]
29
+ ]},
30
+ axis: {
31
+ x: {
32
+ type: 'timeseries',
33
+ tick: {
34
+ format: '%Y-%m-%d'
35
+ }
36
+ }
37
+ }
38
+
39
+ title 'Spline Chart'
40
+ text '[Display as Spline Chart](https://c3js.org/samples/chart_spline.html).'
41
+ chart data: {
42
+ columns: [
43
+ ['data1', 30, 200, 100, 400, 150, 250],
44
+ ['data2', 130, 100, 140, 200, 150, 50]
45
+ ],
46
+ type: 'spline'
47
+ }
48
+
49
+ title 'Simple XY Line Chart'
50
+ text '[Simple line chart with custom x](https://c3js.org/samples/simple_xy.html).'
51
+ chart data: {
52
+ x: 'x',
53
+ columns: [
54
+ ['x', 30, 50, 100, 230, 300, 310],
55
+ ['data1', 30, 200, 100, 400, 150, 250],
56
+ ['data2', 130, 300, 200, 300, 250, 450]
57
+ ]
58
+ }
59
+
60
+ title 'Multiple XY Line Chart'
61
+ text '[Multiple line chart with multiple custom x](https://c3js.org/samples/simple_xy_multiple.html).'
62
+ chart data: {
63
+ xs: {
64
+ 'data1': 'x1',
65
+ 'data2': 'x2',
66
+ },
67
+ columns: [
68
+ ['x1', 10, 30, 45, 50, 70, 100],
69
+ ['x2', 30, 50, 75, 100, 120],
70
+ ['data1', 30, 200, 100, 400, 150, 250],
71
+ ['data2', 20, 180, 240, 100, 190]
72
+ ]
73
+ }
74
+
75
+ title 'Line Chart with Regions'
76
+ text '[Set regions for each data with style](https://c3js.org/samples/simple_regions.html).'
77
+ chart data: {
78
+ columns: [
79
+ ['data1', 30, 200, 100, 400, 150, 250],
80
+ ['data2', 50, 20, 10, 40, 15, 25]
81
+ ],
82
+ regions: {
83
+ 'data1': [{'start': 1, 'end': 2, 'style': 'dashed'}, {'start': 3}],
84
+ 'data2': [{'end': 3}]
85
+ }
86
+ }
87
+
88
+ title 'Step Chart'
89
+ text '[Display as Step Chart](https://c3js.org/samples/chart_step.html).'
90
+ chart data: {
91
+ columns: [
92
+ ['data1', 300, 350, 300, 0, 0, 100],
93
+ ['data2', 130, 100, 140, 200, 150, 50]
94
+ ],
95
+ types: {
96
+ data1: 'step',
97
+ data2: 'area-step'
98
+ }
99
+ }
100
+
101
+ title 'Area Chart'
102
+ text '[Display as Area Chart](https://c3js.org/samples/chart_area.html).'
103
+ chart data: {
104
+ columns: [
105
+ ['data1', 300, 350, 300, 0, 0, 0],
106
+ ['data2', 130, 100, 140, 200, 150, 50]
107
+ ],
108
+ types: {
109
+ data1: 'area',
110
+ data2: 'area-spline'
111
+ }
112
+ }
113
+
114
+ title 'Stacked Area Chart'
115
+ text '[Display as Stacked Area Chart](https://c3js.org/samples/chart_area_stacked.html).'
116
+ chart data: {
117
+ columns: [
118
+ ['data1', 300, 350, 300, 0, 0, 120],
119
+ ['data2', 130, 100, 140, 200, 150, 50]
120
+ ],
121
+ types: {
122
+ data1: 'area-spline',
123
+ data2: 'area-spline'
124
+ },
125
+ groups: [['data1', 'data2']]
126
+ }
127
+
128
+ title 'Bar Chart'
129
+ text '[Display as Bar Chart](https://c3js.org/samples/chart_bar.html).'
130
+ chart data: {
131
+ columns: [
132
+ ['data1', 30, 200, 100, 400, 150, 250],
133
+ ['data2', 130, 100, 140, 200, 150, 50]
134
+ ],
135
+ type: 'bar'
136
+ },
137
+ bar: {
138
+ width: {
139
+ ratio: 0.5
140
+ }
141
+ }
142
+
143
+ title 'Stacked Bar Chart'
144
+ text '[Display as Stacked Bar Chart](https://c3js.org/samples/chart_bar_stacked.html).'
145
+ chart data: {
146
+ columns: [
147
+ ['data1', -30, 200, 200, 400, -150, 250],
148
+ ['data2', 130, 100, -100, 200, -150, 50],
149
+ ['data3', -230, 200, 200, -300, 250, 250]
150
+ ],
151
+ type: 'bar',
152
+ groups: [
153
+ ['data1', 'data2']
154
+ ]
155
+ },
156
+ grid: {
157
+ y: {
158
+ lines: [{value: 0}]
159
+ }
160
+ }
161
+
162
+ title 'Scatter Plot'
163
+ text '[Display as Scatter Plot](https://c3js.org/samples/chart_scatter.html).'
164
+ chart data: {
165
+ xs: {
166
+ setosa: 'setosa_x',
167
+ versicolor: 'versicolor_x',
168
+ },
169
+ columns: [
170
+ ["setosa_x", 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.0, 4.0, 4.4, 3.9, 3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3.0, 3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.6, 3.0, 3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3.0, 3.8, 3.2, 3.7, 3.3],
171
+ ["versicolor_x", 3.2, 3.2, 3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2.0, 3.0, 2.2, 2.9, 2.9, 3.1, 3.0, 2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3.0, 2.8, 3.0, 2.9, 2.6, 2.4, 2.4, 2.7, 2.7, 3.0, 3.4, 3.1, 2.3, 3.0, 2.5, 2.6, 3.0, 2.6, 2.3, 2.7, 3.0, 2.9, 2.9, 2.5, 2.8],
172
+ ["setosa", 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0.3, 0.3, 0.3, 0.2, 0.4, 0.2, 0.5, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2, 0.4, 0.1, 0.2, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.3, 0.3, 0.2, 0.6, 0.4, 0.3, 0.2, 0.2, 0.2, 0.2],
173
+ ["versicolor", 1.4, 1.5, 1.5, 1.3, 1.5, 1.3, 1.6, 1.0, 1.3, 1.4, 1.0, 1.5, 1.0, 1.4, 1.3, 1.4, 1.5, 1.0, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4, 1.4, 1.7, 1.5, 1.0, 1.1, 1.0, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3, 1.3, 1.3, 1.2, 1.4, 1.2, 1.0, 1.3, 1.2, 1.3, 1.3, 1.1, 1.3],
174
+ ],
175
+ type: 'scatter'
176
+ },
177
+ axis: {
178
+ x: {
179
+ label: 'Sepal.Width',
180
+ tick: {
181
+ fit: false
182
+ }
183
+ },
184
+ y: {
185
+ label: 'Petal.Width'
186
+ }
187
+ }
188
+
189
+ title 'Pie Chart'
190
+ text '[Display as Pie Chart](https://c3js.org/samples/chart_pie.html).'
191
+ chart data: {
192
+ columns: [
193
+ ['data1', 30],
194
+ ['data2', 120],
195
+ ],
196
+ type: 'pie'
197
+ }
198
+
199
+ title 'Donut Chart'
200
+ text '[Display as Donut Chart](https://c3js.org/samples/chart_donut.html).'
201
+ chart data: {
202
+ columns: [
203
+ ['data1', 30],
204
+ ['data2', 120],
205
+ ],
206
+ type: 'donut'
207
+ },
208
+ donut: {title: 'Iris-Petal-Width'}
209
+
210
+
211
+ title 'Gauge Chart'
212
+ text '[Display as Gauge Chart](https://c3js.org/samples/chart_gauge.html).'
213
+ chart data: {
214
+ columns: [
215
+ ['data', 91.4]
216
+ ],
217
+ type: 'gauge'
218
+ },
219
+ color: {
220
+ pattern: ['#FF0000', '#F97600', '#F6C600', '#60B044'],
221
+ threshold: {
222
+ values: [30, 60, 90, 100]
223
+ }
224
+ },
225
+ size: {
226
+ height: 180
227
+ }
228
+
229
+ title 'Combination Chart'
230
+ text '[Display all kinda charts up in here](https://c3js.org/samples/chart_combination.html).'
231
+ chart data: {
232
+ columns: [
233
+ ['data1', 30, 20, 50, 40, 60, 50],
234
+ ['data2', 200, 130, 90, 240, 130, 220],
235
+ ['data3', 300, 200, 160, 400, 250, 250],
236
+ ['data4', 200, 130, 90, 240, 130, 220],
237
+ ['data5', 130, 120, 150, 140, 160, 150],
238
+ ['data6', 90, 70, 20, 50, 60, 120],
239
+ ],
240
+ type: 'bar',
241
+ types: {
242
+ data3: 'spline',
243
+ data4: 'line',
244
+ data6: 'area',
245
+ },
246
+ groups: [
247
+ ['data1', 'data2']
248
+ ]
249
+ }
250
+
251
+ end
252
+ attach :code, file: __FILE__
253
+ end
254
+
@@ -0,0 +1,44 @@
1
+ Voom::Presenters.define(:image_crop, namespace: :plugins) do
2
+ helpers Demo::Helpers::IndentedGrid
3
+ attach :top_nav
4
+ attach :plugin_drawer
5
+ plugin :image_crop
6
+
7
+ page_title 'Image Crop'
8
+
9
+ indented_grid do
10
+ title 'Drag and drop with cropper preview'
11
+ grid do
12
+ column 6 do
13
+ image_crop id: :event_image,
14
+ aspect_ratio: 1.0,
15
+ image: 'https://cdn.mos.cms.futurecdn.net/4f6d31c116fdada59a5cb16d136e3068-970-80.jpg' do
16
+ end
17
+ end
18
+ column 6 do
19
+ file_input name: :event_file_name, preview: :event_image, accept: 'image/png, image/jpeg, image/gif, image/svg+xml' do
20
+ grid do
21
+ column 12 do
22
+ card do
23
+ text 'Drop it here'
24
+ button icon: :cloud_upload
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ event :change do
31
+ replaces :context_list, ':context_list'
32
+ end
33
+ end
34
+ end
35
+
36
+ # image_crop do
37
+ # event :change do
38
+ # replaces :context_list, ':context_list'
39
+ # end
40
+ # end
41
+ attach 'context_list'
42
+ attach :code, file: __FILE__
43
+ end
44
+
@@ -0,0 +1,29 @@
1
+ Voom::Presenters.define(:index, namespace: :plugins) do
2
+ helpers Demo::Helpers::IndentedGrid
3
+ attach :top_nav
4
+ attach :plugin_drawer
5
+ plugin :foo
6
+
7
+ indented_grid do
8
+ display 'Sample Plugin'
9
+ body 'You can extend the presenters by writing a plugin.'
10
+ body 'Plugins can fully extend and override built in presenter behavior.'
11
+ blank
12
+ icon 'fa-hand-point-left', position: :left
13
+ subheading 'Select a plugin to get started'
14
+ blank
15
+ body 'The plugin generator is the easiest way to get started.'
16
+ body 'presenters generate plugin <your plugin name>'
17
+ blank
18
+ body 'For a complete example checkout the sample '\
19
+ '[foo_presenter_plugin](https://github.com/rx/foo_presenter_plugin).'
20
+ foo(random_fact)
21
+ button 'New Random Fact' do
22
+ event :click do
23
+ bar 'Showing new random fact!'
24
+ snackbar last_response.data
25
+ end
26
+ end
27
+ end
28
+ attach :code, file: __FILE__
29
+ end
@@ -0,0 +1,19 @@
1
+ Voom::Presenters.define(:plugin_drawer, namespace: :plugins) do
2
+ helpers Voom::Presenters::Helpers::Inflector
3
+ drawer 'Plugins' do
4
+ menu do
5
+ item 'Sample Plugin' do
6
+ event :click do
7
+ loads :index
8
+ end
9
+ end
10
+ %i(image_crop chart).sort.each do |comp|
11
+ item titleize(comp) do
12
+ event :click do
13
+ loads comp
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -9,14 +9,14 @@ Voom::Presenters.define(:context_list) do
9
9
  end
10
10
 
11
11
  def scrubbed_context
12
- scrubbed_keys = context.fetch(:exclude) {%w{title file hide_time}}
12
+ scrubbed_keys = context.fetch(:exclude) {%w{title file hide_time _presenter_ _namespace1_ session}}
13
13
  context.select {|k, _| !scrubbed_keys.include?(k.to_s)}
14
14
  end
15
15
  end
16
16
  content id: :context_list do
17
17
  grid do
18
18
  column 12 do
19
- display title
19
+ headline title
20
20
  subheading "#{time}"
21
21
  list do
22
22
  scrubbed_context.map {|k, v| "#{k}: #{v}"}.each do |param|
data/app/demo/styles.pom CHANGED
@@ -8,23 +8,35 @@ Voom::Presenters.define(:styles) do
8
8
  end
9
9
 
10
10
  indented_grid do
11
- display 'Styles'
11
+ headline'Typography', level: 1
12
12
 
13
- # heading is an alias for display
14
- heading 'Typography', level: 4
15
- display 'Display 4', level: 4
16
- display 'Display 3', level: 3
17
- display 'Display 2', level: 2
18
- display 'Display 1', level: 1
19
- headline 'Headline'
20
- title 'Title'
21
- subheading 'Subheading 2', level: 2
22
- subheading 'Subheading 1', level: 1
13
+ headline 'Headline 1', level: 1
14
+ headline 'Headline 2', level: 2
15
+ headline 'Headline 3', level: 3
16
+ headline 'Headline 4', level: 4
17
+ headline 'Headline 5', level: 5
18
+ headline 'Default Headline Size'
19
+ headline 'Headline 6', level: 6
20
+ title 'Title'
21
+ subtitle 'subtitle 1', level: 1
22
+ subtitle 'subtitle 2', level: 2
23
23
  body ['Body 1 paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut',
24
24
  'labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut',
25
25
  'aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat',
26
26
  'nulla pariatur.'], level: 1
27
27
  body 'Body 2 text, calling something out.', level: 2
28
+ caption 'Caption'
29
+ overline 'Overline'
28
30
  body 'You can use [markdown](/markdown) in your typography'
31
+ body '`blank` will insert a blank line'
32
+ blank
33
+ body 'Line above me, intentionally left blank'
34
+ separator
35
+ body 'Line above me is a separator'
36
+ link 'You can have a link', 'https://www.google.com/search?q=link&source=lnms&tbm=isch&sa=X&ved=0ahUKEwipr4zY_JXdAhVNXK0KHWFNCdYQ_AUICigB&biw=1651&bih=932'
37
+ blank
38
+ link 'I open in a new tab or window', 'https://example.com', target: :blank
39
+
29
40
  end
30
- end
41
+ attach :code, file: __FILE__
42
+ end
data/bin/console CHANGED
@@ -15,8 +15,8 @@ Voom::Presenters::App.boot!
15
15
  # with your gem easier. You can also use a different console, if you like.
16
16
 
17
17
  # (If you use this, don't forget to add pry to your Gemfile!)
18
- # require "pry"
19
- # Pry.start
18
+ require "pry"
19
+ Pry.start
20
20
 
21
- require 'irb'
22
- IRB.start
21
+ # require 'irb'
22
+ # IRB.start
data/component-status.yml CHANGED
@@ -49,20 +49,20 @@
49
49
  Notes:
50
50
  -
51
51
  Components: Data tables
52
- Implementation: MDL
52
+ Implementation: MDC
53
53
  MDL:
54
- MDC: N
54
+ MDC: Y
55
55
  Priority:
56
56
  Completeness: 2
57
57
  Notes:
58
58
  -
59
59
  Components: Dialogs
60
- Implementation: MDL
60
+ Implementation: MDC
61
61
  MDL:
62
62
  MDC: Y
63
63
  Priority: High
64
- Completeness: 1
65
- Notes: Current implementation from MDL and polyfil does not work on iOS/Safari. Port to MDC.
64
+ Completeness: 2
65
+ Notes:
66
66
  -
67
67
  Components: Dividers
68
68
  Implementation: N
@@ -121,20 +121,20 @@
121
121
  Notes: Date, time, datetime are supported.
122
122
  -
123
123
  Components: Progress & activity
124
- Implementation: N
124
+ Implementation: MDC
125
125
  MDL:
126
126
  MDC: Y
127
- Priority: medium
128
- Completeness:
127
+ Priority:
128
+ Completeness: 1
129
129
  Notes:
130
130
  -
131
131
  Components: Selection controls/switches
132
- Implementation: MDL/MDC
132
+ Implementation: MDC
133
133
  MDL:
134
134
  MDC: Y
135
135
  Priority:
136
- Completeness: 1
137
- Notes: The checkboxes and radio buttons from MDL need to be ported to MDC.
136
+ Completeness: 2
137
+ Notes:
138
138
  -
139
139
  Components: Select fields
140
140
  Implementation: MDC
@@ -145,11 +145,11 @@
145
145
  Notes:
146
146
  -
147
147
  Components: Sliders
148
- Implementation: N
148
+ Implementation: MDC
149
149
  MDL:
150
150
  MDC: Y
151
151
  Priority: medium
152
- Completeness:
152
+ Completeness: 2
153
153
  Notes:
154
154
  -
155
155
  Components: Snackbars & toasts
@@ -161,11 +161,11 @@
161
161
  Notes:
162
162
  -
163
163
  Components: Steppers
164
- Implementation: N
165
- MDL: N
164
+ Implementation: MDL
165
+ MDL: Y
166
166
  MDC: N
167
167
  Priority: medium
168
- Completeness:
168
+ Completeness: 1
169
169
  Notes: https://ahlechandre.github.io/mdl-stepper/
170
170
  -
171
171
  Components: Subheaders
@@ -177,11 +177,11 @@
177
177
  Notes: This should be doable using typography
178
178
  -
179
179
  Components: Tabs
180
- Implementation: N
180
+ Implementation: Y
181
181
  MDL:
182
182
  MDC: Y
183
- Priority: medium
184
- Completeness:
183
+ Priority:
184
+ Completeness: 2
185
185
  Notes:
186
186
  -
187
187
  Components: Text fields
@@ -210,10 +210,10 @@
210
210
  The list icons are not displaying tooltips.
211
211
  **Help wanted**
212
212
  -
213
- Components: Widgets
214
- Implementation: N
215
- MDL: N
216
- MDC: N
217
- Priority: medium
218
- Completeness:
219
- Notes: Need extension/plugin design with ace editor and charts as available plugins.
213
+ Components: Widgets/Plugins
214
+ Implementation: Various
215
+ MDL: N/A
216
+ MDC: N/A
217
+ Priority:
218
+ Completeness: 2
219
+ Notes: Handled by presenter plugins.