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
@@ -0,0 +1,51 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Voom::Presenters.define(:tab_bars) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Tab Bars'
8
+
9
+ indented_grid do
10
+
11
+ title 'Standard Tab Bar'
12
+ tab_bar do
13
+ tab 'One', selected: true
14
+ tab 'Two'
15
+ tab 'Three'
16
+ end
17
+ separator
18
+
19
+ title 'Tabs with icons next to labels'
20
+ tab_bar do
21
+ tab 'One', icon: :thumb_up
22
+ tab 'Two', icon: :face, selected: true
23
+ tab 'Three', icon: :thumb_down
24
+ end
25
+ separator
26
+
27
+ title 'Tabs with icons above labels'
28
+ tab_bar do
29
+ tab 'One', icon: :thumb_up, stacked: true, selected: true
30
+ tab 'Two', icon: :face, stacked: true
31
+ tab 'Three', icon: :thumb_down, stacked: true
32
+ end
33
+ separator
34
+
35
+ title 'Scrolling Tabs'
36
+ tab_bar do
37
+ 15.times do |idx|
38
+ tab "Tab Number-#{idx}", selected: idx == 3 do
39
+ event :click do
40
+ snackbar 'tab clicked'
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ attach :code, file: __FILE__
48
+ end
49
+
50
+
51
+
@@ -9,30 +9,102 @@ Voom::Presenters.define(:tables) do
9
9
  helpers do
10
10
  def items
11
11
  [
12
- OpenStruct.new(material: 'Acrylic (Transparent)', quantity: 50, price: '$2.90'),
13
- OpenStruct.new(material: 'Plywood (Birch)', quantity: 10, price: '$1.25'),
14
- OpenStruct.new(material: 'Laminate (Gold on Blue)', quantity: 50, price: '$2.35')
12
+ OpenStruct.new(id: 1, material: 'Acrylic (Transparent)', quantity: 50, price: '$2.90'),
13
+ OpenStruct.new(id: 2, material: 'Plywood (Birch)', quantity: 10, price: '$1.25'),
14
+ OpenStruct.new(id: 3, material: 'Laminate (Gold on Blue)', quantity: 50, price: '$2.35')
15
+ ]
16
+ end
17
+
18
+ def drivers
19
+ [
20
+ OpenStruct.new(name: 'Kimi Räikkönen', team: 'Scuderia Ferrari', country: 'Finland'),
21
+ OpenStruct.new(name: 'Daniel Ricciardo', team: 'Red Bull', country: 'Australia'),
22
+ OpenStruct.new(name: 'Lewis Hamilton', team: 'Mercedes', country: 'Great Britain'),
23
+ OpenStruct.new(name: 'Fernando Alonso', team: 'Mclaren', country: 'Spain'),
24
+ OpenStruct.new(name: 'Charles LeClerc', team: 'Sauber', country: 'Monaco')
15
25
  ]
16
26
  end
17
27
  end
18
28
 
19
29
  indented_grid do
20
- table selectable: true do
21
- header do
22
- column 'Material'
23
- column 'Quantity'
24
- column 'Unit price'
30
+ grid do
31
+ column 12 do
32
+ content id: :drivers do
33
+ title 'Non-Selectable'
34
+ table do
35
+ header do
36
+ column 'Name'
37
+ column 'Team'
38
+ column 'Country'
39
+ end
40
+ drivers.each do |driver|
41
+ row do
42
+ column driver.name
43
+ column driver.team
44
+ column driver.country
45
+ end
46
+ end
47
+ pagination page_size: 5,
48
+ total: drivers.count,
49
+ current_page: context.fetch(:page){ 1 },
50
+ replace_id: 'drivers',
51
+ replace_presenter: 'drivers_presenter'
52
+ end
53
+ end
25
54
  end
55
+ end
26
56
 
27
- items.each do |item|
28
- row do
29
- column item.material
30
- column item.quantity
31
- column item.price
57
+ form do
58
+ grid do
59
+ column 12 do
60
+ title 'Selectable (with form)'
61
+ table selectable: true do
62
+ header do
63
+ column 'Material'
64
+ column 'Quantity'
65
+ column 'Unit price'
66
+ end
67
+ items.each do |item|
68
+ row name: :id, value: item.id do
69
+ column item.material
70
+ column item.quantity
71
+ column item.price
72
+ end
73
+ end
74
+ end
75
+ end
76
+ column 12 do
77
+ button 'SUBMIT', type: :raised do
78
+ event :click do
79
+ replaces :context_list, :context_list
80
+ end
81
+ end
82
+ attach :context_list
32
83
  end
33
84
  end
34
85
  end
35
86
 
87
+ grid wide: true do
88
+ column 12 do
89
+ title 'Wide (scrollable)', id: :scrollable
90
+ table do
91
+ header do
92
+ (1..18).each do |idx|
93
+ column "Column #{idx}"
94
+ end
95
+ end
96
+ items.each do |item|
97
+ row do
98
+ (1..6).each do
99
+ column item.material
100
+ column item.quantity
101
+ column item.price
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
36
108
  attach :code, file: __FILE__
37
109
  end
38
110
  end
@@ -11,8 +11,21 @@ Voom::Presenters.define(:text_areas) do
11
11
 
12
12
  text_area name: :notes, rows: 3 do
13
13
  label 'Text lines...'
14
+ hint 'Default behavior is full width'
14
15
  end
15
16
 
17
+
18
+ text_area name: :notes, rows: 5, cols: 60, full_width: false do
19
+ label 'Five by Sixty'
20
+ hint 'Or specify using rows and columns'
21
+ end
22
+
23
+ rich_text_area name: :notes, placeholder: 'Text entered here is saved as HTML' do
24
+ label 'Rich Text Area'
25
+ hint 'Default is full width and 25 rows'
26
+ end
27
+
28
+
16
29
  attach :code, file: __FILE__
17
30
  end
18
31
  end
@@ -13,33 +13,45 @@ Voom::Presenters.define(:text_fields) do
13
13
  label 'Text...'
14
14
  end
15
15
 
16
- headline 'Password'
16
+ title 'Password'
17
17
 
18
18
  text_field name: :password, password: true do
19
19
  label 'Password'
20
20
  end
21
21
 
22
22
  headline 'Numeric'
23
-
24
23
  # Client side validation with hints
25
- headline 'With Hints'
24
+ title 'With Hints'
26
25
  text_field name: :numeric do
27
26
  label 'Number...'
28
27
  pattern /-?[0-9]*(\.[0-9]+)?/
29
- hint 'Input is not a number!'
28
+ hint 'Input should be a number!'
30
29
  end
31
30
 
32
- headline 'With Errors'
31
+ title 'With Errors'
33
32
  text_field name: :guess_me do
34
33
  label 'Guess a number...'
35
34
  pattern /-?[0-9]*(\.[0-9]+)?/
36
35
  value '7'
37
- error 'Input is not a the right number!'
36
+ error 'Input is not the right number!'
37
+ end
38
+
39
+
40
+ title 'With Leading Icon'
41
+ text_field name: :numeric do
42
+ label 'Amount'
43
+ icon :attach_money, position: :left
44
+ end
45
+
46
+ title 'With Trailing Icon'
47
+ text_field name: :numeric do
48
+ label 'Name'
49
+ icon :remove_red_eye
38
50
  end
39
51
 
40
52
  card do
41
- display 'Field Level Events'
42
- heading 'Text Fields'
53
+ headline 'Field Level Events'
54
+ title 'Text Fields'
43
55
  body 'This demonstrates that a change event will submit the field value to the event action. '\
44
56
  'This works with posts and replace actions'
45
57
  text_field name: :myfield do
@@ -7,26 +7,62 @@ Voom::Presenters.define(:toggles) do
7
7
  page_title 'Toggles'
8
8
 
9
9
  indented_grid do
10
- headline 'CHECKBOX'
10
+ title 'CHECKBOX'
11
11
  checkbox
12
- checkbox checked: true
12
+ checkbox checked: true, text: "I am initially checked"
13
+ checkbox indeterminate: true, text: "I am indeterminate"
14
+ checkbox disabled: true, text: "I am disabled"
13
15
 
14
- headline 'RADIO BUTTON'
15
- radio_button checked: true
16
- radio_button
16
+ title 'RADIO BUTTON'
17
+ radio_button name: :radio, value: 'one', checked: true, text: "One"
18
+ radio_button name: :radio, value: 'two', text: "Two"
17
19
 
18
- headline 'ICON TOGGLE'
20
+ title 'ICON TOGGLE'
19
21
  icon_toggle 'format_bold', checked: true
20
22
  icon_toggle 'format_italic'
21
23
 
22
- headline 'SWITCH'
23
- switch checked: true
24
- switch
24
+ title 'SWITCH'
25
+ grid do
26
+ column 6 do
27
+ switch checked: true
28
+ end
29
+ end
30
+ grid do
31
+ column 6 do
32
+ switch
33
+ end
34
+ end
35
+ grid do
36
+ column 6 do
37
+ switch disabled: true
38
+ end
39
+ end
40
+ grid do
41
+ column 10, padding: :none do
42
+ switch text: "This is a long text label that should display even longer wraps to another line?"
43
+ end
44
+ column 10, padding: :none do
45
+ checkbox text: "This is a long text label that should display even longer wraps to another line?"
46
+ end
47
+ end
48
+
49
+
50
+ button :on_dialog do
51
+ event :click do
52
+ dialog :toggle_dlg
53
+ end
54
+ end
55
+ dialog id: :toggle_dlg, width: '30rem' do
56
+ form do
57
+ switch name: :reset_password_email, checked: true, text: 'Send reset password email'
58
+ end
59
+ end
60
+
25
61
 
26
62
  grid do
27
63
  column 6 do
28
- display 'Field Level Events'
29
- heading 'Text Fields'
64
+ headline 'Field Level Events', level: 3
65
+ title 'Text Fields'
30
66
  body 'This demonstrates that a change event will submit the field value to the event action. '\
31
67
  'This works with posts and replace actions'
32
68
  switch name: :myfield do
@@ -34,8 +70,8 @@ Voom::Presenters.define(:toggles) do
34
70
  replaces :context_list, :context_list
35
71
  end
36
72
  end
37
-
38
- display 'Posts in Form'
73
+
74
+ headline 'Posts in Form', level: 3
39
75
  body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
40
76
  'This works with posts and replace actions'
41
77
  form do
@@ -52,4 +88,4 @@ Voom::Presenters.define(:toggles) do
52
88
  end
53
89
  attach :code, file: __FILE__
54
90
  end
55
- end
91
+ end
@@ -95,12 +95,8 @@ Voom::Presenters.define(:tooltips) do
95
95
  end
96
96
 
97
97
 
98
- display 'Styles'
99
-
100
- display 'Typography', level: 4 do
101
- tooltip 'I do nothing.'
102
- end
103
-
98
+ headline 'Styles', level: 3
99
+
104
100
  headline 'Headline' do
105
101
  tooltip 'I do nothing.'
106
102
  end
@@ -0,0 +1,23 @@
1
+ Voom::Presenters.define(:clear_action) do
2
+ helpers Demo::Helpers::IndentedGrid
3
+ attach :top_nav
4
+ attach :events_drawer
5
+
6
+ indented_grid do
7
+ heading 'Clear'
8
+ body 'Allows you to clear an input control.',
9
+ 'Takes the id of the element to clear.'
10
+
11
+ text_field id: :input_to_clear do
12
+ label 'Input to clear'
13
+ value 'Clear me'
14
+ end
15
+
16
+ button 'clear' do
17
+ event :click do
18
+ clear :input_to_clear
19
+ end
20
+ end
21
+ end
22
+ attach :code, file: __FILE__
23
+ end
@@ -1,4 +1,4 @@
1
- Voom::Presenters.define(:toggle_visibility_action) do
1
+ Voom::Presenters.define(:loads_action) do
2
2
  helpers Demo::Helpers::IndentedGrid
3
3
  attach :top_nav
4
4
  attach :events_drawer
@@ -7,13 +7,23 @@ Voom::Presenters.define(:toggle_visibility_action) do
7
7
  heading 'Loads'
8
8
  body 'Loads a new presenter, replacing the whole page.'
9
9
 
10
- subheading context['reloaded'] ? "Reloaded" : 'Loads'
11
- button 'loads' do
12
- event :click do
13
- loads :events, reloaded: true
10
+ content do
11
+ subheading "#{context['reloaded'] ? "Reloaded" : 'Loads'} another presenter"
12
+ button 'loads this page' do
13
+ event :click do
14
+ loads :loads_action, reloaded: true, nil_value:nil
15
+ end
16
+ end
17
+ heading context['reloaded'] ? "Reloaded" : 'Loaded'
18
+ end
19
+ content do
20
+ subheading "An absolute URL loads another page"
21
+ button 'loads google.com' do
22
+ event :click do
23
+ loads 'https://google.com'
24
+ end
14
25
  end
15
26
  end
16
- heading context['reloaded'] ? "Reloaded" : 'Loaded'
17
27
  end
18
28
  attach :code, file: __FILE__
19
29
  end
@@ -14,7 +14,7 @@ Voom::Presenters.define(:posts_action) do
14
14
  content shows_errors: false do
15
15
  button 'posts' do
16
16
  event :click do
17
- posts 'postpath', {optional: :params}
17
+ posts 'postpath', {optional: :params, its_nil: nil}
18
18
  end
19
19
  end
20
20
  end
@@ -7,9 +7,10 @@ Voom::Presenters.define(:toggle_visibility_action) do
7
7
  heading 'Toggle Visibility'
8
8
  body 'Allows you to toggle visibility of content on and off on events.',
9
9
  'Takes the id of the element to toggle.',
10
- "Optionally takes :on or :off to force visibility."
11
-
12
- subheading 'Toggle Visibility'
10
+ "Optionally takes :on or :off to force visibility.",
11
+ "`show :toggle_me` **is the same as** `toggle_visibility :toggle_me, on: true`",
12
+ "`hide :toggle_me` **is the same as** `toggle_visibility :toggle_me, on: false`"
13
+
13
14
  button 'toggle visibility' do
14
15
  event :click do
15
16
  toggle_visibility :toggle_me
@@ -2,14 +2,14 @@ Voom::Presenters.define(:events_drawer) do
2
2
  helpers Voom::Presenters::Helpers::Inflector
3
3
  drawer 'Events' do
4
4
  menu do
5
- %i(field_level_events form_level_events).sort.each do |comp|
5
+ %i(field_level_events form_level_events tagged_input).sort.each do |comp|
6
6
  item titleize(comp) do
7
7
  event :click do
8
8
  loads comp
9
9
  end
10
10
  end
11
11
  end
12
- %i(dialog autocomplete replaces toggle_visibility snackbar updates deletes posts).sort.each do |comp|
12
+ %i(dialog replaces loads toggle_visibility snackbar updates deletes posts clear).sort.each do |comp|
13
13
  item titleize(comp) do
14
14
  event :click do
15
15
  loads "#{comp}_action"