voom-presenters 0.1.13 → 0.2.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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +186 -0
  4. data/Gemfile.lock +37 -38
  5. data/HISTORY.md +61 -0
  6. data/README.md +23 -1
  7. data/app/demo/components/chips.pom +6 -0
  8. data/app/demo/components/{forms.pom → content.pom} +3 -3
  9. data/app/demo/components/date_fields.pom +1 -1
  10. data/app/demo/components/datetime_fields.pom +6 -0
  11. data/app/demo/components/drawers.pom +1 -1
  12. data/app/demo/components/file_inputs.pom +16 -0
  13. data/app/demo/components/footers.pom +1 -1
  14. data/app/demo/components/google_maps.pom +17 -0
  15. data/app/demo/components/headers.pom +1 -1
  16. data/app/demo/components/layouts.pom +36 -4
  17. data/app/demo/components/lists.pom +25 -0
  18. data/app/demo/components/nav/menu.pom +9 -2
  19. data/app/demo/components/nav/pattern_drawer.pom +5 -0
  20. data/app/demo/components/nav/pattern_menu.pom +12 -0
  21. data/app/demo/components/sliders.pom +49 -0
  22. data/app/demo/components/snackbar.pom +10 -0
  23. data/app/demo/components/steppers.pom +178 -0
  24. data/app/demo/components/tab_bars.pom +51 -0
  25. data/app/demo/components/tables.pom +85 -13
  26. data/app/demo/components/text_areas.pom +13 -0
  27. data/app/demo/components/text_fields.pom +20 -8
  28. data/app/demo/components/toggles.pom +50 -14
  29. data/app/demo/components/tooltips.pom +2 -6
  30. data/app/demo/events/actions/clear.pom +23 -0
  31. data/app/demo/events/actions/loads.pom +16 -6
  32. data/app/demo/events/actions/posts.pom +1 -1
  33. data/app/demo/events/actions/toggle_visiblity.pom +4 -3
  34. data/app/demo/events/nav/drawer.pom +2 -2
  35. data/app/demo/events/tagged_input.pom +37 -0
  36. data/app/demo/hello_world.pom +3 -0
  37. data/app/demo/markdown.pom +1 -0
  38. data/app/demo/namespaces.pom +89 -0
  39. data/app/demo/nav/top_nav.pom +12 -0
  40. data/app/demo/patterns.pom +19 -0
  41. data/app/demo/patterns/search_select.pom +104 -0
  42. data/app/demo/shared/context_list.pom +1 -1
  43. data/app/demo/styles.pom +21 -11
  44. data/component-status.yml +11 -11
  45. data/config.ru +2 -1
  46. data/lib/voom/container_methods.rb +1 -1
  47. data/lib/voom/presenters-engine.rb +29 -26
  48. data/lib/voom/presenters.rb +15 -9
  49. data/lib/voom/presenters/api/app.rb +18 -5
  50. data/lib/voom/presenters/api/router.rb +11 -49
  51. data/lib/voom/presenters/demo/echo.rb +5 -0
  52. data/lib/voom/presenters/dsl.rb +10 -4
  53. data/lib/voom/presenters/dsl/components/actions/base.rb +37 -0
  54. data/lib/voom/presenters/dsl/components/actions/clear.rb +17 -0
  55. data/lib/voom/presenters/dsl/components/actions/deletes.rb +17 -0
  56. data/lib/voom/presenters/dsl/components/actions/dialog.rb +17 -0
  57. data/lib/voom/presenters/dsl/components/actions/loads.rb +32 -0
  58. data/lib/voom/presenters/dsl/components/actions/navigates.rb +17 -0
  59. data/lib/voom/presenters/dsl/components/actions/posts.rb +17 -0
  60. data/lib/voom/presenters/dsl/components/actions/remove.rb +17 -0
  61. data/lib/voom/presenters/dsl/components/actions/replaces.rb +25 -0
  62. data/lib/voom/presenters/dsl/components/actions/snackbar.rb +17 -0
  63. data/lib/voom/presenters/dsl/components/actions/stepper.rb +17 -0
  64. data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +17 -0
  65. data/lib/voom/presenters/dsl/components/actions/updates.rb +17 -0
  66. data/lib/voom/presenters/dsl/components/avatar.rb +4 -5
  67. data/lib/voom/presenters/dsl/components/badge.rb +1 -1
  68. data/lib/voom/presenters/dsl/components/base.rb +20 -11
  69. data/lib/voom/presenters/dsl/components/button.rb +12 -10
  70. data/lib/voom/presenters/dsl/components/card.rb +18 -19
  71. data/lib/voom/presenters/dsl/components/checkbox.rb +3 -1
  72. data/lib/voom/presenters/dsl/components/chip.rb +9 -10
  73. data/lib/voom/presenters/dsl/components/content.rb +21 -11
  74. data/lib/voom/presenters/dsl/components/date_field.rb +1 -1
  75. data/lib/voom/presenters/dsl/components/datetime_base.rb +1 -2
  76. data/lib/voom/presenters/dsl/components/datetime_field.rb +1 -1
  77. data/lib/voom/presenters/dsl/components/dialog.rb +10 -6
  78. data/lib/voom/presenters/dsl/components/drawer.rb +6 -4
  79. data/lib/voom/presenters/dsl/components/event.rb +55 -39
  80. data/lib/voom/presenters/dsl/components/event_base.rb +2 -2
  81. data/lib/voom/presenters/dsl/components/expansion_panel.rb +5 -5
  82. data/lib/voom/presenters/dsl/components/file_input.rb +22 -0
  83. data/lib/voom/presenters/dsl/components/footer.rb +1 -1
  84. data/lib/voom/presenters/dsl/components/form.rb +17 -15
  85. data/lib/voom/presenters/dsl/components/google_map.rb +40 -0
  86. data/lib/voom/presenters/dsl/components/grid.rb +58 -18
  87. data/lib/voom/presenters/dsl/components/header.rb +2 -5
  88. data/lib/voom/presenters/dsl/components/hidden_field.rb +2 -2
  89. data/lib/voom/presenters/dsl/components/icon.rb +4 -5
  90. data/lib/voom/presenters/dsl/components/icon_base.rb +3 -3
  91. data/lib/voom/presenters/dsl/components/icon_toggle.rb +2 -2
  92. data/lib/voom/presenters/dsl/components/image.rb +3 -3
  93. data/lib/voom/presenters/dsl/components/input.rb +2 -2
  94. data/lib/voom/presenters/dsl/components/list.rb +12 -10
  95. data/lib/voom/presenters/dsl/components/lists/action.rb +8 -9
  96. data/lib/voom/presenters/dsl/components/lists/actions.rb +8 -8
  97. data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
  98. data/lib/voom/presenters/dsl/components/lists/line.rb +14 -17
  99. data/lib/voom/presenters/dsl/components/lists/separator.rb +2 -2
  100. data/lib/voom/presenters/dsl/components/menu.rb +10 -12
  101. data/lib/voom/presenters/dsl/components/mixins/attaches.rb +9 -3
  102. data/lib/voom/presenters/dsl/components/mixins/avatar.rb +0 -1
  103. data/lib/voom/presenters/dsl/components/mixins/buttons.rb +1 -1
  104. data/lib/voom/presenters/dsl/components/mixins/chips.rb +1 -2
  105. data/lib/voom/presenters/dsl/components/mixins/common.rb +20 -14
  106. data/lib/voom/presenters/dsl/components/mixins/content.rb +1 -1
  107. data/lib/voom/presenters/dsl/components/mixins/date_time_fields.rb +0 -3
  108. data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +1 -2
  109. data/lib/voom/presenters/dsl/components/mixins/event.rb +3 -3
  110. data/lib/voom/presenters/dsl/components/mixins/expansion_panels.rb +1 -1
  111. data/lib/voom/presenters/dsl/components/mixins/file_inputs.rb +16 -0
  112. data/lib/voom/presenters/dsl/components/mixins/google_maps.rb +15 -0
  113. data/lib/voom/presenters/dsl/components/mixins/grids.rb +1 -1
  114. data/lib/voom/presenters/dsl/components/mixins/icons.rb +0 -1
  115. data/lib/voom/presenters/dsl/components/mixins/menus.rb +1 -1
  116. data/lib/voom/presenters/dsl/components/mixins/selects.rb +0 -1
  117. data/lib/voom/presenters/dsl/components/mixins/sliders.rb +15 -0
  118. data/lib/voom/presenters/dsl/components/mixins/snackbars.rb +0 -1
  119. data/lib/voom/presenters/dsl/components/mixins/steppers.rb +15 -0
  120. data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +15 -0
  121. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +5 -3
  122. data/lib/voom/presenters/dsl/components/mixins/toggles.rb +1 -4
  123. data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +0 -1
  124. data/lib/voom/presenters/dsl/components/mixins/typography.rb +43 -13
  125. data/lib/voom/presenters/dsl/components/page.rb +0 -1
  126. data/lib/voom/presenters/dsl/components/radio_button.rb +1 -1
  127. data/lib/voom/presenters/dsl/components/rich_text_area.rb +26 -0
  128. data/lib/voom/presenters/dsl/components/select.rb +4 -5
  129. data/lib/voom/presenters/dsl/components/slider.rb +39 -0
  130. data/lib/voom/presenters/dsl/components/snackbar.rb +2 -2
  131. data/lib/voom/presenters/dsl/components/stepper.rb +106 -0
  132. data/lib/voom/presenters/dsl/components/switch.rb +1 -1
  133. data/lib/voom/presenters/dsl/components/tab_bar.rb +53 -0
  134. data/lib/voom/presenters/dsl/components/table.rb +99 -27
  135. data/lib/voom/presenters/dsl/components/text_area.rb +4 -3
  136. data/lib/voom/presenters/dsl/components/text_field.rb +8 -12
  137. data/lib/voom/presenters/dsl/components/time_field.rb +1 -1
  138. data/lib/voom/presenters/dsl/components/toggle_base.rb +2 -2
  139. data/lib/voom/presenters/dsl/components/tooltip.rb +1 -2
  140. data/lib/voom/presenters/dsl/components/typography.rb +4 -5
  141. data/lib/voom/presenters/dsl/definer.rb +2 -2
  142. data/lib/voom/presenters/dsl/definition.rb +6 -4
  143. data/lib/voom/presenters/dsl/user_interface.rb +17 -21
  144. data/lib/voom/presenters/errors/parameter_validation.rb +1 -1
  145. data/lib/voom/presenters/helpers.rb +5 -5
  146. data/lib/voom/presenters/helpers/date.rb +3 -3
  147. data/lib/voom/presenters/helpers/rails.rb +7 -2
  148. data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
  149. data/lib/voom/presenters/helpers/route.rb +6 -0
  150. data/lib/voom/presenters/helpers/time.rb +1 -1
  151. data/lib/voom/presenters/namespace.rb +12 -0
  152. data/lib/voom/presenters/settings.rb +58 -37
  153. data/lib/voom/presenters/version.rb +1 -1
  154. data/lib/voom/presenters/web_client/app.rb +50 -20
  155. data/lib/voom/presenters/web_client/markdown_render.rb +24 -11
  156. data/lib/voom/presenters/web_client/router.rb +17 -52
  157. data/lib/voom/serializer.rb +2 -2
  158. data/lib/voom/trace.rb +1 -1
  159. data/presenters.gemspec +2 -1
  160. data/public/style-bundle.js +2 -2
  161. data/scripts/bump.sh +1 -0
  162. data/scripts/changelog.sh +5 -0
  163. data/scripts/deploy-demo.sh +1 -0
  164. data/scripts/release.sh +1 -1
  165. data/scripts/tag.sh +5 -0
  166. data/views/mdc/.babelrc +8 -0
  167. data/views/mdc/.eslintrc.yml +23 -0
  168. data/views/mdc/assets/js/app.js +19 -6
  169. data/views/mdc/assets/js/components/base-component.js +25 -2
  170. data/views/mdc/assets/js/components/base-container.js +47 -0
  171. data/views/mdc/assets/js/components/button.js +3 -10
  172. data/views/mdc/assets/js/components/cards.js +11 -0
  173. data/views/mdc/assets/js/components/checkboxes.js +30 -7
  174. data/views/mdc/assets/js/components/chips.js +38 -5
  175. data/views/mdc/assets/js/components/content.js +13 -0
  176. data/views/mdc/assets/js/components/data-tables.js +38 -0
  177. data/views/mdc/assets/js/components/datetime.js +61 -21
  178. data/views/mdc/assets/js/components/dialogs.js +25 -19
  179. data/views/mdc/assets/js/components/events.js +13 -3
  180. data/views/mdc/assets/js/components/events/base.js +13 -3
  181. data/views/mdc/assets/js/components/events/errors.js +1 -1
  182. data/views/mdc/assets/js/components/events/posts.js +53 -13
  183. data/views/mdc/assets/js/components/events/removes.js +20 -0
  184. data/views/mdc/assets/js/components/events/replaces.js +35 -36
  185. data/views/mdc/assets/js/components/events/stepper.js +23 -0
  186. data/views/mdc/assets/js/components/events/toggle_visibility.js +15 -11
  187. data/views/mdc/assets/js/components/file-inputs.js +29 -0
  188. data/views/mdc/assets/js/components/forms.js +8 -59
  189. data/views/mdc/assets/js/components/grid.js +20 -0
  190. data/views/mdc/assets/js/components/hidden-fields.js +33 -0
  191. data/views/mdc/assets/js/components/icon-toggles.js +7 -14
  192. data/views/mdc/assets/js/components/initialize.js +20 -1
  193. data/views/mdc/assets/js/components/lists.js +1 -1
  194. data/views/mdc/assets/js/components/menus.js +12 -13
  195. data/views/mdc/assets/js/components/mixins/visibility-observer.js +34 -0
  196. data/views/mdc/assets/js/components/radios.js +39 -0
  197. data/views/mdc/assets/js/components/rich-text-area.js +43 -0
  198. data/views/mdc/assets/js/components/selects.js +24 -23
  199. data/views/mdc/assets/js/components/sliders.js +56 -0
  200. data/views/mdc/assets/js/components/snackbar.js +14 -23
  201. data/views/mdc/assets/js/components/steppers.js +48 -0
  202. data/views/mdc/assets/js/components/switches.js +24 -23
  203. data/views/mdc/assets/js/components/tab-bars.js +14 -0
  204. data/views/mdc/assets/js/components/text-fields.js +37 -35
  205. data/views/mdc/assets/js/config.js +27 -0
  206. data/views/mdc/assets/js/mdl-stepper.js +1108 -0
  207. data/views/mdc/assets/js/utils/compatibility.js +9 -0
  208. data/views/mdc/assets/js/utils/config.js +73 -0
  209. data/views/mdc/assets/js/utils/config.test.js +59 -0
  210. data/views/mdc/assets/js/utils/urls.js +5 -2
  211. data/views/mdc/assets/scss/app.scss +11 -3
  212. data/views/mdc/assets/scss/components/button.scss +17 -2
  213. data/views/mdc/assets/scss/components/card.scss +8 -3
  214. data/views/mdc/assets/scss/components/checkbox.scss +0 -4
  215. data/views/mdc/assets/scss/components/content.scss +11 -0
  216. data/views/mdc/assets/scss/components/data-table.scss +80 -0
  217. data/views/mdc/assets/scss/components/datetime.scss +6 -0
  218. data/views/mdc/assets/scss/components/fab.scss +2 -1
  219. data/views/mdc/assets/scss/components/file-input.scss +22 -0
  220. data/views/mdc/assets/scss/components/grid.scss +59 -3
  221. data/views/mdc/assets/scss/components/image.scss +6 -0
  222. data/views/mdc/assets/scss/components/list.scss +13 -0
  223. data/views/mdc/assets/scss/components/menu.scss +1 -0
  224. data/views/mdc/assets/scss/components/radio.scss +4 -0
  225. data/views/mdc/assets/scss/components/rich-text-area.scss +37 -0
  226. data/views/mdc/assets/scss/components/slider.scss +1 -0
  227. data/views/mdc/assets/scss/components/snackbar.scss +1 -5
  228. data/views/mdc/assets/scss/components/stepper.scss +235 -0
  229. data/views/mdc/assets/scss/components/switch.scss +4 -5
  230. data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
  231. data/views/mdc/assets/scss/components/textfield.scss +8 -1
  232. data/views/mdc/assets/scss/components/typography.scss +4 -0
  233. data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +2 -2
  234. data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
  235. data/views/mdc/assets/scss/styles.scss +3 -2
  236. data/views/mdc/assets/scss/theme.scss +6 -0
  237. data/views/mdc/body/header.erb +1 -0
  238. data/views/mdc/body/snackbar.erb +1 -1
  239. data/views/mdc/components/actions/clear.rb +11 -0
  240. data/views/mdc/components/actions/delete.rb +11 -0
  241. data/views/mdc/components/actions/dialog.rb +11 -0
  242. data/views/mdc/components/actions/loads.rb +11 -0
  243. data/views/mdc/components/actions/navigates.rb +11 -0
  244. data/views/mdc/components/actions/post.rb +17 -0
  245. data/views/mdc/components/actions/remove.rb +10 -0
  246. data/views/mdc/components/actions/replaces.rb +12 -0
  247. data/views/mdc/components/actions/snackbar.rb +10 -0
  248. data/views/mdc/components/actions/stepper.rb +10 -0
  249. data/views/mdc/components/actions/toggle_visibility.rb +10 -0
  250. data/views/mdc/components/actions/update.rb +10 -0
  251. data/views/mdc/components/button.erb +9 -6
  252. data/views/mdc/components/buttons/button.erb +10 -5
  253. data/views/mdc/components/buttons/fab.erb +8 -2
  254. data/views/mdc/components/buttons/icon.erb +9 -2
  255. data/views/mdc/components/buttons/image.erb +9 -4
  256. data/views/mdc/components/{display.erb → caption.erb} +0 -0
  257. data/views/mdc/components/card.erb +6 -3
  258. data/views/mdc/components/checkbox.erb +21 -9
  259. data/views/mdc/components/chip.erb +12 -3
  260. data/views/mdc/components/content.erb +6 -1
  261. data/views/mdc/components/datetime.erb +21 -13
  262. data/views/mdc/components/dialog.erb +4 -1
  263. data/views/mdc/components/event.erb +5 -9
  264. data/views/mdc/components/file_input.erb +13 -0
  265. data/views/mdc/components/form.erb +19 -5
  266. data/views/mdc/components/google_map.erb +9 -0
  267. data/views/mdc/components/grid.erb +18 -4
  268. data/views/mdc/components/headline.erb +2 -0
  269. data/views/mdc/components/hidden_field.erb +6 -1
  270. data/views/mdc/components/icon_toggle.erb +1 -1
  271. data/views/mdc/components/list.erb +5 -2
  272. data/views/mdc/components/list/actions/switch.erb +1 -1
  273. data/views/mdc/components/list/line.erb +7 -6
  274. data/views/mdc/components/menu.erb +8 -12
  275. data/views/mdc/components/{subheading.erb → overline.erb} +0 -0
  276. data/views/mdc/components/radio_button.erb +20 -10
  277. data/views/mdc/components/rich_text_area.erb +19 -0
  278. data/views/mdc/components/select.erb +7 -3
  279. data/views/mdc/components/slider.erb +41 -0
  280. data/views/mdc/components/snackbar.erb +2 -6
  281. data/views/mdc/components/stepper.erb +47 -0
  282. data/views/mdc/components/stepper/step.erb +33 -0
  283. data/views/mdc/components/{title.erb → subtitle.erb} +0 -0
  284. data/views/mdc/components/switch.erb +27 -12
  285. data/views/mdc/components/tab_bar.erb +29 -0
  286. data/views/mdc/components/table.erb +4 -2
  287. data/views/mdc/components/table/checkbox.erb +17 -0
  288. data/views/mdc/components/table/header.erb +13 -4
  289. data/views/mdc/components/table/pagination.erb +14 -23
  290. data/views/mdc/components/table/row.erb +3 -1
  291. data/views/mdc/components/text_area.erb +17 -7
  292. data/views/mdc/components/text_field.erb +31 -13
  293. data/views/mdc/components/typography.erb +2 -2
  294. data/views/mdc/layout.erb +33 -31
  295. data/views/mdc/package-lock.json +11019 -6996
  296. data/views/mdc/package.json +46 -27
  297. data/views/mdc/webpack.config.js +1 -0
  298. metadata +112 -13
  299. data/app/demo/events/actions/autocomplete.pom +0 -32
  300. data/lib/voom/presenters/dsl/components/action.rb +0 -35
  301. data/views/mdc/assets/js/components/events/autocomplete.js +0 -96
  302. data/views/mdc/assets/js/material.js +0 -3996
  303. data/views/mdc/assets/scss/components/table-pagination.scss +0 -65
  304. data/views/mdc/components/modal.erb +0 -15
  305. data/views/mdc/components/static.erb +0 -7
@@ -1,6 +1,6 @@
1
1
  require_relative '../helpers/indented_grid'
2
2
 
3
- Voom::Presenters.define(:forms) do
3
+ Voom::Presenters.define(:content) do
4
4
  helpers Demo::Helpers::IndentedGrid
5
5
  attach :top_nav
6
6
  attach :component_drawer
@@ -10,10 +10,10 @@ Voom::Presenters.define(:forms) do
10
10
  column 1
11
11
  column 4 do
12
12
  card do
13
- display 'Posts in Form'
13
+ headline 'Posts in Form'
14
14
  body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
15
15
  'This works with posts and replace actions'
16
- form do
16
+ content do
17
17
  text_field name: :myfield do
18
18
  label 'Data to post'
19
19
  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
 
@@ -28,7 +28,7 @@ Voom::Presenters.define(:drawers) do
28
28
  end
29
29
 
30
30
  indented_grid do
31
- display 'Drawers'
31
+ headline 'Drawers'
32
32
 
33
33
  attach :code, file: __FILE__
34
34
  end
@@ -0,0 +1,16 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:file_inputs) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'File Inputs'
8
+
9
+ indented_grid do
10
+ form do
11
+ file_input name: :upload
12
+ end
13
+
14
+ attach :code, file: __FILE__
15
+ end
16
+ end
@@ -29,7 +29,7 @@ Voom::Presenters.define(:footers) do
29
29
  end
30
30
 
31
31
  indented_grid do
32
- display 'Footers'
32
+ headline 'Footers', level: 3
33
33
 
34
34
  attach :code, file: __FILE__
35
35
  end
@@ -0,0 +1,17 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:maps) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Maps'
8
+
9
+ indented_grid do
10
+ subheading 'Static Maps'
11
+
12
+ google_map address: '125 Park Street, Traverse City, MI', height: 300, width: 400
13
+
14
+ attach :code, file: __FILE__
15
+ end
16
+
17
+ end
@@ -34,7 +34,7 @@ Voom::Presenters.define(:headers) do
34
34
 
35
35
 
36
36
  indented_grid do
37
- display 'Headers'
37
+ headline 'Headers'
38
38
 
39
39
  attach :code, file: __FILE__
40
40
  end
@@ -2,18 +2,18 @@ require_relative '../helpers/indented_grid'
2
2
 
3
3
  Voom::Presenters.define(:layouts) do
4
4
  helpers Demo::Helpers::IndentedGrid
5
-
5
+
6
6
  attach :top_nav
7
7
  attach :component_drawer
8
8
  page_title 'Layouts'
9
9
 
10
10
  indented_grid do
11
11
 
12
- display 'Grid'
12
+ headline 'Grid'
13
13
 
14
14
  grid do
15
15
  (1..12).each do |size|
16
- column 1, color: :lightgray do
16
+ column 1, color: :lightgray do
17
17
  body '1'
18
18
  end
19
19
  end
@@ -29,7 +29,14 @@ Voom::Presenters.define(:layouts) do
29
29
 
30
30
  grid do
31
31
  column 6, color: :lightgray do
32
- body '6'
32
+ body '6 wide with sub-grid of 12'
33
+ grid do
34
+ (1..12).each do |size|
35
+ column 1, color: :white do
36
+ body '1'
37
+ end
38
+ end
39
+ end
33
40
  end
34
41
  column 4, color: :lightgray do
35
42
  body '4'
@@ -39,6 +46,31 @@ Voom::Presenters.define(:layouts) do
39
46
  end
40
47
  end
41
48
 
49
+ headline 'Grid Padding'
50
+ body 'You can control the grid padding with the `padding` attribute.',
51
+ 'By default a top most grid has padding on all four sides.',
52
+ 'A nested grid has top and bottom padding only. (No right and left padding.)',
53
+ 'Vaid values are `:all`, `:none` and an array that specifies sides to pad: `[:top, :right, :bottom, :left]`. (Same as `:none`)',
54
+ 'You can also pad columns. Column padding is half as wide as grid padding. '
55
+ grid padding: :top do
56
+ column 6, color: :lightgray do
57
+ body '6 wide with sub-grid of 12'
58
+ grid padding: :none do
59
+ (1..12).each do |size|
60
+ column 1, color: :white do
61
+ body '1'
62
+ end
63
+ end
64
+ end
65
+ end
66
+ column 4, color: :lightgray, padding: [:top, :left, :bottom] do
67
+ body '4'
68
+ end
69
+ column 2, color: :lightgray do
70
+ body '2'
71
+ end
72
+ end
73
+
42
74
  attach :code, file: __FILE__
43
75
  end
44
76
  end
@@ -91,6 +91,31 @@ Voom::Presenters.define(:lists) do
91
91
  end
92
92
  end
93
93
 
94
+ headline 'Multiple controls'
95
+ list do
96
+ actors.each_with_index do |actor, index|
97
+ line do
98
+ text actor.name
99
+ actions do
100
+ case index%4
101
+ when 0
102
+ checkbox
103
+ icon :delete
104
+ when 1
105
+ radio_button
106
+ icon :delete
107
+ when 2
108
+ switch
109
+ icon :delete
110
+ when 3
111
+ icon_toggle :star
112
+ icon :delete
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
118
+
94
119
  headline 'Two line'
95
120
 
96
121
  list do
@@ -1,8 +1,15 @@
1
1
  Voom::Presenters.define('component_menu') do
2
2
  helpers Voom::Presenters::Helpers::Inflector
3
3
  menu side: :left do
4
- %i(cards lists expansion_panels tables text_fields selects buttons fabs fabs_mini dialogs layouts headers drawers
5
- footers menus toggles chips snackbar badges tooltips hidden_fields text_areas forms icons datetime_fields date_fields time_fields).sort.each do |comp|
4
+ %i(
5
+ cards lists expansion_panels tables text_fields
6
+ selects buttons fabs fabs_mini dialogs
7
+ layouts headers drawers footers menus
8
+ toggles chips snackbar badges tooltips
9
+ hidden_fields text_areas steppers sliders tab_bars
10
+ content icons datetime_fields date_fields time_fields
11
+ maps file_inputs
12
+ ).sort.each do |comp|
6
13
  item titleize(comp) do
7
14
  event :click do
8
15
  loads comp
@@ -0,0 +1,5 @@
1
+ Voom::Presenters.define(:pattern_drawer) do
2
+ drawer 'Patterns' do
3
+ attach :pattern_menu
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ Voom::Presenters.define('pattern_menu') do
2
+ helpers Voom::Presenters::Helpers::Inflector
3
+ menu side: :left do
4
+ %i(search_select).sort.each do |pattern|
5
+ item titleize(pattern) do
6
+ event :click do
7
+ loads pattern
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:sliders) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Sliders'
8
+
9
+ indented_grid do
10
+
11
+ title 'Continuous Slider'
12
+ slider discrete: false
13
+
14
+ title 'Discrete Slider'
15
+ slider discrete: true
16
+
17
+ title 'Discrete Slider with tick marks'
18
+ subheading '1 to 50 in steps of 2'
19
+ slider discrete: true, show_tracker_marks: true, value_min: 0, value_max: 50, step: 2 do
20
+ value 10
21
+ end
22
+
23
+ title 'Slider with change event'
24
+ slider discrete: true, show_tracker_marks: true, value_min: 0, value_max: 50, step: 2 do
25
+ value 10
26
+ event :change do
27
+ snackbar "Slider value changed"
28
+ end
29
+ end
30
+
31
+ button 'Show hidden slider', type: :flat, color: :secondary do
32
+ event :click do
33
+ toggle_visibility :hidden_slider, action: :show
34
+ end
35
+ end
36
+ content id: :hidden_slider, hidden: true do
37
+ title 'I was a hidden slider'
38
+ subheading 'This slider was hidden when the page was first rendered. Now that it was made visible, it should work properly.'
39
+ slider discrete: true, show_tracker_marks: true, value_min: 0, value_max: 50, step: 2 do
40
+ value 10
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ attach :code, file: __FILE__
47
+ end
48
+
49
+
@@ -19,6 +19,16 @@ Voom::Presenters.define(:snackbar) do
19
19
  snackbar 'You clicked snackbar the button!'
20
20
  end
21
21
  end
22
+
23
+ blank
24
+
25
+ title 'Response from a POST'
26
+ body 'You can return a string or array of strings in your CRUD response (`messages.snackbar`) and it will display after the event fires.'
27
+ button 'Show Snackbar from Response' do
28
+ event :click do
29
+ posts '/_echo_snackbar_', snackbar_echo: 'Your operation succeeded!'
30
+ end
31
+ end
22
32
  end
23
33
 
24
34
  attach :code, file: __FILE__
@@ -0,0 +1,178 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:steppers) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Stepper'
8
+
9
+ indented_grid do
10
+
11
+ title 'Horizontal Stepper'
12
+ stepper id: :my_stepper_id do
13
+ step id: :step1 do
14
+ label 'Step 1'
15
+
16
+ card do
17
+ text 'Make a choice:'
18
+
19
+ select name: :step_type do
20
+ option do
21
+ value ''
22
+ text 'Select something...'
23
+ end
24
+ option do
25
+ value 'type1'
26
+ text 'Step 2 Variation 1'
27
+ end
28
+ option do
29
+ value 'type2'
30
+ text 'Step 2 Variation 2'
31
+ end
32
+ event :change do
33
+ replaces :step2_content, :step2_form
34
+ stepper :continue
35
+ end
36
+ end
37
+
38
+ text_field do
39
+ label 'Text...'
40
+ end
41
+
42
+ text_field do
43
+ label 'Text...'
44
+ end
45
+
46
+ end
47
+
48
+ actions do
49
+ continue do
50
+ event :click do
51
+ posts 'to_nowhere_fails' # stepper should NOT advance
52
+ end
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ step id: :step2 do
59
+ label 'Middle Step'
60
+ attach :step2_form, step_type: :type1
61
+ actions do
62
+ continue
63
+ back
64
+ cancel
65
+ end
66
+ end
67
+
68
+ step id: :step3 do
69
+ label 'Final Step'
70
+ actions do
71
+ continue
72
+ back
73
+ cancel
74
+ end
75
+ end
76
+ end
77
+
78
+ title 'Vertical Stepper'
79
+
80
+ stepper orientation: :vertical do
81
+ step id: :step1 do
82
+ label 'Step 1'
83
+ headline 'Look at me:'
84
+ text_area
85
+
86
+ text_field do
87
+ label 'Text...'
88
+ end
89
+
90
+ text_field do
91
+ label 'Text...'
92
+ end
93
+
94
+ text_field do
95
+ label 'Text...'
96
+ end
97
+
98
+ text_field do
99
+ label 'Text...'
100
+ end
101
+
102
+ actions do
103
+ continue
104
+ cancel
105
+ end
106
+ end
107
+ step id: :step2 do
108
+ label 'Step 2'
109
+ headline 'Hey Now!'
110
+ select do
111
+ label 'Text...'
112
+ option do
113
+ value 'value1'
114
+ text 'First value'
115
+ end
116
+ option do
117
+ value 'value2'
118
+ text 'Second value'
119
+ end
120
+ event :change do
121
+ snackbar 'item changed'
122
+ end
123
+ end
124
+
125
+
126
+ actions do
127
+ continue
128
+ back
129
+ cancel
130
+ end
131
+ end
132
+
133
+ step id: :step3 do
134
+ label 'Step 3'
135
+
136
+ headline 'Finally:'
137
+ text_field name: :numeric do
138
+ label 'Number...'
139
+ pattern /-?[0-9]*(\.[0-9]+)?/
140
+ hint 'Input is not a number!'
141
+ end
142
+
143
+ actions do
144
+ continue
145
+ back
146
+ cancel
147
+ end
148
+ end
149
+ end
150
+
151
+ end
152
+
153
+ attach :code, file: __FILE__
154
+ end
155
+
156
+ Voom::Presenters.define(:step2_form) do
157
+ content id: :step2_content do
158
+ type = context.fetch('step_type') {context.fetch(:step_type) {nil}}
159
+ attach "step2_#{type}_form" if type
160
+ end
161
+ end
162
+
163
+ Voom::Presenters.define(:step2_type1_form) do
164
+ helpers Demo::Helpers::IndentedGrid
165
+ indented_grid do
166
+ headline 'Form of Type1'
167
+ title 'Continuous Slider'
168
+ slider discrete: true, show_tracker_marks: true, value_min: 0, value_max: 50, step: 2 do
169
+ value 10
170
+ end
171
+ end
172
+ end
173
+
174
+ Voom::Presenters.define(:step2_type2_form) do
175
+ headline 'Form of Type2'
176
+ end
177
+
178
+