voom-presenters 0.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) 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 +39 -0
  7. data/.gitignore +3 -2
  8. data/.releaserc +8 -0
  9. data/.ruby-version +2 -1
  10. data/CHANGELOG.md +64 -114
  11. data/CONTRIBUTING.md +60 -0
  12. data/Gemfile +12 -3
  13. data/Gemfile.lock +83 -45
  14. data/Procfile +1 -0
  15. data/README.md +41 -39
  16. data/app/demo/component_status.pom +1 -1
  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 +61 -54
  20. data/app/demo/components/content.pom +96 -16
  21. data/app/demo/components/dialogs.pom +175 -6
  22. data/app/demo/components/file_inputs.pom +38 -2
  23. data/app/demo/components/google_maps.pom +6 -1
  24. data/app/demo/components/headers.pom +80 -20
  25. data/app/demo/components/icons.pom +86 -55
  26. data/app/demo/components/image_lists.pom +100 -0
  27. data/app/demo/components/images.pom +45 -0
  28. data/app/demo/components/layouts.pom +3 -25
  29. data/app/demo/components/lists.pom +24 -4
  30. data/app/demo/components/menus.pom +14 -4
  31. data/app/demo/components/nav/menu.pom +38 -7
  32. data/app/demo/components/nav/pattern_menu.pom +2 -2
  33. data/app/demo/components/number_fields.pom +53 -0
  34. data/app/demo/components/padding.pom +96 -0
  35. data/app/demo/components/progress.pom +71 -0
  36. data/app/demo/components/selects.pom +44 -5
  37. data/app/demo/components/sliders.pom +5 -0
  38. data/app/demo/components/tab_bars.pom +15 -0
  39. data/app/demo/components/tables.pom +51 -40
  40. data/app/demo/components/text_areas.pom +23 -16
  41. data/app/demo/components/text_fields.pom +61 -15
  42. data/app/demo/components/toggles.pom +35 -4
  43. data/app/demo/components/tooltips.pom +8 -4
  44. data/app/demo/components/unordered_list.pom +81 -0
  45. data/app/demo/custom_css.pom +37 -0
  46. data/app/demo/events/actions/autocomplete.pom +32 -0
  47. data/app/demo/events/actions/clear.pom +5 -3
  48. data/app/demo/events/actions/dialogs/discard.pom +9 -0
  49. data/app/demo/events/actions/dialogs/show_dialog.pom +4 -2
  50. data/app/demo/events/actions/last_response.pom +40 -0
  51. data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
  52. data/app/demo/events/content_as_form.pom +313 -0
  53. data/app/demo/events/nav/drawer.pom +7 -3
  54. data/app/demo/events/parallel.pom +44 -0
  55. data/app/demo/nav/top_nav.pom +12 -0
  56. data/app/demo/patterns/drag_drop.pom +89 -0
  57. data/app/demo/patterns/floating_card.pom +29 -0
  58. data/app/demo/patterns/search_select.pom +9 -7
  59. data/app/demo/plugins/chart.pom +254 -0
  60. data/app/demo/plugins/image_crop.pom +44 -0
  61. data/app/demo/plugins/index.pom +29 -0
  62. data/app/demo/plugins/nav/drawer.pom +19 -0
  63. data/app/demo/shared/context_list.pom +1 -1
  64. data/app/demo/styles.pom +3 -1
  65. data/bin/console +4 -4
  66. data/bin/presenters +3 -0
  67. data/component-status.yml +15 -15
  68. data/config.ru +20 -10
  69. data/docs/settings.md +81 -0
  70. data/lib/hash_ext/traverse.rb +14 -0
  71. data/lib/voom.rb +25 -0
  72. data/lib/voom/container_methods.rb +2 -2
  73. data/lib/voom/engine.rb +5 -0
  74. data/lib/voom/presenters/api/app.rb +31 -11
  75. data/lib/voom/presenters/api/router.rb +3 -49
  76. data/lib/voom/presenters/app.rb +3 -3
  77. data/lib/voom/presenters/cli.rb +28 -0
  78. data/lib/voom/presenters/demo/dragon_drop.rb +48 -0
  79. data/lib/voom/presenters/demo/echo.rb +2 -0
  80. data/lib/voom/presenters/demo/slow.rb +18 -0
  81. data/lib/voom/presenters/dsl/components/actions/autocomplete.rb +15 -0
  82. data/lib/voom/presenters/dsl/components/actions/base.rb +36 -8
  83. data/lib/voom/presenters/dsl/components/actions/clear.rb +0 -2
  84. data/lib/voom/presenters/dsl/components/actions/close_dialog.rb +17 -0
  85. data/lib/voom/presenters/dsl/components/actions/deletes.rb +0 -2
  86. data/lib/voom/presenters/dsl/components/actions/dialog.rb +0 -2
  87. data/lib/voom/presenters/dsl/components/actions/loads.rb +5 -6
  88. data/lib/voom/presenters/dsl/components/actions/navigates.rb +0 -2
  89. data/lib/voom/presenters/dsl/components/actions/post_message.rb +17 -0
  90. data/lib/voom/presenters/dsl/components/actions/posts.rb +5 -2
  91. data/lib/voom/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
  92. data/lib/voom/presenters/dsl/components/actions/remove.rb +0 -2
  93. data/lib/voom/presenters/dsl/components/actions/replaces.rb +4 -4
  94. data/lib/voom/presenters/dsl/components/actions/snackbar.rb +0 -2
  95. data/lib/voom/presenters/dsl/components/actions/stepper.rb +0 -2
  96. data/lib/voom/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
  97. data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +0 -2
  98. data/lib/voom/presenters/dsl/components/actions/updates.rb +5 -2
  99. data/lib/voom/presenters/dsl/components/avatar.rb +4 -8
  100. data/lib/voom/presenters/dsl/components/badge.rb +0 -2
  101. data/lib/voom/presenters/dsl/components/base.rb +25 -18
  102. data/lib/voom/presenters/dsl/components/button.rb +15 -11
  103. data/lib/voom/presenters/dsl/components/card.rb +49 -36
  104. data/lib/voom/presenters/dsl/components/checkbox.rb +0 -2
  105. data/lib/voom/presenters/dsl/components/chip.rb +5 -7
  106. data/lib/voom/presenters/dsl/components/chipset.rb +33 -0
  107. data/lib/voom/presenters/dsl/components/content.rb +28 -18
  108. data/lib/voom/presenters/dsl/components/datetime_base.rb +0 -2
  109. data/lib/voom/presenters/dsl/components/datetime_field.rb +0 -2
  110. data/lib/voom/presenters/dsl/components/dialog.rb +36 -12
  111. data/lib/voom/presenters/dsl/components/drawer.rb +9 -6
  112. data/lib/voom/presenters/dsl/components/event.rb +106 -65
  113. data/lib/voom/presenters/dsl/components/event_base.rb +1 -3
  114. data/lib/voom/presenters/dsl/components/expansion_panel.rb +0 -3
  115. data/lib/voom/presenters/dsl/components/file_input.rb +18 -6
  116. data/lib/voom/presenters/dsl/components/footer.rb +2 -2
  117. data/lib/voom/presenters/dsl/components/form.rb +2 -17
  118. data/lib/voom/presenters/dsl/components/grid.rb +52 -50
  119. data/lib/voom/presenters/dsl/components/header.rb +17 -1
  120. data/lib/voom/presenters/dsl/components/hidden_field.rb +0 -2
  121. data/lib/voom/presenters/dsl/components/icon.rb +2 -4
  122. data/lib/voom/presenters/dsl/components/icon_base.rb +5 -7
  123. data/lib/voom/presenters/dsl/components/icon_toggle.rb +2 -4
  124. data/lib/voom/presenters/dsl/components/image.rb +61 -13
  125. data/lib/voom/presenters/dsl/components/image_list.rb +43 -0
  126. data/lib/voom/presenters/dsl/components/input.rb +14 -5
  127. data/lib/voom/presenters/dsl/components/link.rb +33 -0
  128. data/lib/voom/presenters/dsl/components/list.rb +6 -13
  129. data/lib/voom/presenters/dsl/components/lists/action.rb +9 -11
  130. data/lib/voom/presenters/dsl/components/lists/actions.rb +0 -3
  131. data/lib/voom/presenters/dsl/components/lists/line.rb +27 -15
  132. data/lib/voom/presenters/dsl/components/menu.rb +51 -9
  133. data/lib/voom/presenters/dsl/components/mixins/append.rb +2 -2
  134. data/lib/voom/presenters/dsl/components/mixins/attaches.rb +0 -2
  135. data/lib/voom/presenters/dsl/components/mixins/avatar.rb +1 -3
  136. data/lib/voom/presenters/dsl/components/mixins/chips.rb +0 -2
  137. data/lib/voom/presenters/dsl/components/mixins/chipset.rb +19 -0
  138. data/lib/voom/presenters/dsl/components/mixins/common.rb +13 -14
  139. data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +0 -2
  140. data/lib/voom/presenters/dsl/components/mixins/event.rb +0 -2
  141. data/lib/voom/presenters/dsl/components/mixins/image_lists.rb +15 -0
  142. data/lib/voom/presenters/dsl/components/mixins/last_response.rb +48 -0
  143. data/lib/voom/presenters/dsl/components/mixins/padding.rb +42 -0
  144. data/lib/voom/presenters/dsl/components/mixins/progress.rb +16 -0
  145. data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +2 -0
  146. data/lib/voom/presenters/dsl/components/mixins/tables.rb +15 -0
  147. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +5 -0
  148. data/lib/voom/presenters/dsl/components/mixins/toggles.rb +0 -2
  149. data/lib/voom/presenters/dsl/components/mixins/typography.rb +55 -8
  150. data/lib/voom/presenters/dsl/components/mixins/yield_to.rb +2 -2
  151. data/lib/voom/presenters/dsl/components/number_field.rb +20 -0
  152. data/lib/voom/presenters/dsl/components/page_title.rb +31 -0
  153. data/lib/voom/presenters/dsl/components/progress.rb +27 -0
  154. data/lib/voom/presenters/dsl/components/radio_button.rb +0 -1
  155. data/lib/voom/presenters/dsl/components/rich_text_area.rb +5 -11
  156. data/lib/voom/presenters/dsl/components/select.rb +21 -9
  157. data/lib/voom/presenters/dsl/components/separator.rb +21 -0
  158. data/lib/voom/presenters/dsl/components/slider.rb +6 -7
  159. data/lib/voom/presenters/dsl/components/stepper.rb +0 -10
  160. data/lib/voom/presenters/dsl/components/switch.rb +0 -2
  161. data/lib/voom/presenters/dsl/components/tab_bar.rb +0 -3
  162. data/lib/voom/presenters/dsl/components/table.rb +39 -20
  163. data/lib/voom/presenters/dsl/components/text_area.rb +1 -3
  164. data/lib/voom/presenters/dsl/components/text_field.rb +54 -11
  165. data/lib/voom/presenters/dsl/components/time_field.rb +0 -2
  166. data/lib/voom/presenters/dsl/components/toggle_base.rb +8 -6
  167. data/lib/voom/presenters/dsl/components/typography.rb +4 -4
  168. data/lib/voom/presenters/dsl/components/unordered_list.rb +50 -0
  169. data/lib/voom/presenters/dsl/definer.rb +0 -4
  170. data/lib/voom/presenters/dsl/definition.rb +6 -5
  171. data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
  172. data/lib/voom/presenters/dsl/user_interface.rb +37 -22
  173. data/lib/voom/presenters/errors.rb +1 -0
  174. data/lib/voom/presenters/errors/invalid_dsl.rb +8 -0
  175. data/lib/voom/presenters/errors/parameter_validation.rb +1 -3
  176. data/lib/voom/presenters/generators/inflectors.rb +59 -0
  177. data/lib/voom/presenters/generators/plugin.rb +115 -0
  178. data/lib/voom/presenters/generators/templates/plugin/.gitignore +12 -0
  179. data/lib/voom/presenters/generators/templates/plugin/Gemfile +6 -0
  180. data/lib/voom/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  181. data/lib/voom/presenters/generators/templates/plugin/README.md +253 -0
  182. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/action.rb.tt +16 -0
  183. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  184. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/component.rb.tt +18 -0
  185. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/dsl.rb.tt +19 -0
  186. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/helpers/helper.rb.tt +15 -0
  187. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/plugin.rb.tt +9 -0
  188. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  189. data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/render.rb.tt +23 -0
  190. data/lib/voom/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  191. data/lib/voom/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  192. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  193. data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  194. data/lib/voom/presenters/generators/templates/plugin/views/components/component.erb.tt +14 -0
  195. data/lib/voom/presenters/generators/templates/plugin/views/components/component_header.erb.tt +20 -0
  196. data/lib/voom/presenters/helpers.rb +2 -8
  197. data/lib/voom/presenters/helpers/inflector.rb +1 -1
  198. data/lib/voom/presenters/helpers/rails.rb +15 -8
  199. data/lib/voom/presenters/helpers/redact.rb +13 -0
  200. data/lib/voom/presenters/helpers/route.rb +12 -5
  201. data/lib/voom/presenters/pluggable.rb +37 -0
  202. data/lib/voom/presenters/plugins.rb +7 -0
  203. data/lib/voom/presenters/plugins/google_maps.rb +24 -0
  204. data/lib/voom/presenters/plugins/google_maps/google_map.erb +10 -0
  205. data/lib/voom/presenters/{dsl/components → plugins/google_maps}/google_map.rb +4 -3
  206. data/lib/voom/presenters/{dsl.rb → registry.rb} +13 -15
  207. data/lib/voom/presenters/router.rb +59 -0
  208. data/lib/voom/presenters/settings.rb +18 -8
  209. data/lib/voom/presenters/version.rb +1 -1
  210. data/lib/voom/presenters/web_client/app.rb +86 -29
  211. data/lib/voom/presenters/web_client/component_decorator_factory.rb +27 -0
  212. data/lib/voom/presenters/web_client/component_html_decorator.rb +50 -0
  213. data/lib/voom/presenters/web_client/component_renderer.rb +49 -0
  214. data/lib/voom/presenters/web_client/custom_css.rb +65 -0
  215. data/lib/voom/presenters/web_client/{markdown_render.rb → custom_render.rb} +5 -3
  216. data/lib/voom/presenters/web_client/helpers/expand_hash.rb +19 -0
  217. data/lib/voom/presenters/web_client/helpers/form_helpers.rb +14 -0
  218. data/lib/voom/presenters/web_client/helpers/padding_helpers.rb +21 -0
  219. data/lib/voom/presenters/web_client/plugin_headers.rb +37 -0
  220. data/lib/voom/presenters/web_client/router.rb +3 -54
  221. data/lib/voom/railtie.rb +37 -0
  222. data/lib/voom/symbol/to_str.rb +3 -3
  223. data/lib/voom/trace.rb +0 -2
  224. data/presenters.gemspec +8 -4
  225. data/public/bundle.css +18221 -0
  226. data/public/bundle.js +59949 -0
  227. data/public/img/demo/avatar.jpg +0 -0
  228. data/public/presenters/custom_css.css +26 -0
  229. data/public/wc.js +52704 -0
  230. data/scripts/build.sh +10 -0
  231. data/views/mdc/.eslintrc.yml +1 -0
  232. data/views/mdc/.nvmrc +1 -0
  233. data/views/mdc/assets/js/app.js +13 -2
  234. data/views/mdc/assets/js/components/base-component.js +147 -12
  235. data/views/mdc/assets/js/components/base-container.js +54 -14
  236. data/views/mdc/assets/js/components/base-toggle.js +56 -0
  237. data/views/mdc/assets/js/components/button.js +74 -5
  238. data/views/mdc/assets/js/components/cards.js +3 -3
  239. data/views/mdc/assets/js/components/checkboxes.js +7 -30
  240. data/views/mdc/assets/js/components/chips.js +76 -12
  241. data/views/mdc/assets/js/components/content.js +5 -4
  242. data/views/mdc/assets/js/components/data-tables.js +11 -34
  243. data/views/mdc/assets/js/components/datetime.js +29 -6
  244. data/views/mdc/assets/js/components/dialogs.js +128 -31
  245. data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
  246. data/views/mdc/assets/js/components/drawer.js +43 -0
  247. data/views/mdc/assets/js/components/events.js +190 -73
  248. data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
  249. data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
  250. data/views/mdc/assets/js/components/events/autocomplete.js +94 -0
  251. data/views/mdc/assets/js/components/events/base.js +139 -23
  252. data/views/mdc/assets/js/components/events/clears.js +15 -12
  253. data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
  254. data/views/mdc/assets/js/components/events/dialog.js +32 -14
  255. data/views/mdc/assets/js/components/events/encode.js +8 -0
  256. data/views/mdc/assets/js/components/events/errors.js +175 -92
  257. data/views/mdc/assets/js/components/events/loads.js +50 -11
  258. data/views/mdc/assets/js/components/events/navigates.js +17 -15
  259. data/views/mdc/assets/js/components/events/plugin.js +18 -0
  260. data/views/mdc/assets/js/components/events/post_message.js +21 -0
  261. data/views/mdc/assets/js/components/events/posts.js +147 -65
  262. data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
  263. data/views/mdc/assets/js/components/events/removes.js +7 -6
  264. data/views/mdc/assets/js/components/events/replaces.js +87 -33
  265. data/views/mdc/assets/js/components/events/snackbar.js +10 -10
  266. data/views/mdc/assets/js/components/events/stepper.js +8 -10
  267. data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
  268. data/views/mdc/assets/js/components/events/toggle_visibility.js +57 -15
  269. data/views/mdc/assets/js/components/file-inputs.js +68 -21
  270. data/views/mdc/assets/js/components/form-fields.js +16 -0
  271. data/views/mdc/assets/js/components/forms.js +3 -3
  272. data/views/mdc/assets/js/components/get_event_target.js +15 -0
  273. data/views/mdc/assets/js/components/grid.js +7 -6
  274. data/views/mdc/assets/js/components/header.js +20 -0
  275. data/views/mdc/assets/js/components/hidden-fields.js +19 -8
  276. data/views/mdc/assets/js/components/icon-toggles.js +7 -7
  277. data/views/mdc/assets/js/components/images.js +19 -0
  278. data/views/mdc/assets/js/components/initialize.js +52 -27
  279. data/views/mdc/assets/js/components/lists.js +9 -4
  280. data/views/mdc/assets/js/components/menus.js +60 -13
  281. data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
  282. data/views/mdc/assets/js/components/mixins/event-handler.js +7 -7
  283. data/views/mdc/assets/js/components/mixins/visibility-observer.js +22 -21
  284. data/views/mdc/assets/js/components/plugins.js +86 -0
  285. data/views/mdc/assets/js/components/progress.js +31 -0
  286. data/views/mdc/assets/js/components/radios.js +6 -31
  287. data/views/mdc/assets/js/components/rich-text-area.js +217 -33
  288. data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
  289. data/views/mdc/assets/js/components/root_document.js +5 -0
  290. data/views/mdc/assets/js/components/selects.js +18 -8
  291. data/views/mdc/assets/js/components/sliders.js +23 -12
  292. data/views/mdc/assets/js/components/snackbar.js +11 -8
  293. data/views/mdc/assets/js/components/steppers.js +3 -3
  294. data/views/mdc/assets/js/components/switches.js +6 -29
  295. data/views/mdc/assets/js/components/tab-bars.js +18 -4
  296. data/views/mdc/assets/js/components/text-fields.js +94 -22
  297. data/views/mdc/assets/js/components/tooltip.js +17 -0
  298. data/views/mdc/assets/js/components/typography.js +28 -0
  299. data/views/mdc/assets/js/components/uninitialize.js +7 -0
  300. data/views/mdc/assets/js/wc.js +111 -0
  301. data/views/mdc/assets/scss/app.scss +12 -5
  302. data/views/mdc/assets/scss/components/avatar.scss +51 -7
  303. data/views/mdc/assets/scss/components/button.scss +7 -9
  304. data/views/mdc/assets/scss/components/card.scss +6 -5
  305. data/views/mdc/assets/scss/components/chip.scss +4 -0
  306. data/views/mdc/assets/scss/components/content.scss +25 -0
  307. data/views/mdc/assets/scss/components/data-table.scss +12 -1
  308. data/views/mdc/assets/scss/components/datetime.scss +1 -2
  309. data/views/mdc/assets/scss/components/dialog.scss +7 -2
  310. data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
  311. data/views/mdc/assets/scss/components/drawer.scss +82 -0
  312. data/views/mdc/assets/scss/components/expansion-panel.scss +2 -2
  313. data/views/mdc/assets/scss/components/fab.scss +23 -5
  314. data/views/mdc/assets/scss/components/file-input.scss +10 -14
  315. data/views/mdc/assets/scss/components/grid.scss +32 -17
  316. data/views/mdc/assets/scss/components/header.scss +21 -0
  317. data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
  318. data/views/mdc/assets/scss/components/icon.scss +23 -0
  319. data/views/mdc/assets/scss/components/image-list.scss +18 -0
  320. data/views/mdc/assets/scss/components/image.scss +13 -21
  321. data/views/mdc/assets/scss/components/list.scss +9 -3
  322. data/views/mdc/assets/scss/components/menu.scss +13 -3
  323. data/views/mdc/assets/scss/components/progress.scss +1 -0
  324. data/views/mdc/assets/scss/components/rich-text-area.scss +38 -2
  325. data/views/mdc/assets/scss/components/select.scss +6 -3
  326. data/views/mdc/assets/scss/components/separator.scss +3 -0
  327. data/views/mdc/assets/scss/components/switch.scss +10 -0
  328. data/views/mdc/assets/scss/components/textfield.scss +8 -4
  329. data/views/mdc/assets/scss/components/tooltip.scss +3 -0
  330. data/views/mdc/assets/scss/components/typography.scss +6 -0
  331. data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
  332. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +1 -1
  333. data/views/mdc/assets/scss/media.scss +39 -0
  334. data/views/mdc/assets/scss/palette.scss +16 -0
  335. data/views/mdc/assets/scss/styles.scss +39 -1
  336. data/views/mdc/assets/scss/theme.scss +19 -2
  337. data/views/mdc/body/dismissable-drawer.erb +34 -0
  338. data/views/mdc/body/drawer/divider.erb +1 -0
  339. data/views/mdc/body/drawer/item.erb +13 -0
  340. data/views/mdc/body/drawer/label.erb +1 -0
  341. data/views/mdc/body/drawers/menu.erb +1 -1
  342. data/views/mdc/body/footers/menu_item.erb +2 -2
  343. data/views/mdc/body/header.erb +38 -31
  344. data/views/mdc/body/modal-drawer.erb +35 -0
  345. data/views/mdc/body/snackbar.erb +11 -5
  346. data/views/mdc/components/actions/autocomplete.rb +8 -0
  347. data/views/mdc/components/actions/close_dialog.rb +10 -0
  348. data/views/mdc/components/actions/loads.rb +7 -1
  349. data/views/mdc/components/actions/navigates.rb +1 -1
  350. data/views/mdc/components/actions/post.rb +4 -7
  351. data/views/mdc/components/actions/post_message.rb +10 -0
  352. data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
  353. data/views/mdc/components/actions/replaces.rb +5 -1
  354. data/views/mdc/components/actions/resolver.rb +39 -0
  355. data/views/mdc/components/actions/snackbar.rb +3 -1
  356. data/views/mdc/components/actions/toggle_disabled.rb +10 -0
  357. data/views/mdc/components/avatar.erb +12 -7
  358. data/views/mdc/components/badge.erb +1 -1
  359. data/views/mdc/components/button.erb +2 -3
  360. data/views/mdc/components/buttons/button.erb +12 -12
  361. data/views/mdc/components/buttons/fab.erb +3 -2
  362. data/views/mdc/components/buttons/icon.erb +5 -5
  363. data/views/mdc/components/buttons/image.erb +4 -3
  364. data/views/mdc/components/card.erb +67 -44
  365. data/views/mdc/components/checkbox.erb +32 -35
  366. data/views/mdc/components/chip.erb +38 -30
  367. data/views/mdc/components/chipset.erb +18 -0
  368. data/views/mdc/components/content.erb +35 -14
  369. data/views/mdc/components/datetime.erb +6 -19
  370. data/views/mdc/components/dialog.erb +45 -25
  371. data/views/mdc/components/drag_and_drop/drag_and_drop.rb +16 -0
  372. data/views/mdc/components/event.erb +3 -5
  373. data/views/mdc/components/expansion_panel.erb +8 -6
  374. data/views/mdc/components/file_input.erb +14 -10
  375. data/views/mdc/components/form.erb +4 -19
  376. data/views/mdc/components/grid.erb +20 -17
  377. data/views/mdc/components/hidden_field.erb +3 -4
  378. data/views/mdc/components/icon.erb +7 -5
  379. data/views/mdc/components/icon_toggle.erb +9 -8
  380. data/views/mdc/components/image.erb +23 -5
  381. data/views/mdc/components/image_list.erb +38 -0
  382. data/views/mdc/components/link.erb +3 -13
  383. data/views/mdc/components/list.erb +4 -2
  384. data/views/mdc/components/list/avatar.erb +2 -1
  385. data/views/mdc/components/list/header.erb +5 -3
  386. data/views/mdc/components/list/hidden_field.erb +3 -0
  387. data/views/mdc/components/list/icon.erb +2 -1
  388. data/views/mdc/components/list/line.erb +19 -9
  389. data/views/mdc/components/list/menu.erb +7 -2
  390. data/views/mdc/components/list/separator.erb +1 -1
  391. data/views/mdc/components/menu.erb +14 -6
  392. data/views/mdc/components/number_field.erb +38 -0
  393. data/views/mdc/components/page_title.erb +2 -2
  394. data/views/mdc/components/progress.erb +11 -0
  395. data/views/mdc/components/radio_button.erb +5 -6
  396. data/views/mdc/components/render.erb +2 -3
  397. data/views/mdc/components/rich_text_area.erb +13 -10
  398. data/views/mdc/components/select.erb +28 -12
  399. data/views/mdc/components/separator.erb +3 -0
  400. data/views/mdc/components/shared/hint_error_display.erb +9 -0
  401. data/views/mdc/components/shared/input_label.erb +7 -0
  402. data/views/mdc/components/slider.erb +3 -1
  403. data/views/mdc/components/stepper.erb +1 -1
  404. data/views/mdc/components/stepper/step.erb +1 -1
  405. data/views/mdc/components/switch.erb +8 -7
  406. data/views/mdc/components/tab_bar.erb +7 -1
  407. data/views/mdc/components/table.erb +26 -13
  408. data/views/mdc/components/table/checkbox.erb +6 -3
  409. data/views/mdc/components/table/column.erb +18 -0
  410. data/views/mdc/components/table/footer.erb +8 -0
  411. data/views/mdc/components/table/header.erb +5 -4
  412. data/views/mdc/components/table/pagination.erb +2 -6
  413. data/views/mdc/components/table/row.erb +5 -5
  414. data/views/mdc/components/text_area.erb +9 -11
  415. data/views/mdc/components/text_field.erb +29 -37
  416. data/views/mdc/components/tooltip.erb +2 -2
  417. data/views/mdc/components/typography.erb +7 -5
  418. data/views/mdc/components/unordered_list.erb +10 -0
  419. data/views/mdc/components/unordered_list/icon.erb +3 -0
  420. data/views/mdc/components/unordered_list/list_item.erb +7 -0
  421. data/views/mdc/layout.erb +41 -29
  422. data/views/mdc/package-lock.json +2222 -1327
  423. data/views/mdc/package.json +47 -29
  424. data/views/mdc/web.erb +4 -0
  425. data/views/mdc/webpack.config.js +13 -1
  426. metadata +218 -26
  427. data/lib/voom-presenters.rb +0 -9
  428. data/lib/voom/presenters-engine.rb +0 -44
  429. data/lib/voom/presenters.rb +0 -19
  430. data/public/.gitignore +0 -2
  431. data/scripts/bump.sh +0 -5
  432. data/scripts/changelog.sh +0 -5
  433. data/scripts/deploy-demo.sh +0 -3
  434. data/scripts/release.sh +0 -5
  435. data/scripts/tag.sh +0 -5
  436. data/views/mdc/assets/js/dialog-polyfill.js +0 -738
  437. data/views/mdc/assets/scss/components/icon-toggles.scss +0 -9
  438. data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +0 -13
  439. data/views/mdc/body/drawer.erb +0 -18
  440. data/views/mdc/components/google_map.erb +0 -9
@@ -1,72 +1,103 @@
1
+ GIT
2
+ remote: https://github.com/rx/chart_presenter_plugin.git
3
+ revision: e2afb1cf0292ea92371cfc83be16b2ad95dee26d
4
+ specs:
5
+ chart_presenter_plugin (0.1.0)
6
+
7
+ GIT
8
+ remote: https://github.com/rx/foo_presenter_plugin.git
9
+ revision: 313dddfef05f740990c509b89831b69730b4ce12
10
+ specs:
11
+ foo_presenter_plugin (0.0.1)
12
+
13
+ GIT
14
+ remote: https://github.com/rx/image_crop_presenter_plugin.git
15
+ revision: c0814ffa5a0f40fd15d697e72a5bd4c9e4117d1e
16
+ specs:
17
+ image_crop_presenter_plugin (0.1.0)
18
+
1
19
  PATH
2
20
  remote: .
3
21
  specs:
4
- voom-presenters (0.2.0)
22
+ voom-presenters (1.0.0)
5
23
  dry-configurable (> 0.1, <= 7.0)
6
24
  dry-container (~> 0.6)
7
25
  dry-inflector (~> 0.1)
26
+ filewatcher (~> 1.1.1)
8
27
  ice_nine (~> 0.11)
9
28
  redcarpet (~> 3.4)
10
29
  sinatra (>= 1.4, < 3.0)
11
- tzinfo (~> 1.2)
30
+ tzinfo (>= 1.1, < 3.0)
12
31
  tzinfo-data (~> 1.2018)
32
+ zeitwerk (~> 2.1)
13
33
 
14
34
  GEM
15
35
  remote: https://rubygems.org/
16
36
  specs:
17
- childprocess (0.9.0)
18
- ffi (~> 1.0, >= 1.0.11)
37
+ childprocess (3.0.0)
19
38
  coderay (1.1.2)
20
- concurrent-ruby (1.1.3)
39
+ concurrent-ruby (1.1.7)
21
40
  diff-lcs (1.3)
22
41
  docile (1.3.1)
23
- dry-configurable (0.7.0)
42
+ dry-configurable (0.11.6)
24
43
  concurrent-ruby (~> 1.0)
25
- dry-container (0.6.0)
44
+ dry-core (~> 0.4, >= 0.4.7)
45
+ dry-equalizer (~> 0.2)
46
+ dry-container (0.7.2)
26
47
  concurrent-ruby (~> 1.0)
27
48
  dry-configurable (~> 0.1, >= 0.1.3)
28
- dry-inflector (0.1.2)
29
- ffi (1.9.25)
49
+ dry-core (0.5.0)
50
+ concurrent-ruby (~> 1.0)
51
+ dry-equalizer (0.3.0)
52
+ dry-inflector (0.2.0)
53
+ filewatcher (1.1.1)
54
+ optimist (~> 3.0)
30
55
  gem-release (2.0.1)
31
56
  ice_nine (0.11.2)
32
- json (2.1.0)
57
+ json (2.3.1)
33
58
  method_source (0.9.0)
34
- mini_portile2 (2.3.0)
35
- mustermann (1.0.3)
36
- nokogiri (1.8.4)
37
- mini_portile2 (~> 2.3.0)
59
+ mini_portile2 (2.4.0)
60
+ mustermann (1.1.1)
61
+ ruby2_keywords (~> 0.0.1)
62
+ nokogiri (1.10.9)
63
+ mini_portile2 (~> 2.4.0)
64
+ optimist (3.0.1)
38
65
  pry (0.11.3)
39
66
  coderay (~> 1.1.0)
40
67
  method_source (~> 0.9.0)
41
- rack (2.0.6)
42
- rack-protection (2.0.4)
68
+ rack (2.2.3)
69
+ rack-cors (1.1.0)
70
+ rack (>= 2.0.0)
71
+ rack-protection (2.1.0)
43
72
  rack
44
73
  rack-test (0.8.3)
45
74
  rack (>= 1.0, < 3)
46
- rake (11.3.0)
47
- redcarpet (3.4.0)
75
+ rake (13.0.1)
76
+ redcarpet (3.5.1)
77
+ regexp_parser (1.6.0)
48
78
  rspec (3.8.0)
49
79
  rspec-core (~> 3.8.0)
50
80
  rspec-expectations (~> 3.8.0)
51
81
  rspec-mocks (~> 3.8.0)
52
- rspec-core (3.8.0)
82
+ rspec-core (3.8.2)
53
83
  rspec-support (~> 3.8.0)
54
- rspec-expectations (3.8.1)
84
+ rspec-expectations (3.8.4)
55
85
  diff-lcs (>= 1.2.0, < 2.0)
56
86
  rspec-support (~> 3.8.0)
57
87
  rspec-html-matchers (0.9.1)
58
88
  nokogiri (~> 1)
59
89
  rspec (>= 3.0.0.a, < 4)
60
- rspec-mocks (3.8.0)
90
+ rspec-mocks (3.8.1)
61
91
  diff-lcs (>= 1.2.0, < 2.0)
62
92
  rspec-support (~> 3.8.0)
63
- rspec-support (3.8.0)
93
+ rspec-support (3.8.2)
64
94
  rspec_junit_formatter (0.4.1)
65
95
  rspec-core (>= 2, < 4, != 2.12.0)
66
- rubyzip (1.2.2)
67
- selenium-webdriver (3.14.0)
68
- childprocess (~> 0.5)
69
- rubyzip (~> 1.2)
96
+ ruby2_keywords (0.0.2)
97
+ rubyzip (1.3.0)
98
+ selenium-webdriver (3.142.7)
99
+ childprocess (>= 0.5, < 4.0)
100
+ rubyzip (>= 1.2.2)
70
101
  shotgun (0.9.2)
71
102
  rack (>= 1.0)
72
103
  simplecov (0.16.1)
@@ -74,49 +105,56 @@ GEM
74
105
  json (>= 1.8, < 3)
75
106
  simplecov-html (~> 0.10.0)
76
107
  simplecov-html (0.10.2)
77
- sinatra (2.0.4)
108
+ sinatra (2.1.0)
78
109
  mustermann (~> 1.0)
79
- rack (~> 2.0)
80
- rack-protection (= 2.0.4)
110
+ rack (~> 2.2)
111
+ rack-protection (= 2.1.0)
81
112
  tilt (~> 2.0)
82
- thread_safe (0.3.6)
83
- tilt (2.0.8)
84
- tzinfo (1.2.5)
85
- thread_safe (~> 0.1)
86
- tzinfo-data (1.2018.7)
113
+ thor (1.0.1)
114
+ tilt (2.0.10)
115
+ tzinfo (2.0.4)
116
+ concurrent-ruby (~> 1.0)
117
+ tzinfo-data (1.2020.4)
87
118
  tzinfo (>= 1.0.0)
88
- watir (6.10.3)
89
- selenium-webdriver (~> 3.4, >= 3.4.1)
119
+ watir (6.16.5)
120
+ regexp_parser (~> 1.2)
121
+ selenium-webdriver (~> 3.6)
90
122
  watir-rspec (3.0.0)
91
123
  rspec (~> 3.0)
92
124
  watir (>= 6.0.0.beta4)
93
- webdrivers (3.4.1)
125
+ webdrivers (4.1.0)
94
126
  nokogiri (~> 1.6)
95
127
  rubyzip (~> 1.0)
96
- selenium-webdriver (~> 3.0)
128
+ selenium-webdriver (>= 3.0, < 4.0)
129
+ zeitwerk (2.4.2)
97
130
 
98
131
  PLATFORMS
99
132
  ruby
100
133
 
101
134
  DEPENDENCIES
102
135
  bundler (~> 1.13)
136
+ chart_presenter_plugin!
137
+ foo_presenter_plugin!
103
138
  gem-release (~> 2.0)
104
- pry (~> 0.10)
139
+ image_crop_presenter_plugin!
140
+ pry
105
141
  rack (>= 2.0.6)
142
+ rack-cors
106
143
  rack-test (~> 0.8)
107
- rake (~> 11.3)
144
+ rake (~> 13.0)
108
145
  rspec
109
146
  rspec-html-matchers
110
147
  rspec_junit_formatter
111
148
  shotgun (~> 0.9)
112
149
  simplecov
150
+ thor (~> 1.0.1)
113
151
  voom-presenters!
114
- watir (~> 6.10.3)
115
- watir-rspec
116
- webdrivers (~> 3.0)
152
+ watir (~> 6.16)
153
+ watir-rspec (~> 3.0)
154
+ webdrivers (~> 4.1)
117
155
 
118
156
  RUBY VERSION
119
- ruby 2.5.3p105
157
+ ruby 2.5.5p157
120
158
 
121
159
  BUNDLED WITH
122
- 1.17.1
160
+ 1.17.3
@@ -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,62 +39,60 @@ This concept was initially inspired by the Presenters concepts of Ivar Jacobson
38
39
 
39
40
  ## Demo
40
41
 
41
- [Demo](https://powerful-bastion-96181.herokuapp.com)
42
+ [Demo]
42
43
 
43
44
  Or to run locally:
44
45
 
45
46
  git clone git@github.com:rx/presenters.git
46
47
  cd presenters/
47
48
  bundle install
48
- rackup
49
+ bundle exec rackup
49
50
 
50
51
  open http://localhost:9292
51
52
 
52
53
  To see the POM:
53
54
 
54
55
  open http://localhost:9292/index.pom
55
-
56
+
57
+ ## Usage
56
58
 
57
- ## User Interface Engine
59
+ To use it, add this line to your Gemfile:
58
60
 
59
- The POM + A POM Client is an interface engine.
61
+ gem 'voom-presenters', github('rx/presenters'), require: false
60
62
 
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.
63
+ Create the file app/presenters/index.pom with the contents:
64
64
 
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
65
+ Voom::Presenters.define(:hello_world) do
66
+ heading 'hello world'
67
+ end
66
68
 
67
- ## 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.
69
+ ### Rails
70
+ For rails: Mount the web-client in your rails config/routes.rb
70
71
 
71
- [![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
- [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=plastic)](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
72
+ mount ::Voom::Presenters::WebClient::App, at: '/'
73
+ # the api is optional
74
+ # mount ::Voom::Presenters::Api::App, at: '/'
74
75
 
75
- ## Usage
76
+ Create an initializer `config/initializers/presenters.rb` with the following:
77
+
78
+ require 'voom'
76
79
 
77
- To use it, add this line to your Gemfile:
80
+ ### Rack
81
+ Presenters are rack based. If your framework uses a rack config file add the following:
78
82
 
79
- gem 'voom-presenters'
83
+ use Voom::Presenters::WebClient::App
84
+ # the api is optional
85
+ # use Voom::Presenters::Api::App
80
86
 
81
- For rails: Mount the web-client in your rails config/routes.rb
87
+ Start your app and goto [/hello_world](http://127.0.0.1:3000/hello_world)
82
88
 
83
- mount ::Voom::Presenters::WebClient::App, at: '/'
84
- # the api is optional
85
- mount ::Voom::Presenters::Api::App, at: '/'
86
-
87
-
88
- Create the file app/presenters/index.pom with the contents:
89
-
90
- Voom::Presenters.define(:index) do
91
- heading 'hello world'
92
- end
89
+ Use the [Demo] to get example code to drop into your presetners.
93
90
 
94
- Start your rails server and goto http://localhost:3000
91
+ ## Status
92
+ This project is in a released status.
95
93
 
96
- Use the demo to get example code to drop into your presetners.
94
+ [![CircleCI](https://circleci.com/gh/rx/presenters.svg?style=svg)](https://circleci.com/gh/rx/presenters)
95
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=plastic)](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
97
96
 
98
97
  ## Contributing
99
98
 
@@ -106,3 +105,6 @@ The gem is available as open source under the terms of the [MIT License](http://
106
105
  ## Code of Conduct
107
106
 
108
107
  Everyone interacting in the Voom::Presenters project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rx/presenters/blob/master/CODE-OF-CONDUCT.md).
108
+
109
+
110
+ [Demo]:https://powerful-bastion-96181.herokuapp.com
@@ -42,7 +42,7 @@ Voom::Presenters.define(:component_status) do
42
42
 
43
43
  ]
44
44
  table do
45
- row do
45
+ header do
46
46
  items.each do |item|
47
47
  column color: item_color(item)
48
48
  column item[:text]
@@ -0,0 +1,40 @@
1
+ Voom::Presenters.define(:avatars) do
2
+ attach :top_nav
3
+ attach :component_drawer
4
+ page_title 'Avatars'
5
+
6
+ grid do
7
+ column 1
8
+ column 10 do
9
+ body 'An avatar can contain an image or icon. Avatars can be used within a list line, the media section of a card, a content block or column.'
10
+
11
+ grid do
12
+ column 6 do
13
+ headline 'Types'
14
+ body '**With an Icon**'
15
+ avatar :thumb_up
16
+ body '**With an Image**'
17
+ avatar 'img/demo/avatar.jpg'
18
+ end
19
+ end
20
+
21
+ grid do
22
+ column 6 do
23
+ headline 'Sizes'
24
+ body '**small**'
25
+ avatar :person, size: :small
26
+ body '**medium** (default)'
27
+ avatar 'img/demo/image_card.jpg', size: :medium
28
+ body '**large**'
29
+ avatar :cake, size: :large
30
+ body '**x-large**'
31
+ avatar :golf_course, size: 'x-large'
32
+ body '**xx-large**'
33
+ avatar 'img/demo/avatar.jpg', size: 'xx-large'
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+
40
+ end
@@ -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,90 +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
 
88
- title 'Chips as input',id: :input_chips
96
+ title 'Chips as input', id: :input_chips
89
97
  body 'You can set the name and value attributes of a chip, they then can be posted.
90
98
  An example of this can be found in the [search select](/search_select) pattern demo.'
91
99
 
92
100
 
93
-
94
101
  attach :code, file: __FILE__
95
102
  end
96
103
  end