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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Coprl::Presenters.define(:field_level_events) do
|
|
2
|
+
helpers Demo::Helpers::IndentedGrid
|
|
3
|
+
attach :top_nav
|
|
4
|
+
attach :events_drawer
|
|
5
|
+
|
|
6
|
+
indented_grid do
|
|
7
|
+
display 'Field Level Events'
|
|
8
|
+
heading 'Text Fields'
|
|
9
|
+
body 'This demonstrates that a change event will submit the field value to the event action. '\
|
|
10
|
+
'This works with posts and replace actions'
|
|
11
|
+
text_field name: :myfield do
|
|
12
|
+
label 'Data to post'
|
|
13
|
+
event :change do
|
|
14
|
+
replaces :context_list, :context_list
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
attach :context_list
|
|
18
|
+
end
|
|
19
|
+
attach :code, file: __FILE__
|
|
20
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Coprl::Presenters.define(:form_level_events) do
|
|
2
|
+
helpers Demo::Helpers::IndentedGrid
|
|
3
|
+
|
|
4
|
+
attach :top_nav
|
|
5
|
+
attach :events_drawer
|
|
6
|
+
|
|
7
|
+
indented_grid do
|
|
8
|
+
display 'Posts in Form'
|
|
9
|
+
body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
|
|
10
|
+
'This works with posts and replace actions'
|
|
11
|
+
form do
|
|
12
|
+
text_field name: :myfield do
|
|
13
|
+
label 'Data to post'
|
|
14
|
+
end
|
|
15
|
+
text_field name: :myfield2 do
|
|
16
|
+
label 'More Data to post'
|
|
17
|
+
end
|
|
18
|
+
event :change do
|
|
19
|
+
replaces :context_list, :context_list
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
attach :context_list
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Coprl::Presenters.define(:events_drawer) do
|
|
2
|
+
helpers Coprl::Presenters::Helpers::Inflector
|
|
3
|
+
|
|
4
|
+
events = %i[field_level_events form_level_events tagged_input parallel_events].sort
|
|
5
|
+
actions = %i[dialog replaces loads toggle_visibility snackbar updates deletes posts clear last_response prompt_if_dirty].sort
|
|
6
|
+
|
|
7
|
+
drawer 'Events' do
|
|
8
|
+
menu do
|
|
9
|
+
events.each do |comp|
|
|
10
|
+
item titleize(comp) do
|
|
11
|
+
event :click do
|
|
12
|
+
loads comp
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
actions.each do |comp|
|
|
17
|
+
item titleize(comp) do
|
|
18
|
+
event :click do
|
|
19
|
+
loads "#{comp}_action"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Coprl::Presenters.define(:parallel_content) do
|
|
2
|
+
content id: context['id'] do
|
|
3
|
+
heading6 Time.now
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Coprl::Presenters.define(:parallel_events) do
|
|
8
|
+
helpers Demo::Helpers::IndentedGrid
|
|
9
|
+
attach :top_nav
|
|
10
|
+
attach :events_drawer
|
|
11
|
+
|
|
12
|
+
indented_grid do
|
|
13
|
+
display 'Parallel Events'
|
|
14
|
+
body 'This demonstrates multiple event handlers for the same event, running in parallel.
|
|
15
|
+
It also shows the onload event running in parallel.'
|
|
16
|
+
|
|
17
|
+
event :onload do
|
|
18
|
+
replaces :first, :parallel_content, id: :first
|
|
19
|
+
end
|
|
20
|
+
event :onload do
|
|
21
|
+
replaces :second, :parallel_content, id: :second
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
button :load_in_parallel do
|
|
25
|
+
event :click do
|
|
26
|
+
replaces :third, :parallel_content, id: :third
|
|
27
|
+
end
|
|
28
|
+
event :click do
|
|
29
|
+
replaces :forth, :parallel_content, id: :forth
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
event :click do
|
|
33
|
+
replaces :fifth, :parallel_content, id: :fifth
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
content id: :first
|
|
38
|
+
content id: :second
|
|
39
|
+
content id: :third
|
|
40
|
+
content id: :forth
|
|
41
|
+
content id: :fifth
|
|
42
|
+
end
|
|
43
|
+
attach :code, file: __FILE__
|
|
44
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Coprl::Presenters.define(:tagged_input) do
|
|
2
|
+
helpers Demo::Helpers::IndentedGrid
|
|
3
|
+
|
|
4
|
+
attach :top_nav
|
|
5
|
+
attach :events_drawer
|
|
6
|
+
|
|
7
|
+
indented_grid do
|
|
8
|
+
display 'Tagged Input'
|
|
9
|
+
body %(This demonstrates the ability to tag containers or components and then to post those values in an event action.
|
|
10
|
+
Sometimes you need to pull values from different nesting levels on a page to post.
|
|
11
|
+
Tags let you collect all tagged inputs from anywhere on the page and post them to some server side action.
|
|
12
|
+
An example of this can be found in the [search select](/search_select) pattern demo.)
|
|
13
|
+
|
|
14
|
+
blank
|
|
15
|
+
body 'Tags can be applied to containers and/or components.
|
|
16
|
+
Containers include content blocks, grids, forms, steppers, dialogs and cards.
|
|
17
|
+
All input components accept tags.'
|
|
18
|
+
|
|
19
|
+
title 'Example'
|
|
20
|
+
|
|
21
|
+
content tag: :somefields do
|
|
22
|
+
radio_button text: :on, name: :check_me, value: :on, checked: true
|
|
23
|
+
radio_button text: :off, name: :check_me, value: :off
|
|
24
|
+
end
|
|
25
|
+
text_field name: :myfield2, tag: :somefields do
|
|
26
|
+
label 'More Data to post'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
button 'Press me' do
|
|
30
|
+
event :click do
|
|
31
|
+
replaces :context_list, :context_list, input_tag: :somefields
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
attach :context_list
|
|
35
|
+
attach :code, file: __FILE__
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Coprl::Presenters.define(:formatting_tokens) do
|
|
2
|
+
helpers Demo::Helpers::IndentedGrid
|
|
3
|
+
indented_grid do
|
|
4
|
+
display 'Date Formatting Tokens', id: :date
|
|
5
|
+
table do
|
|
6
|
+
header do
|
|
7
|
+
column 'Character'
|
|
8
|
+
column 'Description'
|
|
9
|
+
column 'Example'
|
|
10
|
+
end
|
|
11
|
+
row do
|
|
12
|
+
column 'd'
|
|
13
|
+
column 'Day of the month, 2 digits with leading zeros'
|
|
14
|
+
column '01 to 31'
|
|
15
|
+
end
|
|
16
|
+
row do
|
|
17
|
+
column 'D'
|
|
18
|
+
column 'A textual representation of a day'
|
|
19
|
+
column 'Mon through Sun'
|
|
20
|
+
end
|
|
21
|
+
row do
|
|
22
|
+
column "l (lowercase 'L')"
|
|
23
|
+
column 'A full textual representation of the day of the week'
|
|
24
|
+
column 'Sunday through Saturday'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
row do
|
|
28
|
+
column 'j'
|
|
29
|
+
column 'Day of the month without leading zeros'
|
|
30
|
+
column '1 to 31'
|
|
31
|
+
end
|
|
32
|
+
row do
|
|
33
|
+
column 'J'
|
|
34
|
+
column 'Day of the month without leading zeros and ordinal suffix'
|
|
35
|
+
column '1st, 2nd, to 31st'
|
|
36
|
+
end
|
|
37
|
+
row do
|
|
38
|
+
column 'w'
|
|
39
|
+
column 'Numeric representation of the day of the week'
|
|
40
|
+
column '0 (for Sunday) through 6 (for Saturday)'
|
|
41
|
+
end
|
|
42
|
+
row do
|
|
43
|
+
column 'F'
|
|
44
|
+
column 'A full textual representation of a month'
|
|
45
|
+
column 'January through December'
|
|
46
|
+
end
|
|
47
|
+
row do
|
|
48
|
+
column 'm'
|
|
49
|
+
column 'Numeric representation of a month, with leading zero'
|
|
50
|
+
column '01 through 12'
|
|
51
|
+
end
|
|
52
|
+
row do
|
|
53
|
+
column 'n'
|
|
54
|
+
column 'Numeric representation of a month, without leading zeros'
|
|
55
|
+
column '1 through 12'
|
|
56
|
+
end
|
|
57
|
+
row do
|
|
58
|
+
column 'M'
|
|
59
|
+
column 'A short textual representation of a month'
|
|
60
|
+
column 'Jan through Dec'
|
|
61
|
+
end
|
|
62
|
+
row do
|
|
63
|
+
column 'U'
|
|
64
|
+
column 'The number of seconds since the Unix Epoch'
|
|
65
|
+
column '1413704993', numeric: false
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
row do
|
|
69
|
+
column 'y'
|
|
70
|
+
column 'A two digit representation of a year'
|
|
71
|
+
column '99 or 03'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
row do
|
|
75
|
+
column 'Y'
|
|
76
|
+
column 'A full numeric representation of a year, 4 digits'
|
|
77
|
+
column '1999 or 2003'
|
|
78
|
+
end
|
|
79
|
+
row do
|
|
80
|
+
column 'Z'
|
|
81
|
+
column 'ISO Date format'
|
|
82
|
+
column '2017-03-04T01:23:43.000Z'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
display 'Time Formatting Tokens', id: :time
|
|
87
|
+
table do
|
|
88
|
+
header do
|
|
89
|
+
column 'Character '
|
|
90
|
+
column 'Description'
|
|
91
|
+
column 'Example'
|
|
92
|
+
end
|
|
93
|
+
row do
|
|
94
|
+
column 'H'
|
|
95
|
+
column 'Hours (24 hours)'
|
|
96
|
+
column '00 to 23'
|
|
97
|
+
end
|
|
98
|
+
row do
|
|
99
|
+
column 'h'
|
|
100
|
+
column 'Hours'
|
|
101
|
+
column '1 to 12'
|
|
102
|
+
end
|
|
103
|
+
row do
|
|
104
|
+
column 'i'
|
|
105
|
+
column 'Minutes'
|
|
106
|
+
column '00 to 59'
|
|
107
|
+
end
|
|
108
|
+
row do
|
|
109
|
+
column 'S'
|
|
110
|
+
column 'Seconds, 2 digits'
|
|
111
|
+
column '00 to 59'
|
|
112
|
+
end
|
|
113
|
+
row do
|
|
114
|
+
column 's'
|
|
115
|
+
column 'Seconds'
|
|
116
|
+
column '0, 1 to 59'
|
|
117
|
+
end
|
|
118
|
+
row do
|
|
119
|
+
column 'K'
|
|
120
|
+
column 'AM/PM'
|
|
121
|
+
column 'AM or PM'
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
data/app/demo/index.pom
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative 'helpers/indented_grid'
|
|
2
|
+
|
|
3
|
+
Coprl::Presenters.define(:index) do
|
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
|
5
|
+
attach :top_nav
|
|
6
|
+
|
|
7
|
+
indented_grid do
|
|
8
|
+
headline 'COmmon PResenter Language (COPRL) Ruby Demo - AKA Presenters', id: :headline
|
|
9
|
+
subheading 'COPRL is to HTML what C is to assembly'
|
|
10
|
+
|
|
11
|
+
body ['A presenter describes a user interface using DSL.',
|
|
12
|
+
'The presenter is evaluated and a presenter object model (POM) is generated. The POM can be serialized as JSON.',
|
|
13
|
+
'A client that renders POM can display the given user interface.']
|
|
14
|
+
|
|
15
|
+
body 'To get started checkout the components and events.'
|
|
16
|
+
|
|
17
|
+
subheading 'For example this is the complete presenter DSL for this page:', level: 2
|
|
18
|
+
|
|
19
|
+
source = File.read(__FILE__)
|
|
20
|
+
body <<~HEREDOC
|
|
21
|
+
```
|
|
22
|
+
#{source}
|
|
23
|
+
```
|
|
24
|
+
HEREDOC
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require_relative 'helpers/indented_grid'
|
|
2
|
+
|
|
3
|
+
Coprl::Presenters.define(:markdown) do
|
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
|
5
|
+
attach :top_nav
|
|
6
|
+
|
|
7
|
+
indented_grid do
|
|
8
|
+
heading 'Markdown'
|
|
9
|
+
|
|
10
|
+
body 'Markdown on all text elements is supported.',
|
|
11
|
+
'It uses [redcarpet](https://github.com/vmg/redcarpet) with the Safe render.'
|
|
12
|
+
title 'Line breaks'
|
|
13
|
+
body 'Passing multiple text strings', 'creates line breaks'
|
|
14
|
+
body ['Arrays of text strings is the same', 'it creates line breaks']
|
|
15
|
+
body "You can also do line breaks with two line feeds\n\nThis is on another line"
|
|
16
|
+
body "You can also do line breaks with two carriage returns\r\rThis is on another line"
|
|
17
|
+
body 'Line two carriage returns in a single string does the same thing
|
|
18
|
+
|
|
19
|
+
This is on another line'
|
|
20
|
+
body "Line two carriage returns in a double quoted string does the same thing\n\n\tThis is also another line"
|
|
21
|
+
body "A single line feed does not add a line\nThis is on the same line."
|
|
22
|
+
body "A single carriage return does not add a line\rThis is on the same line."
|
|
23
|
+
body "A carriage return followed by a line feed.\r\nDoes not break up the line."
|
|
24
|
+
title 'Escaping HTML'
|
|
25
|
+
body '<h1>HTML is escaped</h1>'
|
|
26
|
+
body '<script>console.log("so are script tags")</script>'
|
|
27
|
+
title 'Lists'
|
|
28
|
+
body '1. Item 1', '2. Item 2'
|
|
29
|
+
|
|
30
|
+
title 'Full Sample'
|
|
31
|
+
body <<~HEREDOC
|
|
32
|
+
# Markdown Sample
|
|
33
|
+
|
|
34
|
+
----
|
|
35
|
+
## what is Markdown?
|
|
36
|
+
see [Wikipedia](http://en.wikipedia.org/wiki/Markdown)
|
|
37
|
+
|
|
38
|
+
> Markdown is a lightweight markup language, originally created by John Gruber and Aaron Swartz allowing people "to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML)".
|
|
39
|
+
|
|
40
|
+
----
|
|
41
|
+
## markdown quick reference
|
|
42
|
+
# headers
|
|
43
|
+
|
|
44
|
+
*emphasis*
|
|
45
|
+
|
|
46
|
+
**strong**
|
|
47
|
+
|
|
48
|
+
* list
|
|
49
|
+
|
|
50
|
+
>block quote
|
|
51
|
+
|
|
52
|
+
`code inline`
|
|
53
|
+
|
|
54
|
+
```ruby
|
|
55
|
+
require 'redcarpet'
|
|
56
|
+
markdown = Redcarpet.new("Hello World!")
|
|
57
|
+
puts markdown.to_html
|
|
58
|
+
```
|
|
59
|
+
[links](http://wikipedia.org)
|
|
60
|
+
|
|
61
|
+
----
|
|
62
|
+
## changelog
|
|
63
|
+
* 17-Feb-2013 re-design
|
|
64
|
+
HEREDOC
|
|
65
|
+
attach :code, file: __FILE__
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require_relative 'helpers/indented_grid'
|
|
2
|
+
|
|
3
|
+
Coprl::Presenters.define(:namespaces) do
|
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
|
5
|
+
attach :top_nav
|
|
6
|
+
page_title 'Namespaces' do
|
|
7
|
+
icon 'far fa-object-group'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
indented_grid do
|
|
11
|
+
body 'Presenters support namespaces. The namespace is an optional parameter to the define method:'
|
|
12
|
+
blank
|
|
13
|
+
body "`Coprl::Presenters.define(:mypresenter, namespace: :namespace1)` or"
|
|
14
|
+
attach 'namespace2:alternate_namespacing'
|
|
15
|
+
|
|
16
|
+
body %(When defined in a namespace all other presenters in the same namespace are accessable without scoping the namespace.
|
|
17
|
+
When accessing a presenter outside your current namespace, simple provide the namespace(s) with `:` as the separator.
|
|
18
|
+
attach, loads and replaces all accept namespaced presenters:)
|
|
19
|
+
blank
|
|
20
|
+
attach 'namespace1:attach_with_namespace'
|
|
21
|
+
blank
|
|
22
|
+
body 'Both loads and replaces are namespace aware. To call a presenter in the ame namespace, no scoping is needed.
|
|
23
|
+
To call a presenter in another namespace, you need to fully qualify it.'
|
|
24
|
+
button 'Load' do
|
|
25
|
+
event :click do
|
|
26
|
+
loads 'namespace1:attach_with_namespace', replaced: 'I was loaded'
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
button 'Replace' do
|
|
30
|
+
event :click do
|
|
31
|
+
replaces :attach_with_namespace_id, 'namespace1:attach_with_namespace', replaced: 'I was replaced'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
blank
|
|
35
|
+
attach 'namespace1:namespace2:nested_namespaces'
|
|
36
|
+
button 'Load' do
|
|
37
|
+
event :click do
|
|
38
|
+
loads 'namespace1:namespace2:nested_namespaces', replaced: 'I was loaded'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
button 'Replace' do
|
|
42
|
+
event :click do
|
|
43
|
+
replaces :nested_namespaces_id, 'namespace1:namespace2:nested_namespaces', replaced: 'I was replaced'
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
blank
|
|
47
|
+
body %(Routes add the namespace(s) as a prefix: /namespace1/mypresenter)
|
|
48
|
+
blank
|
|
49
|
+
overline 'Notes:'
|
|
50
|
+
attach 'namespace1:namespace2:notes'
|
|
51
|
+
end
|
|
52
|
+
attach :code, file: __FILE__
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Coprl::Presenters.define(:attach_with_namespace, namespace: :namespace1) do
|
|
56
|
+
content id: :attach_with_namespace_id do
|
|
57
|
+
body "For example: `attach 'namespace1:mypresenter'` to insert/attach a presenter in a different namespace."
|
|
58
|
+
attach :replaced # Demonstrates calling top level presenters from a namespaced presenter
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
Coprl::Presenters.define(:nested_namespaces, namespace: [:namespace1, :namespace2]) do
|
|
63
|
+
content id: :nested_namespaces_id do
|
|
64
|
+
body %(Namespaces can be nested two levels deep by passing an array of namespaces:
|
|
65
|
+
`Coprl::Presenters.define(:mypresenter, namespace: [:foo,:bar])`)
|
|
66
|
+
attach :replaced # Demonstrates calling top level presenters from a namespaced presenter
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
Coprl::Presenters.define(:replaced) do
|
|
71
|
+
body "#{context[:replaced]}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
Coprl::Presenters.define('namespace2:alternate_namespacing') do
|
|
75
|
+
body "`Coprl::Presenters.define('namespace1:mypresenter')`"
|
|
76
|
+
attach :blank_line # demonstrates attaching a presenter in the same namespace mixing alternate naming
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
Coprl::Presenters.define(:blank_line, namespace: :namespace2) do
|
|
80
|
+
blank
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
Coprl::Presenters.define('namespace2:notes', namespace: :namespace1) do
|
|
84
|
+
body <<~HEREDOC
|
|
85
|
+
* You can mix the two syntax's. `Coprl::Presenters.define('namespace2:mypresenter', namespace: 'namespace1')`
|
|
86
|
+
* With this syntax attach/loads and replaces will operate in namespace1, unless fully qualified
|
|
87
|
+
* Unlike ruby modules you are either inside a namespace and can call presenters without qualification, or you are not and you must fully qualify them.
|
|
88
|
+
HEREDOC
|
|
89
|
+
end
|