voom-presenters 0.1.13 → 2.0.3
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 +1 -1
- 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 +42 -0
- data/.gitignore +3 -2
- data/.releaserc +15 -0
- data/.ruby-version +2 -1
- data/CHANGELOG.md +143 -0
- data/CONTRIBUTING.md +60 -0
- data/Gemfile +14 -4
- data/Gemfile.lock +111 -65
- data/HISTORY.md +61 -0
- data/Procfile +1 -0
- data/README.md +55 -24
- data/app/demo/components/avatars.pom +40 -0
- data/app/demo/components/cards.pom +11 -4
- data/app/demo/components/chips.pom +65 -52
- data/app/demo/components/content.pom +111 -0
- data/app/demo/components/date_fields.pom +1 -1
- data/app/demo/components/datetime_fields.pom +6 -0
- data/app/demo/components/dialogs.pom +175 -6
- data/app/demo/components/drawers.pom +1 -1
- data/app/demo/components/file_inputs.pom +52 -0
- data/app/demo/components/footers.pom +1 -1
- data/app/demo/components/google_maps.pom +22 -0
- data/app/demo/components/headers.pom +80 -20
- data/app/demo/components/icons.pom +86 -55
- data/app/demo/components/image_lists.pom +100 -0
- data/app/demo/components/images.pom +45 -0
- data/app/demo/components/layouts.pom +15 -5
- data/app/demo/components/lists.pom +48 -3
- data/app/demo/components/menus.pom +14 -4
- data/app/demo/components/nav/menu.pom +40 -2
- 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 +44 -5
- data/app/demo/components/sliders.pom +54 -0
- data/app/demo/components/snackbar.pom +10 -0
- data/app/demo/components/steppers.pom +178 -0
- data/app/demo/components/tab_bars.pom +66 -0
- data/app/demo/components/tables.pom +96 -13
- data/app/demo/components/text_areas.pom +23 -3
- data/app/demo/components/text_fields.pom +75 -17
- data/app/demo/components/toggles.pom +83 -16
- data/app/demo/components/tooltips.pom +10 -10
- data/app/demo/components/unordered_list.pom +81 -0
- data/app/demo/custom_css.pom +37 -0
- data/app/demo/events/actions/autocomplete.pom +3 -3
- data/app/demo/events/actions/clear.pom +25 -0
- data/app/demo/events/actions/dialogs/discard.pom +9 -0
- data/app/demo/events/actions/dialogs/show_dialog.pom +4 -2
- data/app/demo/events/actions/last_response.pom +40 -0
- data/app/demo/events/actions/loads.pom +16 -6
- data/app/demo/events/actions/posts.pom +1 -1
- data/app/demo/events/actions/prompt_if_dirty.pom +54 -0
- data/app/demo/events/actions/toggle_visiblity.pom +4 -3
- data/app/demo/events/content_as_form.pom +313 -0
- data/app/demo/events/nav/drawer.pom +7 -3
- data/app/demo/events/parallel.pom +44 -0
- data/app/demo/events/tagged_input.pom +37 -0
- data/app/demo/hello_world.pom +3 -0
- data/app/demo/index.pom +5 -5
- data/app/demo/markdown.pom +1 -0
- data/app/demo/namespaces.pom +89 -0
- data/app/demo/nav/top_nav.pom +22 -4
- 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/context_list.pom +2 -2
- data/app/demo/styles.pom +24 -12
- data/bin/console +4 -4
- data/component-status.yml +26 -26
- data/config.ru +21 -10
- data/docs/settings.md +81 -0
- data/exe/presenters +3 -0
- data/lib/hash_ext/traverse.rb +14 -0
- data/lib/voom.rb +25 -0
- data/lib/voom/container_methods.rb +2 -2
- data/lib/voom/engine.rb +5 -0
- data/lib/voom/presenters/api/app.rb +46 -13
- data/lib/voom/presenters/api/router.rb +3 -87
- data/lib/voom/presenters/app.rb +3 -3
- data/lib/voom/presenters/cli.rb +28 -0
- data/lib/voom/presenters/demo/dragon_drop.rb +48 -0
- data/lib/voom/presenters/demo/echo.rb +7 -0
- data/lib/voom/presenters/demo/slow.rb +18 -0
- data/lib/voom/presenters/dsl/components/actions/autocomplete.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/base.rb +65 -0
- data/lib/voom/presenters/dsl/components/actions/clear.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/close_dialog.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/deletes.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/dialog.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/loads.rb +31 -0
- data/lib/voom/presenters/dsl/components/actions/navigates.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/post_message.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/posts.rb +20 -0
- data/lib/voom/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/remove.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/replaces.rb +25 -0
- data/lib/voom/presenters/dsl/components/actions/snackbar.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/stepper.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/updates.rb +20 -0
- data/lib/voom/presenters/dsl/components/avatar.rb +5 -10
- data/lib/voom/presenters/dsl/components/badge.rb +0 -2
- data/lib/voom/presenters/dsl/components/base.rb +37 -21
- data/lib/voom/presenters/dsl/components/button.rb +23 -17
- data/lib/voom/presenters/dsl/components/card.rb +54 -42
- data/lib/voom/presenters/dsl/components/checkbox.rb +2 -2
- data/lib/voom/presenters/dsl/components/chip.rb +10 -13
- data/lib/voom/presenters/dsl/components/chipset.rb +33 -0
- data/lib/voom/presenters/dsl/components/content.rb +33 -13
- data/lib/voom/presenters/dsl/components/date_field.rb +1 -1
- data/lib/voom/presenters/dsl/components/datetime_base.rb +0 -3
- data/lib/voom/presenters/dsl/components/datetime_field.rb +0 -2
- data/lib/voom/presenters/dsl/components/dialog.rb +41 -13
- data/lib/voom/presenters/dsl/components/drawer.rb +13 -8
- data/lib/voom/presenters/dsl/components/event.rb +117 -60
- data/lib/voom/presenters/dsl/components/event_base.rb +1 -3
- data/lib/voom/presenters/dsl/components/expansion_panel.rb +3 -6
- data/lib/voom/presenters/dsl/components/file_input.rb +34 -0
- data/lib/voom/presenters/dsl/components/footer.rb +2 -2
- data/lib/voom/presenters/dsl/components/form.rb +3 -16
- data/lib/voom/presenters/dsl/components/grid.rb +64 -22
- data/lib/voom/presenters/dsl/components/header.rb +19 -6
- data/lib/voom/presenters/dsl/components/hidden_field.rb +1 -3
- data/lib/voom/presenters/dsl/components/icon.rb +3 -6
- data/lib/voom/presenters/dsl/components/icon_base.rb +6 -8
- data/lib/voom/presenters/dsl/components/icon_toggle.rb +3 -5
- data/lib/voom/presenters/dsl/components/image.rb +61 -13
- data/lib/voom/presenters/dsl/components/image_list.rb +43 -0
- data/lib/voom/presenters/dsl/components/input.rb +14 -5
- data/lib/voom/presenters/dsl/components/link.rb +33 -0
- data/lib/voom/presenters/dsl/components/list.rb +11 -16
- data/lib/voom/presenters/dsl/components/lists/action.rb +11 -14
- data/lib/voom/presenters/dsl/components/lists/actions.rb +7 -10
- data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
- data/lib/voom/presenters/dsl/components/lists/line.rb +34 -25
- data/lib/voom/presenters/dsl/components/lists/separator.rb +2 -2
- data/lib/voom/presenters/dsl/components/menu.rb +56 -16
- data/lib/voom/presenters/dsl/components/mixins/append.rb +2 -2
- data/lib/voom/presenters/dsl/components/mixins/attaches.rb +7 -3
- data/lib/voom/presenters/dsl/components/mixins/avatar.rb +1 -4
- data/lib/voom/presenters/dsl/components/mixins/buttons.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/chips.rb +0 -3
- data/lib/voom/presenters/dsl/components/mixins/chipset.rb +19 -0
- data/lib/voom/presenters/dsl/components/mixins/common.rb +21 -16
- data/lib/voom/presenters/dsl/components/mixins/content.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/date_time_fields.rb +0 -3
- data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +0 -3
- data/lib/voom/presenters/dsl/components/mixins/event.rb +2 -4
- data/lib/voom/presenters/dsl/components/mixins/expansion_panels.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/file_inputs.rb +16 -0
- data/lib/voom/presenters/dsl/components/mixins/google_maps.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/grids.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/icons.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/image_lists.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/last_response.rb +48 -0
- data/lib/voom/presenters/dsl/components/mixins/menus.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/padding.rb +42 -0
- data/lib/voom/presenters/dsl/components/mixins/progress.rb +16 -0
- data/lib/voom/presenters/dsl/components/mixins/selects.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/sliders.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/snackbars.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/steppers.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +17 -0
- data/lib/voom/presenters/dsl/components/mixins/tables.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +10 -3
- data/lib/voom/presenters/dsl/components/mixins/toggles.rb +0 -5
- data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/typography.rb +91 -14
- data/lib/voom/presenters/dsl/components/mixins/yield_to.rb +2 -2
- data/lib/voom/presenters/dsl/components/number_field.rb +20 -0
- data/lib/voom/presenters/dsl/components/page.rb +0 -1
- data/lib/voom/presenters/dsl/components/page_title.rb +31 -0
- data/lib/voom/presenters/dsl/components/progress.rb +27 -0
- data/lib/voom/presenters/dsl/components/radio_button.rb +0 -1
- data/lib/voom/presenters/dsl/components/rich_text_area.rb +20 -0
- data/lib/voom/presenters/dsl/components/select.rb +23 -12
- data/lib/voom/presenters/dsl/components/separator.rb +21 -0
- data/lib/voom/presenters/dsl/components/slider.rb +38 -0
- data/lib/voom/presenters/dsl/components/snackbar.rb +2 -2
- data/lib/voom/presenters/dsl/components/stepper.rb +96 -0
- data/lib/voom/presenters/dsl/components/switch.rb +0 -2
- data/lib/voom/presenters/dsl/components/tab_bar.rb +50 -0
- data/lib/voom/presenters/dsl/components/table.rb +126 -35
- data/lib/voom/presenters/dsl/components/text_area.rb +4 -5
- data/lib/voom/presenters/dsl/components/text_field.rb +55 -16
- data/lib/voom/presenters/dsl/components/time_field.rb +0 -2
- data/lib/voom/presenters/dsl/components/toggle_base.rb +8 -6
- data/lib/voom/presenters/dsl/components/tooltip.rb +1 -2
- data/lib/voom/presenters/dsl/components/typography.rb +6 -7
- data/lib/voom/presenters/dsl/components/unordered_list.rb +50 -0
- data/lib/voom/presenters/dsl/definer.rb +0 -4
- data/lib/voom/presenters/dsl/definition.rb +9 -6
- data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
- data/lib/voom/presenters/dsl/user_interface.rb +43 -32
- data/lib/voom/presenters/errors.rb +1 -0
- data/lib/voom/presenters/errors/invalid_dsl.rb +8 -0
- data/lib/voom/presenters/errors/parameter_validation.rb +1 -3
- data/lib/voom/presenters/generators/inflectors.rb +59 -0
- data/lib/voom/presenters/generators/plugin.rb +115 -0
- data/lib/voom/presenters/generators/templates/plugin/.gitignore +12 -0
- data/lib/voom/presenters/generators/templates/plugin/Gemfile +6 -0
- data/lib/voom/presenters/generators/templates/plugin/LICENSE.txt.tt +21 -0
- data/lib/voom/presenters/generators/templates/plugin/README.md +253 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/action.rb.tt +16 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/actions/dsl.rb.tt +22 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/component.rb.tt +18 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/components/dsl.rb.tt +19 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/helpers/helper.rb.tt +15 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/plugin.rb.tt +9 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/actions/data.rb.tt +17 -0
- data/lib/voom/presenters/generators/templates/plugin/lib/voom/presenters/plugins/web_client/components/render.rb.tt +23 -0
- data/lib/voom/presenters/generators/templates/plugin/presenter_plugin.gemspec.tt +21 -0
- data/lib/voom/presenters/generators/templates/plugin/views/assets/css/components/component.css.tt +21 -0
- data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/actions/action.js.tt +15 -0
- data/lib/voom/presenters/generators/templates/plugin/views/assets/js/components/component.js.tt +39 -0
- data/lib/voom/presenters/generators/templates/plugin/views/components/component.erb.tt +14 -0
- data/lib/voom/presenters/generators/templates/plugin/views/components/component_header.erb.tt +20 -0
- data/lib/voom/presenters/helpers.rb +2 -8
- data/lib/voom/presenters/helpers/date.rb +3 -3
- data/lib/voom/presenters/helpers/inflector.rb +1 -1
- data/lib/voom/presenters/helpers/rails.rb +18 -6
- data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
- data/lib/voom/presenters/helpers/redact.rb +13 -0
- data/lib/voom/presenters/helpers/route.rb +15 -2
- data/lib/voom/presenters/helpers/time.rb +1 -1
- data/lib/voom/presenters/namespace.rb +12 -0
- data/lib/voom/presenters/pluggable.rb +37 -0
- data/lib/voom/presenters/plugins.rb +7 -0
- data/lib/voom/presenters/plugins/google_maps.rb +24 -0
- data/lib/voom/presenters/plugins/google_maps/google_map.erb +10 -0
- data/lib/voom/presenters/plugins/google_maps/google_map.rb +41 -0
- data/lib/voom/presenters/{dsl.rb → registry.rb} +14 -10
- data/lib/voom/presenters/router.rb +59 -0
- data/lib/voom/presenters/settings.rb +70 -39
- data/lib/voom/presenters/version.rb +3 -1
- data/lib/voom/presenters/web_client/app.rb +121 -34
- data/lib/voom/presenters/web_client/component_decorator_factory.rb +27 -0
- data/lib/voom/presenters/web_client/component_html_decorator.rb +50 -0
- data/lib/voom/presenters/web_client/component_renderer.rb +49 -0
- data/lib/voom/presenters/web_client/custom_css.rb +65 -0
- data/lib/voom/presenters/web_client/custom_render.rb +31 -0
- data/lib/voom/presenters/web_client/helpers/expand_hash.rb +19 -0
- data/lib/voom/presenters/web_client/helpers/form_helpers.rb +14 -0
- data/lib/voom/presenters/web_client/helpers/padding_helpers.rb +21 -0
- data/lib/voom/presenters/web_client/plugin_headers.rb +37 -0
- data/lib/voom/presenters/web_client/router.rb +3 -89
- data/lib/voom/railtie.rb +37 -0
- data/lib/voom/serializer.rb +2 -2
- data/lib/voom/symbol/to_str.rb +3 -3
- data/lib/voom/trace.rb +0 -2
- data/presenters.gemspec +12 -7
- data/public/bundle.css +18221 -0
- data/public/bundle.js +59949 -0
- data/public/img/demo/avatar.jpg +0 -0
- data/public/presenters/custom_css.css +26 -0
- data/public/style-bundle.js +2 -2
- data/public/wc.js +52704 -0
- data/scripts/build.sh +10 -0
- data/views/mdc/.babelrc +8 -0
- data/views/mdc/.eslintrc.yml +24 -0
- data/views/mdc/.nvmrc +1 -0
- data/views/mdc/assets/js/app.js +30 -6
- data/views/mdc/assets/js/components/base-component.js +160 -2
- 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 +71 -9
- data/views/mdc/assets/js/components/cards.js +13 -2
- data/views/mdc/assets/js/components/checkboxes.js +11 -11
- data/views/mdc/assets/js/components/chips.js +104 -7
- 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 +83 -20
- data/views/mdc/assets/js/components/dialogs.js +130 -27
- 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 +195 -68
- 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 +15 -17
- data/views/mdc/assets/js/components/events/base.js +142 -16
- data/views/mdc/assets/js/components/events/clears.js +15 -12
- data/views/mdc/assets/js/components/events/close_dialog.js +50 -0
- data/views/mdc/assets/js/components/events/dialog.js +32 -14
- data/views/mdc/assets/js/components/events/encode.js +8 -0
- data/views/mdc/assets/js/components/events/errors.js +175 -92
- data/views/mdc/assets/js/components/events/loads.js +50 -11
- data/views/mdc/assets/js/components/events/navigates.js +17 -15
- 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 +169 -47
- 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 +110 -57
- data/views/mdc/assets/js/components/events/snackbar.js +10 -10
- 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 +62 -16
- 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 +9 -60
- 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 +10 -17
- data/views/mdc/assets/js/components/images.js +19 -0
- data/views/mdc/assets/js/components/initialize.js +62 -18
- data/views/mdc/assets/js/components/lists.js +10 -5
- data/views/mdc/assets/js/components/menus.js +66 -20
- data/views/mdc/assets/js/components/mixins/dirtyable.js +22 -0
- data/views/mdc/assets/js/components/mixins/event-handler.js +7 -7
- data/views/mdc/assets/js/components/mixins/visibility-observer.js +35 -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 +41 -30
- data/views/mdc/assets/js/components/sliders.js +67 -0
- data/views/mdc/assets/js/components/snackbar.js +17 -23
- data/views/mdc/assets/js/components/steppers.js +48 -0
- data/views/mdc/assets/js/components/switches.js +10 -32
- data/views/mdc/assets/js/components/tab-bars.js +28 -0
- data/views/mdc/assets/js/components/text-fields.js +117 -43
- 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/urls.js +5 -2
- data/views/mdc/assets/js/wc.js +111 -0
- data/views/mdc/assets/scss/app.scss +20 -5
- data/views/mdc/assets/scss/components/avatar.scss +51 -7
- data/views/mdc/assets/scss/components/button.scss +20 -7
- data/views/mdc/assets/scss/components/card.scss +13 -7
- data/views/mdc/assets/scss/components/checkbox.scss +0 -4
- data/views/mdc/assets/scss/components/chip.scss +4 -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 +7 -2
- data/views/mdc/assets/scss/components/dialog.scss +7 -2
- 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 +2 -2
- data/views/mdc/assets/scss/components/fab.scss +23 -4
- data/views/mdc/assets/scss/components/file-input.scss +18 -0
- data/views/mdc/assets/scss/components/grid.scss +74 -3
- 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 +23 -0
- data/views/mdc/assets/scss/components/image-list.scss +18 -0
- data/views/mdc/assets/scss/components/image.scss +14 -16
- data/views/mdc/assets/scss/components/list.scss +19 -0
- data/views/mdc/assets/scss/components/menu.scss +14 -3
- 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 +6 -3
- 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 +1 -5
- data/views/mdc/assets/scss/components/stepper.scss +235 -0
- data/views/mdc/assets/scss/components/switch.scss +13 -4
- data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
- data/views/mdc/assets/scss/components/textfield.scss +14 -3
- data/views/mdc/assets/scss/components/tooltip.scss +3 -0
- data/views/mdc/assets/scss/components/typography.scss +10 -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 +1 -1
- 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 +40 -1
- data/views/mdc/assets/scss/theme.scss +25 -2
- data/views/mdc/body/dismissable-drawer.erb +34 -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 +1 -1
- data/views/mdc/body/footers/menu_item.erb +2 -2
- data/views/mdc/body/header.erb +38 -30
- data/views/mdc/body/modal-drawer.erb +35 -0
- data/views/mdc/body/snackbar.erb +12 -6
- 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/avatar.erb +12 -7
- data/views/mdc/components/badge.erb +1 -1
- data/views/mdc/components/button.erb +10 -8
- data/views/mdc/components/buttons/button.erb +19 -14
- data/views/mdc/components/buttons/fab.erb +9 -2
- data/views/mdc/components/buttons/icon.erb +12 -5
- data/views/mdc/components/buttons/image.erb +11 -5
- data/views/mdc/components/{display.erb → caption.erb} +0 -0
- data/views/mdc/components/card.erb +67 -41
- data/views/mdc/components/checkbox.erb +32 -23
- data/views/mdc/components/chip.erb +39 -22
- data/views/mdc/components/chipset.erb +18 -0
- data/views/mdc/components/content.erb +37 -11
- data/views/mdc/components/datetime.erb +12 -17
- data/views/mdc/components/dialog.erb +45 -22
- data/views/mdc/components/drag_and_drop/drag_and_drop.rb +16 -0
- data/views/mdc/components/event.erb +3 -9
- data/views/mdc/components/expansion_panel.erb +8 -6
- data/views/mdc/components/file_input.erb +17 -0
- data/views/mdc/components/form.erb +7 -8
- data/views/mdc/components/grid.erb +27 -10
- data/views/mdc/components/headline.erb +2 -0
- data/views/mdc/components/hidden_field.erb +5 -1
- data/views/mdc/components/icon.erb +7 -5
- data/views/mdc/components/icon_toggle.erb +9 -8
- data/views/mdc/components/image.erb +23 -5
- data/views/mdc/components/image_list.erb +38 -0
- data/views/mdc/components/link.erb +3 -13
- data/views/mdc/components/list.erb +9 -4
- data/views/mdc/components/list/actions/switch.erb +1 -1
- data/views/mdc/components/list/avatar.erb +2 -1
- data/views/mdc/components/list/header.erb +5 -3
- data/views/mdc/components/list/hidden_field.erb +3 -0
- data/views/mdc/components/list/icon.erb +2 -1
- data/views/mdc/components/list/line.erb +24 -13
- data/views/mdc/components/list/menu.erb +7 -2
- data/views/mdc/components/list/separator.erb +1 -1
- data/views/mdc/components/menu.erb +20 -16
- data/views/mdc/components/number_field.erb +38 -0
- data/views/mdc/components/{subheading.erb → overline.erb} +0 -0
- data/views/mdc/components/page_title.erb +2 -2
- data/views/mdc/components/progress.erb +11 -0
- data/views/mdc/components/radio_button.erb +19 -10
- data/views/mdc/components/render.erb +2 -3
- data/views/mdc/components/rich_text_area.erb +22 -0
- data/views/mdc/components/select.erb +28 -8
- data/views/mdc/components/separator.erb +3 -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/slider.erb +43 -0
- data/views/mdc/components/snackbar.erb +2 -6
- data/views/mdc/components/stepper.erb +47 -0
- data/views/mdc/components/stepper/step.erb +33 -0
- data/views/mdc/components/{title.erb → subtitle.erb} +0 -0
- data/views/mdc/components/switch.erb +28 -12
- data/views/mdc/components/tab_bar.erb +35 -0
- data/views/mdc/components/table.erb +28 -13
- 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 +14 -4
- data/views/mdc/components/table/pagination.erb +11 -24
- data/views/mdc/components/table/row.erb +7 -5
- data/views/mdc/components/text_area.erb +15 -7
- data/views/mdc/components/text_field.erb +38 -28
- data/views/mdc/components/tooltip.erb +2 -2
- data/views/mdc/components/typography.erb +7 -5
- data/views/mdc/components/unordered_list.erb +10 -0
- data/views/mdc/components/unordered_list/icon.erb +3 -0
- data/views/mdc/components/unordered_list/list_item.erb +7 -0
- data/views/mdc/layout.erb +45 -31
- data/views/mdc/package-lock.json +11801 -6869
- data/views/mdc/package.json +66 -29
- data/views/mdc/web.erb +4 -0
- data/views/mdc/webpack.config.js +14 -1
- metadata +327 -37
- data/app/demo/component_status.pom +0 -76
- data/app/demo/components/forms.pom +0 -31
- data/lib/voom-presenters.rb +0 -9
- data/lib/voom/presenters-engine.rb +0 -41
- data/lib/voom/presenters.rb +0 -13
- data/lib/voom/presenters/dsl/components/action.rb +0 -35
- data/lib/voom/presenters/web_client/markdown_render.rb +0 -16
- data/public/.gitignore +0 -2
- data/scripts/bump.sh +0 -4
- data/scripts/deploy-demo.sh +0 -2
- data/scripts/release.sh +0 -5
- data/views/mdc/assets/js/dialog-polyfill.js +0 -738
- data/views/mdc/assets/js/material.js +0 -3996
- data/views/mdc/assets/scss/components/icon-toggles.scss +0 -9
- data/views/mdc/assets/scss/components/table-pagination.scss +0 -65
- data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +0 -13
- data/views/mdc/body/drawer.erb +0 -18
- data/views/mdc/components/modal.erb +0 -15
- data/views/mdc/components/static.erb +0 -7
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/Procfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
web: rackup -p $PORT
|
data/README.md
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
# Voom::Presenters
|
2
2
|
|
3
3
|
## TLDR;
|
4
|
-
|
4
|
+
Do you wish you could write a modern user interface in pure Ruby?
|
5
5
|
|
6
|
-
|
6
|
+
Now you can. Presenters are a Ruby DSL for rendering user interfaces.
|
7
7
|
The semantics are adopted from [Material Design](https://material.io/).
|
8
8
|
|
9
|
-
|
10
|
-
A
|
11
|
-
A POM
|
9
|
+
* Presenters are to HTML/User Interfaces what C is to assembly
|
10
|
+
* A presenter generates a Presenter Object Model (POM)
|
11
|
+
* A POM fully describes a user interface
|
12
|
+
* A POM client can fully render user interface from POM
|
12
13
|
|
13
14
|
## What are voom-presenters?
|
14
15
|
|
15
|
-
* A Ruby user interface abstraction
|
16
|
-
* A Ruby DSL to build a user interface
|
17
|
-
* A power washer for building user interfaces
|
16
|
+
* A Ruby user interface abstraction
|
17
|
+
* A Ruby DSL to build a user interface
|
18
|
+
* A power washer for building user interfaces
|
18
19
|
|
19
20
|
## Why?
|
20
21
|
|
@@ -38,43 +39,67 @@ This concept was initially inspired by the Presenters concepts of Ivar Jacobson
|
|
38
39
|
|
39
40
|
## Demo
|
40
41
|
|
41
|
-
[Demo](https://
|
42
|
+
[Demo](https://coprl-ruby.herokuapp.com/)
|
42
43
|
|
43
44
|
Or to run locally:
|
44
45
|
|
45
46
|
git clone git@github.com:rx/presenters.git
|
46
47
|
cd presenters/
|
47
48
|
bundle install
|
48
|
-
rackup
|
49
|
+
bundle exec rackup
|
49
50
|
|
50
51
|
open http://localhost:9292
|
52
|
+
|
53
|
+
> Note: Demo defaults to Ruby version 2.7.3 in the .ruby-version file. If you want to run a different version
|
54
|
+
> -- set RBENV_VERSION to your desired version.
|
55
|
+
> For example:
|
56
|
+
> ```
|
57
|
+
> RBENV_VERSION=2.5.5 bundle insatall
|
58
|
+
> RBENV_VERSION=2.5.5 bundle exec rackup```
|
51
59
|
|
52
60
|
To see the POM:
|
53
61
|
|
54
62
|
open http://localhost:9292/index.pom
|
55
|
-
|
63
|
+
|
64
|
+
## Usage
|
65
|
+
|
66
|
+
To use it, add this line to your Gemfile:
|
56
67
|
|
57
|
-
|
68
|
+
gem 'voom-presenters', github('rx/presenters'), require: false
|
69
|
+
|
70
|
+
Create the file app/presenters/index.pom with the contents:
|
71
|
+
|
72
|
+
Voom::Presenters.define(:hello_world) do
|
73
|
+
heading 'hello world'
|
74
|
+
end
|
58
75
|
|
59
|
-
|
76
|
+
### Rails
|
77
|
+
For rails: Mount the web-client in your rails config/routes.rb
|
60
78
|
|
61
|
-
|
62
|
-
|
63
|
-
|
79
|
+
mount ::Voom::Presenters::WebClient::App, at: '/'
|
80
|
+
# the api is optional
|
81
|
+
# mount ::Voom::Presenters::Api::App, at: '/'
|
64
82
|
|
65
|
-
|
83
|
+
Create an initializer `config/initializers/presenters.rb` with the following:
|
84
|
+
|
85
|
+
require 'voom'
|
86
|
+
|
87
|
+
### Rack
|
88
|
+
Presenters are rack based. If your framework uses a rack config file add the following:
|
89
|
+
|
90
|
+
use Voom::Presenters::WebClient::App
|
91
|
+
# the api is optional
|
92
|
+
# use Voom::Presenters::Api::App
|
93
|
+
|
94
|
+
Start your app and goto [/hello_world](http://127.0.0.1:3000/hello_world)
|
95
|
+
|
96
|
+
Use the [Demo] to get example code to drop into your presetners.
|
66
97
|
|
67
98
|
## Status
|
68
|
-
This project is in a
|
69
|
-
Any use should be for internal use only until the status becomes beta.
|
99
|
+
This project is in a released status.
|
70
100
|
|
71
101
|
[](https://circleci.com/gh/rx/presenters)
|
72
|
-
[](https://codeclimate.com/github/rx/presenters/maintainability)
|
73
102
|
[](https://raw.githubusercontent.com/rx/presenters/master/LICENSE)
|
74
|
-
|
75
|
-
## Usage
|
76
|
-
|
77
|
-
TODO: Write usage instructions here
|
78
103
|
|
79
104
|
## Contributing
|
80
105
|
|
@@ -84,3 +109,9 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/rx/pre
|
|
84
109
|
|
85
110
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
86
111
|
|
112
|
+
## Code of Conduct
|
113
|
+
|
114
|
+
Everyone interacting in the Voom::Presenters project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rx/presenters/blob/master/CODE-OF-CONDUCT.md).
|
115
|
+
|
116
|
+
|
117
|
+
[Demo]:https://powerful-bastion-96181.herokuapp.com
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Voom::Presenters.define(:avatars) do
|
2
|
+
attach :top_nav
|
3
|
+
attach :component_drawer
|
4
|
+
page_title 'Avatars'
|
5
|
+
|
6
|
+
grid do
|
7
|
+
column 1
|
8
|
+
column 10 do
|
9
|
+
body 'An avatar can contain an image or icon. Avatars can be used within a list line, the media section of a card, a content block or column.'
|
10
|
+
|
11
|
+
grid do
|
12
|
+
column 6 do
|
13
|
+
headline 'Types'
|
14
|
+
body '**With an Icon**'
|
15
|
+
avatar :thumb_up
|
16
|
+
body '**With an Image**'
|
17
|
+
avatar 'img/demo/avatar.jpg'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
grid do
|
22
|
+
column 6 do
|
23
|
+
headline 'Sizes'
|
24
|
+
body '**small**'
|
25
|
+
avatar :person, size: :small
|
26
|
+
body '**medium** (default)'
|
27
|
+
avatar 'img/demo/image_card.jpg', size: :medium
|
28
|
+
body '**large**'
|
29
|
+
avatar :cake, size: :large
|
30
|
+
body '**x-large**'
|
31
|
+
avatar :golf_course, size: 'x-large'
|
32
|
+
body '**xx-large**'
|
33
|
+
avatar 'img/demo/avatar.jpg', size: 'xx-large'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -25,8 +25,15 @@ Voom::Presenters.define(:cards) do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
28
|
+
blank
|
29
|
+
headline 'Square', inline: true
|
30
|
+
switch checked: true do
|
31
|
+
tooltip 'Hide/Show Square Card'
|
32
|
+
event :click do
|
33
|
+
toggle_visibility 'square_card'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
card id: 'square_card', width: '330px' do
|
30
37
|
media height: '200px', color: '#46B6AC' do
|
31
38
|
image 'img/demo/dog.png', position: [:bottom, :right]
|
32
39
|
title 'Update', color: :white, position: :bottom
|
@@ -55,8 +62,8 @@ Voom::Presenters.define(:cards) do
|
|
55
62
|
color: :white, position: :top
|
56
63
|
end
|
57
64
|
actions do
|
58
|
-
button 'Add to Calendar'
|
59
|
-
button icon: :event
|
65
|
+
button 'Add to Calendar', color: :secondary
|
66
|
+
button icon: :event, color: :secondary
|
60
67
|
end
|
61
68
|
end
|
62
69
|
|
@@ -7,84 +7,97 @@ Voom::Presenters.define(:chips) do
|
|
7
7
|
page_title 'Chips'
|
8
8
|
|
9
9
|
indented_grid do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
chipset do
|
11
|
+
chip 'Chip 1'
|
12
|
+
chip 'Chip 1', color: :primary
|
13
|
+
chip 'Chip 2', color: :secondary
|
14
|
+
chip color: :hotpink do
|
15
|
+
text 'Chip 3', color: :white
|
16
|
+
end
|
15
17
|
end
|
16
|
-
|
17
18
|
subheading 'leading icon'
|
18
|
-
|
19
|
+
chipset do
|
20
|
+
chip 'Jane Smith', icon: :face
|
21
|
+
end
|
19
22
|
|
20
23
|
subheading 'trailing icon'
|
21
|
-
|
22
|
-
|
24
|
+
chipset do
|
25
|
+
chip 'Jane Smith' do
|
26
|
+
icon :more_vert, position: :right
|
27
|
+
end
|
23
28
|
end
|
24
29
|
|
25
30
|
subheading 'leading and trailing icon'
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
heading 'Events'
|
31
|
-
|
32
|
-
chip 'Jane Smith' do
|
33
|
-
icon :face, position: :left
|
34
|
-
icon :more_vert, position: :right
|
35
|
-
event :click do
|
36
|
-
snackbar 'chip clicked!'
|
31
|
+
chipset do
|
32
|
+
chip 'Jane Smith' do
|
33
|
+
icon :face, position: :left
|
34
|
+
icon :more_vert, position: :right
|
37
35
|
end
|
38
36
|
end
|
37
|
+
heading 'Events'
|
39
38
|
|
40
|
-
|
41
|
-
|
39
|
+
chipset do
|
40
|
+
chip 'Jane Smith' do
|
41
|
+
icon :face, position: :left
|
42
|
+
icon :more_vert, position: :right
|
42
43
|
event :click do
|
43
|
-
snackbar '
|
44
|
+
snackbar 'chip clicked!'
|
44
45
|
end
|
45
46
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
chip do
|
54
|
-
text 'Jane Smith' do
|
55
|
-
event :click do
|
56
|
-
snackbar 'text clicked'
|
47
|
+
chip do
|
48
|
+
text 'Jane Smith' do
|
49
|
+
event :click do
|
50
|
+
snackbar 'text clicked'
|
51
|
+
end
|
57
52
|
end
|
58
|
-
|
59
|
-
|
53
|
+
icon :face, position: :left
|
54
|
+
icon :more_vert, position: :right
|
60
55
|
event :click do
|
61
|
-
snackbar '
|
56
|
+
snackbar 'chip clicked!'
|
62
57
|
end
|
63
58
|
end
|
64
|
-
icon :more_vert, position: :right
|
65
|
-
event :click do
|
66
|
-
snackbar 'chip clicked!'
|
67
|
-
end
|
68
|
-
end
|
69
59
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
60
|
+
chip do
|
61
|
+
text 'Jane Smith' do
|
62
|
+
event :click do
|
63
|
+
snackbar 'text clicked'
|
64
|
+
end
|
74
65
|
end
|
75
|
-
|
76
|
-
|
66
|
+
icon :face, position: :left do
|
67
|
+
event :click do
|
68
|
+
snackbar 'left icon clicked'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
icon :more_vert, position: :right
|
77
72
|
event :click do
|
78
|
-
snackbar '
|
73
|
+
snackbar 'chip clicked!'
|
79
74
|
end
|
80
75
|
end
|
81
|
-
|
82
|
-
|
83
|
-
|
76
|
+
|
77
|
+
chip do
|
78
|
+
text 'Jane Smith' do
|
79
|
+
event :click do
|
80
|
+
snackbar 'text clicked'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
icon :face, position: :left do
|
84
|
+
event :click do
|
85
|
+
snackbar 'left icon clicked'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
icon :more_vert, position: :right do
|
89
|
+
event :click do
|
90
|
+
snackbar 'right icon clicked'
|
91
|
+
end
|
84
92
|
end
|
85
93
|
end
|
86
94
|
end
|
87
95
|
|
96
|
+
title 'Chips as input', id: :input_chips
|
97
|
+
body 'You can set the name and value attributes of a chip, they then can be posted.
|
98
|
+
An example of this can be found in the [search select](/search_select) pattern demo.'
|
99
|
+
|
100
|
+
|
88
101
|
attach :code, file: __FILE__
|
89
102
|
end
|
90
103
|
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:content) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'Content'
|
8
|
+
|
9
|
+
indented_grid do
|
10
|
+
headline 'Content blocks are wrappers for content and layout'
|
11
|
+
body %(They have many uses this demo will outline their attributes and their common use cases.)
|
12
|
+
blank
|
13
|
+
body %(See the [padding demo](#{presenters_path(:padding)}) for example on how padding works in content blocks.)
|
14
|
+
blank
|
15
|
+
|
16
|
+
title 'Content as a block element'
|
17
|
+
content do
|
18
|
+
text 'A content block with no attributes can turn an inline element into a block element', inline: true
|
19
|
+
end
|
20
|
+
text '..continuing text', inline: true
|
21
|
+
blank
|
22
|
+
|
23
|
+
title 'Attribute: `inline`'
|
24
|
+
content padding: :bottom3 do
|
25
|
+
text 'Inline controls the behavior of the content block within its context. It does not afffect the layout or flow' +
|
26
|
+
'of components within it. This provides a powerful method for building custom layouts'
|
27
|
+
content do
|
28
|
+
content inline: true, width: '500px', background_color: :cyan, padding: :full do
|
29
|
+
card do
|
30
|
+
text 'Section One (Chips in a block)'
|
31
|
+
chipset do
|
32
|
+
chip 'Chip 1'
|
33
|
+
chip 'Chip 1', color: :primary
|
34
|
+
chip 'Chip 2', color: :secondary
|
35
|
+
chip color: :hotpink do
|
36
|
+
text 'Chip 3', color: :white
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
content inline: false, width: '20%', position: [:top, :right] do
|
42
|
+
card do
|
43
|
+
text 'Section Two'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
content inline: true, width: '20%' do
|
47
|
+
card do
|
48
|
+
text 'Section Three'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
blank
|
54
|
+
|
55
|
+
title 'Attribute: `hidden`'
|
56
|
+
text 'A content block can be hidden and shown in response to page events.'
|
57
|
+
content id: :peekaboo, hidden: true do
|
58
|
+
title 'Peekabo'
|
59
|
+
end
|
60
|
+
button :show_hide do
|
61
|
+
event :click do
|
62
|
+
toggle_visibility :peekaboo
|
63
|
+
end
|
64
|
+
end
|
65
|
+
blank
|
66
|
+
|
67
|
+
title 'Attributes: `width` and `height`'
|
68
|
+
text 'A content block can set its width and height. Units can be pixels, rems or percentages.'
|
69
|
+
content width: '50%', height: '8rem' do
|
70
|
+
card do
|
71
|
+
title "I'm wider! and taller!"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
blank
|
75
|
+
|
76
|
+
title 'Attributes: `position`'
|
77
|
+
text 'A content block can be positioned to be :top, :right, :bottom, :left or a combination of the container its inside'
|
78
|
+
content id: :parent, width: '50%', height: '8rem' do
|
79
|
+
content position: [:bottom, :right] do
|
80
|
+
card do
|
81
|
+
title "I'm on the bottom right"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
blank
|
86
|
+
|
87
|
+
title 'Attributes: `text_align`'
|
88
|
+
text %(A content block can define how its typography will be alligned inside it.
|
89
|
+
Valid values: left|right|center|justify)
|
90
|
+
content width: '50%', height: '8rem' do
|
91
|
+
content text_align: :center do
|
92
|
+
title "I'm centered text", inline: 'true'
|
93
|
+
title ".. me 2", inline: 'true'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
blank
|
97
|
+
|
98
|
+
title 'Attribute: `float`'
|
99
|
+
text 'A content block can float above the other content. This is useful for things like type ahead previews. Or hovering previews.'
|
100
|
+
content float: true do
|
101
|
+
card do
|
102
|
+
title "I'm floating!"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
text "xxxxxxxxxxxxxxxx I'm text that is obscured by the floating card in the content block above me"
|
106
|
+
blank
|
107
|
+
|
108
|
+
|
109
|
+
attach :code, file: __FILE__
|
110
|
+
end
|
111
|
+
end
|