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,17 @@
1
+ require 'voom/presenters/dsl/components/actions/base'
2
+
3
+ module Voom
4
+ module Presenters
5
+ module DSL
6
+ module Components
7
+ module Actions
8
+ class ToggleVisibility < Actions::Base
9
+ def initialize(**attribs_, &block)
10
+ super(type: :toggle_visibility, **attribs_, &block)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'voom/presenters/dsl/components/actions/base'
2
+
3
+ module Voom
4
+ module Presenters
5
+ module DSL
6
+ module Components
7
+ module Actions
8
+ class Updates < Actions::Base
9
+ def initialize(**attribs_, &block)
10
+ super(type: :update, **attribs_, &block)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,6 +1,6 @@
1
- require_relative 'event_base'
2
- require_relative 'mixins/event'
3
- require_relative 'mixins/tooltips'
1
+ require 'voom/presenters/dsl/components/event_base'
2
+ require 'voom/presenters/dsl/components/mixins/event'
3
+ require 'voom/presenters/dsl/components/mixins/tooltips'
4
4
 
5
5
  module Voom
6
6
  module Presenters
@@ -12,8 +12,7 @@ module Voom
12
12
  attr_accessor :avatar, :color, :size, :position
13
13
 
14
14
  def initialize(**attribs_, &block)
15
- super(type: :avatar, context: context,
16
- **attribs_, &block)
15
+ super(type: :avatar, **attribs_, &block)
17
16
  @avatar = attribs.delete(:avatar)
18
17
  @color = attribs.delete(:color)
19
18
  @size = attribs.delete(:size)
@@ -1,4 +1,4 @@
1
- require_relative 'mixins/event'
1
+ require 'voom/presenters/dsl/components/mixins/event'
2
2
 
3
3
  module Voom
4
4
  module Presenters
@@ -1,9 +1,10 @@
1
- require_relative '../lockable'
2
- require_relative '../../../serializer'
3
- require_relative '../../../trace'
4
- require_relative 'mixins/yield_to'
5
1
  require 'securerandom'
6
2
 
3
+ require 'voom/serializer'
4
+ require 'voom/trace'
5
+ require 'voom/presenters/dsl/lockable'
6
+ require 'voom/presenters/dsl/components/mixins/yield_to'
7
+
7
8
  module Voom
8
9
  module Presenters
9
10
  module DSL
@@ -18,16 +19,15 @@ module Voom
18
19
  include Trace
19
20
  include Mixins::YieldTo
20
21
 
21
- attr_reader :type, :id, :attributes, :context
22
-
23
- alias params context
22
+ attr_reader :type, :id, :tag, :attributes
23
+
24
24
  alias attribs attributes
25
25
 
26
- def initialize(type:, parent:, id: nil, context: {}, **attributes, &block)
26
+ def initialize(type:, parent:, id: nil, tag: nil, **attributes, &block)
27
27
  @id = h(id) || generate_id
28
+ @tag = tag
28
29
  @type = h(type)
29
30
  @parent = parent
30
- @context = context
31
31
  @attributes = escape(attributes)
32
32
  @block = block
33
33
  end
@@ -63,6 +63,16 @@ module Voom
63
63
  @parent.send(:router)
64
64
  end
65
65
 
66
+ def namespace
67
+ @parent.send(:namespace)
68
+ end
69
+
70
+ def context
71
+ @parent.send(:context)
72
+ end
73
+ alias params context
74
+
75
+
66
76
  def yield_block
67
77
  return @_yield_block_ if @_yield_block_
68
78
  @parent.send(:yield_block)
@@ -74,9 +84,8 @@ module Voom
74
84
 
75
85
 
76
86
  def default(key)
77
- Settings.config.presenters.components.defaults&.public_send(type)&.public_send(key)
87
+ Settings.default(type, key)
78
88
  end
79
-
80
89
  end
81
90
  end
82
91
  end
@@ -1,5 +1,5 @@
1
- require_relative 'mixins/common'
2
- require_relative 'mixins/tooltips'
1
+ require 'voom/presenters/dsl/components/mixins/common'
2
+ require 'voom/presenters/dsl/components/mixins/tooltips'
3
3
 
4
4
  module Voom
5
5
  module Presenters
@@ -10,40 +10,42 @@ module Voom
10
10
 
11
11
  BUTTON_TYPES = %i(raised flat fab icon)
12
12
 
13
- attr_accessor :text, :icon, :button_type, :color, :disabled, :size, :position
13
+ attr_accessor :text, :icon, :button_type, :color, :disabled, :size, :position, :full_width, :hidden
14
14
 
15
15
  def initialize(type: nil, **attribs_, &block)
16
- @button_type = h(type) || ((attribs_[:icon]&&!attribs_[:text]) ? :icon : nil) || :flat
16
+ @button_type = h(type) || ((attribs_[:icon] && !attribs_[:text]) ? :icon : nil) || :flat
17
17
  super(type: :button, **attribs_, &block)
18
18
  self.icon(attribs.delete(:icon)) if attribs.key?(:icon)
19
19
  @text = attribs.delete(:text)
20
20
  @color = attribs.delete(:color)
21
- @disabled = attribs.delete(:disabled) { false }
21
+ @disabled = attribs.delete(:disabled) {false}
22
+ @hidden = attribs.delete(:hidden) {false}
22
23
  @size = attribs.delete(:size)
24
+ @full_width = attribs.delete(:full_width) {false}
23
25
  @position = Array(attribs.delete(:position)).compact
24
26
  expand!
25
27
  @event_parent_id = self.parent(:form)&.id || id
26
28
  end
27
29
 
28
- def icon(icon=nil, **attribs, &block)
30
+ def icon(icon = nil, **attribs, &block)
29
31
  return @icon if locked?
30
32
  @icon = Components::Icon.new(parent: self, icon: icon,
31
- context: context,
32
33
  **attribs, &block)
33
34
 
34
35
  end
35
36
 
36
- def image(image=nil, **attribs, &block)
37
+ def image(image = nil, **attribs, &block)
37
38
  return @image if locked?
38
- @image = Components::Image.new(parent: self, image: image, context: context, **attribs, &block)
39
+ @image = Components::Image.new(parent: self, image: image, **attribs, &block)
39
40
  end
40
41
 
41
42
  def menu(**attributes, &block)
42
43
  return @menu if locked?
43
- @menu = Components::Menu.new(parent: self, position: menu_position, context: context, **attributes, &block)
44
+ @menu = Components::Menu.new(parent: self, position: menu_position, **attributes, &block)
44
45
  end
45
46
 
46
47
  private
48
+
47
49
  def menu_position
48
50
  position.include?(:right) ? :right : nil
49
51
  end
@@ -1,14 +1,15 @@
1
- require_relative 'menu'
2
- require_relative 'typography'
3
- require_relative 'mixins/common'
4
- require_relative 'mixins/event'
5
- require_relative 'mixins/attaches'
6
- require_relative 'mixins/avatar'
7
- require_relative 'mixins/text_fields'
8
- require_relative 'mixins/icons'
9
- require_relative 'mixins/snackbars'
10
- require_relative 'mixins/date_time_fields'
11
- require_relative 'mixins/chips'
1
+ require 'voom/presenters/dsl/components/menu'
2
+ require 'voom/presenters/dsl/components/typography'
3
+ require 'voom/presenters/dsl/components/mixins/common'
4
+ require 'voom/presenters/dsl/components/mixins/event'
5
+ require 'voom/presenters/dsl/components/mixins/attaches'
6
+ require 'voom/presenters/dsl/components/mixins/avatar'
7
+ require 'voom/presenters/dsl/components/mixins/text_fields'
8
+ require 'voom/presenters/dsl/components/mixins/icons'
9
+ require 'voom/presenters/dsl/components/mixins/selects'
10
+ require 'voom/presenters/dsl/components/mixins/snackbars'
11
+ require 'voom/presenters/dsl/components/mixins/date_time_fields'
12
+ require 'voom/presenters/dsl/components/mixins/chips'
12
13
 
13
14
  module Voom
14
15
  module Presenters
@@ -20,6 +21,7 @@ module Voom
20
21
  include Mixins::TextFields
21
22
  include Mixins::DateTimeFields
22
23
  include Mixins::Icons
24
+ include Mixins::Selects
23
25
  include Mixins::Snackbars
24
26
  include Mixins::Chips
25
27
 
@@ -41,7 +43,6 @@ module Voom
41
43
  def media(**attribs, &block)
42
44
  return @media if locked?
43
45
  @media = Media.new(parent: self,
44
- context: context,
45
46
  **attribs, &block)
46
47
  end
47
48
 
@@ -71,33 +72,32 @@ module Voom
71
72
 
72
73
  def title(*title, **attribs, &block)
73
74
  return @title if locked?
74
- @title = Typography.new(type: :title,
75
+ @title = Typography.new(type: :headline,
76
+ level: 6,
75
77
  parent: self,
76
78
  text: title,
77
- context: context,
78
79
  **attribs, &block)
79
80
  end
80
81
 
81
82
  def image(image=nil, **attribs, &block)
82
83
  return @image if locked?
83
- @image = Image.new(parent: self, image: image, context: context, **attribs, &block)
84
+ @image = Image.new(parent: self, image: image, **attribs, &block)
84
85
  end
85
86
 
86
87
  def button(icon=nil, **attributes, &block)
87
88
  return @button if locked?
88
- @button = Components::Button.new(icon: icon, position:[:top, :right], parent: self, context: context, **attributes, &block)
89
+ @button = Components::Button.new(icon: icon, position:[:top, :right], parent: self, **attributes, &block)
89
90
  end
90
91
  end
91
92
 
92
93
  def text(*text, **attribs, &block)
93
94
  self << Typography.new(type: :body,
94
- parent: self, text: text, context: context, **attribs, &block)
95
+ parent: self, text: text, **attribs, &block)
95
96
  end
96
97
 
97
98
  def actions(**attribs, &block)
98
99
  return @actions if locked?
99
100
  @actions = Actions.new(parent: self,
100
- context: context,
101
101
  **attribs, &block)
102
102
  end
103
103
 
@@ -112,7 +112,6 @@ module Voom
112
112
 
113
113
  def button(text=nil, **options, &block)
114
114
  @buttons << Components::Button.new(parent: self, text: text,
115
- context: context,
116
115
  **options, &block)
117
116
  end
118
117
  end
@@ -1,13 +1,15 @@
1
- require_relative 'toggle_base'
1
+ require 'voom/presenters/dsl/components/toggle_base'
2
2
 
3
3
  module Voom
4
4
  module Presenters
5
5
  module DSL
6
6
  module Components
7
7
  class Checkbox < ToggleBase
8
+ attr_accessor :indeterminate
8
9
 
9
10
  def initialize(**attribs_, &block)
10
11
  super(type: :checkbox, **attribs_, &block)
12
+ @indeterminate = attribs.delete(:indeterminate) { false }
11
13
  expand!
12
14
  end
13
15
  end
@@ -1,6 +1,6 @@
1
- require_relative 'icon_base'
2
- require_relative 'mixins/event'
3
- require_relative 'mixins/tooltips'
1
+ require 'voom/presenters/dsl/components/icon_base'
2
+ require 'voom/presenters/dsl/components/mixins/event'
3
+ require 'voom/presenters/dsl/components/mixins/tooltips'
4
4
 
5
5
  module Voom
6
6
  module Presenters
@@ -8,40 +8,39 @@ module Voom
8
8
  module Components
9
9
  class Chip < EventBase
10
10
  include Mixins::Tooltips
11
- attr_reader :icons, :color
11
+ attr_reader :icons, :color, :name, :value
12
12
 
13
13
  def initialize(**attribs_, &block)
14
14
  super(type: :chip,
15
- context: context,
16
15
  **attribs_, &block)
17
16
  @icons = []
18
17
  self.text(attribs.delete(:text)) if attribs.key?(:text)
19
18
  self.icon(attribs.delete(:icon)) if attribs.key?(:icon)
20
19
  @color = attribs.delete(:color)
20
+ @name = attribs.delete(:name)
21
+ @value = attribs.delete(:value)
21
22
  expand!
22
23
  end
23
24
 
24
25
  def text(*text, **attribs, &block)
25
26
  return @text if locked?
26
- @text = Components::Typography.new(parent: self, type: :text, text: text, context: context, **attribs, &block)
27
+ @text = Components::Typography.new(parent: self, type: :text, text: text, **attribs, &block)
27
28
  end
28
29
 
29
30
  def icon(icon=nil, **attribs, &block)
30
31
  @icons << Icon.new(parent: self, icon: icon,
31
- context: context,
32
32
  **attribs, &block)
33
33
  end
34
34
 
35
35
  def menu(**attributes, &block)
36
36
  return @menu if locked?
37
- @menu = Components::Menu.new(parent: self, context: context, **attributes, &block)
37
+ @menu = Components::Menu.new(parent: self, **attributes, &block)
38
38
  end
39
39
 
40
40
  class Icon < Components::IconBase
41
41
 
42
42
  def initialize(**attribs_, &block)
43
- super(context: context,
44
- **attribs_, &block)
43
+ super(**attribs_, &block)
45
44
  @position = [:left] if position.empty?
46
45
  expand!
47
46
  end
@@ -1,12 +1,17 @@
1
- require_relative 'menu'
2
- require_relative 'mixins/common'
3
- require_relative 'mixins/event'
4
- require_relative 'mixins/attaches'
5
- require_relative 'mixins/text_fields'
6
- require_relative 'mixins/selects'
7
- require_relative 'mixins/snackbars'
8
- require_relative 'mixins/date_time_fields'
9
- require_relative 'mixins/images'
1
+ require 'voom/presenters/dsl/components/menu'
2
+ require 'voom/presenters/dsl/components/mixins/common'
3
+ require 'voom/presenters/dsl/components/mixins/event'
4
+ require 'voom/presenters/dsl/components/mixins/attaches'
5
+ require 'voom/presenters/dsl/components/mixins/text_fields'
6
+ require 'voom/presenters/dsl/components/mixins/selects'
7
+ require 'voom/presenters/dsl/components/mixins/snackbars'
8
+ require 'voom/presenters/dsl/components/mixins/date_time_fields'
9
+ require 'voom/presenters/dsl/components/mixins/images'
10
+ require 'voom/presenters/dsl/components/mixins/steppers'
11
+ require 'voom/presenters/dsl/components/mixins/sliders'
12
+ require 'voom/presenters/dsl/components/mixins/chips'
13
+ require 'voom/presenters/dsl/components/mixins/icons'
14
+ require 'voom/presenters/dsl/components/mixins/dialogs'
10
15
 
11
16
  module Voom
12
17
  module Presenters
@@ -19,14 +24,19 @@ module Voom
19
24
  include Mixins::DateTimeFields
20
25
  include Mixins::Selects
21
26
  include Mixins::Snackbars
22
- include Mixins::Images
27
+ include Mixins::Steppers
28
+ include Mixins::Sliders
29
+ include Mixins::Chips
30
+ include Mixins::Icons
31
+ include Mixins::Dialogs
23
32
 
24
- attr_reader :hidden, :components, :shows_errors
33
+ attr_reader :hidden, :float, :components, :shows_errors
25
34
 
26
35
  def initialize(**attribs_, &block)
27
36
  super(type: :content, **attribs_, &block)
28
37
  @components = []
29
38
  @hidden = attribs.delete(:hidden){false}
39
+ @float = attribs.delete(:float){false}
30
40
  @shows_errors = attribs.delete(:shows_errors){false}
31
41
  expand!
32
42
  end
@@ -1,4 +1,4 @@
1
- require_relative 'datetime_base'
1
+ require 'voom/presenters/dsl/components/datetime_base'
2
2
 
3
3
  module Voom
4
4
  module Presenters
@@ -1,4 +1,4 @@
1
- require_relative 'text_field'
1
+ require 'voom/presenters/dsl/components/text_field'
2
2
 
3
3
  module Voom
4
4
  module Presenters
@@ -26,7 +26,6 @@ module Voom
26
26
  def clear_icon(icon=nil, **attribs, &block)
27
27
  return @clear_icon if locked?
28
28
  @clear_icon = icon ? Components::Icon.new(parent: self, icon: icon,
29
- context: context,
30
29
  **attribs, &block) : nil
31
30
  end
32
31
 
@@ -1,4 +1,4 @@
1
- require_relative 'datetime_base'
1
+ require 'voom/presenters/dsl/components/datetime_base'
2
2
 
3
3
  module Voom
4
4
  module Presenters
@@ -1,5 +1,7 @@
1
- require_relative 'mixins/common'
2
- require_relative 'mixins/attaches'
1
+ require 'voom/presenters/dsl/components/mixins/common'
2
+ require 'voom/presenters/dsl/components/mixins/attaches'
3
+ require 'voom/presenters/dsl/components/mixins/steppers'
4
+ require 'voom/presenters/dsl/components/mixins/sliders'
3
5
 
4
6
  module Voom
5
7
  module Presenters
@@ -8,6 +10,9 @@ module Voom
8
10
  class Dialog < Base
9
11
  include Mixins::Common
10
12
  include Mixins::Attaches
13
+ include Mixins::Steppers
14
+ include Mixins::Sliders
15
+
11
16
  attr_accessor :width, :height, :buttons, :components, :shows_errors
12
17
 
13
18
  def initialize(**attribs_, &block)
@@ -24,25 +29,24 @@ module Voom
24
29
  def title(*title, **options, &block)
25
30
  return @title if locked?
26
31
  @title = Components::Typography.new(parent: self, type: :title,
27
- text: title, context: context,
32
+ text: title,
28
33
  **options, &block)
29
34
  end
30
35
 
31
36
  def heading(*text, **options, &block)
32
37
  components << Components::Typography.new(parent: self, type: :heading,
33
- text: text, context: context,
38
+ text: text,
34
39
  **options, &block)
35
40
  end
36
41
 
37
42
  def body(*text, **options, &block)
38
43
  components << Components::Typography.new(parent: self, type: :body,
39
- text: text, context: context,
44
+ text: text,
40
45
  **options, &block)
41
46
  end
42
47
 
43
48
  def button(text=nil, **attribs, &block)
44
49
  @buttons << Button.new(parent: self, text: text,
45
- context: context,
46
50
  **attribs, &block)
47
51
  end
48
52
  end