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
@@ -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
@@ -50,7 +50,7 @@ Voom::Presenters.define(:date_fields) do
50
50
  date_field min_date: :today
51
51
 
52
52
  title 'Min (today), Max (14 days from now)'
53
- date_field min_date: :today, max_date: DateTime.now.next_day(14) # Or in rails Time.now + 14.days
53
+ date_field min_date: :today, max_date: DateTime.new(2025, 4, 9) # Or in rails Time.now + 14.days
54
54
 
55
55
  title 'Disabling specific dates'
56
56
  date_field disable: ["2025-01-30", "2025-02-21", "2025-03-08", DateTime.new(2025, 4, 9)]
@@ -42,6 +42,12 @@ Voom::Presenters.define(:datetime_fields) do
42
42
  end
43
43
  grid do
44
44
  column 6 do
45
+
46
+ title 'With Floating Label'
47
+ datetime_field name: :start_datetime do
48
+ label 'Date of Birth...'
49
+ end
50
+
45
51
  title 'Min Date'
46
52
  datetime_field min_date: "2020-01-01 00:15"
47
53
 
@@ -2,11 +2,79 @@ require_relative '../helpers/indented_grid'
2
2
 
3
3
  Voom::Presenters.define(:dialogs) do
4
4
  helpers Demo::Helpers::IndentedGrid
5
+ helpers do
6
+ def dlg_form
7
+ form do
8
+ text_field name: :myfield do
9
+ label 'Data to post'
10
+ end
11
+ grid padding: :none do
12
+ column 4, padding: :none do
13
+ date_field do
14
+ label 'Date Field'
15
+ end
16
+ end
17
+ column 4
18
+ column 4 do
19
+ time_field do
20
+ label 'Time Field'
21
+ end
22
+ end
23
+ end
24
+ text_field name: :myfield2 do
25
+ label 'More Data to post'
26
+ end
27
+ end
28
+ end
29
+
30
+ def shakespeare
31
+ <<-HEREDOC
32
+ This is a really really long description. Shakespeare once said:
33
+ To be, or not to be: that is the question:
34
+ Whether 'tis nobler in the mind to suffer
35
+ The slings and arrows of outrageous fortune,
36
+ Or to take arms against a sea of troubles,
37
+ And by opposing end them? To die: to sleep;
38
+ No more; and by a sleep to say we end
39
+ The heart-ache and the thousand natural shocks
40
+ That flesh is heir to, 'tis a consummation
41
+ Devoutly to be wish'd. To die, to sleep;
42
+ To sleep: perchance to dream: ay, there's the rub;
43
+ For in that sleep of death what dreams may come
44
+ When we have shuffled off this mortal coil,
45
+ Must give us pause: there's the respect
46
+ That makes calamity of so long life;
47
+ For who would bear the whips and scorns of time,
48
+ The oppressor's wrong, the proud man's contumely,
49
+ The pangs of despised love, the law's delay,
50
+ The insolence of office and the spurns
51
+ That patient merit of the unworthy takes,
52
+ When he himself might his quietus make
53
+ With a bare bodkin? who would fardels bear,
54
+ To grunt and sweat under a weary life,
55
+ But that the dread of something after death,
56
+ The undiscover'd country from whose bourn
57
+ No traveller returns, puzzles the will
58
+ And makes us rather bear those ills we have
59
+ Than fly to others that we know not of?
60
+ Thus conscience does make cowards of us all;
61
+ And thus the native hue of resolution
62
+ Is sicklied o'er with the pale cast of thought,
63
+ And enterprises of great pith and moment
64
+ With this regard their currents turn awry,
65
+ And lose the name of action.--Soft you now!
66
+ The fair Ophelia! Nymph, in thy orisons
67
+ Be all my sins remember'd!
68
+ HEREDOC
69
+ end
70
+ end
5
71
  attach :top_nav
6
72
  attach :component_drawer
7
73
  page_title 'Dialogs'
8
74
 
75
+
9
76
  indented_grid do
77
+ body 'Simple dialog with disabled button'
10
78
  button 'Show Dialog' do
11
79
  event :click do
12
80
  dialog :hold_on
@@ -14,13 +82,114 @@ Voom::Presenters.define(:dialogs) do
14
82
  end
15
83
 
16
84
  dialog id: :hold_on do
17
- title "MDL Dialog"
18
- body 'This is an example of the Material Design Lite dialog component. Please use responsibly.'
85
+ title "MDC Dialog"
86
+ body 'This is an example of the Material Design Component for the web dialog component. Please use responsibly.'
87
+
88
+ actions do
89
+ button 'Close'
90
+ button 'Disabled action', disabled: true
91
+ end
92
+ end
93
+
94
+ body 'Dialog with width set'
95
+ button 'Show Dialog' do
96
+ event :click do
97
+ dialog :width_demo
98
+ end
99
+ end
100
+
101
+ dialog id: :width_demo, width: '400px' do
102
+ title "MDC Dialog"
103
+ body shakespeare
104
+
105
+ actions do
106
+ button 'Close'
107
+ end
108
+ end
109
+
110
+ grid do
111
+ column 9 do
112
+ body 'Dialog with form'
113
+ button 'With Form' do
114
+ event :click do
115
+ dialog :with_form
116
+ end
117
+ end
118
+ body 'Dialog with multiple forms'
119
+ button 'Muliple Forms' do
120
+ event :click do
121
+ dialog :multi_form_dialog
122
+ end
123
+ end
124
+ body 'Dialog with height and width'
125
+ button 'Height/Width' do
126
+ event :click do
127
+ dialog :height_width_dialog
128
+ end
129
+ end
130
+
131
+ end
132
+ column 3 do
133
+ attach :context_list
134
+ end
135
+ end
136
+
137
+ dialog id: :with_form do
138
+ title "Dialog with Form"
139
+ dlg_form
140
+ actions do
141
+ button 'Close'
142
+ button 'Update' do
143
+ event :click do
144
+ replaces :context_list, :context_list
145
+ end
146
+ end
147
+ end
148
+ end
19
149
 
20
- button 'Disabled action', disabled: true
21
- button 'Close'
150
+ dialog id: :multi_form_dialog do
151
+ title "Dialog with Multiple Forms"
152
+ subtitle
153
+ form do
154
+ text_field name: :myfield do
155
+ label 'Data to post'
156
+ end
157
+ text_field name: :myfield2 do
158
+ label 'More Data to post'
159
+ end
160
+ subtitle "These are normal buttons and will not automatically close the dialog. However, you can call 'close_dialog' to programatically close the dialog."
161
+ button 'Close' do
162
+ event :click do
163
+ close_dialog :multi_form_dialog
164
+ end
165
+ end
166
+ button 'Update (and remain open)' do
167
+ event :click do
168
+ replaces :context_list, :context_list
169
+ end
170
+ end
171
+ end
172
+ separator
173
+ content tag: :second_form_input do
174
+ dlg_form
175
+ end
176
+ subtitle 'The buttons below are Dialog Action buttons. When clicked, they will process any configured actions, then automatically clsoe the dialog.'
177
+ actions do
178
+ button 'Close'
179
+ button 'Update' do
180
+ event :click do
181
+ replaces :context_list, :context_list, input_tag: :second_form_input
182
+ end
183
+ end
184
+ end
22
185
  end
23
186
 
24
- attach :code, file: __FILE__
187
+ dialog id: :height_width_dialog, height: '500px', width: '500px' do
188
+ title "Dialog with set dimensions"
189
+ body "MDC dialogs have default styles of max-width 560px (for 592px viewport or larger) and min-width 280px."
190
+ end
25
191
  end
26
- end
192
+
193
+ attach :code, file: __FILE__
194
+ end
195
+