voom-presenters 0.1.11 → 2.0.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 +1 -1
- 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 +42 -0
- data/.gitignore +4 -2
- data/.releaserc +15 -0
- data/.ruby-version +2 -1
- data/CHANGELOG.md +143 -0
- data/CODE-OF-CONDUCT.md +73 -0
- data/CONTRIBUTING.md +60 -0
- data/Gemfile +12 -3
- data/Gemfile.lock +106 -64
- data/HISTORY.md +61 -0
- data/Procfile +1 -0
- data/README.md +75 -22
- data/app/demo/component_status.pom +1 -1
- 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 +51 -17
- 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/markdown.pom +1 -0
- data/app/demo/namespaces.pom +89 -0
- data/app/demo/nav/top_nav.pom +24 -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/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 -59
- 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 +60 -0
- data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
- data/lib/voom/presenters/dsl/components/lists/line.rb +40 -29
- 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/lockable.rb +1 -5
- data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
- data/lib/voom/presenters/dsl/user_interface.rb +50 -33
- 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 +1 -1
- data/lib/voom/presenters/web_client/app.rb +125 -38
- 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 -5
- 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/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 -10
- 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 +23 -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 +10 -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 +2 -2
- 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 +43 -0
- 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 +11786 -6868
- data/views/mdc/package.json +66 -29
- data/views/mdc/web.erb +4 -0
- data/views/mdc/webpack.config.js +14 -1
- metadata +355 -32
- data/app/demo/components/forms.pom +0 -31
- data/lib/voom-presenters.rb +0 -9
- data/lib/voom/presenters-engine.rb +0 -40
- 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 -3
- data/scripts/deploy-demo.sh +0 -2
- data/scripts/release.sh +0 -4
- 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
@@ -9,30 +9,113 @@ Voom::Presenters.define(:tables) do
|
|
9
9
|
helpers do
|
10
10
|
def items
|
11
11
|
[
|
12
|
-
OpenStruct.new(material: 'Acrylic (Transparent)', quantity: 50, price: '$2.90'),
|
13
|
-
OpenStruct.new(material: 'Plywood (Birch)', quantity: 10, price: '$1.25'),
|
14
|
-
OpenStruct.new(material: 'Laminate (Gold on Blue)', quantity: 50, price: '$2.35')
|
12
|
+
OpenStruct.new(id: 1, material: 'Acrylic (Transparent)', quantity: 50, price: '$2.90'),
|
13
|
+
OpenStruct.new(id: 2, material: 'Plywood (Birch)', quantity: 10, price: '$1.25'),
|
14
|
+
OpenStruct.new(id: 3, material: 'Laminate (Gold on Blue)', quantity: 50, price: '$2.35')
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
def drivers
|
19
|
+
[
|
20
|
+
OpenStruct.new(name: 'Kimi Räikkönen', team: 'Scuderia Ferrari', country: 'Finland'),
|
21
|
+
OpenStruct.new(name: 'Daniel Ricciardo', team: 'Red Bull', country: 'Australia'),
|
22
|
+
OpenStruct.new(name: 'Lewis Hamilton', team: 'Mercedes', country: 'Great Britain'),
|
23
|
+
OpenStruct.new(name: 'Fernando Alonso', team: 'Mclaren', country: 'Spain'),
|
24
|
+
OpenStruct.new(name: 'Charles LeClerc', team: 'Sauber', country: 'Monaco')
|
15
25
|
]
|
16
26
|
end
|
17
27
|
end
|
18
28
|
|
19
29
|
indented_grid do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
30
|
+
content padding: :bottom3 do
|
31
|
+
title 'Non-Selectable'
|
32
|
+
table do
|
33
|
+
header do
|
34
|
+
column 'Name'
|
35
|
+
column 'Team'
|
36
|
+
column 'Country'
|
37
|
+
end
|
38
|
+
drivers.each do |driver|
|
39
|
+
row do
|
40
|
+
column driver.name
|
41
|
+
column driver.team
|
42
|
+
column driver.country
|
43
|
+
end
|
44
|
+
end
|
45
|
+
pagination page_size: 5,
|
46
|
+
total: drivers.count,
|
47
|
+
current_page: context.fetch(:page) { 1 },
|
48
|
+
replace_id: 'drivers',
|
49
|
+
replace_presenter: 'drivers_presenter'
|
25
50
|
end
|
51
|
+
end
|
26
52
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
53
|
+
content padding: [:top3, :bottom3] do
|
54
|
+
title 'Headerless Table'
|
55
|
+
table do
|
56
|
+
drivers.each do |driver|
|
57
|
+
row do
|
58
|
+
column driver.name
|
59
|
+
column driver.team
|
60
|
+
column driver.country
|
61
|
+
end
|
32
62
|
end
|
33
63
|
end
|
34
64
|
end
|
35
65
|
|
66
|
+
grid padding: :top3 do
|
67
|
+
column 6 do
|
68
|
+
form do
|
69
|
+
title 'Selectable (with form)'
|
70
|
+
content padding: :bottom2 do
|
71
|
+
table selectable: true do
|
72
|
+
header do
|
73
|
+
column 'Material'
|
74
|
+
column 'Quantity'
|
75
|
+
column 'Unit price'
|
76
|
+
end
|
77
|
+
items.each do |item|
|
78
|
+
row name: :id, value: item.id do
|
79
|
+
column item.material
|
80
|
+
column item.quantity
|
81
|
+
column item.price
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
button 'SUBMIT', type: :raised do
|
87
|
+
event :click do
|
88
|
+
replaces :context_list, :context_list
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
column 6 do
|
94
|
+
attach :context_list
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
grid wide: true do
|
99
|
+
column 12 do
|
100
|
+
title 'Wide (scrollable)', id: :scrollable
|
101
|
+
table do
|
102
|
+
header do
|
103
|
+
(1..18).each do |idx|
|
104
|
+
column "Column #{idx}"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
items.each do |item|
|
108
|
+
row do
|
109
|
+
(1..6).each do
|
110
|
+
column item.material
|
111
|
+
column item.quantity
|
112
|
+
column item.price
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
36
119
|
attach :code, file: __FILE__
|
37
120
|
end
|
38
121
|
end
|
@@ -9,10 +9,30 @@ Voom::Presenters.define(:text_areas) do
|
|
9
9
|
indented_grid do
|
10
10
|
headline 'Multiple line'
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
form do
|
13
|
+
text_area name: :notes, rows: 3, required: true do
|
14
|
+
label 'Text lines...'
|
15
|
+
hint 'Default behavior is full width'
|
16
|
+
end
|
17
|
+
|
18
|
+
text_area name: :notes, rows: 5, cols: 60, full_width: false do
|
19
|
+
label 'Five by Sixty'
|
20
|
+
hint 'Or specify using rows and columns'
|
21
|
+
end
|
22
|
+
|
23
|
+
rich_text_area name: :notes, placeholder: 'Text entered here is saved as HTML', rows: 10 do
|
24
|
+
label 'Rich Text Area'
|
25
|
+
hint 'Default is full width and 25 rows'
|
26
|
+
end
|
27
|
+
|
28
|
+
button 'Submit' do
|
29
|
+
event :click do
|
30
|
+
posts '/_echo_'
|
31
|
+
snackbar 'Posted to _echo_'
|
32
|
+
end
|
33
|
+
end
|
14
34
|
end
|
15
35
|
|
16
36
|
attach :code, file: __FILE__
|
17
37
|
end
|
18
|
-
end
|
38
|
+
end
|
@@ -13,34 +13,72 @@ Voom::Presenters.define(:text_fields) do
|
|
13
13
|
label 'Text...'
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
title 'Restricted Input'
|
17
|
+
grid do
|
18
|
+
column 3 do
|
19
|
+
text_field name: :password, password: true do
|
20
|
+
label 'Password'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
column 3 do
|
24
|
+
text_field name: :upper, case_type: :upper do
|
25
|
+
label 'Upper Only'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
column 3 do
|
29
|
+
text_field name: :lower, case_type: :lower do
|
30
|
+
label 'Lower Only'
|
31
|
+
end
|
32
|
+
end
|
20
33
|
end
|
21
34
|
|
22
35
|
headline 'Numeric'
|
23
|
-
|
24
36
|
# Client side validation with hints
|
25
|
-
|
37
|
+
title 'With Hints'
|
26
38
|
text_field name: :numeric do
|
27
39
|
label 'Number...'
|
28
40
|
pattern /-?[0-9]*(\.[0-9]+)?/
|
29
|
-
hint 'Input
|
41
|
+
hint 'Input should be a number!'
|
30
42
|
end
|
31
43
|
|
32
|
-
|
33
|
-
text_field name: :
|
34
|
-
label '
|
35
|
-
|
36
|
-
value '7'
|
37
|
-
error 'Input is not a the right number!'
|
44
|
+
title 'With Leading Icon'
|
45
|
+
text_field name: :numeric do
|
46
|
+
label 'Amount'
|
47
|
+
icon :attach_money, position: :left
|
38
48
|
end
|
39
49
|
|
50
|
+
title 'With Trailing Icon'
|
51
|
+
text_field name: :numeric do
|
52
|
+
label 'Name'
|
53
|
+
icon :remove_red_eye
|
54
|
+
end
|
55
|
+
|
56
|
+
blank
|
40
57
|
card do
|
41
|
-
|
42
|
-
|
43
|
-
|
58
|
+
headline 'Client Side Validations'
|
59
|
+
body 'This demonstrates client side validations for text fields '
|
60
|
+
text_field id: :my_required_field, name: :field1, required: true do
|
61
|
+
label 'Data to post'
|
62
|
+
hint 'Hint: You must enter a valid number in the field above'
|
63
|
+
validation_error 'This is a custom validation error. This field is required and must be a number.'
|
64
|
+
pattern /-?[0-9]*(\.[0-9]+)?/
|
65
|
+
end
|
66
|
+
text_field name: :field2, required: true do
|
67
|
+
label 'More data to post'
|
68
|
+
end
|
69
|
+
button 'Submit' do
|
70
|
+
event :click do
|
71
|
+
posts '/_echo_'
|
72
|
+
snackbar 'Posted to _echo_'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
blank
|
78
|
+
card do
|
79
|
+
headline 'Field Level Events'
|
80
|
+
title 'Text Fields'
|
81
|
+
body 'This demonstrates that a change event will submit the field value to the event action. '\
|
44
82
|
'This works with posts and replace actions'
|
45
83
|
text_field name: :myfield do
|
46
84
|
label 'Data to post'
|
@@ -50,7 +88,27 @@ Voom::Presenters.define(:text_fields) do
|
|
50
88
|
end
|
51
89
|
attach :context_list
|
52
90
|
end
|
53
|
-
|
91
|
+
|
92
|
+
blank
|
93
|
+
card do
|
94
|
+
form do
|
95
|
+
headline 'Form Level Events'
|
96
|
+
title 'Array of Text Fields'
|
97
|
+
text_field name: 'myfield[]' do
|
98
|
+
label 'Data to post'
|
99
|
+
end
|
100
|
+
text_field name: 'myfield[]' do
|
101
|
+
label 'More data to post'
|
102
|
+
end
|
103
|
+
button 'Submit' do
|
104
|
+
event :click do
|
105
|
+
posts '/_echo_'
|
106
|
+
snackbar 'Posted to _echo_'
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
54
112
|
attach :code, file: __FILE__
|
55
113
|
end
|
56
114
|
end
|
@@ -7,26 +7,83 @@ Voom::Presenters.define(:toggles) do
|
|
7
7
|
page_title 'Toggles'
|
8
8
|
|
9
9
|
indented_grid do
|
10
|
-
|
10
|
+
title 'CHECKBOX'
|
11
11
|
checkbox
|
12
|
-
checkbox checked: true
|
12
|
+
checkbox checked: true, text: "I am initially checked"
|
13
|
+
checkbox indeterminate: true, text: "I am indeterminate"
|
14
|
+
checkbox disabled: true, text: "I am disabled"
|
13
15
|
|
14
|
-
|
15
|
-
radio_button checked: true
|
16
|
-
radio_button
|
16
|
+
title 'RADIO BUTTON'
|
17
|
+
radio_button name: :radio, value: 'one', checked: true, text: "One"
|
18
|
+
radio_button name: :radio, value: 'two', text: "Two"
|
17
19
|
|
18
|
-
|
19
|
-
icon_toggle 'format_bold', checked: true
|
20
|
-
icon_toggle 'format_italic'
|
20
|
+
title 'ICON TOGGLE'
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
icon_toggle :format_italic do
|
23
|
+
tooltip 'toggle it - uses same icon'
|
24
|
+
end
|
25
|
+
|
26
|
+
icon_toggle :check_box_outline_blank, on_icon: :check_box do
|
27
|
+
tooltip 'toggle it - uses on and off icons'
|
28
|
+
end
|
29
|
+
|
30
|
+
icon_toggle :check_box_outline_blank, on_icon: :check_box, checked: true do
|
31
|
+
tooltip 'toggle it - already in a checked state'
|
32
|
+
end
|
25
33
|
|
34
|
+
icon_toggle :toggle_off, on_icon: :toggle_on, disabled: true do
|
35
|
+
tooltip 'Im disabled'
|
36
|
+
end
|
37
|
+
|
38
|
+
title 'SWITCH'
|
39
|
+
grid do
|
40
|
+
column 6 do
|
41
|
+
switch checked: true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
grid do
|
45
|
+
column 6 do
|
46
|
+
switch do
|
47
|
+
tooltip 'I will reset my state when clicked as a result of a failed event action'
|
48
|
+
event :click do
|
49
|
+
posts '_echo_', status: 500
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
26
54
|
grid do
|
27
55
|
column 6 do
|
28
|
-
|
29
|
-
|
56
|
+
switch disabled: true do
|
57
|
+
tooltip 'I am disabled'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
grid do
|
62
|
+
column 10, padding: :none do
|
63
|
+
switch text: "This is a long text label that should display even longer wraps to another line?"
|
64
|
+
end
|
65
|
+
column 10, padding: :none do
|
66
|
+
checkbox text: "This is a long text label that should display even longer wraps to another line?"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
button :on_dialog do
|
72
|
+
event :click do
|
73
|
+
dialog :toggle_dlg
|
74
|
+
end
|
75
|
+
end
|
76
|
+
dialog id: :toggle_dlg, width: '30rem' do
|
77
|
+
form do
|
78
|
+
switch name: :reset_password_email, checked: true, text: 'Send reset password email'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
grid do
|
84
|
+
column 6 do
|
85
|
+
headline 'Field Level Events', level: 3
|
86
|
+
title 'Text Fields'
|
30
87
|
body 'This demonstrates that a change event will submit the field value to the event action. '\
|
31
88
|
'This works with posts and replace actions'
|
32
89
|
switch name: :myfield do
|
@@ -34,8 +91,18 @@ Voom::Presenters.define(:toggles) do
|
|
34
91
|
replaces :context_list, :context_list
|
35
92
|
end
|
36
93
|
end
|
37
|
-
|
38
|
-
|
94
|
+
blank
|
95
|
+
body 'Toggle components (switches, checkboxes, and icon toggles)',
|
96
|
+
'can take `on_value` and `off_value` attributes to represent both states. ',
|
97
|
+
'The default is `"on"` and `nil`.'
|
98
|
+
switch name: :miller_lite, on_value: 'Great taste', off_value: 'Less filling' do
|
99
|
+
event :change do
|
100
|
+
replaces :context_list, :context_list
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
blank
|
105
|
+
headline 'Posts in Form', level: 3
|
39
106
|
body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
|
40
107
|
'This works with posts and replace actions'
|
41
108
|
form do
|
@@ -52,4 +119,4 @@ Voom::Presenters.define(:toggles) do
|
|
52
119
|
end
|
53
120
|
attach :code, file: __FILE__
|
54
121
|
end
|
55
|
-
end
|
122
|
+
end
|
@@ -54,8 +54,10 @@ Voom::Presenters.define(:tooltips) do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
headline 'Chips'
|
57
|
-
|
58
|
-
|
57
|
+
chipset do
|
58
|
+
chip 'Hover over me' do
|
59
|
+
tooltip 'I have this tip!'
|
60
|
+
end
|
59
61
|
end
|
60
62
|
|
61
63
|
headline 'Tables'
|
@@ -84,9 +86,11 @@ Voom::Presenters.define(:tooltips) do
|
|
84
86
|
radio_button do
|
85
87
|
tooltip 'select it'
|
86
88
|
end
|
87
|
-
|
88
|
-
|
89
|
+
|
90
|
+
icon_toggle :star_border, on_icon: :star do
|
91
|
+
tooltip 'toggle it - uses on and off icons'
|
89
92
|
end
|
93
|
+
|
90
94
|
switch do
|
91
95
|
tooltip 'switch it'
|
92
96
|
end
|
@@ -95,12 +99,8 @@ Voom::Presenters.define(:tooltips) do
|
|
95
99
|
end
|
96
100
|
|
97
101
|
|
98
|
-
|
99
|
-
|
100
|
-
display 'Typography', level: 4 do
|
101
|
-
tooltip 'I do nothing.'
|
102
|
-
end
|
103
|
-
|
102
|
+
headline 'Styles', level: 3
|
103
|
+
|
104
104
|
headline 'Headline' do
|
105
105
|
tooltip 'I do nothing.'
|
106
106
|
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:unordered_lists) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'Unordered Lists'
|
8
|
+
helpers do
|
9
|
+
def actors
|
10
|
+
[OpenStruct.new(name: "Bryan Cranston", episodes: 62, body: 'Bryan Cranston played the role of Walter in Breaking Bad. He is also known for playing Hal in Malcom in the Middle.'),
|
11
|
+
OpenStruct.new(name: "Aaron Paul", episodes: 62, body: 'Aaron Paul played the role of Jesse in Breaking Bad. He also featured in the "Need For Speed" Movie'),
|
12
|
+
OpenStruct.new(name: "Bob Odenkirk", episodes: 62, body: 'Bob Odinkrik played the role of Saul in Breaking Bad. Due to public fondness for the character, Bob stars in his own show now, called "Better Call Saul".'),
|
13
|
+
OpenStruct.new(name: "Giancarlo Esposito", episodes: 24, body: 'Giancarlo Giuseppe Alessandro Esposito played the role of Gustavo "Gus" Fring on the AMC shows Breaking Bad and Better Call Saul.')]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
indented_grid do
|
18
|
+
|
19
|
+
headline 'List with Default Bullets'
|
20
|
+
unordered_list do
|
21
|
+
actors.each do |actor|
|
22
|
+
list_item do
|
23
|
+
text actor.name
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
headline 'List with Numbers'
|
29
|
+
subtitle '_(Any valid `list-style` works)_'
|
30
|
+
unordered_list list_style: :decimal do
|
31
|
+
actors.each do |actor|
|
32
|
+
list_item do
|
33
|
+
text actor.name
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
headline 'Nested Lists'
|
39
|
+
unordered_list do
|
40
|
+
list_item do
|
41
|
+
text 'Breaking Bad'
|
42
|
+
unordered_list do
|
43
|
+
actors.each do |actor|
|
44
|
+
list_item {text actor.name}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
list_item do
|
49
|
+
text 'The Wire'
|
50
|
+
unordered_list do
|
51
|
+
list_item { text 'Dominic West'}
|
52
|
+
list_item { text 'Wendell Pierce'}
|
53
|
+
list_item { text 'Michael K. Williams'}
|
54
|
+
list_item { text 'Sonja Sohn'}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
headline 'List with Icons'
|
60
|
+
unordered_list do
|
61
|
+
list_item do
|
62
|
+
text 'Money'
|
63
|
+
icon :attach_money
|
64
|
+
end
|
65
|
+
list_item do
|
66
|
+
text 'No Money'
|
67
|
+
icon :money_off
|
68
|
+
end
|
69
|
+
list_item do
|
70
|
+
text 'Font Awesome'
|
71
|
+
icon 'fa-arrow-circle-right'
|
72
|
+
end
|
73
|
+
list_item do
|
74
|
+
text 'Cat'
|
75
|
+
icon 'fa-cat'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|