coprl 0.1.0 → 3.0.0.beta.1

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 (618) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +59 -6
  3. data/.gem_release.yml +1 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.github/ISSUE_TEMPLATE/questions-support.md +10 -0
  7. data/.github/workflows/semantic-release.yml +43 -0
  8. data/.gitignore +50 -7
  9. data/.releaserc +11 -0
  10. data/.ruby-version +2 -0
  11. data/CHANGELOG.md +160 -0
  12. data/CODE-OF-CONDUCT.md +73 -0
  13. data/CONTRIBUTING.md +60 -0
  14. data/Gemfile +24 -6
  15. data/Gemfile.lock +172 -0
  16. data/HISTORY.md +61 -0
  17. data/{LICENSE.txt → LICENSE} +6 -6
  18. data/Procfile +1 -0
  19. data/README.md +121 -19
  20. data/ROADMAP.md +6 -0
  21. data/Rakefile +3 -9
  22. data/app/demo/components.pom +19 -0
  23. data/app/demo/components/avatars.pom +40 -0
  24. data/app/demo/components/badges.pom +26 -0
  25. data/app/demo/components/buttons.pom +63 -0
  26. data/app/demo/components/cards.pom +84 -0
  27. data/app/demo/components/chips.pom +103 -0
  28. data/app/demo/components/content.pom +111 -0
  29. data/app/demo/components/date_fields.pom +106 -0
  30. data/app/demo/components/datetime_fields.pom +113 -0
  31. data/app/demo/components/dialogs.pom +195 -0
  32. data/app/demo/components/drawers.pom +35 -0
  33. data/app/demo/components/expansion_panels.pom +20 -0
  34. data/app/demo/components/fabs-mini.pom +17 -0
  35. data/app/demo/components/fabs.pom +16 -0
  36. data/app/demo/components/file_inputs.pom +52 -0
  37. data/app/demo/components/footers.pom +36 -0
  38. data/app/demo/components/google_maps.pom +22 -0
  39. data/app/demo/components/headers.pom +101 -0
  40. data/app/demo/components/hidden_fields.pom +18 -0
  41. data/app/demo/components/icons.pom +125 -0
  42. data/app/demo/components/image_lists.pom +100 -0
  43. data/app/demo/components/images.pom +45 -0
  44. data/app/demo/components/layouts.pom +54 -0
  45. data/app/demo/components/lists.pom +168 -0
  46. data/app/demo/components/menus.pom +53 -0
  47. data/app/demo/components/multi_selects.pom +29 -0
  48. data/app/demo/components/nav/drawer.pom +5 -0
  49. data/app/demo/components/nav/menu.pom +54 -0
  50. data/app/demo/components/nav/pattern_drawer.pom +5 -0
  51. data/app/demo/components/nav/pattern_menu.pom +12 -0
  52. data/app/demo/components/number_fields.pom +53 -0
  53. data/app/demo/components/padding.pom +96 -0
  54. data/app/demo/components/progress.pom +71 -0
  55. data/app/demo/components/selects.pom +69 -0
  56. data/app/demo/components/sliders.pom +54 -0
  57. data/app/demo/components/snackbar.pom +35 -0
  58. data/app/demo/components/snackbar_attached.pom +6 -0
  59. data/app/demo/components/steppers.pom +178 -0
  60. data/app/demo/components/tab_bars.pom +66 -0
  61. data/app/demo/components/tables.pom +121 -0
  62. data/app/demo/components/text_areas.pom +38 -0
  63. data/app/demo/components/text_fields.pom +114 -0
  64. data/app/demo/components/time_fields.pom +59 -0
  65. data/app/demo/components/toggles.pom +122 -0
  66. data/app/demo/components/tooltips.pom +119 -0
  67. data/app/demo/components/unordered_list.pom +81 -0
  68. data/app/demo/custom_css.pom +37 -0
  69. data/app/demo/events.pom +29 -0
  70. data/app/demo/events/actions/autocomplete.pom +32 -0
  71. data/app/demo/events/actions/clear.pom +25 -0
  72. data/app/demo/events/actions/deletes.pom +24 -0
  73. data/app/demo/events/actions/dialog.pom +19 -0
  74. data/app/demo/events/actions/dialogs/discard.pom +9 -0
  75. data/app/demo/events/actions/dialogs/show_dialog.pom +11 -0
  76. data/app/demo/events/actions/dialogs/trigger.pom +86 -0
  77. data/app/demo/events/actions/last_response.pom +40 -0
  78. data/app/demo/events/actions/loads.pom +29 -0
  79. data/app/demo/events/actions/posts.pom +23 -0
  80. data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
  81. data/app/demo/events/actions/replace_text.pom +6 -0
  82. data/app/demo/events/actions/replaces.pom +21 -0
  83. data/app/demo/events/actions/snackbar.pom +19 -0
  84. data/app/demo/events/actions/toggle_visiblity.pom +22 -0
  85. data/app/demo/events/actions/updates.pom +24 -0
  86. data/app/demo/events/content_as_form.pom +313 -0
  87. data/app/demo/events/field_level.pom +20 -0
  88. data/app/demo/events/form_level.pom +24 -0
  89. data/app/demo/events/nav/drawer.pom +25 -0
  90. data/app/demo/events/parallel.pom +44 -0
  91. data/app/demo/events/tagged_input.pom +37 -0
  92. data/app/demo/formatting_tokens.pom +125 -0
  93. data/app/demo/hello_world.pom +3 -0
  94. data/app/demo/helpers/indented_grid.rb +14 -0
  95. data/app/demo/index.pom +26 -0
  96. data/app/demo/markdown.pom +67 -0
  97. data/app/demo/namespaces.pom +89 -0
  98. data/app/demo/nav/top_nav.pom +60 -0
  99. data/app/demo/patterns.pom +19 -0
  100. data/app/demo/patterns/drag_drop.pom +89 -0
  101. data/app/demo/patterns/floating_card.pom +29 -0
  102. data/app/demo/patterns/search_select.pom +106 -0
  103. data/app/demo/plugins/chart.pom +254 -0
  104. data/app/demo/plugins/image_crop.pom +44 -0
  105. data/app/demo/plugins/index.pom +29 -0
  106. data/app/demo/plugins/nav/drawer.pom +19 -0
  107. data/app/demo/shared/code.pom +20 -0
  108. data/app/demo/shared/context_list.pom +29 -0
  109. data/app/demo/shared/debug.pom +17 -0
  110. data/app/demo/styles.pom +42 -0
  111. data/bin/console +14 -7
  112. data/component-status.yml +219 -0
  113. data/config.ru +41 -0
  114. data/coprl.gemspec +35 -27
  115. data/docs/migrating_from_v2_to_v3.md +33 -0
  116. data/docs/settings.md +81 -0
  117. data/exe/coprl +2 -2
  118. data/lib/coprl.rb +22 -4
  119. data/lib/coprl/container_methods.rb +40 -0
  120. data/lib/coprl/logger_methods.rb +11 -0
  121. data/lib/coprl/parameters.rb +73 -0
  122. data/lib/coprl/presenters/api/app.rb +86 -0
  123. data/lib/coprl/presenters/api/router.rb +10 -0
  124. data/lib/coprl/presenters/app.rb +55 -0
  125. data/lib/coprl/presenters/cli.rb +28 -0
  126. data/lib/coprl/presenters/container_item.rb +16 -0
  127. data/lib/coprl/presenters/demo/dragon_drop.rb +48 -0
  128. data/lib/coprl/presenters/demo/echo.rb +36 -0
  129. data/lib/coprl/presenters/demo/search-terms.yml +50 -0
  130. data/lib/coprl/presenters/demo/search.rb +29 -0
  131. data/lib/coprl/presenters/demo/slow.rb +18 -0
  132. data/lib/coprl/presenters/dsl/components/actions/autocomplete.rb +15 -0
  133. data/lib/coprl/presenters/dsl/components/actions/base.rb +65 -0
  134. data/lib/coprl/presenters/dsl/components/actions/clear.rb +15 -0
  135. data/lib/coprl/presenters/dsl/components/actions/close_dialog.rb +17 -0
  136. data/lib/coprl/presenters/dsl/components/actions/deletes.rb +15 -0
  137. data/lib/coprl/presenters/dsl/components/actions/dialog.rb +15 -0
  138. data/lib/coprl/presenters/dsl/components/actions/loads.rb +31 -0
  139. data/lib/coprl/presenters/dsl/components/actions/navigates.rb +15 -0
  140. data/lib/coprl/presenters/dsl/components/actions/post_message.rb +17 -0
  141. data/lib/coprl/presenters/dsl/components/actions/posts.rb +20 -0
  142. data/lib/coprl/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
  143. data/lib/coprl/presenters/dsl/components/actions/remove.rb +15 -0
  144. data/lib/coprl/presenters/dsl/components/actions/replaces.rb +25 -0
  145. data/lib/coprl/presenters/dsl/components/actions/snackbar.rb +15 -0
  146. data/lib/coprl/presenters/dsl/components/actions/stepper.rb +15 -0
  147. data/lib/coprl/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
  148. data/lib/coprl/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
  149. data/lib/coprl/presenters/dsl/components/actions/updates.rb +20 -0
  150. data/lib/coprl/presenters/dsl/components/avatar.rb +22 -0
  151. data/lib/coprl/presenters/dsl/components/badge.rb +19 -0
  152. data/lib/coprl/presenters/dsl/components/base.rb +100 -0
  153. data/lib/coprl/presenters/dsl/components/button.rb +60 -0
  154. data/lib/coprl/presenters/dsl/components/card.rb +135 -0
  155. data/lib/coprl/presenters/dsl/components/checkbox.rb +17 -0
  156. data/lib/coprl/presenters/dsl/components/chip.rb +50 -0
  157. data/lib/coprl/presenters/dsl/components/chipset.rb +33 -0
  158. data/lib/coprl/presenters/dsl/components/content.rb +57 -0
  159. data/lib/coprl/presenters/dsl/components/date_field.rb +34 -0
  160. data/lib/coprl/presenters/dsl/components/datetime_base.rb +46 -0
  161. data/lib/coprl/presenters/dsl/components/datetime_field.rb +23 -0
  162. data/lib/coprl/presenters/dsl/components/dialog.rb +80 -0
  163. data/lib/coprl/presenters/dsl/components/drawer.rb +45 -0
  164. data/lib/coprl/presenters/dsl/components/event.rb +178 -0
  165. data/lib/coprl/presenters/dsl/components/event_base.rb +18 -0
  166. data/lib/coprl/presenters/dsl/components/expansion_panel.rb +49 -0
  167. data/lib/coprl/presenters/dsl/components/file_input.rb +34 -0
  168. data/lib/coprl/presenters/dsl/components/footer.rb +25 -0
  169. data/lib/coprl/presenters/dsl/components/form.rb +33 -0
  170. data/lib/coprl/presenters/dsl/components/grid.rb +110 -0
  171. data/lib/coprl/presenters/dsl/components/header.rb +58 -0
  172. data/lib/coprl/presenters/dsl/components/hidden_field.rb +23 -0
  173. data/lib/coprl/presenters/dsl/components/icon.rb +18 -0
  174. data/lib/coprl/presenters/dsl/components/icon_base.rb +22 -0
  175. data/lib/coprl/presenters/dsl/components/icon_toggle.rb +19 -0
  176. data/lib/coprl/presenters/dsl/components/image.rb +84 -0
  177. data/lib/coprl/presenters/dsl/components/image_list.rb +43 -0
  178. data/lib/coprl/presenters/dsl/components/input.rb +30 -0
  179. data/lib/coprl/presenters/dsl/components/link.rb +33 -0
  180. data/lib/coprl/presenters/dsl/components/list.rb +47 -0
  181. data/lib/coprl/presenters/dsl/components/lists/action.rb +69 -0
  182. data/lib/coprl/presenters/dsl/components/lists/actions.rb +60 -0
  183. data/lib/coprl/presenters/dsl/components/lists/header.rb +19 -0
  184. data/lib/coprl/presenters/dsl/components/lists/line.rb +105 -0
  185. data/lib/coprl/presenters/dsl/components/lists/separator.rb +16 -0
  186. data/lib/coprl/presenters/dsl/components/menu.rb +123 -0
  187. data/lib/coprl/presenters/dsl/components/mixins/append.rb +20 -0
  188. data/lib/coprl/presenters/dsl/components/mixins/attaches.rb +22 -0
  189. data/lib/coprl/presenters/dsl/components/mixins/avatar.rb +15 -0
  190. data/lib/coprl/presenters/dsl/components/mixins/buttons.rb +15 -0
  191. data/lib/coprl/presenters/dsl/components/mixins/chips.rb +18 -0
  192. data/lib/coprl/presenters/dsl/components/mixins/chipset.rb +19 -0
  193. data/lib/coprl/presenters/dsl/components/mixins/common.rb +55 -0
  194. data/lib/coprl/presenters/dsl/components/mixins/content.rb +15 -0
  195. data/lib/coprl/presenters/dsl/components/mixins/date_time_fields.rb +26 -0
  196. data/lib/coprl/presenters/dsl/components/mixins/dialogs.rb +16 -0
  197. data/lib/coprl/presenters/dsl/components/mixins/event.rb +17 -0
  198. data/lib/coprl/presenters/dsl/components/mixins/expansion_panels.rb +15 -0
  199. data/lib/coprl/presenters/dsl/components/mixins/file_inputs.rb +16 -0
  200. data/lib/coprl/presenters/dsl/components/mixins/google_maps.rb +15 -0
  201. data/lib/coprl/presenters/dsl/components/mixins/grids.rb +15 -0
  202. data/lib/coprl/presenters/dsl/components/mixins/helpers.rb +20 -0
  203. data/lib/coprl/presenters/dsl/components/mixins/icons.rb +16 -0
  204. data/lib/coprl/presenters/dsl/components/mixins/image_lists.rb +15 -0
  205. data/lib/coprl/presenters/dsl/components/mixins/images.rb +15 -0
  206. data/lib/coprl/presenters/dsl/components/mixins/last_response.rb +48 -0
  207. data/lib/coprl/presenters/dsl/components/mixins/menus.rb +15 -0
  208. data/lib/coprl/presenters/dsl/components/mixins/padding.rb +42 -0
  209. data/lib/coprl/presenters/dsl/components/mixins/progress.rb +16 -0
  210. data/lib/coprl/presenters/dsl/components/mixins/selects.rb +22 -0
  211. data/lib/coprl/presenters/dsl/components/mixins/sliders.rb +15 -0
  212. data/lib/coprl/presenters/dsl/components/mixins/snackbars.rb +17 -0
  213. data/lib/coprl/presenters/dsl/components/mixins/steppers.rb +15 -0
  214. data/lib/coprl/presenters/dsl/components/mixins/tab_bars.rb +17 -0
  215. data/lib/coprl/presenters/dsl/components/mixins/tables.rb +15 -0
  216. data/lib/coprl/presenters/dsl/components/mixins/text_fields.rb +36 -0
  217. data/lib/coprl/presenters/dsl/components/mixins/toggles.rb +35 -0
  218. data/lib/coprl/presenters/dsl/components/mixins/tooltips.rb +17 -0
  219. data/lib/coprl/presenters/dsl/components/mixins/typography.rb +117 -0
  220. data/lib/coprl/presenters/dsl/components/mixins/yield_to.rb +15 -0
  221. data/lib/coprl/presenters/dsl/components/multi_select.rb +56 -0
  222. data/lib/coprl/presenters/dsl/components/number_field.rb +20 -0
  223. data/lib/coprl/presenters/dsl/components/page.rb +28 -0
  224. data/lib/coprl/presenters/dsl/components/page_title.rb +31 -0
  225. data/lib/coprl/presenters/dsl/components/progress.rb +27 -0
  226. data/lib/coprl/presenters/dsl/components/radio_button.rb +14 -0
  227. data/lib/coprl/presenters/dsl/components/rich_text_area.rb +20 -0
  228. data/lib/coprl/presenters/dsl/components/select.rb +72 -0
  229. data/lib/coprl/presenters/dsl/components/separator.rb +21 -0
  230. data/lib/coprl/presenters/dsl/components/slider.rb +38 -0
  231. data/lib/coprl/presenters/dsl/components/snackbar.rb +32 -0
  232. data/lib/coprl/presenters/dsl/components/stepper.rb +96 -0
  233. data/lib/coprl/presenters/dsl/components/switch.rb +14 -0
  234. data/lib/coprl/presenters/dsl/components/tab_bar.rb +50 -0
  235. data/lib/coprl/presenters/dsl/components/table.rb +193 -0
  236. data/lib/coprl/presenters/dsl/components/text_area.rb +19 -0
  237. data/lib/coprl/presenters/dsl/components/text_field.rb +113 -0
  238. data/lib/coprl/presenters/dsl/components/time_field.rb +21 -0
  239. data/lib/coprl/presenters/dsl/components/toggle_base.rb +25 -0
  240. data/lib/coprl/presenters/dsl/components/tooltip.rb +24 -0
  241. data/lib/coprl/presenters/dsl/components/typography.rb +31 -0
  242. data/lib/coprl/presenters/dsl/components/unordered_list.rb +50 -0
  243. data/lib/coprl/presenters/dsl/definer.rb +9 -0
  244. data/lib/coprl/presenters/dsl/definition.rb +34 -0
  245. data/lib/coprl/presenters/dsl/invalid_presenter.rb +8 -0
  246. data/lib/coprl/presenters/dsl/lockable.rb +11 -0
  247. data/lib/coprl/presenters/dsl/protect_from_forgery.rb +43 -0
  248. data/lib/coprl/presenters/dsl/user_interface.rb +157 -0
  249. data/lib/coprl/presenters/errors.rb +1 -0
  250. data/lib/coprl/presenters/errors/invalid_dsl.rb +8 -0
  251. data/lib/coprl/presenters/errors/parameter_validation.rb +8 -0
  252. data/lib/coprl/presenters/errors/unprocessable.rb +8 -0
  253. data/lib/coprl/presenters/generators/inflectors.rb +59 -0
  254. data/lib/coprl/presenters/generators/plugin.rb +121 -0
  255. data/lib/coprl/presenters/generators/templates/plugin/.gitignore +12 -0
  256. data/lib/coprl/presenters/generators/templates/plugin/Gemfile.tt +6 -0
  257. data/lib/coprl/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
  258. data/lib/coprl/presenters/generators/templates/plugin/README.md +253 -0
  259. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/action.rb.tt +16 -0
  260. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/dsl.rb.tt +22 -0
  261. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/component.rb.tt +18 -0
  262. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/dsl.rb.tt +19 -0
  263. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/helpers/helper.rb.tt +15 -0
  264. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/plugin.rb.tt +9 -0
  265. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
  266. data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/render.rb.tt +27 -0
  267. data/lib/coprl/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
  268. data/lib/coprl/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
  269. data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
  270. data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
  271. data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component.erb.tt +14 -0
  272. data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component_header.erb.tt +20 -0
  273. data/lib/coprl/presenters/helpers.rb +12 -0
  274. data/lib/coprl/presenters/helpers/date.rb +22 -0
  275. data/lib/coprl/presenters/helpers/errors.rb +11 -0
  276. data/lib/coprl/presenters/helpers/inflector.rb +16 -0
  277. data/lib/coprl/presenters/helpers/rails.rb +43 -0
  278. data/lib/coprl/presenters/helpers/rails/currency.rb +16 -0
  279. data/lib/coprl/presenters/helpers/rails/model_table.rb +60 -0
  280. data/lib/coprl/presenters/helpers/redact.rb +13 -0
  281. data/lib/coprl/presenters/helpers/route.rb +24 -0
  282. data/lib/coprl/presenters/helpers/time.rb +27 -0
  283. data/lib/coprl/presenters/namespace.rb +12 -0
  284. data/lib/coprl/presenters/pluggable.rb +37 -0
  285. data/lib/coprl/presenters/plugins.rb +7 -0
  286. data/lib/coprl/presenters/plugins/google_maps.rb +24 -0
  287. data/lib/coprl/presenters/plugins/google_maps/google_map.erb +10 -0
  288. data/lib/coprl/presenters/plugins/google_maps/google_map.rb +41 -0
  289. data/lib/coprl/presenters/rails/engine.rb +19 -0
  290. data/lib/coprl/presenters/rails/railtie.rb +41 -0
  291. data/lib/coprl/presenters/registry.rb +64 -0
  292. data/lib/coprl/presenters/router.rb +59 -0
  293. data/lib/coprl/presenters/settings.rb +81 -0
  294. data/lib/coprl/presenters/version.rb +7 -0
  295. data/lib/coprl/presenters/views.rb +17 -0
  296. data/lib/coprl/presenters/web_client/app.rb +121 -0
  297. data/lib/coprl/presenters/web_client/component_decorator_factory.rb +27 -0
  298. data/lib/coprl/presenters/web_client/component_html_decorator.rb +50 -0
  299. data/lib/coprl/presenters/web_client/component_renderer.rb +49 -0
  300. data/lib/coprl/presenters/web_client/custom_css.rb +66 -0
  301. data/lib/coprl/presenters/web_client/custom_render.rb +31 -0
  302. data/lib/coprl/presenters/web_client/helpers/color.rb +18 -0
  303. data/lib/coprl/presenters/web_client/helpers/drag_and_drop.rb +21 -0
  304. data/lib/coprl/presenters/web_client/helpers/equal.rb +7 -0
  305. data/lib/coprl/presenters/web_client/helpers/expand_hash.rb +19 -0
  306. data/lib/coprl/presenters/web_client/helpers/form_helpers.rb +14 -0
  307. data/lib/coprl/presenters/web_client/helpers/headers.rb +40 -0
  308. data/lib/coprl/presenters/web_client/helpers/html_safe.rb +8 -0
  309. data/lib/coprl/presenters/web_client/helpers/includes.rb +11 -0
  310. data/lib/coprl/presenters/web_client/helpers/inflector.rb +7 -0
  311. data/lib/coprl/presenters/web_client/helpers/markdown.rb +29 -0
  312. data/lib/coprl/presenters/web_client/helpers/padding_helpers.rb +21 -0
  313. data/lib/coprl/presenters/web_client/helpers/rails.rb +12 -0
  314. data/lib/coprl/presenters/web_client/helpers/rails/escape_html.rb +9 -0
  315. data/lib/coprl/presenters/web_client/helpers/rails/local_variables.rb +11 -0
  316. data/lib/coprl/presenters/web_client/helpers/rails/namespaced.rb +12 -0
  317. data/lib/coprl/presenters/web_client/helpers/rails/partials.rb +20 -0
  318. data/lib/coprl/presenters/web_client/helpers/rails/raw.rb +9 -0
  319. data/lib/coprl/presenters/web_client/helpers/rails/safe_markdown.rb +9 -0
  320. data/lib/coprl/presenters/web_client/helpers/render_component.rb +11 -0
  321. data/lib/coprl/presenters/web_client/helpers/shared.rb +18 -0
  322. data/lib/coprl/presenters/web_client/helpers/sinatra.rb +11 -0
  323. data/lib/coprl/presenters/web_client/helpers/sinatra/escape_html.rb +9 -0
  324. data/lib/coprl/presenters/web_client/helpers/sinatra/local_variables.rb +11 -0
  325. data/lib/coprl/presenters/web_client/helpers/sinatra/partials.rb +27 -0
  326. data/lib/coprl/presenters/web_client/helpers/sinatra/raw.rb +9 -0
  327. data/lib/coprl/presenters/web_client/helpers/sinatra/safe_markdown.rb +10 -0
  328. data/lib/coprl/presenters/web_client/helpers/snake_to_camel.rb +12 -0
  329. data/lib/coprl/presenters/web_client/helpers/transform_hash.rb +20 -0
  330. data/lib/coprl/presenters/web_client/helpers/unique_id.rb +7 -0
  331. data/lib/coprl/presenters/web_client/plugin_headers.rb +37 -0
  332. data/lib/coprl/presenters/web_client/plugin_views_path.rb +35 -0
  333. data/lib/coprl/presenters/web_client/router.rb +10 -0
  334. data/lib/coprl/serializer.rb +43 -0
  335. data/lib/coprl/symbol/to_str.rb +29 -0
  336. data/lib/coprl/trace.rb +17 -0
  337. data/lib/hash_ext/traverse.rb +14 -0
  338. data/public/bundle.css +18256 -0
  339. data/public/bundle.js +60195 -0
  340. data/public/dialog-polyfill.js +738 -0
  341. data/public/favicon.ico +0 -0
  342. data/public/img/demo/dog.png +0 -0
  343. data/public/img/demo/grace-hopper-headshot.png +0 -0
  344. data/public/img/demo/grace-hopper-wide.png +0 -0
  345. data/public/img/demo/grace-hopper.png +0 -0
  346. data/public/img/demo/image_card.jpg +0 -0
  347. data/public/img/demo/rx.png +0 -0
  348. data/public/img/demo/welcome_card.jpg +0 -0
  349. data/public/img/settings/blue.png +0 -0
  350. data/public/img/settings/green.png +0 -0
  351. data/public/img/settings/orange.png +0 -0
  352. data/public/img/settings/purple.png +0 -0
  353. data/public/img/settings/red.png +0 -0
  354. data/public/img/settings/teal.png +0 -0
  355. data/public/img/settings/white.png +0 -0
  356. data/public/img/settings/yellow.png +0 -0
  357. data/public/presenters/custom_css.css +26 -0
  358. data/public/scripts.js +289 -0
  359. data/public/style-bundle.js +73 -0
  360. data/public/styles.css +16 -0
  361. data/public/wc.js +52950 -0
  362. data/rails-engine/app/controllers/coprl_controller.rb +24 -0
  363. data/rails-engine/app/helpers/coprl_helper.rb +3 -0
  364. data/rails-engine/app/views/application/_show.html.pom +2 -0
  365. data/rails-engine/app/views/coprl/show.html.pom +2 -0
  366. data/rails-engine/app/views/layouts/coprl.html.erb +21 -0
  367. data/rails-engine/config.ru +1 -0
  368. data/rails-engine/config/initializers/presenters.rb +43 -0
  369. data/rails-engine/config/routes.rb +13 -0
  370. data/scripts/build.sh +10 -0
  371. data/views/mdc/.babelrc +8 -0
  372. data/views/mdc/.eslintrc.yml +24 -0
  373. data/views/mdc/.gitignore +1 -0
  374. data/views/mdc/.nvmrc +1 -0
  375. data/views/mdc/assets/js/app.js +34 -0
  376. data/views/mdc/assets/js/components/base-component.js +163 -0
  377. data/views/mdc/assets/js/components/base-container.js +87 -0
  378. data/views/mdc/assets/js/components/base-toggle.js +56 -0
  379. data/views/mdc/assets/js/components/button.js +77 -0
  380. data/views/mdc/assets/js/components/cards.js +14 -0
  381. data/views/mdc/assets/js/components/checkboxes.js +15 -0
  382. data/views/mdc/assets/js/components/chips.js +109 -0
  383. data/views/mdc/assets/js/components/content.js +14 -0
  384. data/views/mdc/assets/js/components/data-tables.js +15 -0
  385. data/views/mdc/assets/js/components/datetime.js +186 -0
  386. data/views/mdc/assets/js/components/dialogs.js +135 -0
  387. data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
  388. data/views/mdc/assets/js/components/drawer.js +43 -0
  389. data/views/mdc/assets/js/components/events.js +277 -0
  390. data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
  391. data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
  392. data/views/mdc/assets/js/components/events/autocomplete.js +94 -0
  393. data/views/mdc/assets/js/components/events/base.js +167 -0
  394. data/views/mdc/assets/js/components/events/clears.js +29 -0
  395. data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
  396. data/views/mdc/assets/js/components/events/dialog.js +43 -0
  397. data/views/mdc/assets/js/components/events/encode.js +8 -0
  398. data/views/mdc/assets/js/components/events/errors.js +225 -0
  399. data/views/mdc/assets/js/components/events/loads.js +62 -0
  400. data/views/mdc/assets/js/components/events/navigates.js +19 -0
  401. data/views/mdc/assets/js/components/events/plugin.js +18 -0
  402. data/views/mdc/assets/js/components/events/post_message.js +21 -0
  403. data/views/mdc/assets/js/components/events/posts.js +218 -0
  404. data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
  405. data/views/mdc/assets/js/components/events/removes.js +21 -0
  406. data/views/mdc/assets/js/components/events/replaces.js +135 -0
  407. data/views/mdc/assets/js/components/events/snackbar.js +23 -0
  408. data/views/mdc/assets/js/components/events/stepper.js +21 -0
  409. data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
  410. data/views/mdc/assets/js/components/events/toggle_visibility.js +72 -0
  411. data/views/mdc/assets/js/components/file-inputs.js +76 -0
  412. data/views/mdc/assets/js/components/form-fields.js +16 -0
  413. data/views/mdc/assets/js/components/forms.js +14 -0
  414. data/views/mdc/assets/js/components/get_event_target.js +15 -0
  415. data/views/mdc/assets/js/components/grid.js +21 -0
  416. data/views/mdc/assets/js/components/header.js +20 -0
  417. data/views/mdc/assets/js/components/hidden-fields.js +44 -0
  418. data/views/mdc/assets/js/components/icon-toggles.js +14 -0
  419. data/views/mdc/assets/js/components/images.js +19 -0
  420. data/views/mdc/assets/js/components/initialize.js +82 -0
  421. data/views/mdc/assets/js/components/lists.js +92 -0
  422. data/views/mdc/assets/js/components/menus.js +79 -0
  423. data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
  424. data/views/mdc/assets/js/components/mixins/event-handler.js +13 -0
  425. data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -0
  426. data/views/mdc/assets/js/components/multi-select.js +75 -0
  427. data/views/mdc/assets/js/components/plugins.js +86 -0
  428. data/views/mdc/assets/js/components/progress.js +31 -0
  429. data/views/mdc/assets/js/components/radios.js +14 -0
  430. data/views/mdc/assets/js/components/rich-text-area.js +227 -0
  431. data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
  432. data/views/mdc/assets/js/components/root_document.js +5 -0
  433. data/views/mdc/assets/js/components/selects.js +56 -0
  434. data/views/mdc/assets/js/components/sliders.js +67 -0
  435. data/views/mdc/assets/js/components/snackbar.js +26 -0
  436. data/views/mdc/assets/js/components/steppers.js +48 -0
  437. data/views/mdc/assets/js/components/switches.js +14 -0
  438. data/views/mdc/assets/js/components/tab-bars.js +28 -0
  439. data/views/mdc/assets/js/components/text-fields.js +157 -0
  440. data/views/mdc/assets/js/components/tooltip.js +17 -0
  441. data/views/mdc/assets/js/components/typography.js +28 -0
  442. data/views/mdc/assets/js/components/uninitialize.js +7 -0
  443. data/views/mdc/assets/js/config.js +27 -0
  444. data/views/mdc/assets/js/mdl-stepper.js +1108 -0
  445. data/views/mdc/assets/js/utils/compatibility.js +9 -0
  446. data/views/mdc/assets/js/utils/config.js +73 -0
  447. data/views/mdc/assets/js/utils/config.test.js +59 -0
  448. data/views/mdc/assets/js/utils/form-data.js +12 -0
  449. data/views/mdc/assets/js/utils/urls.js +57 -0
  450. data/views/mdc/assets/js/wc.js +111 -0
  451. data/views/mdc/assets/scss/app.scss +47 -0
  452. data/views/mdc/assets/scss/components/avatar.scss +85 -0
  453. data/views/mdc/assets/scss/components/button.scss +76 -0
  454. data/views/mdc/assets/scss/components/card.scss +60 -0
  455. data/views/mdc/assets/scss/components/checkbox.scss +1 -0
  456. data/views/mdc/assets/scss/components/chip.scss +34 -0
  457. data/views/mdc/assets/scss/components/content.scss +36 -0
  458. data/views/mdc/assets/scss/components/data-table.scss +91 -0
  459. data/views/mdc/assets/scss/components/datetime.scss +29 -0
  460. data/views/mdc/assets/scss/components/dialog.scss +8 -0
  461. data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
  462. data/views/mdc/assets/scss/components/drawer.scss +82 -0
  463. data/views/mdc/assets/scss/components/expansion-panel.scss +153 -0
  464. data/views/mdc/assets/scss/components/fab.scss +27 -0
  465. data/views/mdc/assets/scss/components/file-input.scss +18 -0
  466. data/views/mdc/assets/scss/components/grid.scss +81 -0
  467. data/views/mdc/assets/scss/components/header.scss +21 -0
  468. data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
  469. data/views/mdc/assets/scss/components/icon.scss +57 -0
  470. data/views/mdc/assets/scss/components/image-list.scss +18 -0
  471. data/views/mdc/assets/scss/components/image.scss +22 -0
  472. data/views/mdc/assets/scss/components/list.scss +43 -0
  473. data/views/mdc/assets/scss/components/menu.scss +28 -0
  474. data/views/mdc/assets/scss/components/multi-select.scss +44 -0
  475. data/views/mdc/assets/scss/components/progress.scss +1 -0
  476. data/views/mdc/assets/scss/components/radio.scss +4 -0
  477. data/views/mdc/assets/scss/components/rich-text-area.scss +73 -0
  478. data/views/mdc/assets/scss/components/select.scss +23 -0
  479. data/views/mdc/assets/scss/components/separator.scss +3 -0
  480. data/views/mdc/assets/scss/components/slider.scss +1 -0
  481. data/views/mdc/assets/scss/components/snackbar.scss +5 -0
  482. data/views/mdc/assets/scss/components/stepper.scss +235 -0
  483. data/views/mdc/assets/scss/components/switch.scss +15 -0
  484. data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
  485. data/views/mdc/assets/scss/components/textfield.scss +19 -0
  486. data/views/mdc/assets/scss/components/tooltip.scss +3 -0
  487. data/views/mdc/assets/scss/components/typography.scss +35 -0
  488. data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
  489. data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
  490. data/views/mdc/assets/scss/material.blue_grey-orange.min.css +8 -0
  491. data/views/mdc/assets/scss/media.scss +39 -0
  492. data/views/mdc/assets/scss/palette.scss +16 -0
  493. data/views/mdc/assets/scss/styles.scss +54 -0
  494. data/views/mdc/assets/scss/theme.scss +78 -0
  495. data/views/mdc/body/_dismissable-drawer.erb +34 -0
  496. data/views/mdc/body/_footer.erb +1 -0
  497. data/views/mdc/body/_header.erb +39 -0
  498. data/views/mdc/body/_modal-drawer.erb +35 -0
  499. data/views/mdc/body/_postamble.erb +17 -0
  500. data/views/mdc/body/_preamble.erb +26 -0
  501. data/views/mdc/body/_snackbar.erb +16 -0
  502. data/views/mdc/body/drawer/_divider.erb +1 -0
  503. data/views/mdc/body/drawer/_item.erb +13 -0
  504. data/views/mdc/body/drawer/_label.erb +1 -0
  505. data/views/mdc/body/drawers/_menu.erb +25 -0
  506. data/views/mdc/body/footers/_large.erb +27 -0
  507. data/views/mdc/body/footers/_menu_item.erb +6 -0
  508. data/views/mdc/body/footers/_small.erb +14 -0
  509. data/views/mdc/components/_avatar.erb +31 -0
  510. data/views/mdc/components/_badge.erb +2 -0
  511. data/views/mdc/components/_body.erb +2 -0
  512. data/views/mdc/components/_button.erb +28 -0
  513. data/views/mdc/components/_caption.erb +2 -0
  514. data/views/mdc/components/_card.erb +71 -0
  515. data/views/mdc/components/_checkbox.erb +34 -0
  516. data/views/mdc/components/_chip.erb +56 -0
  517. data/views/mdc/components/_chipset.erb +17 -0
  518. data/views/mdc/components/_content.erb +36 -0
  519. data/views/mdc/components/_date.erb +1 -0
  520. data/views/mdc/components/_datetime.erb +33 -0
  521. data/views/mdc/components/_dialog.erb +50 -0
  522. data/views/mdc/components/_event.erb +12 -0
  523. data/views/mdc/components/_expansion_panel.erb +13 -0
  524. data/views/mdc/components/_file_input.erb +17 -0
  525. data/views/mdc/components/_form.erb +14 -0
  526. data/views/mdc/components/_grid.erb +43 -0
  527. data/views/mdc/components/_headline.erb +4 -0
  528. data/views/mdc/components/_hidden_field.erb +5 -0
  529. data/views/mdc/components/_icon.erb +35 -0
  530. data/views/mdc/components/_icon_toggle.erb +16 -0
  531. data/views/mdc/components/_image.erb +25 -0
  532. data/views/mdc/components/_image_list.erb +38 -0
  533. data/views/mdc/components/_link.erb +4 -0
  534. data/views/mdc/components/_list.erb +20 -0
  535. data/views/mdc/components/_menu.erb +45 -0
  536. data/views/mdc/components/_multi_select.erb +33 -0
  537. data/views/mdc/components/_number_field.erb +38 -0
  538. data/views/mdc/components/_overline.erb +2 -0
  539. data/views/mdc/components/_page_title.erb +4 -0
  540. data/views/mdc/components/_progress.erb +11 -0
  541. data/views/mdc/components/_radio_button.erb +20 -0
  542. data/views/mdc/components/_render.erb +3 -0
  543. data/views/mdc/components/_rich_text_area.erb +22 -0
  544. data/views/mdc/components/_select.erb +43 -0
  545. data/views/mdc/components/_separator.erb +3 -0
  546. data/views/mdc/components/_slider.erb +43 -0
  547. data/views/mdc/components/_snackbar.erb +13 -0
  548. data/views/mdc/components/_stepper.erb +47 -0
  549. data/views/mdc/components/_subtitle.erb +4 -0
  550. data/views/mdc/components/_switch.erb +29 -0
  551. data/views/mdc/components/_tab_bar.erb +35 -0
  552. data/views/mdc/components/_table.erb +28 -0
  553. data/views/mdc/components/_text_area.erb +18 -0
  554. data/views/mdc/components/_text_field.erb +39 -0
  555. data/views/mdc/components/_time.erb +1 -0
  556. data/views/mdc/components/_tooltip.erb +5 -0
  557. data/views/mdc/components/_typography.erb +15 -0
  558. data/views/mdc/components/_unordered_list.erb +10 -0
  559. data/views/mdc/components/actions/autocomplete.rb +8 -0
  560. data/views/mdc/components/actions/clear.rb +11 -0
  561. data/views/mdc/components/actions/close_dialog.rb +10 -0
  562. data/views/mdc/components/actions/delete.rb +11 -0
  563. data/views/mdc/components/actions/dialog.rb +11 -0
  564. data/views/mdc/components/actions/loads.rb +17 -0
  565. data/views/mdc/components/actions/navigates.rb +11 -0
  566. data/views/mdc/components/actions/post.rb +14 -0
  567. data/views/mdc/components/actions/post_message.rb +10 -0
  568. data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
  569. data/views/mdc/components/actions/remove.rb +10 -0
  570. data/views/mdc/components/actions/replaces.rb +16 -0
  571. data/views/mdc/components/actions/resolver.rb +39 -0
  572. data/views/mdc/components/actions/snackbar.rb +12 -0
  573. data/views/mdc/components/actions/stepper.rb +10 -0
  574. data/views/mdc/components/actions/toggle_disabled.rb +10 -0
  575. data/views/mdc/components/actions/toggle_visibility.rb +10 -0
  576. data/views/mdc/components/actions/update.rb +10 -0
  577. data/views/mdc/components/buttons/_button.erb +27 -0
  578. data/views/mdc/components/buttons/_fab.erb +23 -0
  579. data/views/mdc/components/buttons/_icon.erb +24 -0
  580. data/views/mdc/components/buttons/_image.erb +25 -0
  581. data/views/mdc/components/list/_actions.erb +6 -0
  582. data/views/mdc/components/list/_avatar.erb +6 -0
  583. data/views/mdc/components/list/_checkbox.erb +5 -0
  584. data/views/mdc/components/list/_header.erb +37 -0
  585. data/views/mdc/components/list/_hidden_field.erb +3 -0
  586. data/views/mdc/components/list/_icon.erb +6 -0
  587. data/views/mdc/components/list/_info.erb +1 -0
  588. data/views/mdc/components/list/_line.erb +45 -0
  589. data/views/mdc/components/list/_menu.erb +28 -0
  590. data/views/mdc/components/list/_separator.erb +1 -0
  591. data/views/mdc/components/list/actions/_button.erb +1 -0
  592. data/views/mdc/components/list/actions/_checkbox.erb +1 -0
  593. data/views/mdc/components/list/actions/_icon.erb +1 -0
  594. data/views/mdc/components/list/actions/_icon_toggle.erb +1 -0
  595. data/views/mdc/components/list/actions/_radio_button.erb +1 -0
  596. data/views/mdc/components/list/actions/_switch.erb +1 -0
  597. data/views/mdc/components/shared/_hint_error_display.erb +9 -0
  598. data/views/mdc/components/shared/_input_label.erb +7 -0
  599. data/views/mdc/components/stepper/_step.erb +33 -0
  600. data/views/mdc/components/table/_checkbox.erb +20 -0
  601. data/views/mdc/components/table/_column.erb +18 -0
  602. data/views/mdc/components/table/_footer.erb +8 -0
  603. data/views/mdc/components/table/_header.erb +17 -0
  604. data/views/mdc/components/table/_pagination.erb +11 -0
  605. data/views/mdc/components/table/_row.erb +16 -0
  606. data/views/mdc/components/unordered_list/_icon.erb +2 -0
  607. data/views/mdc/components/unordered_list/_list_item.erb +7 -0
  608. data/views/mdc/init-depends.sh +2 -0
  609. data/views/mdc/layout.erb +18 -0
  610. data/views/mdc/package-lock.json +16461 -0
  611. data/views/mdc/package.json +76 -0
  612. data/views/mdc/web.erb +5 -0
  613. data/views/mdc/webpack.config.js +60 -0
  614. metadata +900 -19
  615. data/.rspec +0 -3
  616. data/.rubocop.yml +0 -10
  617. data/CODE_OF_CONDUCT.md +0 -84
  618. data/lib/coprl/version.rb +0 -5
@@ -0,0 +1,96 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::Presenters.define(:padding) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+
6
+ attach :top_nav
7
+ attach :component_drawer
8
+ page_title 'Padding'
9
+
10
+ indented_grid do
11
+
12
+ headline 'Padding'
13
+ text %(Block containers (grid/column, content, card) have default padding that can be modified.)
14
+ blank
15
+ text %(There are four levels of padding: 0 = off, 1 = gutter_width/4, 2 = gutter_width/2, 3 = gutter_width)
16
+ text %(You can also specify :all, :none or true (same as :all) and false (same as :none))
17
+ text %(Each block container defines its default values (top,bottom,right,left) padding differently.)
18
+
19
+
20
+ blank
21
+ title 'Grid padding'
22
+ text %(Top level grid padding by default is level 3: top3, right3, bottom3, left3.
23
+ Specifying padding: top is the same as padding: top3.)
24
+ text %(Column padding defaults to :none. The definition of column padding for [top,bottom,right,left] is equal to [top2,right2,bottom2,left2])
25
+ end
26
+ grid color: :darkgrey do
27
+ column 12, color: :lightgray do
28
+ body 'top level default grid padding'
29
+ end
30
+ end
31
+ indented_grid do
32
+ blank
33
+ text %(A grid nested in another grid turns off padding for the right and left by default: top3, right0, bottom3: left0.)
34
+
35
+ grid color: :darkgrey do
36
+ column 12, color: :lightgray do
37
+ body 'nested default level grid padding'
38
+ end
39
+ end
40
+ blank
41
+ text %(You can control the padding for each dimension.)
42
+
43
+ grid color: :darkgrey, padding: [:left0, :top3, :bottom2, :right1] do
44
+ column 12, color: :lightgray, padding: [:left3, :top1, :bottom2, :right0] do
45
+ body 'Custom padding (view source to see this)'
46
+ end
47
+ end
48
+ blank
49
+
50
+ title 'Content padding'
51
+ text %(A content block by default has `:none` padding. The default level is level 2. So :all is equal to [:top2,:right2,:bottom2,:left2])
52
+ grid color: :darkgrey, padding: :none do
53
+ column 12, color: :lightgray, padding: :none do
54
+ content do
55
+ body 'No padding'
56
+ end
57
+ end
58
+ end
59
+ blank
60
+ grid color: :darkgrey, padding: :none do
61
+ column 12, color: :lightgray, padding: :none do
62
+ content padding: :all do
63
+ body 'default :all padding is level 2'
64
+ end
65
+ end
66
+ end
67
+ blank
68
+ grid color: :darkgrey, padding: :none do
69
+ column 12, color: :lightgray, padding: :none do
70
+ content padding: [:top3, :bottom0, :right1, :left2] do
71
+ body 'Custom padding'
72
+ end
73
+ end
74
+ end
75
+ blank
76
+ title 'Card padding'
77
+ text %(A card defaults its padding to `:all`. The default level is level 2. So :all is equal to [:top2,:right2,:bottom2,:left2])
78
+ grid color: :darkgrey, padding: :none do
79
+ column 12, color: :lightgray, padding: :none do
80
+ card do
81
+ body 'Defaults to :all, level2'
82
+ end
83
+ end
84
+ end
85
+ blank
86
+ grid color: :darkgrey, padding: :none do
87
+ column 12, color: :lightgray, padding: :none do
88
+ card padding: [:top3, :bottom0, :right1, :left2] do
89
+ body 'Custom padding'
90
+ end
91
+ end
92
+ end
93
+ blank
94
+ attach :code, file: __FILE__
95
+ end
96
+ end
@@ -0,0 +1,71 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::Presenters.define(:progress) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Progress'
8
+
9
+ indented_grid do
10
+ body <<~DOC
11
+ Linear Progress bars have special placement and event handling behavior.
12
+
13
+ They automatically show themselves when an posts/updates/deletes action starts and hide themselves when an it finishes.
14
+
15
+ All you need to do is place your progress bars where you want them. (You can have more than one.)
16
+
17
+ The following components allow progress bars: `cards`, `content`, `dialog`, and `grid or column`.
18
+
19
+ You can position them on top and/or on the bottom using `position: :top|:bottom|:both`
20
+ DOC
21
+ title 'Card'
22
+ card do
23
+ progress
24
+ text 'card progress'
25
+ end
26
+
27
+ title 'Content'
28
+ content do
29
+ text 'content progress - top and bottom'
30
+ progress position: :both
31
+ end
32
+
33
+ title 'Dialog'
34
+ dialog id: :progress_dlg do
35
+ text 'dialog progress - bottom'
36
+ progress position: :bottom
37
+ actions do
38
+ button :start do
39
+ event :click do
40
+ posts '/_slow_', seconds: 5
41
+ snackbar 'done'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ button :open do
47
+ event :click do
48
+ dialog :progress_dlg
49
+ end
50
+ end
51
+
52
+ title 'Grid'
53
+ grid do
54
+ progress
55
+ column 6 do
56
+ progress position: :bottom
57
+ text 'column progress bottom'
58
+ end
59
+ end
60
+
61
+ button :start do
62
+ event :click do
63
+ posts '/_slow_', seconds: 5
64
+ snackbar 'done'
65
+ end
66
+ end
67
+
68
+
69
+ attach :code, file: __FILE__
70
+ end
71
+ end
@@ -0,0 +1,69 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::Presenters.define(:selects) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Select Fields'
8
+
9
+ indented_grid do
10
+ content do
11
+ select full_width: false do
12
+ label 'Default (outlined) style ...'
13
+ option do
14
+ value 'value1'
15
+ text 'First value'
16
+ end
17
+ option do
18
+ value 'value2'
19
+ text 'Second value'
20
+ end
21
+ # event :change do
22
+ # snackbar 'item changed'
23
+ # end
24
+ end
25
+ blank
26
+
27
+ select outlined: false do
28
+ label 'Alternate style ...'
29
+ option
30
+ option selected: true do
31
+ value 'value1'
32
+ text 'First value'
33
+ end
34
+ option do
35
+ value 'value2'
36
+ text 'Second value'
37
+ end
38
+ # event :change do
39
+ # snackbar 'item changed'
40
+ # end
41
+ end
42
+
43
+ blank
44
+
45
+ select full_width: false do
46
+ icon :filter_list
47
+ label 'Default (outlined) style ...'
48
+ option disabled: true do
49
+ text 'Pick One'
50
+ end
51
+ option do
52
+ value 'value1'
53
+ text '&nbsp;&nbsp;&nbsp;&nbsp;One value'
54
+ end
55
+ option do
56
+ value 'value2'
57
+ text '&nbsp;&nbsp;&nbsp;&nbsp;Second value'
58
+ end
59
+ event :change do
60
+ snackbar 'item changed'
61
+ end
62
+ end
63
+
64
+
65
+ end
66
+
67
+ attach :code, file: __FILE__
68
+ end
69
+ end
@@ -0,0 +1,54 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::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
+ title 'Disabled slider'
32
+ slider disabled: true, value_min: 0, value_max: 100 do
33
+ value 42
34
+ end
35
+
36
+ button 'Show hidden slider', type: :flat, color: :secondary do
37
+ event :click do
38
+ toggle_visibility :hidden_slider, action: :show
39
+ end
40
+ end
41
+ content id: :hidden_slider, hidden: true do
42
+ title 'I was a hidden slider'
43
+ subheading 'This slider was hidden when the page was first rendered. Now that it was made visible, it should work properly.'
44
+ slider discrete: true, show_tracker_marks: true, value_min: 0, value_max: 50, step: 2 do
45
+ value 10
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ attach :code, file: __FILE__
52
+ end
53
+
54
+
@@ -0,0 +1,35 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::Presenters.define(:snackbar) do
4
+ helpers Demo::Helpers::IndentedGrid
5
+ attach :top_nav
6
+ attach :component_drawer
7
+ page_title 'Snackbar'
8
+
9
+ indented_grid do
10
+ title 'On Page'
11
+ body 'You can attach a snackbar on the server side and will render after load.'
12
+ snackbar 'Top Level Important Information!'
13
+
14
+ attach :snackbar_attached
15
+
16
+ title 'As Event'
17
+ button 'Show Snackbar', id: :show_snackbar do
18
+ event :click do
19
+ snackbar 'You clicked snackbar the button!'
20
+ end
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
32
+ end
33
+
34
+ attach :code, file: __FILE__
35
+ end
@@ -0,0 +1,6 @@
1
+
2
+ Coprl::Presenters.define(:snackbar_attached) do
3
+ title 'In Attached'
4
+ body 'This can be done in an attached presenter as well'
5
+ snackbar 'Attached Snackbar Displayed!'
6
+ end
@@ -0,0 +1,178 @@
1
+ require_relative '../helpers/indented_grid'
2
+
3
+ Coprl::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
+ Coprl::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
+ Coprl::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
+ Coprl::Presenters.define(:step2_type2_form) do
175
+ headline 'Form of Type2'
176
+ end
177
+
178
+