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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +59 -6
- data/.gem_release.yml +1 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/ISSUE_TEMPLATE/questions-support.md +10 -0
- data/.github/workflows/semantic-release.yml +43 -0
- data/.gitignore +50 -7
- data/.releaserc +11 -0
- data/.ruby-version +2 -0
- data/CHANGELOG.md +160 -0
- data/CODE-OF-CONDUCT.md +73 -0
- data/CONTRIBUTING.md +60 -0
- data/Gemfile +24 -6
- data/Gemfile.lock +172 -0
- data/HISTORY.md +61 -0
- data/{LICENSE.txt → LICENSE} +6 -6
- data/Procfile +1 -0
- data/README.md +121 -19
- data/ROADMAP.md +6 -0
- data/Rakefile +3 -9
- data/app/demo/components.pom +19 -0
- data/app/demo/components/avatars.pom +40 -0
- data/app/demo/components/badges.pom +26 -0
- data/app/demo/components/buttons.pom +63 -0
- data/app/demo/components/cards.pom +84 -0
- data/app/demo/components/chips.pom +103 -0
- data/app/demo/components/content.pom +111 -0
- data/app/demo/components/date_fields.pom +106 -0
- data/app/demo/components/datetime_fields.pom +113 -0
- data/app/demo/components/dialogs.pom +195 -0
- data/app/demo/components/drawers.pom +35 -0
- data/app/demo/components/expansion_panels.pom +20 -0
- data/app/demo/components/fabs-mini.pom +17 -0
- data/app/demo/components/fabs.pom +16 -0
- data/app/demo/components/file_inputs.pom +52 -0
- data/app/demo/components/footers.pom +36 -0
- data/app/demo/components/google_maps.pom +22 -0
- data/app/demo/components/headers.pom +101 -0
- data/app/demo/components/hidden_fields.pom +18 -0
- data/app/demo/components/icons.pom +125 -0
- data/app/demo/components/image_lists.pom +100 -0
- data/app/demo/components/images.pom +45 -0
- data/app/demo/components/layouts.pom +54 -0
- data/app/demo/components/lists.pom +168 -0
- data/app/demo/components/menus.pom +53 -0
- data/app/demo/components/multi_selects.pom +29 -0
- data/app/demo/components/nav/drawer.pom +5 -0
- data/app/demo/components/nav/menu.pom +54 -0
- data/app/demo/components/nav/pattern_drawer.pom +5 -0
- data/app/demo/components/nav/pattern_menu.pom +12 -0
- data/app/demo/components/number_fields.pom +53 -0
- data/app/demo/components/padding.pom +96 -0
- data/app/demo/components/progress.pom +71 -0
- data/app/demo/components/selects.pom +69 -0
- data/app/demo/components/sliders.pom +54 -0
- data/app/demo/components/snackbar.pom +35 -0
- data/app/demo/components/snackbar_attached.pom +6 -0
- data/app/demo/components/steppers.pom +178 -0
- data/app/demo/components/tab_bars.pom +66 -0
- data/app/demo/components/tables.pom +121 -0
- data/app/demo/components/text_areas.pom +38 -0
- data/app/demo/components/text_fields.pom +114 -0
- data/app/demo/components/time_fields.pom +59 -0
- data/app/demo/components/toggles.pom +122 -0
- data/app/demo/components/tooltips.pom +119 -0
- data/app/demo/components/unordered_list.pom +81 -0
- data/app/demo/custom_css.pom +37 -0
- data/app/demo/events.pom +29 -0
- data/app/demo/events/actions/autocomplete.pom +32 -0
- data/app/demo/events/actions/clear.pom +25 -0
- data/app/demo/events/actions/deletes.pom +24 -0
- data/app/demo/events/actions/dialog.pom +19 -0
- data/app/demo/events/actions/dialogs/discard.pom +9 -0
- data/app/demo/events/actions/dialogs/show_dialog.pom +11 -0
- data/app/demo/events/actions/dialogs/trigger.pom +86 -0
- data/app/demo/events/actions/last_response.pom +40 -0
- data/app/demo/events/actions/loads.pom +29 -0
- data/app/demo/events/actions/posts.pom +23 -0
- data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
- data/app/demo/events/actions/replace_text.pom +6 -0
- data/app/demo/events/actions/replaces.pom +21 -0
- data/app/demo/events/actions/snackbar.pom +19 -0
- data/app/demo/events/actions/toggle_visiblity.pom +22 -0
- data/app/demo/events/actions/updates.pom +24 -0
- data/app/demo/events/content_as_form.pom +313 -0
- data/app/demo/events/field_level.pom +20 -0
- data/app/demo/events/form_level.pom +24 -0
- data/app/demo/events/nav/drawer.pom +25 -0
- data/app/demo/events/parallel.pom +44 -0
- data/app/demo/events/tagged_input.pom +37 -0
- data/app/demo/formatting_tokens.pom +125 -0
- data/app/demo/hello_world.pom +3 -0
- data/app/demo/helpers/indented_grid.rb +14 -0
- data/app/demo/index.pom +26 -0
- data/app/demo/markdown.pom +67 -0
- data/app/demo/namespaces.pom +89 -0
- data/app/demo/nav/top_nav.pom +60 -0
- data/app/demo/patterns.pom +19 -0
- data/app/demo/patterns/drag_drop.pom +89 -0
- data/app/demo/patterns/floating_card.pom +29 -0
- data/app/demo/patterns/search_select.pom +106 -0
- data/app/demo/plugins/chart.pom +254 -0
- data/app/demo/plugins/image_crop.pom +44 -0
- data/app/demo/plugins/index.pom +29 -0
- data/app/demo/plugins/nav/drawer.pom +19 -0
- data/app/demo/shared/code.pom +20 -0
- data/app/demo/shared/context_list.pom +29 -0
- data/app/demo/shared/debug.pom +17 -0
- data/app/demo/styles.pom +42 -0
- data/bin/console +14 -7
- data/component-status.yml +219 -0
- data/config.ru +41 -0
- data/coprl.gemspec +35 -27
- data/docs/migrating_from_v2_to_v3.md +33 -0
- data/docs/settings.md +81 -0
- data/exe/coprl +2 -2
- data/lib/coprl.rb +22 -4
- data/lib/coprl/container_methods.rb +40 -0
- data/lib/coprl/logger_methods.rb +11 -0
- data/lib/coprl/parameters.rb +73 -0
- data/lib/coprl/presenters/api/app.rb +86 -0
- data/lib/coprl/presenters/api/router.rb +10 -0
- data/lib/coprl/presenters/app.rb +55 -0
- data/lib/coprl/presenters/cli.rb +28 -0
- data/lib/coprl/presenters/container_item.rb +16 -0
- data/lib/coprl/presenters/demo/dragon_drop.rb +48 -0
- data/lib/coprl/presenters/demo/echo.rb +36 -0
- data/lib/coprl/presenters/demo/search-terms.yml +50 -0
- data/lib/coprl/presenters/demo/search.rb +29 -0
- data/lib/coprl/presenters/demo/slow.rb +18 -0
- data/lib/coprl/presenters/dsl/components/actions/autocomplete.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/base.rb +65 -0
- data/lib/coprl/presenters/dsl/components/actions/clear.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/close_dialog.rb +17 -0
- data/lib/coprl/presenters/dsl/components/actions/deletes.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/dialog.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/loads.rb +31 -0
- data/lib/coprl/presenters/dsl/components/actions/navigates.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/post_message.rb +17 -0
- data/lib/coprl/presenters/dsl/components/actions/posts.rb +20 -0
- data/lib/coprl/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/remove.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/replaces.rb +25 -0
- data/lib/coprl/presenters/dsl/components/actions/snackbar.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/stepper.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
- data/lib/coprl/presenters/dsl/components/actions/updates.rb +20 -0
- data/lib/coprl/presenters/dsl/components/avatar.rb +22 -0
- data/lib/coprl/presenters/dsl/components/badge.rb +19 -0
- data/lib/coprl/presenters/dsl/components/base.rb +100 -0
- data/lib/coprl/presenters/dsl/components/button.rb +60 -0
- data/lib/coprl/presenters/dsl/components/card.rb +135 -0
- data/lib/coprl/presenters/dsl/components/checkbox.rb +17 -0
- data/lib/coprl/presenters/dsl/components/chip.rb +50 -0
- data/lib/coprl/presenters/dsl/components/chipset.rb +33 -0
- data/lib/coprl/presenters/dsl/components/content.rb +57 -0
- data/lib/coprl/presenters/dsl/components/date_field.rb +34 -0
- data/lib/coprl/presenters/dsl/components/datetime_base.rb +46 -0
- data/lib/coprl/presenters/dsl/components/datetime_field.rb +23 -0
- data/lib/coprl/presenters/dsl/components/dialog.rb +80 -0
- data/lib/coprl/presenters/dsl/components/drawer.rb +45 -0
- data/lib/coprl/presenters/dsl/components/event.rb +178 -0
- data/lib/coprl/presenters/dsl/components/event_base.rb +18 -0
- data/lib/coprl/presenters/dsl/components/expansion_panel.rb +49 -0
- data/lib/coprl/presenters/dsl/components/file_input.rb +34 -0
- data/lib/coprl/presenters/dsl/components/footer.rb +25 -0
- data/lib/coprl/presenters/dsl/components/form.rb +33 -0
- data/lib/coprl/presenters/dsl/components/grid.rb +110 -0
- data/lib/coprl/presenters/dsl/components/header.rb +58 -0
- data/lib/coprl/presenters/dsl/components/hidden_field.rb +23 -0
- data/lib/coprl/presenters/dsl/components/icon.rb +18 -0
- data/lib/coprl/presenters/dsl/components/icon_base.rb +22 -0
- data/lib/coprl/presenters/dsl/components/icon_toggle.rb +19 -0
- data/lib/coprl/presenters/dsl/components/image.rb +84 -0
- data/lib/coprl/presenters/dsl/components/image_list.rb +43 -0
- data/lib/coprl/presenters/dsl/components/input.rb +30 -0
- data/lib/coprl/presenters/dsl/components/link.rb +33 -0
- data/lib/coprl/presenters/dsl/components/list.rb +47 -0
- data/lib/coprl/presenters/dsl/components/lists/action.rb +69 -0
- data/lib/coprl/presenters/dsl/components/lists/actions.rb +60 -0
- data/lib/coprl/presenters/dsl/components/lists/header.rb +19 -0
- data/lib/coprl/presenters/dsl/components/lists/line.rb +105 -0
- data/lib/coprl/presenters/dsl/components/lists/separator.rb +16 -0
- data/lib/coprl/presenters/dsl/components/menu.rb +123 -0
- data/lib/coprl/presenters/dsl/components/mixins/append.rb +20 -0
- data/lib/coprl/presenters/dsl/components/mixins/attaches.rb +22 -0
- data/lib/coprl/presenters/dsl/components/mixins/avatar.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/buttons.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/chips.rb +18 -0
- data/lib/coprl/presenters/dsl/components/mixins/chipset.rb +19 -0
- data/lib/coprl/presenters/dsl/components/mixins/common.rb +55 -0
- data/lib/coprl/presenters/dsl/components/mixins/content.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/date_time_fields.rb +26 -0
- data/lib/coprl/presenters/dsl/components/mixins/dialogs.rb +16 -0
- data/lib/coprl/presenters/dsl/components/mixins/event.rb +17 -0
- data/lib/coprl/presenters/dsl/components/mixins/expansion_panels.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/file_inputs.rb +16 -0
- data/lib/coprl/presenters/dsl/components/mixins/google_maps.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/grids.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/helpers.rb +20 -0
- data/lib/coprl/presenters/dsl/components/mixins/icons.rb +16 -0
- data/lib/coprl/presenters/dsl/components/mixins/image_lists.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/images.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/last_response.rb +48 -0
- data/lib/coprl/presenters/dsl/components/mixins/menus.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/padding.rb +42 -0
- data/lib/coprl/presenters/dsl/components/mixins/progress.rb +16 -0
- data/lib/coprl/presenters/dsl/components/mixins/selects.rb +22 -0
- data/lib/coprl/presenters/dsl/components/mixins/sliders.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/snackbars.rb +17 -0
- data/lib/coprl/presenters/dsl/components/mixins/steppers.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/tab_bars.rb +17 -0
- data/lib/coprl/presenters/dsl/components/mixins/tables.rb +15 -0
- data/lib/coprl/presenters/dsl/components/mixins/text_fields.rb +36 -0
- data/lib/coprl/presenters/dsl/components/mixins/toggles.rb +35 -0
- data/lib/coprl/presenters/dsl/components/mixins/tooltips.rb +17 -0
- data/lib/coprl/presenters/dsl/components/mixins/typography.rb +117 -0
- data/lib/coprl/presenters/dsl/components/mixins/yield_to.rb +15 -0
- data/lib/coprl/presenters/dsl/components/multi_select.rb +56 -0
- data/lib/coprl/presenters/dsl/components/number_field.rb +20 -0
- data/lib/coprl/presenters/dsl/components/page.rb +28 -0
- data/lib/coprl/presenters/dsl/components/page_title.rb +31 -0
- data/lib/coprl/presenters/dsl/components/progress.rb +27 -0
- data/lib/coprl/presenters/dsl/components/radio_button.rb +14 -0
- data/lib/coprl/presenters/dsl/components/rich_text_area.rb +20 -0
- data/lib/coprl/presenters/dsl/components/select.rb +72 -0
- data/lib/coprl/presenters/dsl/components/separator.rb +21 -0
- data/lib/coprl/presenters/dsl/components/slider.rb +38 -0
- data/lib/coprl/presenters/dsl/components/snackbar.rb +32 -0
- data/lib/coprl/presenters/dsl/components/stepper.rb +96 -0
- data/lib/coprl/presenters/dsl/components/switch.rb +14 -0
- data/lib/coprl/presenters/dsl/components/tab_bar.rb +50 -0
- data/lib/coprl/presenters/dsl/components/table.rb +193 -0
- data/lib/coprl/presenters/dsl/components/text_area.rb +19 -0
- data/lib/coprl/presenters/dsl/components/text_field.rb +113 -0
- data/lib/coprl/presenters/dsl/components/time_field.rb +21 -0
- data/lib/coprl/presenters/dsl/components/toggle_base.rb +25 -0
- data/lib/coprl/presenters/dsl/components/tooltip.rb +24 -0
- data/lib/coprl/presenters/dsl/components/typography.rb +31 -0
- data/lib/coprl/presenters/dsl/components/unordered_list.rb +50 -0
- data/lib/coprl/presenters/dsl/definer.rb +9 -0
- data/lib/coprl/presenters/dsl/definition.rb +34 -0
- data/lib/coprl/presenters/dsl/invalid_presenter.rb +8 -0
- data/lib/coprl/presenters/dsl/lockable.rb +11 -0
- data/lib/coprl/presenters/dsl/protect_from_forgery.rb +43 -0
- data/lib/coprl/presenters/dsl/user_interface.rb +157 -0
- data/lib/coprl/presenters/errors.rb +1 -0
- data/lib/coprl/presenters/errors/invalid_dsl.rb +8 -0
- data/lib/coprl/presenters/errors/parameter_validation.rb +8 -0
- data/lib/coprl/presenters/errors/unprocessable.rb +8 -0
- data/lib/coprl/presenters/generators/inflectors.rb +59 -0
- data/lib/coprl/presenters/generators/plugin.rb +121 -0
- data/lib/coprl/presenters/generators/templates/plugin/.gitignore +12 -0
- data/lib/coprl/presenters/generators/templates/plugin/Gemfile.tt +6 -0
- data/lib/coprl/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
- data/lib/coprl/presenters/generators/templates/plugin/README.md +253 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/action.rb.tt +16 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/actions/dsl.rb.tt +22 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/component.rb.tt +18 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/components/dsl.rb.tt +19 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/helpers/helper.rb.tt +15 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/plugin.rb.tt +9 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
- data/lib/coprl/presenters/generators/templates/plugin/lib/coprl/presenters/plugins/web_client/components/render.rb.tt +27 -0
- data/lib/coprl/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
- data/lib/coprl/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
- data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
- data/lib/coprl/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
- data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component.erb.tt +14 -0
- data/lib/coprl/presenters/generators/templates/plugin/views/components/application/component_header.erb.tt +20 -0
- data/lib/coprl/presenters/helpers.rb +12 -0
- data/lib/coprl/presenters/helpers/date.rb +22 -0
- data/lib/coprl/presenters/helpers/errors.rb +11 -0
- data/lib/coprl/presenters/helpers/inflector.rb +16 -0
- data/lib/coprl/presenters/helpers/rails.rb +43 -0
- data/lib/coprl/presenters/helpers/rails/currency.rb +16 -0
- data/lib/coprl/presenters/helpers/rails/model_table.rb +60 -0
- data/lib/coprl/presenters/helpers/redact.rb +13 -0
- data/lib/coprl/presenters/helpers/route.rb +24 -0
- data/lib/coprl/presenters/helpers/time.rb +27 -0
- data/lib/coprl/presenters/namespace.rb +12 -0
- data/lib/coprl/presenters/pluggable.rb +37 -0
- data/lib/coprl/presenters/plugins.rb +7 -0
- data/lib/coprl/presenters/plugins/google_maps.rb +24 -0
- data/lib/coprl/presenters/plugins/google_maps/google_map.erb +10 -0
- data/lib/coprl/presenters/plugins/google_maps/google_map.rb +41 -0
- data/lib/coprl/presenters/rails/engine.rb +19 -0
- data/lib/coprl/presenters/rails/railtie.rb +41 -0
- data/lib/coprl/presenters/registry.rb +64 -0
- data/lib/coprl/presenters/router.rb +59 -0
- data/lib/coprl/presenters/settings.rb +81 -0
- data/lib/coprl/presenters/version.rb +7 -0
- data/lib/coprl/presenters/views.rb +17 -0
- data/lib/coprl/presenters/web_client/app.rb +121 -0
- data/lib/coprl/presenters/web_client/component_decorator_factory.rb +27 -0
- data/lib/coprl/presenters/web_client/component_html_decorator.rb +50 -0
- data/lib/coprl/presenters/web_client/component_renderer.rb +49 -0
- data/lib/coprl/presenters/web_client/custom_css.rb +66 -0
- data/lib/coprl/presenters/web_client/custom_render.rb +31 -0
- data/lib/coprl/presenters/web_client/helpers/color.rb +18 -0
- data/lib/coprl/presenters/web_client/helpers/drag_and_drop.rb +21 -0
- data/lib/coprl/presenters/web_client/helpers/equal.rb +7 -0
- data/lib/coprl/presenters/web_client/helpers/expand_hash.rb +19 -0
- data/lib/coprl/presenters/web_client/helpers/form_helpers.rb +14 -0
- data/lib/coprl/presenters/web_client/helpers/headers.rb +40 -0
- data/lib/coprl/presenters/web_client/helpers/html_safe.rb +8 -0
- data/lib/coprl/presenters/web_client/helpers/includes.rb +11 -0
- data/lib/coprl/presenters/web_client/helpers/inflector.rb +7 -0
- data/lib/coprl/presenters/web_client/helpers/markdown.rb +29 -0
- data/lib/coprl/presenters/web_client/helpers/padding_helpers.rb +21 -0
- data/lib/coprl/presenters/web_client/helpers/rails.rb +12 -0
- data/lib/coprl/presenters/web_client/helpers/rails/escape_html.rb +9 -0
- data/lib/coprl/presenters/web_client/helpers/rails/local_variables.rb +11 -0
- data/lib/coprl/presenters/web_client/helpers/rails/namespaced.rb +12 -0
- data/lib/coprl/presenters/web_client/helpers/rails/partials.rb +20 -0
- data/lib/coprl/presenters/web_client/helpers/rails/raw.rb +9 -0
- data/lib/coprl/presenters/web_client/helpers/rails/safe_markdown.rb +9 -0
- data/lib/coprl/presenters/web_client/helpers/render_component.rb +11 -0
- data/lib/coprl/presenters/web_client/helpers/shared.rb +18 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra.rb +11 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra/escape_html.rb +9 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra/local_variables.rb +11 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra/partials.rb +27 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra/raw.rb +9 -0
- data/lib/coprl/presenters/web_client/helpers/sinatra/safe_markdown.rb +10 -0
- data/lib/coprl/presenters/web_client/helpers/snake_to_camel.rb +12 -0
- data/lib/coprl/presenters/web_client/helpers/transform_hash.rb +20 -0
- data/lib/coprl/presenters/web_client/helpers/unique_id.rb +7 -0
- data/lib/coprl/presenters/web_client/plugin_headers.rb +37 -0
- data/lib/coprl/presenters/web_client/plugin_views_path.rb +35 -0
- data/lib/coprl/presenters/web_client/router.rb +10 -0
- data/lib/coprl/serializer.rb +43 -0
- data/lib/coprl/symbol/to_str.rb +29 -0
- data/lib/coprl/trace.rb +17 -0
- data/lib/hash_ext/traverse.rb +14 -0
- data/public/bundle.css +18256 -0
- data/public/bundle.js +60195 -0
- data/public/dialog-polyfill.js +738 -0
- data/public/favicon.ico +0 -0
- data/public/img/demo/dog.png +0 -0
- data/public/img/demo/grace-hopper-headshot.png +0 -0
- data/public/img/demo/grace-hopper-wide.png +0 -0
- data/public/img/demo/grace-hopper.png +0 -0
- data/public/img/demo/image_card.jpg +0 -0
- data/public/img/demo/rx.png +0 -0
- data/public/img/demo/welcome_card.jpg +0 -0
- data/public/img/settings/blue.png +0 -0
- data/public/img/settings/green.png +0 -0
- data/public/img/settings/orange.png +0 -0
- data/public/img/settings/purple.png +0 -0
- data/public/img/settings/red.png +0 -0
- data/public/img/settings/teal.png +0 -0
- data/public/img/settings/white.png +0 -0
- data/public/img/settings/yellow.png +0 -0
- data/public/presenters/custom_css.css +26 -0
- data/public/scripts.js +289 -0
- data/public/style-bundle.js +73 -0
- data/public/styles.css +16 -0
- data/public/wc.js +52950 -0
- data/rails-engine/app/controllers/coprl_controller.rb +24 -0
- data/rails-engine/app/helpers/coprl_helper.rb +3 -0
- data/rails-engine/app/views/application/_show.html.pom +2 -0
- data/rails-engine/app/views/coprl/show.html.pom +2 -0
- data/rails-engine/app/views/layouts/coprl.html.erb +21 -0
- data/rails-engine/config.ru +1 -0
- data/rails-engine/config/initializers/presenters.rb +43 -0
- data/rails-engine/config/routes.rb +13 -0
- data/scripts/build.sh +10 -0
- data/views/mdc/.babelrc +8 -0
- data/views/mdc/.eslintrc.yml +24 -0
- data/views/mdc/.gitignore +1 -0
- data/views/mdc/.nvmrc +1 -0
- data/views/mdc/assets/js/app.js +34 -0
- data/views/mdc/assets/js/components/base-component.js +163 -0
- data/views/mdc/assets/js/components/base-container.js +87 -0
- data/views/mdc/assets/js/components/base-toggle.js +56 -0
- data/views/mdc/assets/js/components/button.js +77 -0
- data/views/mdc/assets/js/components/cards.js +14 -0
- data/views/mdc/assets/js/components/checkboxes.js +15 -0
- data/views/mdc/assets/js/components/chips.js +109 -0
- data/views/mdc/assets/js/components/content.js +14 -0
- data/views/mdc/assets/js/components/data-tables.js +15 -0
- data/views/mdc/assets/js/components/datetime.js +186 -0
- data/views/mdc/assets/js/components/dialogs.js +135 -0
- data/views/mdc/assets/js/components/drag_n_drop.js +182 -0
- data/views/mdc/assets/js/components/drawer.js +43 -0
- data/views/mdc/assets/js/components/events.js +277 -0
- data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
- data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
- data/views/mdc/assets/js/components/events/autocomplete.js +94 -0
- data/views/mdc/assets/js/components/events/base.js +167 -0
- data/views/mdc/assets/js/components/events/clears.js +29 -0
- data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
- data/views/mdc/assets/js/components/events/dialog.js +43 -0
- data/views/mdc/assets/js/components/events/encode.js +8 -0
- data/views/mdc/assets/js/components/events/errors.js +225 -0
- data/views/mdc/assets/js/components/events/loads.js +62 -0
- data/views/mdc/assets/js/components/events/navigates.js +19 -0
- data/views/mdc/assets/js/components/events/plugin.js +18 -0
- data/views/mdc/assets/js/components/events/post_message.js +21 -0
- data/views/mdc/assets/js/components/events/posts.js +218 -0
- data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
- data/views/mdc/assets/js/components/events/removes.js +21 -0
- data/views/mdc/assets/js/components/events/replaces.js +135 -0
- data/views/mdc/assets/js/components/events/snackbar.js +23 -0
- data/views/mdc/assets/js/components/events/stepper.js +21 -0
- data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
- data/views/mdc/assets/js/components/events/toggle_visibility.js +72 -0
- data/views/mdc/assets/js/components/file-inputs.js +76 -0
- data/views/mdc/assets/js/components/form-fields.js +16 -0
- data/views/mdc/assets/js/components/forms.js +14 -0
- data/views/mdc/assets/js/components/get_event_target.js +15 -0
- data/views/mdc/assets/js/components/grid.js +21 -0
- data/views/mdc/assets/js/components/header.js +20 -0
- data/views/mdc/assets/js/components/hidden-fields.js +44 -0
- data/views/mdc/assets/js/components/icon-toggles.js +14 -0
- data/views/mdc/assets/js/components/images.js +19 -0
- data/views/mdc/assets/js/components/initialize.js +82 -0
- data/views/mdc/assets/js/components/lists.js +92 -0
- data/views/mdc/assets/js/components/menus.js +79 -0
- data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
- data/views/mdc/assets/js/components/mixins/event-handler.js +13 -0
- data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -0
- data/views/mdc/assets/js/components/multi-select.js +75 -0
- data/views/mdc/assets/js/components/plugins.js +86 -0
- data/views/mdc/assets/js/components/progress.js +31 -0
- data/views/mdc/assets/js/components/radios.js +14 -0
- data/views/mdc/assets/js/components/rich-text-area.js +227 -0
- data/views/mdc/assets/js/components/rich-text-area/horizontal-rule-blot.js +23 -0
- data/views/mdc/assets/js/components/root_document.js +5 -0
- data/views/mdc/assets/js/components/selects.js +56 -0
- data/views/mdc/assets/js/components/sliders.js +67 -0
- data/views/mdc/assets/js/components/snackbar.js +26 -0
- data/views/mdc/assets/js/components/steppers.js +48 -0
- data/views/mdc/assets/js/components/switches.js +14 -0
- data/views/mdc/assets/js/components/tab-bars.js +28 -0
- data/views/mdc/assets/js/components/text-fields.js +157 -0
- data/views/mdc/assets/js/components/tooltip.js +17 -0
- data/views/mdc/assets/js/components/typography.js +28 -0
- data/views/mdc/assets/js/components/uninitialize.js +7 -0
- data/views/mdc/assets/js/config.js +27 -0
- data/views/mdc/assets/js/mdl-stepper.js +1108 -0
- data/views/mdc/assets/js/utils/compatibility.js +9 -0
- data/views/mdc/assets/js/utils/config.js +73 -0
- data/views/mdc/assets/js/utils/config.test.js +59 -0
- data/views/mdc/assets/js/utils/form-data.js +12 -0
- data/views/mdc/assets/js/utils/urls.js +57 -0
- data/views/mdc/assets/js/wc.js +111 -0
- data/views/mdc/assets/scss/app.scss +47 -0
- data/views/mdc/assets/scss/components/avatar.scss +85 -0
- data/views/mdc/assets/scss/components/button.scss +76 -0
- data/views/mdc/assets/scss/components/card.scss +60 -0
- data/views/mdc/assets/scss/components/checkbox.scss +1 -0
- data/views/mdc/assets/scss/components/chip.scss +34 -0
- data/views/mdc/assets/scss/components/content.scss +36 -0
- data/views/mdc/assets/scss/components/data-table.scss +91 -0
- data/views/mdc/assets/scss/components/datetime.scss +29 -0
- data/views/mdc/assets/scss/components/dialog.scss +8 -0
- data/views/mdc/assets/scss/components/drag_n_drop.scss +17 -0
- data/views/mdc/assets/scss/components/drawer.scss +82 -0
- data/views/mdc/assets/scss/components/expansion-panel.scss +153 -0
- data/views/mdc/assets/scss/components/fab.scss +27 -0
- data/views/mdc/assets/scss/components/file-input.scss +18 -0
- data/views/mdc/assets/scss/components/grid.scss +81 -0
- data/views/mdc/assets/scss/components/header.scss +21 -0
- data/views/mdc/assets/scss/components/icon-button-toggles.scss +2 -0
- data/views/mdc/assets/scss/components/icon.scss +57 -0
- data/views/mdc/assets/scss/components/image-list.scss +18 -0
- data/views/mdc/assets/scss/components/image.scss +22 -0
- data/views/mdc/assets/scss/components/list.scss +43 -0
- data/views/mdc/assets/scss/components/menu.scss +28 -0
- data/views/mdc/assets/scss/components/multi-select.scss +44 -0
- data/views/mdc/assets/scss/components/progress.scss +1 -0
- data/views/mdc/assets/scss/components/radio.scss +4 -0
- data/views/mdc/assets/scss/components/rich-text-area.scss +73 -0
- data/views/mdc/assets/scss/components/select.scss +23 -0
- data/views/mdc/assets/scss/components/separator.scss +3 -0
- data/views/mdc/assets/scss/components/slider.scss +1 -0
- data/views/mdc/assets/scss/components/snackbar.scss +5 -0
- data/views/mdc/assets/scss/components/stepper.scss +235 -0
- data/views/mdc/assets/scss/components/switch.scss +15 -0
- data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
- data/views/mdc/assets/scss/components/textfield.scss +19 -0
- data/views/mdc/assets/scss/components/tooltip.scss +3 -0
- data/views/mdc/assets/scss/components/typography.scss +35 -0
- data/views/mdc/assets/scss/components/unordered-lists.scss +17 -0
- data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
- data/views/mdc/assets/scss/material.blue_grey-orange.min.css +8 -0
- data/views/mdc/assets/scss/media.scss +39 -0
- data/views/mdc/assets/scss/palette.scss +16 -0
- data/views/mdc/assets/scss/styles.scss +54 -0
- data/views/mdc/assets/scss/theme.scss +78 -0
- data/views/mdc/body/_dismissable-drawer.erb +34 -0
- data/views/mdc/body/_footer.erb +1 -0
- data/views/mdc/body/_header.erb +39 -0
- data/views/mdc/body/_modal-drawer.erb +35 -0
- data/views/mdc/body/_postamble.erb +17 -0
- data/views/mdc/body/_preamble.erb +26 -0
- data/views/mdc/body/_snackbar.erb +16 -0
- data/views/mdc/body/drawer/_divider.erb +1 -0
- data/views/mdc/body/drawer/_item.erb +13 -0
- data/views/mdc/body/drawer/_label.erb +1 -0
- data/views/mdc/body/drawers/_menu.erb +25 -0
- data/views/mdc/body/footers/_large.erb +27 -0
- data/views/mdc/body/footers/_menu_item.erb +6 -0
- data/views/mdc/body/footers/_small.erb +14 -0
- data/views/mdc/components/_avatar.erb +31 -0
- data/views/mdc/components/_badge.erb +2 -0
- data/views/mdc/components/_body.erb +2 -0
- data/views/mdc/components/_button.erb +28 -0
- data/views/mdc/components/_caption.erb +2 -0
- data/views/mdc/components/_card.erb +71 -0
- data/views/mdc/components/_checkbox.erb +34 -0
- data/views/mdc/components/_chip.erb +56 -0
- data/views/mdc/components/_chipset.erb +17 -0
- data/views/mdc/components/_content.erb +36 -0
- data/views/mdc/components/_date.erb +1 -0
- data/views/mdc/components/_datetime.erb +33 -0
- data/views/mdc/components/_dialog.erb +50 -0
- data/views/mdc/components/_event.erb +12 -0
- data/views/mdc/components/_expansion_panel.erb +13 -0
- data/views/mdc/components/_file_input.erb +17 -0
- data/views/mdc/components/_form.erb +14 -0
- data/views/mdc/components/_grid.erb +43 -0
- data/views/mdc/components/_headline.erb +4 -0
- data/views/mdc/components/_hidden_field.erb +5 -0
- data/views/mdc/components/_icon.erb +35 -0
- data/views/mdc/components/_icon_toggle.erb +16 -0
- data/views/mdc/components/_image.erb +25 -0
- data/views/mdc/components/_image_list.erb +38 -0
- data/views/mdc/components/_link.erb +4 -0
- data/views/mdc/components/_list.erb +20 -0
- data/views/mdc/components/_menu.erb +45 -0
- data/views/mdc/components/_multi_select.erb +33 -0
- data/views/mdc/components/_number_field.erb +38 -0
- data/views/mdc/components/_overline.erb +2 -0
- data/views/mdc/components/_page_title.erb +4 -0
- data/views/mdc/components/_progress.erb +11 -0
- data/views/mdc/components/_radio_button.erb +20 -0
- data/views/mdc/components/_render.erb +3 -0
- data/views/mdc/components/_rich_text_area.erb +22 -0
- data/views/mdc/components/_select.erb +43 -0
- data/views/mdc/components/_separator.erb +3 -0
- data/views/mdc/components/_slider.erb +43 -0
- data/views/mdc/components/_snackbar.erb +13 -0
- data/views/mdc/components/_stepper.erb +47 -0
- data/views/mdc/components/_subtitle.erb +4 -0
- data/views/mdc/components/_switch.erb +29 -0
- data/views/mdc/components/_tab_bar.erb +35 -0
- data/views/mdc/components/_table.erb +28 -0
- data/views/mdc/components/_text_area.erb +18 -0
- data/views/mdc/components/_text_field.erb +39 -0
- data/views/mdc/components/_time.erb +1 -0
- data/views/mdc/components/_tooltip.erb +5 -0
- data/views/mdc/components/_typography.erb +15 -0
- data/views/mdc/components/_unordered_list.erb +10 -0
- data/views/mdc/components/actions/autocomplete.rb +8 -0
- data/views/mdc/components/actions/clear.rb +11 -0
- data/views/mdc/components/actions/close_dialog.rb +10 -0
- data/views/mdc/components/actions/delete.rb +11 -0
- data/views/mdc/components/actions/dialog.rb +11 -0
- data/views/mdc/components/actions/loads.rb +17 -0
- data/views/mdc/components/actions/navigates.rb +11 -0
- data/views/mdc/components/actions/post.rb +14 -0
- data/views/mdc/components/actions/post_message.rb +10 -0
- data/views/mdc/components/actions/prompt_if_dirty.rb +17 -0
- data/views/mdc/components/actions/remove.rb +10 -0
- data/views/mdc/components/actions/replaces.rb +16 -0
- data/views/mdc/components/actions/resolver.rb +39 -0
- data/views/mdc/components/actions/snackbar.rb +12 -0
- data/views/mdc/components/actions/stepper.rb +10 -0
- data/views/mdc/components/actions/toggle_disabled.rb +10 -0
- data/views/mdc/components/actions/toggle_visibility.rb +10 -0
- data/views/mdc/components/actions/update.rb +10 -0
- data/views/mdc/components/buttons/_button.erb +27 -0
- data/views/mdc/components/buttons/_fab.erb +23 -0
- data/views/mdc/components/buttons/_icon.erb +24 -0
- data/views/mdc/components/buttons/_image.erb +25 -0
- data/views/mdc/components/list/_actions.erb +6 -0
- data/views/mdc/components/list/_avatar.erb +6 -0
- data/views/mdc/components/list/_checkbox.erb +5 -0
- data/views/mdc/components/list/_header.erb +37 -0
- data/views/mdc/components/list/_hidden_field.erb +3 -0
- data/views/mdc/components/list/_icon.erb +6 -0
- data/views/mdc/components/list/_info.erb +1 -0
- data/views/mdc/components/list/_line.erb +45 -0
- data/views/mdc/components/list/_menu.erb +28 -0
- data/views/mdc/components/list/_separator.erb +1 -0
- data/views/mdc/components/list/actions/_button.erb +1 -0
- data/views/mdc/components/list/actions/_checkbox.erb +1 -0
- data/views/mdc/components/list/actions/_icon.erb +1 -0
- data/views/mdc/components/list/actions/_icon_toggle.erb +1 -0
- data/views/mdc/components/list/actions/_radio_button.erb +1 -0
- data/views/mdc/components/list/actions/_switch.erb +1 -0
- data/views/mdc/components/shared/_hint_error_display.erb +9 -0
- data/views/mdc/components/shared/_input_label.erb +7 -0
- data/views/mdc/components/stepper/_step.erb +33 -0
- data/views/mdc/components/table/_checkbox.erb +20 -0
- data/views/mdc/components/table/_column.erb +18 -0
- data/views/mdc/components/table/_footer.erb +8 -0
- data/views/mdc/components/table/_header.erb +17 -0
- data/views/mdc/components/table/_pagination.erb +11 -0
- data/views/mdc/components/table/_row.erb +16 -0
- data/views/mdc/components/unordered_list/_icon.erb +2 -0
- data/views/mdc/components/unordered_list/_list_item.erb +7 -0
- data/views/mdc/init-depends.sh +2 -0
- data/views/mdc/layout.erb +18 -0
- data/views/mdc/package-lock.json +16461 -0
- data/views/mdc/package.json +76 -0
- data/views/mdc/web.erb +5 -0
- data/views/mdc/webpack.config.js +60 -0
- metadata +900 -19
- data/.rspec +0 -3
- data/.rubocop.yml +0 -10
- data/CODE_OF_CONDUCT.md +0 -84
- data/lib/coprl/version.rb +0 -5
data/CODE-OF-CONDUCT.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
|
8
|
+
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
|
9
|
+
level of experience, education, socio-economic status, nationality, personal
|
|
10
|
+
appearance, race, religion, or sexual identity and orientation.
|
|
11
|
+
|
|
12
|
+
## Our Standards
|
|
13
|
+
|
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
|
15
|
+
include:
|
|
16
|
+
|
|
17
|
+
* Using welcoming and inclusive language
|
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
|
19
|
+
* Gracefully accepting constructive criticism
|
|
20
|
+
* Focusing on what is best for the community
|
|
21
|
+
* Showing empathy towards other community members
|
|
22
|
+
|
|
23
|
+
Examples of unacceptable behavior by participants include:
|
|
24
|
+
|
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
26
|
+
advances
|
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
28
|
+
* Public or private harassment
|
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
|
30
|
+
address, without explicit permission
|
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
32
|
+
professional setting
|
|
33
|
+
|
|
34
|
+
## Our Responsibilities
|
|
35
|
+
|
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
|
38
|
+
response to any instances of unacceptable behavior.
|
|
39
|
+
|
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
|
44
|
+
threatening, offensive, or harmful.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
|
49
|
+
when an individual is representing the project or its community. Examples of
|
|
50
|
+
representing a project or community include using an official project e-mail
|
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
|
53
|
+
further defined and clarified by project maintainers.
|
|
54
|
+
|
|
55
|
+
## Enforcement
|
|
56
|
+
|
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
58
|
+
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
|
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
|
63
|
+
|
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
|
66
|
+
members of the project's leadership.
|
|
67
|
+
|
|
68
|
+
## Attribution
|
|
69
|
+
|
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
71
|
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
|
72
|
+
|
|
73
|
+
[homepage]: https://www.contributor-covenant.org
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## How to contribute to Presenters
|
|
2
|
+
|
|
3
|
+
#### Semantic Release commit messages
|
|
4
|
+
Presenter uses [semantic release](https://semantic-release.gitbook.io/semantic-release/) to maintain [semantic versioning](https://semver.org/).
|
|
5
|
+
|
|
6
|
+
This means that your commits must identify what changes are in them. Examples (from the semantic release readme):
|
|
7
|
+
|
|
8
|
+
| Commit message | Release type |
|
|
9
|
+
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
|
|
10
|
+
| `fix(pencil): stop graphite breaking when too much pressure applied` | Patch Release |
|
|
11
|
+
| `feat(pencil): add 'graphiteWidth' option` | ~~Minor~~ Feature Release |
|
|
12
|
+
| `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release |
|
|
13
|
+
|
|
14
|
+
The following types are available:
|
|
15
|
+
|
|
16
|
+
* feat: A new feature
|
|
17
|
+
* fix: A bug fix
|
|
18
|
+
* docs: Documentation only changes
|
|
19
|
+
* style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
|
|
20
|
+
* refactor: A code change that neither fixes a bug nor adds a feature
|
|
21
|
+
* perf: A code change that improves performance
|
|
22
|
+
* test: Adding missing or correcting existing tests
|
|
23
|
+
* chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
|
|
24
|
+
|
|
25
|
+
The [Angular Git Commit Guidelines](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines)
|
|
26
|
+
outlines the conventions in full detail.
|
|
27
|
+
|
|
28
|
+
#### **Did you find a bug?**
|
|
29
|
+
|
|
30
|
+
* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/rx/presenters/issues).
|
|
31
|
+
|
|
32
|
+
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/rx/presenters/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring.
|
|
33
|
+
|
|
34
|
+
* Use the bug report templates to create the issue.
|
|
35
|
+
|
|
36
|
+
#### **Did you write a patch that fixes a bug?**
|
|
37
|
+
|
|
38
|
+
* Open a new GitHub pull request with the patch.
|
|
39
|
+
|
|
40
|
+
* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
|
|
41
|
+
|
|
42
|
+
#### **Do you intend to add a new feature or change an existing one?**
|
|
43
|
+
|
|
44
|
+
* Suggest your change as a new [feature request](https://github.com/rx/presenters/issues/new) and start writing code.
|
|
45
|
+
|
|
46
|
+
#### **Do you have questions about the source code?**
|
|
47
|
+
|
|
48
|
+
* Ask any question about how to use Presenters open a [support/question](https://github.com/rx/presenters/issues/new)
|
|
49
|
+
|
|
50
|
+
#### **Do you want to contribute to the Presenters documentation?**
|
|
51
|
+
|
|
52
|
+
* Open a new GitHub pull request with the patch.
|
|
53
|
+
|
|
54
|
+
Presenters are a volunteer effort. We encourage you to pitch in and join the team!
|
|
55
|
+
|
|
56
|
+
Thanks! :heart: :heart: :heart:
|
|
57
|
+
|
|
58
|
+
Presenters Team
|
|
59
|
+
|
|
60
|
+
(Attribution: Adapted from Rails contribution guidlines)
|
data/Gemfile
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
ruby `[ -z "$RBENV_VERSION" ] && cat .ruby-version || echo $RBENV_VERSION`
|
|
4
5
|
|
|
5
|
-
# Specify your gem's dependencies in coprl.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
group :development do
|
|
9
|
+
gem 'pry'
|
|
10
|
+
gem 'pry-byebug'
|
|
11
|
+
end
|
|
9
12
|
|
|
10
|
-
|
|
13
|
+
group :test do
|
|
14
|
+
gem 'rspec'
|
|
15
|
+
gem 'rspec-html-matchers'
|
|
16
|
+
gem 'watir', '~> 6.16'
|
|
17
|
+
gem 'webdrivers', '~> 4.1'
|
|
18
|
+
gem 'watir-rspec', '~> 3.0'
|
|
19
|
+
gem 'rspec_junit_formatter'
|
|
20
|
+
gem 'simplecov', require: false
|
|
21
|
+
end
|
|
11
22
|
|
|
12
|
-
|
|
23
|
+
# Plugins
|
|
24
|
+
gem 'foo_presenter_plugin', github: 'coprl/foo_presenter_plugin', require: false
|
|
25
|
+
gem 'image_crop_presenter_plugin', github: 'coprl/image_crop_presenter_plugin', require: false
|
|
26
|
+
gem 'chart_presenter_plugin', github: 'coprl/chart_presenter_plugin', require: false
|
|
27
|
+
|
|
28
|
+
gem 'rack-cors'
|
|
29
|
+
gem 'honeybadger' if ENV.fetch('HONEYBADGER_API_KEY'){false}
|
|
30
|
+
gem 'puma'
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/coprl/chart_presenter_plugin.git
|
|
3
|
+
revision: ae9a8bb805570dbf2c1156e3c81f07e3a24807e2
|
|
4
|
+
specs:
|
|
5
|
+
chart_presenter_plugin (0.1.0)
|
|
6
|
+
|
|
7
|
+
GIT
|
|
8
|
+
remote: https://github.com/coprl/foo_presenter_plugin.git
|
|
9
|
+
revision: f9c92ab98388aeb150c9b523e97042c1386aff10
|
|
10
|
+
specs:
|
|
11
|
+
foo_presenter_plugin (0.0.2)
|
|
12
|
+
|
|
13
|
+
GIT
|
|
14
|
+
remote: https://github.com/coprl/image_crop_presenter_plugin.git
|
|
15
|
+
revision: 33452c5d3b232e93a942280f8429be2707c992ab
|
|
16
|
+
specs:
|
|
17
|
+
image_crop_presenter_plugin (0.1.0)
|
|
18
|
+
|
|
19
|
+
PATH
|
|
20
|
+
remote: .
|
|
21
|
+
specs:
|
|
22
|
+
coprl (1.0.0)
|
|
23
|
+
dry-configurable (> 0.1, <= 7.0)
|
|
24
|
+
dry-container (~> 0.6)
|
|
25
|
+
dry-inflector (~> 0.1)
|
|
26
|
+
filewatcher (~> 1.1.1)
|
|
27
|
+
ice_nine (~> 0.11)
|
|
28
|
+
redcarpet (~> 3.4)
|
|
29
|
+
sinatra (>= 1.4, < 3.0)
|
|
30
|
+
tzinfo (>= 1.1, < 3.0)
|
|
31
|
+
tzinfo-data (~> 1.2018)
|
|
32
|
+
zeitwerk (~> 2.1)
|
|
33
|
+
|
|
34
|
+
GEM
|
|
35
|
+
remote: https://rubygems.org/
|
|
36
|
+
specs:
|
|
37
|
+
byebug (11.1.3)
|
|
38
|
+
childprocess (3.0.0)
|
|
39
|
+
coderay (1.1.2)
|
|
40
|
+
concurrent-ruby (1.1.8)
|
|
41
|
+
diff-lcs (1.3)
|
|
42
|
+
docile (1.3.1)
|
|
43
|
+
dry-configurable (0.12.1)
|
|
44
|
+
concurrent-ruby (~> 1.0)
|
|
45
|
+
dry-core (~> 0.5, >= 0.5.0)
|
|
46
|
+
dry-container (0.7.2)
|
|
47
|
+
concurrent-ruby (~> 1.0)
|
|
48
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
|
49
|
+
dry-core (0.5.0)
|
|
50
|
+
concurrent-ruby (~> 1.0)
|
|
51
|
+
dry-inflector (0.2.0)
|
|
52
|
+
filewatcher (1.1.1)
|
|
53
|
+
optimist (~> 3.0)
|
|
54
|
+
gem-release (2.0.1)
|
|
55
|
+
ice_nine (0.11.2)
|
|
56
|
+
json (2.3.1)
|
|
57
|
+
method_source (0.9.0)
|
|
58
|
+
mini_portile2 (2.5.1)
|
|
59
|
+
mustermann (1.1.1)
|
|
60
|
+
ruby2_keywords (~> 0.0.1)
|
|
61
|
+
nio4r (2.5.7)
|
|
62
|
+
nokogiri (1.11.4)
|
|
63
|
+
mini_portile2 (~> 2.5.0)
|
|
64
|
+
racc (~> 1.4)
|
|
65
|
+
nokogiri (1.11.4-x86_64-darwin)
|
|
66
|
+
racc (~> 1.4)
|
|
67
|
+
optimist (3.0.1)
|
|
68
|
+
pry (0.11.3)
|
|
69
|
+
coderay (~> 1.1.0)
|
|
70
|
+
method_source (~> 0.9.0)
|
|
71
|
+
pry-byebug (3.8.0)
|
|
72
|
+
byebug (~> 11.0)
|
|
73
|
+
pry (~> 0.10)
|
|
74
|
+
puma (5.3.1)
|
|
75
|
+
nio4r (~> 2.0)
|
|
76
|
+
racc (1.5.2)
|
|
77
|
+
rack (2.2.3)
|
|
78
|
+
rack-cors (1.1.0)
|
|
79
|
+
rack (>= 2.0.0)
|
|
80
|
+
rack-protection (2.1.0)
|
|
81
|
+
rack
|
|
82
|
+
rack-test (0.8.3)
|
|
83
|
+
rack (>= 1.0, < 3)
|
|
84
|
+
rake (13.0.1)
|
|
85
|
+
redcarpet (3.5.1)
|
|
86
|
+
regexp_parser (1.6.0)
|
|
87
|
+
rspec (3.8.0)
|
|
88
|
+
rspec-core (~> 3.8.0)
|
|
89
|
+
rspec-expectations (~> 3.8.0)
|
|
90
|
+
rspec-mocks (~> 3.8.0)
|
|
91
|
+
rspec-core (3.8.2)
|
|
92
|
+
rspec-support (~> 3.8.0)
|
|
93
|
+
rspec-expectations (3.8.4)
|
|
94
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
95
|
+
rspec-support (~> 3.8.0)
|
|
96
|
+
rspec-html-matchers (0.9.1)
|
|
97
|
+
nokogiri (~> 1)
|
|
98
|
+
rspec (>= 3.0.0.a, < 4)
|
|
99
|
+
rspec-mocks (3.8.1)
|
|
100
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
101
|
+
rspec-support (~> 3.8.0)
|
|
102
|
+
rspec-support (3.8.2)
|
|
103
|
+
rspec_junit_formatter (0.4.1)
|
|
104
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
105
|
+
ruby2_keywords (0.0.4)
|
|
106
|
+
rubyzip (1.3.0)
|
|
107
|
+
selenium-webdriver (3.142.7)
|
|
108
|
+
childprocess (>= 0.5, < 4.0)
|
|
109
|
+
rubyzip (>= 1.2.2)
|
|
110
|
+
shotgun (0.9.2)
|
|
111
|
+
rack (>= 1.0)
|
|
112
|
+
simplecov (0.16.1)
|
|
113
|
+
docile (~> 1.1)
|
|
114
|
+
json (>= 1.8, < 3)
|
|
115
|
+
simplecov-html (~> 0.10.0)
|
|
116
|
+
simplecov-html (0.10.2)
|
|
117
|
+
sinatra (2.1.0)
|
|
118
|
+
mustermann (~> 1.0)
|
|
119
|
+
rack (~> 2.2)
|
|
120
|
+
rack-protection (= 2.1.0)
|
|
121
|
+
tilt (~> 2.0)
|
|
122
|
+
thor (1.1.0)
|
|
123
|
+
tilt (2.0.10)
|
|
124
|
+
tzinfo (2.0.4)
|
|
125
|
+
concurrent-ruby (~> 1.0)
|
|
126
|
+
tzinfo-data (1.2021.1)
|
|
127
|
+
tzinfo (>= 1.0.0)
|
|
128
|
+
watir (6.16.5)
|
|
129
|
+
regexp_parser (~> 1.2)
|
|
130
|
+
selenium-webdriver (~> 3.6)
|
|
131
|
+
watir-rspec (3.0.0)
|
|
132
|
+
rspec (~> 3.0)
|
|
133
|
+
watir (>= 6.0.0.beta4)
|
|
134
|
+
webdrivers (4.1.0)
|
|
135
|
+
nokogiri (~> 1.6)
|
|
136
|
+
rubyzip (~> 1.0)
|
|
137
|
+
selenium-webdriver (>= 3.0, < 4.0)
|
|
138
|
+
zeitwerk (2.4.2)
|
|
139
|
+
|
|
140
|
+
PLATFORMS
|
|
141
|
+
ruby
|
|
142
|
+
x86_64-darwin-19
|
|
143
|
+
|
|
144
|
+
DEPENDENCIES
|
|
145
|
+
bundler (>= 1.13)
|
|
146
|
+
chart_presenter_plugin!
|
|
147
|
+
coprl!
|
|
148
|
+
foo_presenter_plugin!
|
|
149
|
+
gem-release (~> 2.0)
|
|
150
|
+
image_crop_presenter_plugin!
|
|
151
|
+
pry
|
|
152
|
+
pry-byebug
|
|
153
|
+
puma
|
|
154
|
+
rack (>= 2.0.6)
|
|
155
|
+
rack-cors
|
|
156
|
+
rack-test (~> 0.8)
|
|
157
|
+
rake (~> 13.0)
|
|
158
|
+
rspec
|
|
159
|
+
rspec-html-matchers
|
|
160
|
+
rspec_junit_formatter
|
|
161
|
+
shotgun (~> 0.9)
|
|
162
|
+
simplecov
|
|
163
|
+
thor (~> 1.1.0)
|
|
164
|
+
watir (~> 6.16)
|
|
165
|
+
watir-rspec (~> 3.0)
|
|
166
|
+
webdrivers (~> 4.1)
|
|
167
|
+
|
|
168
|
+
RUBY VERSION
|
|
169
|
+
ruby 2.7.2p137
|
|
170
|
+
|
|
171
|
+
BUNDLED WITH
|
|
172
|
+
2.2.3
|
data/HISTORY.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# HISTORY
|
|
2
|
+
This is the manual changelog, managed before switching to github_changelog_generator.
|
|
3
|
+
|
|
4
|
+
## [0.2.00] - 2018-09-18
|
|
5
|
+
### Added
|
|
6
|
+
- This change log
|
|
7
|
+
- [Namespaces]
|
|
8
|
+
- [Slider component]
|
|
9
|
+
- [Rich text component]
|
|
10
|
+
- [Map component]
|
|
11
|
+
- [Chip as input]
|
|
12
|
+
- [Tagged Input]
|
|
13
|
+
- [Grid Padding]
|
|
14
|
+
- [Grid Wide/Table scrolling]
|
|
15
|
+
- [Overline Text Style]
|
|
16
|
+
- [Blank lines]
|
|
17
|
+
- [Page separator]
|
|
18
|
+
- [Clear action]
|
|
19
|
+
- Floating content blocks
|
|
20
|
+
- Request logging
|
|
21
|
+
|
|
22
|
+
### Removed
|
|
23
|
+
- Autocomplete event
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Text field - draw with outlined style by default
|
|
27
|
+
- Text field - support for leading or trailing icons
|
|
28
|
+
- Text field - disabled support
|
|
29
|
+
- Text area - can specify cols to control width
|
|
30
|
+
- Select options - can pass the option text as the first parameter, or in the block.
|
|
31
|
+
- List - component action blocks are now actions
|
|
32
|
+
- List - color and border
|
|
33
|
+
- Content blocks - icons support
|
|
34
|
+
- Events - aliases focus and blur (maps to focusin and focusout)
|
|
35
|
+
- Typography - available in menu items, including markdown
|
|
36
|
+
- Typography - removed trailing line breaks
|
|
37
|
+
- Rails helper table_for helper - accepts timezone for auto time formatting
|
|
38
|
+
- Date time - default format changed
|
|
39
|
+
- Webclient FAB button - shifted up and out to make room for list actions
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- Text field - Removed excessive trailing spacing
|
|
43
|
+
- Context is no longer copied and it is not included in the pom json
|
|
44
|
+
- List - selected lists can render selected with the checked option
|
|
45
|
+
|
|
46
|
+
[Unreleased]: https://github.com/rx/presenters/compare/v0.1.14...HEAD
|
|
47
|
+
[0.1.14]: https://github.com/rx/presenters/compare/v0.1.14...v0.1.13
|
|
48
|
+
[Namespaces]: https://powerful-bastion-96181.herokuapp.com/namespaces
|
|
49
|
+
[Stepper]: https://powerful-bastion-96181.herokuapp.com/steppers
|
|
50
|
+
[Rich text component]: https://powerful-bastion-96181.herokuapp.com/text_areas
|
|
51
|
+
[Slider component]: https://powerful-bastion-96181.herokuapp.com/sliders
|
|
52
|
+
[Tagged Input]: https://powerful-bastion-96181.herokuapp.com/tagged_input
|
|
53
|
+
[Overline Text Style]: https://powerful-bastion-96181.herokuapp.com/styles
|
|
54
|
+
[Page separator]: https://powerful-bastion-96181.herokuapp.com/separator
|
|
55
|
+
[Blank lines]: https://powerful-bastion-96181.herokuapp.com/styles
|
|
56
|
+
[Grid Padding]: https://powerful-bastion-96181.herokuapp.com/layouts
|
|
57
|
+
[Map component]: https://powerful-bastion-96181.herokuapp.com/maps
|
|
58
|
+
[Clear action]: https://powerful-bastion-96181.herokuapp.com/clear_action
|
|
59
|
+
[Chip as input]: https://powerful-bastion-96181.herokuapp.com/chips#input_chips
|
|
60
|
+
[Floating content blocks]:https://powerful-bastion-96181.herokuapp.com/content#floating
|
|
61
|
+
[Grid Wide/Table scrolling]:https://powerful-bastion-96181.herokuapp.com/tables
|
data/{LICENSE.txt → LICENSE}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2018 Russell Edens
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
9
9
|
copies of the Software, and to permit persons to whom the Software is
|
|
10
10
|
furnished to do so, subject to the following conditions:
|
|
11
11
|
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
14
|
|
|
15
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/Procfile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
web: rackup -p $PORT
|
data/README.md
CHANGED
|
@@ -1,43 +1,145 @@
|
|
|
1
|
-
#
|
|
1
|
+
# COmmon PResenter Language (COPRL)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## TLDR;
|
|
6
|
+
Do you wish you could write a modern user interface in Ruby?
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
Now you can. Presenters are a Ruby DSL for rendering user interfaces.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
* Presenters are a power washer for building user interfaces
|
|
11
|
+
* Presenters are to HTML/User Interfaces what C is to assembly
|
|
12
|
+
* A presenter generates a Presenter Object Model (POM)
|
|
13
|
+
* A POM fully describes a user interface
|
|
14
|
+
* A POM client can fully render user interface from POM
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
gem 'coprl'
|
|
13
|
-
```
|
|
16
|
+
The semantics are adopted from [Material Design](https://material.io/).
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
## Why?
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
Building a user interface should like Ruby itself:
|
|
21
|
+
> ... a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
Instead building a user interface has turned into:
|
|
24
|
+
> How many languages/technologies/frameworks do I need to learn to build a rich user interface/experience?"
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
A typical web client requires at a minimum the following: HTML, CSS, Javascript, in addition we need Ruby on the server, plus some SQL.
|
|
27
|
+
That is 5 technologies/languages.
|
|
28
|
+
Now lets talk about a new client like an iOS or Android client. If we go native, we can now add Java and Swift to that list. We are up to 7 technologies/languages!
|
|
29
|
+
We didn't even add any popular extras like coffeescript, haml, sass, and we left out frameworks.
|
|
22
30
|
|
|
31
|
+
What if you could write all your user interface in Ruby and have it rendered natively in ANY client? The COPRL _enable_ that. It is a Ruby DSL that describes a user interface.
|
|
32
|
+
It generates an intermediate Presenter Object Model (POM).
|
|
33
|
+
The POM is a declarative user interface that can be rendered by a POM client.
|
|
34
|
+
The presenters gem provides a web client as a fully functional implementation that both renders natively as a Rails templating engine and as a Rack app.
|
|
35
|
+
|
|
36
|
+
This concept was initially inspired by the Presenters concepts of Ivar Jacobson as presented by Robert Martin.
|
|
37
|
+
|
|
38
|
+
## Demo
|
|
39
|
+
|
|
40
|
+
[Demo]
|
|
41
|
+
|
|
42
|
+
Or to run locally:
|
|
43
|
+
|
|
44
|
+
git clone git@github.com:rx/presenters.git
|
|
45
|
+
cd presenters/
|
|
46
|
+
bundle install
|
|
47
|
+
bundle exec rackup
|
|
48
|
+
|
|
49
|
+
open http://localhost:9292
|
|
50
|
+
|
|
51
|
+
> Note: Demo defaults to Ruby version 2.7.3 in the .ruby-version file. If you want to run a different version
|
|
52
|
+
> -- set RBENV_VERSION to your desired version.
|
|
53
|
+
> For example:
|
|
54
|
+
> ```
|
|
55
|
+
> RBENV_VERSION=2.5.5 bundle insatall
|
|
56
|
+
> RBENV_VERSION=2.5.5 bundle exec rackup```
|
|
57
|
+
|
|
58
|
+
To see the POM:
|
|
59
|
+
|
|
60
|
+
open http://localhost:9292/index.pom
|
|
61
|
+
|
|
23
62
|
## Usage
|
|
24
63
|
|
|
25
|
-
|
|
64
|
+
### Rails
|
|
65
|
+
Presenters are a view templating language in Rails.
|
|
66
|
+
You can mix and match presenters with your existing views,
|
|
67
|
+
use them as new views, or call them as partails in existing views.
|
|
68
|
+
|
|
69
|
+
#### 1) Add presenters to Gemfile
|
|
70
|
+
gem 'coprl'
|
|
71
|
+
|
|
72
|
+
#### 2) Require coprl in config/application.rb
|
|
73
|
+
require 'coprl'
|
|
74
|
+
|
|
75
|
+
#### 3) Mount presenters in config/routes.rb
|
|
76
|
+
|
|
77
|
+
mount Coprl::Presenters::Rails::Engine => "/"
|
|
78
|
+
|
|
79
|
+
#### 4) Create the file app/view/hello_world.html.pom with the contents
|
|
80
|
+
|
|
81
|
+
Coprl::Presenters.define(:hello_world) do
|
|
82
|
+
heading 'hello world'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
Navigate to [locahost:3000/hello_world](http://127.0.0.1:3000/hello_world)
|
|
86
|
+
|
|
87
|
+
Use the [Demo] to get example code to drop into your presenters.
|
|
26
88
|
|
|
27
|
-
|
|
89
|
+
#### 5) Optionally -- use presenters as partials from ERB/HAML
|
|
90
|
+
You can render a presenter as a partial from other templating laguages (erb, haml):
|
|
28
91
|
|
|
29
|
-
|
|
92
|
+
<%= render 'show', presenter: 'hello_world' %>
|
|
30
93
|
|
|
31
|
-
|
|
94
|
+
You need to add the following to your layout to use presenters as a partial alongside other erb's, haml or any other rails templating language.
|
|
95
|
+
|
|
96
|
+
##### Inside the <head> tag add the following:
|
|
97
|
+
|
|
98
|
+
<title><%= @pom.page.title if @pom.page %></title>
|
|
99
|
+
<%= coprl_headers(@base_url, request, @pom) %>
|
|
100
|
+
|
|
101
|
+
##### Inside the <body> tag, around you existing yield add the following:
|
|
102
|
+
|
|
103
|
+
<%= partial "body/preamble", :locals => {pom:@pom} %>
|
|
104
|
+
<%= yield %>
|
|
105
|
+
<%= partial "body/postamble", :locals => {pom:@pom} %>
|
|
106
|
+
|
|
107
|
+
### Rack
|
|
108
|
+
#### 1) To use it, add this line to your Gemfile:
|
|
109
|
+
|
|
110
|
+
gem 'coprl'
|
|
111
|
+
|
|
112
|
+
#### 2) Create the file app/presenters/index.pom with the contents:
|
|
113
|
+
|
|
114
|
+
Coprl::Presenters.define(:hello_world) do
|
|
115
|
+
heading 'hello world'
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
Presenters are rack based. If your framework uses a rack config file add the following:
|
|
119
|
+
use Coprl::Presenters::WebClient::App
|
|
120
|
+
# the api is optional
|
|
121
|
+
# use Coprl::Presenters::Api::App
|
|
122
|
+
|
|
123
|
+
Start your app and goto [/hello_world](http://127.0.0.1:3000/hello_world)
|
|
124
|
+
|
|
125
|
+
Use the [Demo] to get example code to drop into your presenters.
|
|
126
|
+
|
|
127
|
+
## Status
|
|
128
|
+
This project is in a released status.
|
|
129
|
+
|
|
130
|
+
[](https://circleci.com/gh/rx/presenters)
|
|
131
|
+
[](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
|
|
32
132
|
|
|
33
133
|
## Contributing
|
|
34
134
|
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
|
135
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/rx/presenters.
|
|
36
136
|
|
|
37
137
|
## License
|
|
38
138
|
|
|
39
|
-
The gem is available as open source under the terms of the [MIT License](
|
|
139
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
|
40
140
|
|
|
41
141
|
## Code of Conduct
|
|
42
142
|
|
|
43
|
-
Everyone interacting in the
|
|
143
|
+
Everyone interacting in the COPRL project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/coprl/coprl/blob/master/CODE-OF-CONDUCT.md).
|
|
144
|
+
|
|
145
|
+
[Demo]:https://coprl-ruby.herokuapp.com/
|