voom-presenters 0.1.13 → 2.0.3

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 (514) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  5. data/.github/ISSUE_TEMPLATE/questions-support.md +10 -0
  6. data/.github/workflows/semantic-release.yml +42 -0
  7. data/.gitignore +3 -2
  8. data/.releaserc +15 -0
  9. data/.ruby-version +2 -1
  10. data/CHANGELOG.md +143 -0
  11. data/CONTRIBUTING.md +60 -0
  12. data/Gemfile +14 -4
  13. data/Gemfile.lock +111 -65
  14. data/HISTORY.md +61 -0
  15. data/Procfile +1 -0
  16. data/README.md +55 -24
  17. data/app/demo/components/avatars.pom +40 -0
  18. data/app/demo/components/cards.pom +11 -4
  19. data/app/demo/components/chips.pom +65 -52
  20. data/app/demo/components/content.pom +111 -0
  21. data/app/demo/components/date_fields.pom +1 -1
  22. data/app/demo/components/datetime_fields.pom +6 -0
  23. data/app/demo/components/dialogs.pom +175 -6
  24. data/app/demo/components/drawers.pom +1 -1
  25. data/app/demo/components/file_inputs.pom +52 -0
  26. data/app/demo/components/footers.pom +1 -1
  27. data/app/demo/components/google_maps.pom +22 -0
  28. data/app/demo/components/headers.pom +80 -20
  29. data/app/demo/components/icons.pom +86 -55
  30. data/app/demo/components/image_lists.pom +100 -0
  31. data/app/demo/components/images.pom +45 -0
  32. data/app/demo/components/layouts.pom +15 -5
  33. data/app/demo/components/lists.pom +48 -3
  34. data/app/demo/components/menus.pom +14 -4
  35. data/app/demo/components/nav/menu.pom +40 -2
  36. data/app/demo/components/nav/pattern_drawer.pom +5 -0
  37. data/app/demo/components/nav/pattern_menu.pom +12 -0
  38. data/app/demo/components/number_fields.pom +53 -0
  39. data/app/demo/components/padding.pom +96 -0
  40. data/app/demo/components/progress.pom +71 -0
  41. data/app/demo/components/selects.pom +44 -5
  42. data/app/demo/components/sliders.pom +54 -0
  43. data/app/demo/components/snackbar.pom +10 -0
  44. data/app/demo/components/steppers.pom +178 -0
  45. data/app/demo/components/tab_bars.pom +66 -0
  46. data/app/demo/components/tables.pom +96 -13
  47. data/app/demo/components/text_areas.pom +23 -3
  48. data/app/demo/components/text_fields.pom +75 -17
  49. data/app/demo/components/toggles.pom +83 -16
  50. data/app/demo/components/tooltips.pom +10 -10
  51. data/app/demo/components/unordered_list.pom +81 -0
  52. data/app/demo/custom_css.pom +37 -0
  53. data/app/demo/events/actions/autocomplete.pom +3 -3
  54. data/app/demo/events/actions/clear.pom +25 -0
  55. data/app/demo/events/actions/dialogs/discard.pom +9 -0
  56. data/app/demo/events/actions/dialogs/show_dialog.pom +4 -2
  57. data/app/demo/events/actions/last_response.pom +40 -0
  58. data/app/demo/events/actions/loads.pom +16 -6
  59. data/app/demo/events/actions/posts.pom +1 -1
  60. data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
  61. data/app/demo/events/actions/toggle_visiblity.pom +4 -3
  62. data/app/demo/events/content_as_form.pom +313 -0
  63. data/app/demo/events/nav/drawer.pom +7 -3
  64. data/app/demo/events/parallel.pom +44 -0
  65. data/app/demo/events/tagged_input.pom +37 -0
  66. data/app/demo/hello_world.pom +3 -0
  67. data/app/demo/index.pom +5 -5
  68. data/app/demo/markdown.pom +1 -0
  69. data/app/demo/namespaces.pom +89 -0
  70. data/app/demo/nav/top_nav.pom +22 -4
  71. data/app/demo/patterns.pom +19 -0
  72. data/app/demo/patterns/drag_drop.pom +89 -0
  73. data/app/demo/patterns/floating_card.pom +29 -0
  74. data/app/demo/patterns/search_select.pom +106 -0
  75. data/app/demo/plugins/chart.pom +254 -0
  76. data/app/demo/plugins/image_crop.pom +44 -0
  77. data/app/demo/plugins/index.pom +29 -0
  78. data/app/demo/plugins/nav/drawer.pom +19 -0
  79. data/app/demo/shared/context_list.pom +2 -2
  80. data/app/demo/styles.pom +24 -12
  81. data/bin/console +4 -4
  82. data/component-status.yml +26 -26
  83. data/config.ru +21 -10
  84. data/docs/settings.md +81 -0
  85. data/exe/presenters +3 -0
  86. data/lib/hash_ext/traverse.rb +14 -0
  87. data/lib/voom.rb +25 -0
  88. data/lib/voom/container_methods.rb +2 -2
  89. data/lib/voom/engine.rb +5 -0
  90. data/lib/voom/presenters/api/app.rb +46 -13
  91. data/lib/voom/presenters/api/router.rb +3 -87
  92. data/lib/voom/presenters/app.rb +3 -3
  93. data/lib/voom/presenters/cli.rb +28 -0
  94. data/lib/voom/presenters/demo/dragon_drop.rb +48 -0
  95. data/lib/voom/presenters/demo/echo.rb +7 -0
  96. data/lib/voom/presenters/demo/slow.rb +18 -0
  97. data/lib/voom/presenters/dsl/components/actions/autocomplete.rb +15 -0
  98. data/lib/voom/presenters/dsl/components/actions/base.rb +65 -0
  99. data/lib/voom/presenters/dsl/components/actions/clear.rb +15 -0
  100. data/lib/voom/presenters/dsl/components/actions/close_dialog.rb +17 -0
  101. data/lib/voom/presenters/dsl/components/actions/deletes.rb +15 -0
  102. data/lib/voom/presenters/dsl/components/actions/dialog.rb +15 -0
  103. data/lib/voom/presenters/dsl/components/actions/loads.rb +31 -0
  104. data/lib/voom/presenters/dsl/components/actions/navigates.rb +15 -0
  105. data/lib/voom/presenters/dsl/components/actions/post_message.rb +17 -0
  106. data/lib/voom/presenters/dsl/components/actions/posts.rb +20 -0
  107. data/lib/voom/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
  108. data/lib/voom/presenters/dsl/components/actions/remove.rb +15 -0
  109. data/lib/voom/presenters/dsl/components/actions/replaces.rb +25 -0
  110. data/lib/voom/presenters/dsl/components/actions/snackbar.rb +15 -0
  111. data/lib/voom/presenters/dsl/components/actions/stepper.rb +15 -0
  112. data/lib/voom/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
  113. data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
  114. data/lib/voom/presenters/dsl/components/actions/updates.rb +20 -0
  115. data/lib/voom/presenters/dsl/components/avatar.rb +5 -10
  116. data/lib/voom/presenters/dsl/components/badge.rb +0 -2
  117. data/lib/voom/presenters/dsl/components/base.rb +37 -21
  118. data/lib/voom/presenters/dsl/components/button.rb +23 -17
  119. data/lib/voom/presenters/dsl/components/card.rb +54 -42
  120. data/lib/voom/presenters/dsl/components/checkbox.rb +2 -2
  121. data/lib/voom/presenters/dsl/components/chip.rb +10 -13
  122. data/lib/voom/presenters/dsl/components/chipset.rb +33 -0
  123. data/lib/voom/presenters/dsl/components/content.rb +33 -13
  124. data/lib/voom/presenters/dsl/components/date_field.rb +1 -1
  125. data/lib/voom/presenters/dsl/components/datetime_base.rb +0 -3
  126. data/lib/voom/presenters/dsl/components/datetime_field.rb +0 -2
  127. data/lib/voom/presenters/dsl/components/dialog.rb +41 -13
  128. data/lib/voom/presenters/dsl/components/drawer.rb +13 -8
  129. data/lib/voom/presenters/dsl/components/event.rb +117 -60
  130. data/lib/voom/presenters/dsl/components/event_base.rb +1 -3
  131. data/lib/voom/presenters/dsl/components/expansion_panel.rb +3 -6
  132. data/lib/voom/presenters/dsl/components/file_input.rb +34 -0
  133. data/lib/voom/presenters/dsl/components/footer.rb +2 -2
  134. data/lib/voom/presenters/dsl/components/form.rb +3 -16
  135. data/lib/voom/presenters/dsl/components/grid.rb +64 -22
  136. data/lib/voom/presenters/dsl/components/header.rb +19 -6
  137. data/lib/voom/presenters/dsl/components/hidden_field.rb +1 -3
  138. data/lib/voom/presenters/dsl/components/icon.rb +3 -6
  139. data/lib/voom/presenters/dsl/components/icon_base.rb +6 -8
  140. data/lib/voom/presenters/dsl/components/icon_toggle.rb +3 -5
  141. data/lib/voom/presenters/dsl/components/image.rb +61 -13
  142. data/lib/voom/presenters/dsl/components/image_list.rb +43 -0
  143. data/lib/voom/presenters/dsl/components/input.rb +14 -5
  144. data/lib/voom/presenters/dsl/components/link.rb +33 -0
  145. data/lib/voom/presenters/dsl/components/list.rb +11 -16
  146. data/lib/voom/presenters/dsl/components/lists/action.rb +11 -14
  147. data/lib/voom/presenters/dsl/components/lists/actions.rb +7 -10
  148. data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
  149. data/lib/voom/presenters/dsl/components/lists/line.rb +34 -25
  150. data/lib/voom/presenters/dsl/components/lists/separator.rb +2 -2
  151. data/lib/voom/presenters/dsl/components/menu.rb +56 -16
  152. data/lib/voom/presenters/dsl/components/mixins/append.rb +2 -2
  153. data/lib/voom/presenters/dsl/components/mixins/attaches.rb +7 -3
  154. data/lib/voom/presenters/dsl/components/mixins/avatar.rb +1 -4
  155. data/lib/voom/presenters/dsl/components/mixins/buttons.rb +1 -1
  156. data/lib/voom/presenters/dsl/components/mixins/chips.rb +0 -3
  157. data/lib/voom/presenters/dsl/components/mixins/chipset.rb +19 -0
  158. data/lib/voom/presenters/dsl/components/mixins/common.rb +21 -16
  159. data/lib/voom/presenters/dsl/components/mixins/content.rb +1 -1
  160. data/lib/voom/presenters/dsl/components/mixins/date_time_fields.rb +0 -3
  161. data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +0 -3
  162. data/lib/voom/presenters/dsl/components/mixins/event.rb +2 -4
  163. data/lib/voom/presenters/dsl/components/mixins/expansion_panels.rb +1 -1
  164. data/lib/voom/presenters/dsl/components/mixins/file_inputs.rb +16 -0
  165. data/lib/voom/presenters/dsl/components/mixins/google_maps.rb +15 -0
  166. data/lib/voom/presenters/dsl/components/mixins/grids.rb +1 -1
  167. data/lib/voom/presenters/dsl/components/mixins/icons.rb +0 -1
  168. data/lib/voom/presenters/dsl/components/mixins/image_lists.rb +15 -0
  169. data/lib/voom/presenters/dsl/components/mixins/last_response.rb +48 -0
  170. data/lib/voom/presenters/dsl/components/mixins/menus.rb +1 -1
  171. data/lib/voom/presenters/dsl/components/mixins/padding.rb +42 -0
  172. data/lib/voom/presenters/dsl/components/mixins/progress.rb +16 -0
  173. data/lib/voom/presenters/dsl/components/mixins/selects.rb +0 -1
  174. data/lib/voom/presenters/dsl/components/mixins/sliders.rb +15 -0
  175. data/lib/voom/presenters/dsl/components/mixins/snackbars.rb +0 -1
  176. data/lib/voom/presenters/dsl/components/mixins/steppers.rb +15 -0
  177. data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +17 -0
  178. data/lib/voom/presenters/dsl/components/mixins/tables.rb +15 -0
  179. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +10 -3
  180. data/lib/voom/presenters/dsl/components/mixins/toggles.rb +0 -5
  181. data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +0 -1
  182. data/lib/voom/presenters/dsl/components/mixins/typography.rb +91 -14
  183. data/lib/voom/presenters/dsl/components/mixins/yield_to.rb +2 -2
  184. data/lib/voom/presenters/dsl/components/number_field.rb +20 -0
  185. data/lib/voom/presenters/dsl/components/page.rb +0 -1
  186. data/lib/voom/presenters/dsl/components/page_title.rb +31 -0
  187. data/lib/voom/presenters/dsl/components/progress.rb +27 -0
  188. data/lib/voom/presenters/dsl/components/radio_button.rb +0 -1
  189. data/lib/voom/presenters/dsl/components/rich_text_area.rb +20 -0
  190. data/lib/voom/presenters/dsl/components/select.rb +23 -12
  191. data/lib/voom/presenters/dsl/components/separator.rb +21 -0
  192. data/lib/voom/presenters/dsl/components/slider.rb +38 -0
  193. data/lib/voom/presenters/dsl/components/snackbar.rb +2 -2
  194. data/lib/voom/presenters/dsl/components/stepper.rb +96 -0
  195. data/lib/voom/presenters/dsl/components/switch.rb +0 -2
  196. data/lib/voom/presenters/dsl/components/tab_bar.rb +50 -0
  197. data/lib/voom/presenters/dsl/components/table.rb +126 -35
  198. data/lib/voom/presenters/dsl/components/text_area.rb +4 -5
  199. data/lib/voom/presenters/dsl/components/text_field.rb +55 -16
  200. data/lib/voom/presenters/dsl/components/time_field.rb +0 -2
  201. data/lib/voom/presenters/dsl/components/toggle_base.rb +8 -6
  202. data/lib/voom/presenters/dsl/components/tooltip.rb +1 -2
  203. data/lib/voom/presenters/dsl/components/typography.rb +6 -7
  204. data/lib/voom/presenters/dsl/components/unordered_list.rb +50 -0
  205. data/lib/voom/presenters/dsl/definer.rb +0 -4
  206. data/lib/voom/presenters/dsl/definition.rb +9 -6
  207. data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
  208. data/lib/voom/presenters/dsl/user_interface.rb +43 -32
  209. data/lib/voom/presenters/errors.rb +1 -0
  210. data/lib/voom/presenters/errors/invalid_dsl.rb +8 -0
  211. data/lib/voom/presenters/errors/parameter_validation.rb +1 -3
  212. data/lib/voom/presenters/generators/inflectors.rb +59 -0
  213. data/lib/voom/presenters/generators/plugin.rb +115 -0
  214. data/lib/voom/presenters/generators/templates/plugin/.gitignore +12 -0
  215. data/lib/voom/presenters/generators/templates/plugin/Gemfile +6 -0
  216. data/lib/voom/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  217. data/lib/voom/presenters/generators/templates/plugin/README.md +253 -0
  218. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/action.rb.tt +16 -0
  219. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  220. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/component.rb.tt +18 -0
  221. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/dsl.rb.tt +19 -0
  222. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/helpers/helper.rb.tt +15 -0
  223. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/plugin.rb.tt +9 -0
  224. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  225. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/render.rb.tt +23 -0
  226. data/lib/voom/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  227. data/lib/voom/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  228. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  229. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  230. data/lib/voom/presenters/generators/templates/plugin/views/components/component.erb.tt +14 -0
  231. data/lib/voom/presenters/generators/templates/plugin/views/components/component_header.erb.tt +20 -0
  232. data/lib/voom/presenters/helpers.rb +2 -8
  233. data/lib/voom/presenters/helpers/date.rb +3 -3
  234. data/lib/voom/presenters/helpers/inflector.rb +1 -1
  235. data/lib/voom/presenters/helpers/rails.rb +18 -6
  236. data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
  237. data/lib/voom/presenters/helpers/redact.rb +13 -0
  238. data/lib/voom/presenters/helpers/route.rb +15 -2
  239. data/lib/voom/presenters/helpers/time.rb +1 -1
  240. data/lib/voom/presenters/namespace.rb +12 -0
  241. data/lib/voom/presenters/pluggable.rb +37 -0
  242. data/lib/voom/presenters/plugins.rb +7 -0
  243. data/lib/voom/presenters/plugins/google_maps.rb +24 -0
  244. data/lib/voom/presenters/plugins/google_maps/google_map.erb +10 -0
  245. data/lib/voom/presenters/plugins/google_maps/google_map.rb +41 -0
  246. data/lib/voom/presenters/{dsl.rb → registry.rb} +14 -10
  247. data/lib/voom/presenters/router.rb +59 -0
  248. data/lib/voom/presenters/settings.rb +70 -39
  249. data/lib/voom/presenters/version.rb +3 -1
  250. data/lib/voom/presenters/web_client/app.rb +121 -34
  251. data/lib/voom/presenters/web_client/component_decorator_factory.rb +27 -0
  252. data/lib/voom/presenters/web_client/component_html_decorator.rb +50 -0
  253. data/lib/voom/presenters/web_client/component_renderer.rb +49 -0
  254. data/lib/voom/presenters/web_client/custom_css.rb +65 -0
  255. data/lib/voom/presenters/web_client/custom_render.rb +31 -0
  256. data/lib/voom/presenters/web_client/helpers/expand_hash.rb +19 -0
  257. data/lib/voom/presenters/web_client/helpers/form_helpers.rb +14 -0
  258. data/lib/voom/presenters/web_client/helpers/padding_helpers.rb +21 -0
  259. data/lib/voom/presenters/web_client/plugin_headers.rb +37 -0
  260. data/lib/voom/presenters/web_client/router.rb +3 -89
  261. data/lib/voom/railtie.rb +37 -0
  262. data/lib/voom/serializer.rb +2 -2
  263. data/lib/voom/symbol/to_str.rb +3 -3
  264. data/lib/voom/trace.rb +0 -2
  265. data/presenters.gemspec +12 -7
  266. data/public/bundle.css +18221 -0
  267. data/public/bundle.js +59949 -0
  268. data/public/img/demo/avatar.jpg +0 -0
  269. data/public/presenters/custom_css.css +26 -0
  270. data/public/style-bundle.js +2 -2
  271. data/public/wc.js +52704 -0
  272. data/scripts/build.sh +10 -0
  273. data/views/mdc/.babelrc +8 -0
  274. data/views/mdc/.eslintrc.yml +24 -0
  275. data/views/mdc/.nvmrc +1 -0
  276. data/views/mdc/assets/js/app.js +30 -6
  277. data/views/mdc/assets/js/components/base-component.js +160 -2
  278. data/views/mdc/assets/js/components/base-container.js +87 -0
  279. data/views/mdc/assets/js/components/base-toggle.js +56 -0
  280. data/views/mdc/assets/js/components/button.js +71 -9
  281. data/views/mdc/assets/js/components/cards.js +13 -2
  282. data/views/mdc/assets/js/components/checkboxes.js +11 -11
  283. data/views/mdc/assets/js/components/chips.js +104 -7
  284. data/views/mdc/assets/js/components/content.js +14 -0
  285. data/views/mdc/assets/js/components/data-tables.js +15 -0
  286. data/views/mdc/assets/js/components/datetime.js +83 -20
  287. data/views/mdc/assets/js/components/dialogs.js +130 -27
  288. data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
  289. data/views/mdc/assets/js/components/drawer.js +43 -0
  290. data/views/mdc/assets/js/components/events.js +195 -68
  291. data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
  292. data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
  293. data/views/mdc/assets/js/components/events/autocomplete.js +15 -17
  294. data/views/mdc/assets/js/components/events/base.js +142 -16
  295. data/views/mdc/assets/js/components/events/clears.js +15 -12
  296. data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
  297. data/views/mdc/assets/js/components/events/dialog.js +32 -14
  298. data/views/mdc/assets/js/components/events/encode.js +8 -0
  299. data/views/mdc/assets/js/components/events/errors.js +175 -92
  300. data/views/mdc/assets/js/components/events/loads.js +50 -11
  301. data/views/mdc/assets/js/components/events/navigates.js +17 -15
  302. data/views/mdc/assets/js/components/events/plugin.js +18 -0
  303. data/views/mdc/assets/js/components/events/post_message.js +21 -0
  304. data/views/mdc/assets/js/components/events/posts.js +169 -47
  305. data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
  306. data/views/mdc/assets/js/components/events/removes.js +21 -0
  307. data/views/mdc/assets/js/components/events/replaces.js +110 -57
  308. data/views/mdc/assets/js/components/events/snackbar.js +10 -10
  309. data/views/mdc/assets/js/components/events/stepper.js +21 -0
  310. data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
  311. data/views/mdc/assets/js/components/events/toggle_visibility.js +62 -16
  312. data/views/mdc/assets/js/components/file-inputs.js +76 -0
  313. data/views/mdc/assets/js/components/form-fields.js +16 -0
  314. data/views/mdc/assets/js/components/forms.js +9 -60
  315. data/views/mdc/assets/js/components/get_event_target.js +15 -0
  316. data/views/mdc/assets/js/components/grid.js +21 -0
  317. data/views/mdc/assets/js/components/header.js +20 -0
  318. data/views/mdc/assets/js/components/hidden-fields.js +44 -0
  319. data/views/mdc/assets/js/components/icon-toggles.js +10 -17
  320. data/views/mdc/assets/js/components/images.js +19 -0
  321. data/views/mdc/assets/js/components/initialize.js +62 -18
  322. data/views/mdc/assets/js/components/lists.js +10 -5
  323. data/views/mdc/assets/js/components/menus.js +66 -20
  324. data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
  325. data/views/mdc/assets/js/components/mixins/event-handler.js +7 -7
  326. data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -0
  327. data/views/mdc/assets/js/components/plugins.js +86 -0
  328. data/views/mdc/assets/js/components/progress.js +31 -0
  329. data/views/mdc/assets/js/components/radios.js +14 -0
  330. data/views/mdc/assets/js/components/rich-text-area.js +227 -0
  331. data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
  332. data/views/mdc/assets/js/components/root_document.js +5 -0
  333. data/views/mdc/assets/js/components/selects.js +41 -30
  334. data/views/mdc/assets/js/components/sliders.js +67 -0
  335. data/views/mdc/assets/js/components/snackbar.js +17 -23
  336. data/views/mdc/assets/js/components/steppers.js +48 -0
  337. data/views/mdc/assets/js/components/switches.js +10 -32
  338. data/views/mdc/assets/js/components/tab-bars.js +28 -0
  339. data/views/mdc/assets/js/components/text-fields.js +117 -43
  340. data/views/mdc/assets/js/components/tooltip.js +17 -0
  341. data/views/mdc/assets/js/components/typography.js +28 -0
  342. data/views/mdc/assets/js/components/uninitialize.js +7 -0
  343. data/views/mdc/assets/js/config.js +27 -0
  344. data/views/mdc/assets/js/mdl-stepper.js +1108 -0
  345. data/views/mdc/assets/js/utils/compatibility.js +9 -0
  346. data/views/mdc/assets/js/utils/config.js +73 -0
  347. data/views/mdc/assets/js/utils/config.test.js +59 -0
  348. data/views/mdc/assets/js/utils/urls.js +5 -2
  349. data/views/mdc/assets/js/wc.js +111 -0
  350. data/views/mdc/assets/scss/app.scss +20 -5
  351. data/views/mdc/assets/scss/components/avatar.scss +51 -7
  352. data/views/mdc/assets/scss/components/button.scss +20 -7
  353. data/views/mdc/assets/scss/components/card.scss +13 -7
  354. data/views/mdc/assets/scss/components/checkbox.scss +0 -4
  355. data/views/mdc/assets/scss/components/chip.scss +4 -0
  356. data/views/mdc/assets/scss/components/content.scss +36 -0
  357. data/views/mdc/assets/scss/components/data-table.scss +91 -0
  358. data/views/mdc/assets/scss/components/datetime.scss +7 -2
  359. data/views/mdc/assets/scss/components/dialog.scss +7 -2
  360. data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
  361. data/views/mdc/assets/scss/components/drawer.scss +82 -0
  362. data/views/mdc/assets/scss/components/expansion-panel.scss +2 -2
  363. data/views/mdc/assets/scss/components/fab.scss +23 -4
  364. data/views/mdc/assets/scss/components/file-input.scss +18 -0
  365. data/views/mdc/assets/scss/components/grid.scss +74 -3
  366. data/views/mdc/assets/scss/components/header.scss +21 -0
  367. data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
  368. data/views/mdc/assets/scss/components/icon.scss +23 -0
  369. data/views/mdc/assets/scss/components/image-list.scss +18 -0
  370. data/views/mdc/assets/scss/components/image.scss +14 -16
  371. data/views/mdc/assets/scss/components/list.scss +19 -0
  372. data/views/mdc/assets/scss/components/menu.scss +14 -3
  373. data/views/mdc/assets/scss/components/progress.scss +1 -0
  374. data/views/mdc/assets/scss/components/radio.scss +4 -0
  375. data/views/mdc/assets/scss/components/rich-text-area.scss +73 -0
  376. data/views/mdc/assets/scss/components/select.scss +6 -3
  377. data/views/mdc/assets/scss/components/separator.scss +3 -0
  378. data/views/mdc/assets/scss/components/slider.scss +1 -0
  379. data/views/mdc/assets/scss/components/snackbar.scss +1 -5
  380. data/views/mdc/assets/scss/components/stepper.scss +235 -0
  381. data/views/mdc/assets/scss/components/switch.scss +13 -4
  382. data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
  383. data/views/mdc/assets/scss/components/textfield.scss +14 -3
  384. data/views/mdc/assets/scss/components/tooltip.scss +3 -0
  385. data/views/mdc/assets/scss/components/typography.scss +10 -0
  386. data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
  387. data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
  388. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +1 -1
  389. data/views/mdc/assets/scss/media.scss +39 -0
  390. data/views/mdc/assets/scss/palette.scss +16 -0
  391. data/views/mdc/assets/scss/styles.scss +40 -1
  392. data/views/mdc/assets/scss/theme.scss +25 -2
  393. data/views/mdc/body/dismissable-drawer.erb +34 -0
  394. data/views/mdc/body/drawer/divider.erb +1 -0
  395. data/views/mdc/body/drawer/item.erb +13 -0
  396. data/views/mdc/body/drawer/label.erb +1 -0
  397. data/views/mdc/body/drawers/menu.erb +1 -1
  398. data/views/mdc/body/footers/menu_item.erb +2 -2
  399. data/views/mdc/body/header.erb +38 -30
  400. data/views/mdc/body/modal-drawer.erb +35 -0
  401. data/views/mdc/body/snackbar.erb +12 -6
  402. data/views/mdc/components/actions/autocomplete.rb +8 -0
  403. data/views/mdc/components/actions/clear.rb +11 -0
  404. data/views/mdc/components/actions/close_dialog.rb +10 -0
  405. data/views/mdc/components/actions/delete.rb +11 -0
  406. data/views/mdc/components/actions/dialog.rb +11 -0
  407. data/views/mdc/components/actions/loads.rb +17 -0
  408. data/views/mdc/components/actions/navigates.rb +11 -0
  409. data/views/mdc/components/actions/post.rb +14 -0
  410. data/views/mdc/components/actions/post_message.rb +10 -0
  411. data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
  412. data/views/mdc/components/actions/remove.rb +10 -0
  413. data/views/mdc/components/actions/replaces.rb +16 -0
  414. data/views/mdc/components/actions/resolver.rb +39 -0
  415. data/views/mdc/components/actions/snackbar.rb +12 -0
  416. data/views/mdc/components/actions/stepper.rb +10 -0
  417. data/views/mdc/components/actions/toggle_disabled.rb +10 -0
  418. data/views/mdc/components/actions/toggle_visibility.rb +10 -0
  419. data/views/mdc/components/actions/update.rb +10 -0
  420. data/views/mdc/components/avatar.erb +12 -7
  421. data/views/mdc/components/badge.erb +1 -1
  422. data/views/mdc/components/button.erb +10 -8
  423. data/views/mdc/components/buttons/button.erb +19 -14
  424. data/views/mdc/components/buttons/fab.erb +9 -2
  425. data/views/mdc/components/buttons/icon.erb +12 -5
  426. data/views/mdc/components/buttons/image.erb +11 -5
  427. data/views/mdc/components/{display.erb → caption.erb} +0 -0
  428. data/views/mdc/components/card.erb +67 -41
  429. data/views/mdc/components/checkbox.erb +32 -23
  430. data/views/mdc/components/chip.erb +39 -22
  431. data/views/mdc/components/chipset.erb +18 -0
  432. data/views/mdc/components/content.erb +37 -11
  433. data/views/mdc/components/datetime.erb +12 -17
  434. data/views/mdc/components/dialog.erb +45 -22
  435. data/views/mdc/components/drag_and_drop/drag_and_drop.rb +16 -0
  436. data/views/mdc/components/event.erb +3 -9
  437. data/views/mdc/components/expansion_panel.erb +8 -6
  438. data/views/mdc/components/file_input.erb +17 -0
  439. data/views/mdc/components/form.erb +7 -8
  440. data/views/mdc/components/grid.erb +27 -10
  441. data/views/mdc/components/headline.erb +2 -0
  442. data/views/mdc/components/hidden_field.erb +5 -1
  443. data/views/mdc/components/icon.erb +7 -5
  444. data/views/mdc/components/icon_toggle.erb +9 -8
  445. data/views/mdc/components/image.erb +23 -5
  446. data/views/mdc/components/image_list.erb +38 -0
  447. data/views/mdc/components/link.erb +3 -13
  448. data/views/mdc/components/list.erb +9 -4
  449. data/views/mdc/components/list/actions/switch.erb +1 -1
  450. data/views/mdc/components/list/avatar.erb +2 -1
  451. data/views/mdc/components/list/header.erb +5 -3
  452. data/views/mdc/components/list/hidden_field.erb +3 -0
  453. data/views/mdc/components/list/icon.erb +2 -1
  454. data/views/mdc/components/list/line.erb +24 -13
  455. data/views/mdc/components/list/menu.erb +7 -2
  456. data/views/mdc/components/list/separator.erb +1 -1
  457. data/views/mdc/components/menu.erb +20 -16
  458. data/views/mdc/components/number_field.erb +38 -0
  459. data/views/mdc/components/{subheading.erb → overline.erb} +0 -0
  460. data/views/mdc/components/page_title.erb +2 -2
  461. data/views/mdc/components/progress.erb +11 -0
  462. data/views/mdc/components/radio_button.erb +19 -10
  463. data/views/mdc/components/render.erb +2 -3
  464. data/views/mdc/components/rich_text_area.erb +22 -0
  465. data/views/mdc/components/select.erb +28 -8
  466. data/views/mdc/components/separator.erb +3 -0
  467. data/views/mdc/components/shared/hint_error_display.erb +9 -0
  468. data/views/mdc/components/shared/input_label.erb +7 -0
  469. data/views/mdc/components/slider.erb +43 -0
  470. data/views/mdc/components/snackbar.erb +2 -6
  471. data/views/mdc/components/stepper.erb +47 -0
  472. data/views/mdc/components/stepper/step.erb +33 -0
  473. data/views/mdc/components/{title.erb → subtitle.erb} +0 -0
  474. data/views/mdc/components/switch.erb +28 -12
  475. data/views/mdc/components/tab_bar.erb +35 -0
  476. data/views/mdc/components/table.erb +28 -13
  477. data/views/mdc/components/table/checkbox.erb +20 -0
  478. data/views/mdc/components/table/column.erb +18 -0
  479. data/views/mdc/components/table/footer.erb +8 -0
  480. data/views/mdc/components/table/header.erb +14 -4
  481. data/views/mdc/components/table/pagination.erb +11 -24
  482. data/views/mdc/components/table/row.erb +7 -5
  483. data/views/mdc/components/text_area.erb +15 -7
  484. data/views/mdc/components/text_field.erb +38 -28
  485. data/views/mdc/components/tooltip.erb +2 -2
  486. data/views/mdc/components/typography.erb +7 -5
  487. data/views/mdc/components/unordered_list.erb +10 -0
  488. data/views/mdc/components/unordered_list/icon.erb +3 -0
  489. data/views/mdc/components/unordered_list/list_item.erb +7 -0
  490. data/views/mdc/layout.erb +45 -31
  491. data/views/mdc/package-lock.json +11801 -6869
  492. data/views/mdc/package.json +66 -29
  493. data/views/mdc/web.erb +4 -0
  494. data/views/mdc/webpack.config.js +14 -1
  495. metadata +327 -37
  496. data/app/demo/component_status.pom +0 -76
  497. data/app/demo/components/forms.pom +0 -31
  498. data/lib/voom-presenters.rb +0 -9
  499. data/lib/voom/presenters-engine.rb +0 -41
  500. data/lib/voom/presenters.rb +0 -13
  501. data/lib/voom/presenters/dsl/components/action.rb +0 -35
  502. data/lib/voom/presenters/web_client/markdown_render.rb +0 -16
  503. data/public/.gitignore +0 -2
  504. data/scripts/bump.sh +0 -4
  505. data/scripts/deploy-demo.sh +0 -2
  506. data/scripts/release.sh +0 -5
  507. data/views/mdc/assets/js/dialog-polyfill.js +0 -738
  508. data/views/mdc/assets/js/material.js +0 -3996
  509. data/views/mdc/assets/scss/components/icon-toggles.scss +0 -9
  510. data/views/mdc/assets/scss/components/table-pagination.scss +0 -65
  511. data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +0 -13
  512. data/views/mdc/body/drawer.erb +0 -18
  513. data/views/mdc/components/modal.erb +0 -15
  514. data/views/mdc/components/static.erb +0 -7
data/HISTORY.md ADDED
@@ -0,0 +1,61 @@
1
+ # HISTORY
2
+ This is the manual changelog, managed before switching to github_changelog_generator.
3
+
4
+ ## [0.2.00] - 2018-09-18
5
+ ### Added
6
+ - This change log
7
+ - [Namespaces]
8
+ - [Slider component]
9
+ - [Rich text component]
10
+ - [Map component]
11
+ - [Chip as input]
12
+ - [Tagged Input]
13
+ - [Grid Padding]
14
+ - [Grid Wide/Table scrolling]
15
+ - [Overline Text Style]
16
+ - [Blank lines]
17
+ - [Page separator]
18
+ - [Clear action]
19
+ - Floating content blocks
20
+ - Request logging
21
+
22
+ ### Removed
23
+ - Autocomplete event
24
+
25
+ ### Changed
26
+ - Text field - draw with outlined style by default
27
+ - Text field - support for leading or trailing icons
28
+ - Text field - disabled support
29
+ - Text area - can specify cols to control width
30
+ - Select options - can pass the option text as the first parameter, or in the block.
31
+ - List - component action blocks are now actions
32
+ - List - color and border
33
+ - Content blocks - icons support
34
+ - Events - aliases focus and blur (maps to focusin and focusout)
35
+ - Typography - available in menu items, including markdown
36
+ - Typography - removed trailing line breaks
37
+ - Rails helper table_for helper - accepts timezone for auto time formatting
38
+ - Date time - default format changed
39
+ - Webclient FAB button - shifted up and out to make room for list actions
40
+
41
+ ### Fixed
42
+ - Text field - Removed excessive trailing spacing
43
+ - Context is no longer copied and it is not included in the pom json
44
+ - List - selected lists can render selected with the checked option
45
+
46
+ [Unreleased]: https://github.com/rx/presenters/compare/v0.1.14...HEAD
47
+ [0.1.14]: https://github.com/rx/presenters/compare/v0.1.14...v0.1.13
48
+ [Namespaces]: https://powerful-bastion-96181.herokuapp.com/namespaces
49
+ [Stepper]: https://powerful-bastion-96181.herokuapp.com/steppers
50
+ [Rich text component]: https://powerful-bastion-96181.herokuapp.com/text_areas
51
+ [Slider component]: https://powerful-bastion-96181.herokuapp.com/sliders
52
+ [Tagged Input]: https://powerful-bastion-96181.herokuapp.com/tagged_input
53
+ [Overline Text Style]: https://powerful-bastion-96181.herokuapp.com/styles
54
+ [Page separator]: https://powerful-bastion-96181.herokuapp.com/separator
55
+ [Blank lines]: https://powerful-bastion-96181.herokuapp.com/styles
56
+ [Grid Padding]: https://powerful-bastion-96181.herokuapp.com/layouts
57
+ [Map component]: https://powerful-bastion-96181.herokuapp.com/maps
58
+ [Clear action]: https://powerful-bastion-96181.herokuapp.com/clear_action
59
+ [Chip as input]: https://powerful-bastion-96181.herokuapp.com/chips#input_chips
60
+ [Floating content blocks]:https://powerful-bastion-96181.herokuapp.com/content#floating
61
+ [Grid Wide/Table scrolling]:https://powerful-bastion-96181.herokuapp.com/tables
data/Procfile ADDED
@@ -0,0 +1 @@
1
+ web: rackup -p $PORT
data/README.md CHANGED
@@ -1,20 +1,21 @@
1
1
  # Voom::Presenters
2
2
 
3
3
  ## TLDR;
4
- Presenters are to HTML/User Interfaces what C is to assembly.
4
+ Do you wish you could write a modern user interface in pure Ruby?
5
5
 
6
- A Ruby DSL for describing user interfaces.
6
+ Now you can. Presenters are a Ruby DSL for rendering user interfaces.
7
7
  The semantics are adopted from [Material Design](https://material.io/).
8
8
 
9
- A presenter generates a Presenter Object Model (POM).
10
- A POM fully describes a user interface.
11
- A POM client can fully render user interface from POM.
9
+ * Presenters are to HTML/User Interfaces what C is to assembly
10
+ * A presenter generates a Presenter Object Model (POM)
11
+ * A POM fully describes a user interface
12
+ * A POM client can fully render user interface from POM
12
13
 
13
14
  ## What are voom-presenters?
14
15
 
15
- * A Ruby user interface abstraction.
16
- * A Ruby DSL to build a user interface.
17
- * A power washer for building user interfaces.
16
+ * A Ruby user interface abstraction
17
+ * A Ruby DSL to build a user interface
18
+ * A power washer for building user interfaces
18
19
 
19
20
  ## Why?
20
21
 
@@ -38,43 +39,67 @@ This concept was initially inspired by the Presenters concepts of Ivar Jacobson
38
39
 
39
40
  ## Demo
40
41
 
41
- [Demo](https://powerful-bastion-96181.herokuapp.com)
42
+ [Demo](https://coprl-ruby.herokuapp.com/)
42
43
 
43
44
  Or to run locally:
44
45
 
45
46
  git clone git@github.com:rx/presenters.git
46
47
  cd presenters/
47
48
  bundle install
48
- rackup
49
+ bundle exec rackup
49
50
 
50
51
  open http://localhost:9292
52
+
53
+ > Note: Demo defaults to Ruby version 2.7.3 in the .ruby-version file. If you want to run a different version
54
+ > -- set RBENV_VERSION to your desired version.
55
+ > For example:
56
+ > ```
57
+ > RBENV_VERSION=2.5.5 bundle insatall
58
+ > RBENV_VERSION=2.5.5 bundle exec rackup```
51
59
 
52
60
  To see the POM:
53
61
 
54
62
  open http://localhost:9292/index.pom
55
-
63
+
64
+ ## Usage
65
+
66
+ To use it, add this line to your Gemfile:
56
67
 
57
- ## User Interface Engine
68
+ gem 'voom-presenters', github('rx/presenters'), require: false
69
+
70
+ Create the file app/presenters/index.pom with the contents:
71
+
72
+ Voom::Presenters.define(:hello_world) do
73
+ heading 'hello world'
74
+ end
58
75
 
59
- The POM + A POM Client is an interface engine.
76
+ ### Rails
77
+ For rails: Mount the web-client in your rails config/routes.rb
60
78
 
61
- This example downloads the POM of the index page.
62
- Then posts it to the reference web client.
63
- That result is then saved to a file and opened up with a browser.
79
+ mount ::Voom::Presenters::WebClient::App, at: '/'
80
+ # the api is optional
81
+ # mount ::Voom::Presenters::Api::App, at: '/'
64
82
 
65
- curl localhost:9292/index.pom > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html
83
+ Create an initializer `config/initializers/presenters.rb` with the following:
84
+
85
+ require 'voom'
86
+
87
+ ### Rack
88
+ Presenters are rack based. If your framework uses a rack config file add the following:
89
+
90
+ use Voom::Presenters::WebClient::App
91
+ # the api is optional
92
+ # use Voom::Presenters::Api::App
93
+
94
+ Start your app and goto [/hello_world](http://127.0.0.1:3000/hello_world)
95
+
96
+ Use the [Demo] to get example code to drop into your presetners.
66
97
 
67
98
  ## Status
68
- This project is in a pre-beta status. It is changing frequently as the first user interfaces are being built with it.
69
- Any use should be for internal use only until the status becomes beta.
99
+ This project is in a released status.
70
100
 
71
101
  [![CircleCI](https://circleci.com/gh/rx/presenters.svg?style=svg)](https://circleci.com/gh/rx/presenters)
72
- [![Maintainability](https://api.codeclimate.com/v1/badges/8fcea717485230e60f27/maintainability)](https://codeclimate.com/github/rx/presenters/maintainability)
73
102
  [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=plastic)](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
74
-
75
- ## Usage
76
-
77
- TODO: Write usage instructions here
78
103
 
79
104
  ## Contributing
80
105
 
@@ -84,3 +109,9 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/rx/pre
84
109
 
85
110
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
86
111
 
112
+ ## Code of Conduct
113
+
114
+ 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).
115
+
116
+
117
+ [Demo]:https://powerful-bastion-96181.herokuapp.com
@@ -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
@@ -25,8 +25,15 @@ Voom::Presenters.define(:cards) do
25
25
  end
26
26
  end
27
27
 
28
- headline 'Square'
29
- card width: '330px' do
28
+ blank
29
+ headline 'Square', inline: true
30
+ switch checked: true do
31
+ tooltip 'Hide/Show Square Card'
32
+ event :click do
33
+ toggle_visibility 'square_card'
34
+ end
35
+ end
36
+ card id: 'square_card', width: '330px' do
30
37
  media height: '200px', color: '#46B6AC' do
31
38
  image 'img/demo/dog.png', position: [:bottom, :right]
32
39
  title 'Update', color: :white, position: :bottom
@@ -55,8 +62,8 @@ Voom::Presenters.define(:cards) do
55
62
  color: :white, position: :top
56
63
  end
57
64
  actions do
58
- button 'Add to Calendar'
59
- button icon: :event
65
+ button 'Add to Calendar', color: :secondary
66
+ button icon: :event, color: :secondary
60
67
  end
61
68
  end
62
69
 
@@ -7,84 +7,97 @@ Voom::Presenters.define(:chips) do
7
7
  page_title 'Chips'
8
8
 
9
9
  indented_grid do
10
- chip 'Chip 1'
11
- chip 'Chip 1', color: :primary
12
- chip 'Chip 2', color: :secondary
13
- chip color: :hotpink do
14
- text 'Chip 3', color: :white
10
+ chipset do
11
+ chip 'Chip 1'
12
+ chip 'Chip 1', color: :primary
13
+ chip 'Chip 2', color: :secondary
14
+ chip color: :hotpink do
15
+ text 'Chip 3', color: :white
16
+ end
15
17
  end
16
-
17
18
  subheading 'leading icon'
18
- chip 'Jane Smith', icon: :face
19
+ chipset do
20
+ chip 'Jane Smith', icon: :face
21
+ end
19
22
 
20
23
  subheading 'trailing icon'
21
- chip 'Jane Smith' do
22
- icon :more_vert, position: :right
24
+ chipset do
25
+ chip 'Jane Smith' do
26
+ icon :more_vert, position: :right
27
+ end
23
28
  end
24
29
 
25
30
  subheading 'leading and trailing icon'
26
- chip 'Jane Smith' do
27
- icon :face, position: :left
28
- icon :more_vert, position: :right
29
- end
30
- heading 'Events'
31
-
32
- chip 'Jane Smith' do
33
- icon :face, position: :left
34
- icon :more_vert, position: :right
35
- event :click do
36
- snackbar 'chip clicked!'
31
+ chipset do
32
+ chip 'Jane Smith' do
33
+ icon :face, position: :left
34
+ icon :more_vert, position: :right
37
35
  end
38
36
  end
37
+ heading 'Events'
39
38
 
40
- chip do
41
- text 'Jane Smith' do
39
+ chipset do
40
+ chip 'Jane Smith' do
41
+ icon :face, position: :left
42
+ icon :more_vert, position: :right
42
43
  event :click do
43
- snackbar 'text clicked'
44
+ snackbar 'chip clicked!'
44
45
  end
45
46
  end
46
- icon :face, position: :left
47
- icon :more_vert, position: :right
48
- event :click do
49
- snackbar 'chip clicked!'
50
- end
51
- end
52
-
53
- chip do
54
- text 'Jane Smith' do
55
- event :click do
56
- snackbar 'text clicked'
47
+ chip do
48
+ text 'Jane Smith' do
49
+ event :click do
50
+ snackbar 'text clicked'
51
+ end
57
52
  end
58
- end
59
- icon :face, position: :left do
53
+ icon :face, position: :left
54
+ icon :more_vert, position: :right
60
55
  event :click do
61
- snackbar 'left icon clicked'
56
+ snackbar 'chip clicked!'
62
57
  end
63
58
  end
64
- icon :more_vert, position: :right
65
- event :click do
66
- snackbar 'chip clicked!'
67
- end
68
- end
69
59
 
70
- chip do
71
- text 'Jane Smith' do
72
- event :click do
73
- snackbar 'text clicked'
60
+ chip do
61
+ text 'Jane Smith' do
62
+ event :click do
63
+ snackbar 'text clicked'
64
+ end
74
65
  end
75
- end
76
- icon :face, position: :left do
66
+ icon :face, position: :left do
67
+ event :click do
68
+ snackbar 'left icon clicked'
69
+ end
70
+ end
71
+ icon :more_vert, position: :right
77
72
  event :click do
78
- snackbar 'left icon clicked'
73
+ snackbar 'chip clicked!'
79
74
  end
80
75
  end
81
- icon :more_vert, position: :right do
82
- event :click do
83
- snackbar 'right icon clicked'
76
+
77
+ chip do
78
+ text 'Jane Smith' do
79
+ event :click do
80
+ snackbar 'text clicked'
81
+ end
82
+ end
83
+ icon :face, position: :left do
84
+ event :click do
85
+ snackbar 'left icon clicked'
86
+ end
87
+ end
88
+ icon :more_vert, position: :right do
89
+ event :click do
90
+ snackbar 'right icon clicked'
91
+ end
84
92
  end
85
93
  end
86
94
  end
87
95
 
96
+ title 'Chips as input', id: :input_chips
97
+ body 'You can set the name and value attributes of a chip, they then can be posted.
98
+ An example of this can be found in the [search select](/search_select) pattern demo.'
99
+
100
+
88
101
  attach :code, file: __FILE__
89
102
  end
90
103
  end
@@ -0,0 +1,111 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:content) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Content'
8
+
9
+ indented_grid do
10
+ headline 'Content blocks are wrappers for content and layout'
11
+ body %(They have many uses this demo will outline their attributes and their common use cases.)
12
+ blank
13
+ body %(See the [padding demo](#{presenters_path(:padding)}) for example on how padding works in content blocks.)
14
+ blank
15
+
16
+ title 'Content as a block element'
17
+ content do
18
+ text 'A content block with no attributes can turn an inline element into a block element', inline: true
19
+ end
20
+ text '..continuing text', inline: true
21
+ blank
22
+
23
+ title 'Attribute: `inline`'
24
+ content padding: :bottom3 do
25
+ text 'Inline controls the behavior of the content block within its context. It does not afffect the layout or flow' +
26
+ 'of components within it. This provides a powerful method for building custom layouts'
27
+ content do
28
+ content inline: true, width: '500px', background_color: :cyan, padding: :full do
29
+ card do
30
+ text 'Section One (Chips in a block)'
31
+ chipset do
32
+ chip 'Chip 1'
33
+ chip 'Chip 1', color: :primary
34
+ chip 'Chip 2', color: :secondary
35
+ chip color: :hotpink do
36
+ text 'Chip 3', color: :white
37
+ end
38
+ end
39
+ end
40
+ end
41
+ content inline: false, width: '20%', position: [:top, :right] do
42
+ card do
43
+ text 'Section Two'
44
+ end
45
+ end
46
+ content inline: true, width: '20%' do
47
+ card do
48
+ text 'Section Three'
49
+ end
50
+ end
51
+ end
52
+ end
53
+ blank
54
+
55
+ title 'Attribute: `hidden`'
56
+ text 'A content block can be hidden and shown in response to page events.'
57
+ content id: :peekaboo, hidden: true do
58
+ title 'Peekabo'
59
+ end
60
+ button :show_hide do
61
+ event :click do
62
+ toggle_visibility :peekaboo
63
+ end
64
+ end
65
+ blank
66
+
67
+ title 'Attributes: `width` and `height`'
68
+ text 'A content block can set its width and height. Units can be pixels, rems or percentages.'
69
+ content width: '50%', height: '8rem' do
70
+ card do
71
+ title "I'm wider! and taller!"
72
+ end
73
+ end
74
+ blank
75
+
76
+ title 'Attributes: `position`'
77
+ text 'A content block can be positioned to be :top, :right, :bottom, :left or a combination of the container its inside'
78
+ content id: :parent, width: '50%', height: '8rem' do
79
+ content position: [:bottom, :right] do
80
+ card do
81
+ title "I'm on the bottom right"
82
+ end
83
+ end
84
+ end
85
+ blank
86
+
87
+ title 'Attributes: `text_align`'
88
+ text %(A content block can define how its typography will be alligned inside it.
89
+ Valid values: left|right|center|justify)
90
+ content width: '50%', height: '8rem' do
91
+ content text_align: :center do
92
+ title "I'm centered text", inline: 'true'
93
+ title ".. me 2", inline: 'true'
94
+ end
95
+ end
96
+ blank
97
+
98
+ title 'Attribute: `float`'
99
+ text 'A content block can float above the other content. This is useful for things like type ahead previews. Or hovering previews.'
100
+ content float: true do
101
+ card do
102
+ title "I'm floating!"
103
+ end
104
+ end
105
+ text "xxxxxxxxxxxxxxxx I'm text that is obscured by the floating card in the content block above me"
106
+ blank
107
+
108
+
109
+ attach :code, file: __FILE__
110
+ end
111
+ end