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
@@ -50,7 +50,7 @@ Voom::Presenters.define(:date_fields) do
|
|
50
50
|
date_field min_date: :today
|
51
51
|
|
52
52
|
title 'Min (today), Max (14 days from now)'
|
53
|
-
date_field min_date: :today, max_date: DateTime.
|
53
|
+
date_field min_date: :today, max_date: DateTime.new(2025, 4, 9) # Or in rails Time.now + 14.days
|
54
54
|
|
55
55
|
title 'Disabling specific dates'
|
56
56
|
date_field disable: ["2025-01-30", "2025-02-21", "2025-03-08", DateTime.new(2025, 4, 9)]
|
@@ -42,6 +42,12 @@ Voom::Presenters.define(:datetime_fields) do
|
|
42
42
|
end
|
43
43
|
grid do
|
44
44
|
column 6 do
|
45
|
+
|
46
|
+
title 'With Floating Label'
|
47
|
+
datetime_field name: :start_datetime do
|
48
|
+
label 'Date of Birth...'
|
49
|
+
end
|
50
|
+
|
45
51
|
title 'Min Date'
|
46
52
|
datetime_field min_date: "2020-01-01 00:15"
|
47
53
|
|
@@ -2,11 +2,79 @@ require_relative '../helpers/indented_grid'
|
|
2
2
|
|
3
3
|
Voom::Presenters.define(:dialogs) do
|
4
4
|
helpers Demo::Helpers::IndentedGrid
|
5
|
+
helpers do
|
6
|
+
def dlg_form
|
7
|
+
form do
|
8
|
+
text_field name: :myfield do
|
9
|
+
label 'Data to post'
|
10
|
+
end
|
11
|
+
grid padding: :none do
|
12
|
+
column 4, padding: :none do
|
13
|
+
date_field do
|
14
|
+
label 'Date Field'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
column 4
|
18
|
+
column 4 do
|
19
|
+
time_field do
|
20
|
+
label 'Time Field'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
text_field name: :myfield2 do
|
25
|
+
label 'More Data to post'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def shakespeare
|
31
|
+
<<-HEREDOC
|
32
|
+
This is a really really long description. Shakespeare once said:
|
33
|
+
To be, or not to be: that is the question:
|
34
|
+
Whether 'tis nobler in the mind to suffer
|
35
|
+
The slings and arrows of outrageous fortune,
|
36
|
+
Or to take arms against a sea of troubles,
|
37
|
+
And by opposing end them? To die: to sleep;
|
38
|
+
No more; and by a sleep to say we end
|
39
|
+
The heart-ache and the thousand natural shocks
|
40
|
+
That flesh is heir to, 'tis a consummation
|
41
|
+
Devoutly to be wish'd. To die, to sleep;
|
42
|
+
To sleep: perchance to dream: ay, there's the rub;
|
43
|
+
For in that sleep of death what dreams may come
|
44
|
+
When we have shuffled off this mortal coil,
|
45
|
+
Must give us pause: there's the respect
|
46
|
+
That makes calamity of so long life;
|
47
|
+
For who would bear the whips and scorns of time,
|
48
|
+
The oppressor's wrong, the proud man's contumely,
|
49
|
+
The pangs of despised love, the law's delay,
|
50
|
+
The insolence of office and the spurns
|
51
|
+
That patient merit of the unworthy takes,
|
52
|
+
When he himself might his quietus make
|
53
|
+
With a bare bodkin? who would fardels bear,
|
54
|
+
To grunt and sweat under a weary life,
|
55
|
+
But that the dread of something after death,
|
56
|
+
The undiscover'd country from whose bourn
|
57
|
+
No traveller returns, puzzles the will
|
58
|
+
And makes us rather bear those ills we have
|
59
|
+
Than fly to others that we know not of?
|
60
|
+
Thus conscience does make cowards of us all;
|
61
|
+
And thus the native hue of resolution
|
62
|
+
Is sicklied o'er with the pale cast of thought,
|
63
|
+
And enterprises of great pith and moment
|
64
|
+
With this regard their currents turn awry,
|
65
|
+
And lose the name of action.--Soft you now!
|
66
|
+
The fair Ophelia! Nymph, in thy orisons
|
67
|
+
Be all my sins remember'd!
|
68
|
+
HEREDOC
|
69
|
+
end
|
70
|
+
end
|
5
71
|
attach :top_nav
|
6
72
|
attach :component_drawer
|
7
73
|
page_title 'Dialogs'
|
8
74
|
|
75
|
+
|
9
76
|
indented_grid do
|
77
|
+
body 'Simple dialog with disabled button'
|
10
78
|
button 'Show Dialog' do
|
11
79
|
event :click do
|
12
80
|
dialog :hold_on
|
@@ -14,13 +82,114 @@ Voom::Presenters.define(:dialogs) do
|
|
14
82
|
end
|
15
83
|
|
16
84
|
dialog id: :hold_on do
|
17
|
-
title "
|
18
|
-
body 'This is an example of the Material Design
|
85
|
+
title "MDC Dialog"
|
86
|
+
body 'This is an example of the Material Design Component for the web dialog component. Please use responsibly.'
|
87
|
+
|
88
|
+
actions do
|
89
|
+
button 'Close'
|
90
|
+
button 'Disabled action', disabled: true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
body 'Dialog with width set'
|
95
|
+
button 'Show Dialog' do
|
96
|
+
event :click do
|
97
|
+
dialog :width_demo
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
dialog id: :width_demo, width: '400px' do
|
102
|
+
title "MDC Dialog"
|
103
|
+
body shakespeare
|
104
|
+
|
105
|
+
actions do
|
106
|
+
button 'Close'
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
grid do
|
111
|
+
column 9 do
|
112
|
+
body 'Dialog with form'
|
113
|
+
button 'With Form' do
|
114
|
+
event :click do
|
115
|
+
dialog :with_form
|
116
|
+
end
|
117
|
+
end
|
118
|
+
body 'Dialog with multiple forms'
|
119
|
+
button 'Muliple Forms' do
|
120
|
+
event :click do
|
121
|
+
dialog :multi_form_dialog
|
122
|
+
end
|
123
|
+
end
|
124
|
+
body 'Dialog with height and width'
|
125
|
+
button 'Height/Width' do
|
126
|
+
event :click do
|
127
|
+
dialog :height_width_dialog
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
column 3 do
|
133
|
+
attach :context_list
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
dialog id: :with_form do
|
138
|
+
title "Dialog with Form"
|
139
|
+
dlg_form
|
140
|
+
actions do
|
141
|
+
button 'Close'
|
142
|
+
button 'Update' do
|
143
|
+
event :click do
|
144
|
+
replaces :context_list, :context_list
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
19
149
|
|
20
|
-
|
21
|
-
|
150
|
+
dialog id: :multi_form_dialog do
|
151
|
+
title "Dialog with Multiple Forms"
|
152
|
+
subtitle
|
153
|
+
form do
|
154
|
+
text_field name: :myfield do
|
155
|
+
label 'Data to post'
|
156
|
+
end
|
157
|
+
text_field name: :myfield2 do
|
158
|
+
label 'More Data to post'
|
159
|
+
end
|
160
|
+
subtitle "These are normal buttons and will not automatically close the dialog. However, you can call 'close_dialog' to programatically close the dialog."
|
161
|
+
button 'Close' do
|
162
|
+
event :click do
|
163
|
+
close_dialog :multi_form_dialog
|
164
|
+
end
|
165
|
+
end
|
166
|
+
button 'Update (and remain open)' do
|
167
|
+
event :click do
|
168
|
+
replaces :context_list, :context_list
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
separator
|
173
|
+
content tag: :second_form_input do
|
174
|
+
dlg_form
|
175
|
+
end
|
176
|
+
subtitle 'The buttons below are Dialog Action buttons. When clicked, they will process any configured actions, then automatically clsoe the dialog.'
|
177
|
+
actions do
|
178
|
+
button 'Close'
|
179
|
+
button 'Update' do
|
180
|
+
event :click do
|
181
|
+
replaces :context_list, :context_list, input_tag: :second_form_input
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
22
185
|
end
|
23
186
|
|
24
|
-
|
187
|
+
dialog id: :height_width_dialog, height: '500px', width: '500px' do
|
188
|
+
title "Dialog with set dimensions"
|
189
|
+
body "MDC dialogs have default styles of max-width 560px (for 592px viewport or larger) and min-width 280px."
|
190
|
+
end
|
25
191
|
end
|
26
|
-
|
192
|
+
|
193
|
+
attach :code, file: __FILE__
|
194
|
+
end
|
195
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:file_inputs) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'File Inputs'
|
8
|
+
|
9
|
+
indented_grid do
|
10
|
+
|
11
|
+
file_input name: :event_image, preview: [:preview_id, :filename] do
|
12
|
+
grid do
|
13
|
+
column 6 do
|
14
|
+
card do
|
15
|
+
image width: 200, id: :preview_id
|
16
|
+
text id: :filename
|
17
|
+
text 'Drag and drop or click this button to upload'
|
18
|
+
button icon: :cloud_upload
|
19
|
+
end
|
20
|
+
end
|
21
|
+
column 6 do
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
title 'Simple'
|
28
|
+
file_input name: :upload
|
29
|
+
|
30
|
+
title 'With image preview'
|
31
|
+
file_input preview: :image_id, accept: 'image/png, image/jpeg, image/gif, image/svg+xml'
|
32
|
+
image 'http://geotix.com/application/files/3514/5564/7308/MyNorthTicketsLogo.png', width: 100, id: :image_id
|
33
|
+
|
34
|
+
title 'With image button preview'
|
35
|
+
file_input preview: :button_id, accept: 'image/png, image/jpeg, image/gif, image/svg+xml'
|
36
|
+
button type: :image, id: :button_id do
|
37
|
+
image 'http://geotix.com/application/files/3514/5564/7308/MyNorthTicketsLogo.png'
|
38
|
+
end
|
39
|
+
text 'Note: it binds to the button id, not the nested image id.'
|
40
|
+
|
41
|
+
title 'With text_area preview'
|
42
|
+
file_input preview: :text_area_id, accept: 'text/plain, text/markdown'
|
43
|
+
text_area id: :text_area_id
|
44
|
+
|
45
|
+
title 'With image and file_name preview'
|
46
|
+
file_input preview: [:text_area_id2, :filename_id], accept: 'text/plain, text/markdown'
|
47
|
+
subtitle2 id: :filename_id
|
48
|
+
text_area id: :text_area_id2
|
49
|
+
|
50
|
+
attach :code, file: __FILE__
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:maps) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'Maps'
|
8
|
+
|
9
|
+
indented_grid do
|
10
|
+
subheading 'Static Maps'
|
11
|
+
|
12
|
+
address = '125 Park Street, Traverse City, MI'
|
13
|
+
google_map address: address, height: 300, width: 400 do
|
14
|
+
event :click do
|
15
|
+
loads "https://www.google.com/maps/place/#{address}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
attach :code, file: __FILE__
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -1,41 +1,101 @@
|
|
1
1
|
require_relative '../helpers/indented_grid'
|
2
2
|
|
3
|
+
Voom::Presenters.define(:static_header, namespace: :headers) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
|
6
|
+
attach :component_drawer
|
7
|
+
|
8
|
+
indented_grid do
|
9
|
+
text 'The **static header** disappears when scrolling.'
|
10
|
+
text 'It is the default header type and will never cover page content.'
|
11
|
+
text 'You can expand the **Show Source** area below to see it in action.'
|
12
|
+
end
|
13
|
+
|
14
|
+
header title: 'Static Header', placement: :static do
|
15
|
+
nav do
|
16
|
+
item 'Headers' do
|
17
|
+
event :click do
|
18
|
+
loads '/headers'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
indented_grid do
|
25
|
+
headline 'Headers'
|
26
|
+
|
27
|
+
attach :code, file: __FILE__
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Voom::Presenters.define(:fixed_header, namespace: :headers) do
|
32
|
+
helpers Demo::Helpers::IndentedGrid
|
33
|
+
|
34
|
+
attach :component_drawer
|
35
|
+
|
36
|
+
indented_grid do
|
37
|
+
text 'The **fixed header** remains fixed to the top of the viewport when scrolling.'
|
38
|
+
text 'A header can be made fixed via `placement: :fixed`, and can cover page content.'
|
39
|
+
text 'You can expand the **Show Source** area below to see it in action.'
|
40
|
+
end
|
41
|
+
|
42
|
+
header title: 'Fixed Header', placement: :fixed do
|
43
|
+
nav do
|
44
|
+
item 'Headers' do
|
45
|
+
event :click do
|
46
|
+
loads '/headers'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
indented_grid do
|
53
|
+
headline 'Headers'
|
54
|
+
|
55
|
+
attach :code, file: __FILE__
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
3
59
|
Voom::Presenters.define(:headers) do
|
4
60
|
helpers Demo::Helpers::IndentedGrid
|
5
61
|
|
6
62
|
attach :top_nav
|
7
63
|
attach :component_drawer
|
8
64
|
|
9
|
-
|
10
65
|
header 'Presenters Demo' do
|
11
66
|
nav do
|
12
67
|
item 'About (Header)' do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
68
|
+
event :click do
|
69
|
+
loads :index
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
item 'Components (Header)' do
|
74
|
+
event :click do
|
75
|
+
loads :components
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
item 'Styles (Header)' do
|
80
|
+
event :click do
|
81
|
+
loads :styles
|
82
|
+
end
|
83
|
+
end
|
29
84
|
end
|
30
85
|
end
|
86
|
+
|
31
87
|
page_title 'Page about headers' do
|
32
88
|
icon :subtitles
|
33
89
|
end
|
34
90
|
|
91
|
+
indented_grid do
|
92
|
+
headline 'Headers'
|
93
|
+
|
94
|
+
text '* [Static](/headers/static_header): Hides when the viewport is scrolled'
|
95
|
+
text '* [Fixed](/headers/fixed_header): Remains fixed at the top of the viewport'
|
96
|
+
end
|
35
97
|
|
36
98
|
indented_grid do
|
37
|
-
display 'Headers'
|
38
|
-
|
39
99
|
attach :code, file: __FILE__
|
40
100
|
end
|
41
|
-
end
|
101
|
+
end
|
@@ -5,7 +5,7 @@ Voom::Presenters.define(:icons) do
|
|
5
5
|
|
6
6
|
helpers do
|
7
7
|
def small_card(&block)
|
8
|
-
card height: '100px', width: '
|
8
|
+
card height: '100px', width: '100%' do
|
9
9
|
yield_to(&block) # Special method that yields in the correct binding context
|
10
10
|
end
|
11
11
|
end
|
@@ -16,65 +16,96 @@ Voom::Presenters.define(:icons) do
|
|
16
16
|
column 10 do
|
17
17
|
body 'An icon is commonly used on a menu, button, chip, list or card. They can be used standalone as well.'
|
18
18
|
|
19
|
-
headline 'Plain'
|
20
|
-
title 'Material design icons'
|
21
|
-
body 'By default the icon name will be assumed to be [material design](https://material.io/icons/).'
|
22
|
-
icon :thumb_up
|
23
|
-
|
24
|
-
title 'Font awesome icons'
|
25
|
-
body "[Font awesome](https://fontawesome.com/icons?d=gallery) icons can also be used."\
|
26
|
-
'You provide the font awesome class.'
|
27
|
-
body 'For example: `fa-thumbs-up`:', level: 2
|
28
|
-
icon 'fa-thumbs-up'
|
29
|
-
body 'You can also optionally add the font awesome style prefix, if not provided it defaults to `fas` (solid).', level: 2
|
30
|
-
body 'For example: `far fa-thumbs-up`:', level: 2
|
31
|
-
icon 'far fa-thumbs-up'
|
32
|
-
|
33
|
-
|
34
|
-
headline 'Color'
|
35
|
-
title 'primary'
|
36
|
-
icon :thumb_up, color: :primary
|
37
|
-
title 'secondary'
|
38
|
-
icon :thumb_up, color: :secondary
|
39
|
-
title 'custom'
|
40
|
-
icon :thumb_up, color: :hotpink
|
41
|
-
|
42
|
-
headline 'Size'
|
43
|
-
body 'You can specify the size of an icon'
|
44
|
-
icon :thumb_up, color: :hotpink, size: '64px'
|
45
|
-
|
46
|
-
title 'Position'
|
47
|
-
body "'Icon's can be positioned to left, right, top, and bottom"
|
48
|
-
|
49
19
|
grid do
|
50
|
-
column
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
column 1 do
|
56
|
-
small_card do
|
57
|
-
icon :face, position: :right
|
58
|
-
end
|
20
|
+
column 12 do
|
21
|
+
headline 'Plain'
|
22
|
+
subtitle 'Material design icons'
|
23
|
+
body 'By default the icon name will be assumed to be [material design](https://material.io/icons/).'
|
24
|
+
icon :thumb_up
|
59
25
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
26
|
+
end
|
27
|
+
|
28
|
+
grid do
|
29
|
+
column 12 do
|
30
|
+
headline 'Font awesome icons'
|
31
|
+
body "[Font awesome](https://fontawesome.com/icons?d=gallery) icons can also be used."\
|
32
|
+
'You provide the font awesome class.'
|
33
|
+
body 'For example: `fa-thumbs-up`:', level: 2
|
34
|
+
icon 'fa-thumbs-up'
|
35
|
+
body 'You can also optionally add the font awesome style prefix, if not provided it defaults to `fas` (solid).', level: 2
|
36
|
+
body 'For example: `far fa-thumbs-up`:', level: 2
|
37
|
+
icon 'far fa-thumbs-up'
|
64
38
|
end
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
39
|
+
end
|
40
|
+
|
41
|
+
grid do
|
42
|
+
column 12 do
|
43
|
+
headline 'Color'
|
44
|
+
body '**primary**'
|
45
|
+
icon :thumb_up, color: :primary
|
46
|
+
body '**secondary**'
|
47
|
+
icon :thumb_up, color: :secondary
|
48
|
+
body '**custom from palette**'
|
49
|
+
icon :thumb_up, color: :red
|
50
|
+
body '**custom**'
|
51
|
+
icon :thumb_up, color: :hotpink
|
69
52
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
53
|
+
end
|
54
|
+
|
55
|
+
grid do
|
56
|
+
column 12 do
|
57
|
+
headline 'Size'
|
58
|
+
body 'You can specify the size of an icon'
|
59
|
+
subtitle '**x-small**'
|
60
|
+
icon :thumb_up, size: 'x-small'
|
61
|
+
subtitle '**small**'
|
62
|
+
icon :thumb_up, size: 'small'
|
63
|
+
subtitle '**medium** (default)'
|
64
|
+
icon :thumb_up, size: 'medium'
|
65
|
+
subtitle '**large**'
|
66
|
+
icon :thumb_up, size: 'large'
|
67
|
+
subtitle '**x-large**'
|
68
|
+
icon :thumb_up, size: 'x-large'
|
69
|
+
subtitle '**xx-large**'
|
70
|
+
icon :thumb_up, size: 'xx-large'
|
74
71
|
end
|
75
|
-
|
76
|
-
|
77
|
-
|
72
|
+
end
|
73
|
+
|
74
|
+
grid do
|
75
|
+
column 12 do
|
76
|
+
headline 'Position'
|
77
|
+
body "Icon's can be positioned to the left, right, top, and bottom"
|
78
|
+
grid padding: false do
|
79
|
+
column 1 do
|
80
|
+
small_card do
|
81
|
+
icon :face, position: :left
|
82
|
+
end
|
83
|
+
end
|
84
|
+
column 1 do
|
85
|
+
small_card do
|
86
|
+
icon :face, position: :right
|
87
|
+
end
|
88
|
+
end
|
89
|
+
column 1 do
|
90
|
+
small_card do
|
91
|
+
icon :face, position: :top
|
92
|
+
end
|
93
|
+
end
|
94
|
+
column 1 do
|
95
|
+
small_card do
|
96
|
+
icon :face, position: :bottom
|
97
|
+
end
|
98
|
+
end
|
99
|
+
column 1 do
|
100
|
+
small_card do
|
101
|
+
icon :face, position: [:top, :right]
|
102
|
+
end
|
103
|
+
end
|
104
|
+
column 1 do
|
105
|
+
small_card do
|
106
|
+
icon :face, position: [:bottom, :right]
|
107
|
+
end
|
108
|
+
end
|
78
109
|
end
|
79
110
|
end
|
80
111
|
end
|