voom-presenters 0.2.0 → 2.0.0
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 +39 -0
- data/.gitignore +3 -2
- data/.releaserc +8 -0
- data/.ruby-version +2 -1
- data/CHANGELOG.md +64 -114
- data/CONTRIBUTING.md +60 -0
- data/Gemfile +12 -3
- data/Gemfile.lock +83 -45
- data/Procfile +1 -0
- data/README.md +41 -39
- 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 +61 -54
- data/app/demo/components/content.pom +96 -16
- data/app/demo/components/dialogs.pom +175 -6
- data/app/demo/components/file_inputs.pom +38 -2
- data/app/demo/components/google_maps.pom +6 -1
- 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 +3 -25
- data/app/demo/components/lists.pom +24 -4
- data/app/demo/components/menus.pom +14 -4
- data/app/demo/components/nav/menu.pom +38 -7
- data/app/demo/components/nav/pattern_menu.pom +2 -2
- 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 +5 -0
- data/app/demo/components/tab_bars.pom +15 -0
- data/app/demo/components/tables.pom +51 -40
- data/app/demo/components/text_areas.pom +23 -16
- data/app/demo/components/text_fields.pom +61 -15
- data/app/demo/components/toggles.pom +35 -4
- data/app/demo/components/tooltips.pom +8 -4
- data/app/demo/components/unordered_list.pom +81 -0
- data/app/demo/custom_css.pom +37 -0
- data/app/demo/events/actions/autocomplete.pom +32 -0
- data/app/demo/events/actions/clear.pom +5 -3
- 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/prompt_if_dirty.pom +54 -0
- 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/nav/top_nav.pom +12 -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 +9 -7
- 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 +1 -1
- data/app/demo/styles.pom +3 -1
- data/bin/console +4 -4
- data/bin/presenters +3 -0
- data/component-status.yml +15 -15
- data/config.ru +20 -10
- data/docs/settings.md +81 -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 +31 -11
- data/lib/voom/presenters/api/router.rb +3 -49
- 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 +2 -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 +36 -8
- data/lib/voom/presenters/dsl/components/actions/clear.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/close_dialog.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/deletes.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/dialog.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/loads.rb +5 -6
- data/lib/voom/presenters/dsl/components/actions/navigates.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/post_message.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/posts.rb +5 -2
- data/lib/voom/presenters/dsl/components/actions/prompt_if_dirty.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/remove.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/replaces.rb +4 -4
- data/lib/voom/presenters/dsl/components/actions/snackbar.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/stepper.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/toggle_disabled.rb +15 -0
- data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +0 -2
- data/lib/voom/presenters/dsl/components/actions/updates.rb +5 -2
- data/lib/voom/presenters/dsl/components/avatar.rb +4 -8
- data/lib/voom/presenters/dsl/components/badge.rb +0 -2
- data/lib/voom/presenters/dsl/components/base.rb +25 -18
- data/lib/voom/presenters/dsl/components/button.rb +15 -11
- data/lib/voom/presenters/dsl/components/card.rb +49 -36
- data/lib/voom/presenters/dsl/components/checkbox.rb +0 -2
- data/lib/voom/presenters/dsl/components/chip.rb +5 -7
- data/lib/voom/presenters/dsl/components/chipset.rb +33 -0
- data/lib/voom/presenters/dsl/components/content.rb +28 -18
- data/lib/voom/presenters/dsl/components/datetime_base.rb +0 -2
- data/lib/voom/presenters/dsl/components/datetime_field.rb +0 -2
- data/lib/voom/presenters/dsl/components/dialog.rb +36 -12
- data/lib/voom/presenters/dsl/components/drawer.rb +9 -6
- data/lib/voom/presenters/dsl/components/event.rb +106 -65
- data/lib/voom/presenters/dsl/components/event_base.rb +1 -3
- data/lib/voom/presenters/dsl/components/expansion_panel.rb +0 -3
- data/lib/voom/presenters/dsl/components/file_input.rb +18 -6
- data/lib/voom/presenters/dsl/components/footer.rb +2 -2
- data/lib/voom/presenters/dsl/components/form.rb +2 -17
- data/lib/voom/presenters/dsl/components/grid.rb +52 -50
- data/lib/voom/presenters/dsl/components/header.rb +17 -1
- data/lib/voom/presenters/dsl/components/hidden_field.rb +0 -2
- data/lib/voom/presenters/dsl/components/icon.rb +2 -4
- data/lib/voom/presenters/dsl/components/icon_base.rb +5 -7
- data/lib/voom/presenters/dsl/components/icon_toggle.rb +2 -4
- 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 +6 -13
- data/lib/voom/presenters/dsl/components/lists/action.rb +9 -11
- data/lib/voom/presenters/dsl/components/lists/actions.rb +0 -3
- data/lib/voom/presenters/dsl/components/lists/line.rb +27 -15
- data/lib/voom/presenters/dsl/components/menu.rb +51 -9
- data/lib/voom/presenters/dsl/components/mixins/append.rb +2 -2
- data/lib/voom/presenters/dsl/components/mixins/attaches.rb +0 -2
- data/lib/voom/presenters/dsl/components/mixins/avatar.rb +1 -3
- data/lib/voom/presenters/dsl/components/mixins/chips.rb +0 -2
- data/lib/voom/presenters/dsl/components/mixins/chipset.rb +19 -0
- data/lib/voom/presenters/dsl/components/mixins/common.rb +13 -14
- data/lib/voom/presenters/dsl/components/mixins/dialogs.rb +0 -2
- data/lib/voom/presenters/dsl/components/mixins/event.rb +0 -2
- 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/padding.rb +42 -0
- data/lib/voom/presenters/dsl/components/mixins/progress.rb +16 -0
- data/lib/voom/presenters/dsl/components/mixins/tab_bars.rb +2 -0
- data/lib/voom/presenters/dsl/components/mixins/tables.rb +15 -0
- data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +5 -0
- data/lib/voom/presenters/dsl/components/mixins/toggles.rb +0 -2
- data/lib/voom/presenters/dsl/components/mixins/typography.rb +55 -8
- 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_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 +5 -11
- data/lib/voom/presenters/dsl/components/select.rb +21 -9
- data/lib/voom/presenters/dsl/components/separator.rb +21 -0
- data/lib/voom/presenters/dsl/components/slider.rb +6 -7
- data/lib/voom/presenters/dsl/components/stepper.rb +0 -10
- data/lib/voom/presenters/dsl/components/switch.rb +0 -2
- data/lib/voom/presenters/dsl/components/tab_bar.rb +0 -3
- data/lib/voom/presenters/dsl/components/table.rb +39 -20
- data/lib/voom/presenters/dsl/components/text_area.rb +1 -3
- data/lib/voom/presenters/dsl/components/text_field.rb +54 -11
- 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/typography.rb +4 -4
- 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 +6 -5
- data/lib/voom/presenters/dsl/protect_from_forgery.rb +43 -0
- data/lib/voom/presenters/dsl/user_interface.rb +37 -22
- 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/inflector.rb +1 -1
- data/lib/voom/presenters/helpers/rails.rb +15 -8
- data/lib/voom/presenters/helpers/redact.rb +13 -0
- data/lib/voom/presenters/helpers/route.rb +12 -5
- 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/{dsl/components → plugins/google_maps}/google_map.rb +4 -3
- data/lib/voom/presenters/{dsl.rb → registry.rb} +13 -15
- data/lib/voom/presenters/router.rb +59 -0
- data/lib/voom/presenters/settings.rb +18 -8
- data/lib/voom/presenters/version.rb +1 -1
- data/lib/voom/presenters/web_client/app.rb +86 -29
- 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/{markdown_render.rb → custom_render.rb} +5 -3
- 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 -54
- data/lib/voom/railtie.rb +37 -0
- data/lib/voom/symbol/to_str.rb +3 -3
- data/lib/voom/trace.rb +0 -2
- data/presenters.gemspec +8 -4
- 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/.eslintrc.yml +1 -0
- data/views/mdc/.nvmrc +1 -0
- data/views/mdc/assets/js/app.js +13 -2
- data/views/mdc/assets/js/components/base-component.js +147 -12
- data/views/mdc/assets/js/components/base-container.js +54 -14
- data/views/mdc/assets/js/components/base-toggle.js +56 -0
- data/views/mdc/assets/js/components/button.js +74 -5
- data/views/mdc/assets/js/components/cards.js +3 -3
- data/views/mdc/assets/js/components/checkboxes.js +7 -30
- data/views/mdc/assets/js/components/chips.js +76 -12
- data/views/mdc/assets/js/components/content.js +5 -4
- data/views/mdc/assets/js/components/data-tables.js +11 -34
- data/views/mdc/assets/js/components/datetime.js +29 -6
- data/views/mdc/assets/js/components/dialogs.js +128 -31
- 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 +190 -73
- data/views/mdc/assets/js/components/events/action_parameter.js +62 -0
- data/views/mdc/assets/js/components/events/action_parameter.test.js +62 -0
- data/views/mdc/assets/js/components/events/autocomplete.js +94 -0
- data/views/mdc/assets/js/components/events/base.js +139 -23
- 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 +147 -65
- data/views/mdc/assets/js/components/events/prompt_if_dirty.js +67 -0
- data/views/mdc/assets/js/components/events/removes.js +7 -6
- data/views/mdc/assets/js/components/events/replaces.js +87 -33
- data/views/mdc/assets/js/components/events/snackbar.js +10 -10
- data/views/mdc/assets/js/components/events/stepper.js +8 -10
- data/views/mdc/assets/js/components/events/toggle_disabled.js +41 -0
- data/views/mdc/assets/js/components/events/toggle_visibility.js +57 -15
- data/views/mdc/assets/js/components/file-inputs.js +68 -21
- data/views/mdc/assets/js/components/form-fields.js +16 -0
- data/views/mdc/assets/js/components/forms.js +3 -3
- data/views/mdc/assets/js/components/get_event_target.js +15 -0
- data/views/mdc/assets/js/components/grid.js +7 -6
- data/views/mdc/assets/js/components/header.js +20 -0
- data/views/mdc/assets/js/components/hidden-fields.js +19 -8
- data/views/mdc/assets/js/components/icon-toggles.js +7 -7
- data/views/mdc/assets/js/components/images.js +19 -0
- data/views/mdc/assets/js/components/initialize.js +52 -27
- data/views/mdc/assets/js/components/lists.js +9 -4
- data/views/mdc/assets/js/components/menus.js +60 -13
- 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 +22 -21
- 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 +6 -31
- data/views/mdc/assets/js/components/rich-text-area.js +217 -33
- 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 +18 -8
- data/views/mdc/assets/js/components/sliders.js +23 -12
- data/views/mdc/assets/js/components/snackbar.js +11 -8
- data/views/mdc/assets/js/components/steppers.js +3 -3
- data/views/mdc/assets/js/components/switches.js +6 -29
- data/views/mdc/assets/js/components/tab-bars.js +18 -4
- data/views/mdc/assets/js/components/text-fields.js +94 -22
- 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/wc.js +111 -0
- data/views/mdc/assets/scss/app.scss +12 -5
- data/views/mdc/assets/scss/components/avatar.scss +51 -7
- data/views/mdc/assets/scss/components/button.scss +7 -9
- data/views/mdc/assets/scss/components/card.scss +6 -5
- data/views/mdc/assets/scss/components/chip.scss +4 -0
- data/views/mdc/assets/scss/components/content.scss +25 -0
- data/views/mdc/assets/scss/components/data-table.scss +12 -1
- data/views/mdc/assets/scss/components/datetime.scss +1 -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 -5
- data/views/mdc/assets/scss/components/file-input.scss +10 -14
- data/views/mdc/assets/scss/components/grid.scss +32 -17
- 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 +13 -21
- data/views/mdc/assets/scss/components/list.scss +9 -3
- data/views/mdc/assets/scss/components/menu.scss +13 -3
- data/views/mdc/assets/scss/components/progress.scss +1 -0
- data/views/mdc/assets/scss/components/rich-text-area.scss +38 -2
- 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/switch.scss +10 -0
- data/views/mdc/assets/scss/components/textfield.scss +8 -4
- data/views/mdc/assets/scss/components/tooltip.scss +3 -0
- data/views/mdc/assets/scss/components/typography.scss +6 -0
- data/views/mdc/assets/scss/components/unordered-lists.scss +17 -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 +39 -1
- data/views/mdc/assets/scss/theme.scss +19 -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 -31
- data/views/mdc/body/modal-drawer.erb +35 -0
- data/views/mdc/body/snackbar.erb +11 -5
- data/views/mdc/components/actions/autocomplete.rb +8 -0
- data/views/mdc/components/actions/close_dialog.rb +10 -0
- data/views/mdc/components/actions/loads.rb +7 -1
- data/views/mdc/components/actions/navigates.rb +1 -1
- data/views/mdc/components/actions/post.rb +4 -7
- 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/replaces.rb +5 -1
- data/views/mdc/components/actions/resolver.rb +39 -0
- data/views/mdc/components/actions/snackbar.rb +3 -1
- data/views/mdc/components/actions/toggle_disabled.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 +2 -3
- data/views/mdc/components/buttons/button.erb +12 -12
- data/views/mdc/components/buttons/fab.erb +3 -2
- data/views/mdc/components/buttons/icon.erb +5 -5
- data/views/mdc/components/buttons/image.erb +4 -3
- data/views/mdc/components/card.erb +67 -44
- data/views/mdc/components/checkbox.erb +32 -35
- data/views/mdc/components/chip.erb +38 -30
- data/views/mdc/components/chipset.erb +18 -0
- data/views/mdc/components/content.erb +35 -14
- data/views/mdc/components/datetime.erb +6 -19
- data/views/mdc/components/dialog.erb +45 -25
- data/views/mdc/components/drag_and_drop/drag_and_drop.rb +16 -0
- data/views/mdc/components/event.erb +3 -5
- data/views/mdc/components/expansion_panel.erb +8 -6
- data/views/mdc/components/file_input.erb +14 -10
- data/views/mdc/components/form.erb +4 -19
- data/views/mdc/components/grid.erb +20 -17
- data/views/mdc/components/hidden_field.erb +3 -4
- 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 +4 -2
- 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 +19 -9
- data/views/mdc/components/list/menu.erb +7 -2
- data/views/mdc/components/list/separator.erb +1 -1
- data/views/mdc/components/menu.erb +14 -6
- data/views/mdc/components/number_field.erb +38 -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 +5 -6
- data/views/mdc/components/render.erb +2 -3
- data/views/mdc/components/rich_text_area.erb +13 -10
- data/views/mdc/components/select.erb +28 -12
- 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 +3 -1
- data/views/mdc/components/stepper.erb +1 -1
- data/views/mdc/components/stepper/step.erb +1 -1
- data/views/mdc/components/switch.erb +8 -7
- data/views/mdc/components/tab_bar.erb +7 -1
- data/views/mdc/components/table.erb +26 -13
- data/views/mdc/components/table/checkbox.erb +6 -3
- 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 +5 -4
- data/views/mdc/components/table/pagination.erb +2 -6
- data/views/mdc/components/table/row.erb +5 -5
- data/views/mdc/components/text_area.erb +9 -11
- data/views/mdc/components/text_field.erb +29 -37
- 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 +41 -29
- data/views/mdc/package-lock.json +2222 -1327
- data/views/mdc/package.json +47 -29
- data/views/mdc/web.erb +4 -0
- data/views/mdc/webpack.config.js +13 -1
- metadata +218 -26
- data/lib/voom-presenters.rb +0 -9
- data/lib/voom/presenters-engine.rb +0 -44
- data/lib/voom/presenters.rb +0 -19
- data/public/.gitignore +0 -2
- data/scripts/bump.sh +0 -5
- data/scripts/changelog.sh +0 -5
- data/scripts/deploy-demo.sh +0 -3
- data/scripts/release.sh +0 -5
- data/scripts/tag.sh +0 -5
- data/views/mdc/assets/js/dialog-polyfill.js +0 -738
- data/views/mdc/assets/scss/components/icon-toggles.scss +0 -9
- data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +0 -13
- data/views/mdc/body/drawer.erb +0 -18
- data/views/mdc/components/google_map.erb +0 -9
@@ -1,8 +1,8 @@
|
|
1
1
|
Voom::Presenters.define('pattern_menu') do
|
2
2
|
helpers Voom::Presenters::Helpers::Inflector
|
3
3
|
menu side: :left do
|
4
|
-
%i(search_select).sort.each do |pattern|
|
5
|
-
item titleize(pattern)
|
4
|
+
%i(search_select floating_card drag_drop).sort.each do |pattern|
|
5
|
+
item titleize(pattern) do
|
6
6
|
event :click do
|
7
7
|
loads pattern
|
8
8
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:number_fields) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'Number Fields'
|
8
|
+
|
9
|
+
indented_grid do
|
10
|
+
|
11
|
+
title 'Basic'
|
12
|
+
number_field name: :text do
|
13
|
+
label 'Enter a number'
|
14
|
+
hint 'Enter text or scroll to your desired number'
|
15
|
+
end
|
16
|
+
blank
|
17
|
+
|
18
|
+
title 'Min/Max/Step'
|
19
|
+
number_field name: :min_max, min: 0, max: 100, step: 5 do
|
20
|
+
label 'Min/Max/Step'
|
21
|
+
hint 'Arrows will step in increments of 5'
|
22
|
+
end
|
23
|
+
blank
|
24
|
+
|
25
|
+
title 'Decimals'
|
26
|
+
number_field name: :decimal, min: 1.0, max: 100, step: 0.01 do
|
27
|
+
label 'Decimal'
|
28
|
+
hint 'Arrows will step in increments of .01'
|
29
|
+
end
|
30
|
+
blank
|
31
|
+
|
32
|
+
title 'With Leading Icon'
|
33
|
+
number_field name: :amount do
|
34
|
+
label 'Amount'
|
35
|
+
icon :attach_money, position: :left
|
36
|
+
end
|
37
|
+
|
38
|
+
title 'With Trailing Icon'
|
39
|
+
number_field name: :amount2 do
|
40
|
+
label 'Amount'
|
41
|
+
icon :attach_money, position: :right
|
42
|
+
end
|
43
|
+
blank
|
44
|
+
|
45
|
+
title 'Read Only'
|
46
|
+
number_field name: :readonly, readonly: true do
|
47
|
+
label 'Amount'
|
48
|
+
value '500'
|
49
|
+
end
|
50
|
+
|
51
|
+
attach :code, file: __FILE__
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:padding) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
|
6
|
+
attach :top_nav
|
7
|
+
attach :component_drawer
|
8
|
+
page_title 'Padding'
|
9
|
+
|
10
|
+
indented_grid do
|
11
|
+
|
12
|
+
headline 'Padding'
|
13
|
+
text %(Block containers (grid/column, content, card) have default padding that can be modified.)
|
14
|
+
blank
|
15
|
+
text %(There are four levels of padding: 0 = off, 1 = gutter_width/4, 2 = gutter_width/2, 3 = gutter_width)
|
16
|
+
text %(You can also specify :all, :none or true (same as :all) and false (same as :none))
|
17
|
+
text %(Each block container defines its default values (top,bottom,right,left) padding differently.)
|
18
|
+
|
19
|
+
|
20
|
+
blank
|
21
|
+
title 'Grid padding'
|
22
|
+
text %(Top level grid padding by default is level 3: top3, right3, bottom3, left3.
|
23
|
+
Specifying padding: top is the same as padding: top3.)
|
24
|
+
text %(Column padding defaults to :none. The definition of column padding for [top,bottom,right,left] is equal to [top2,right2,bottom2,left2])
|
25
|
+
end
|
26
|
+
grid color: :darkgrey do
|
27
|
+
column 12, color: :lightgray do
|
28
|
+
body 'top level default grid padding'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
indented_grid do
|
32
|
+
blank
|
33
|
+
text %(A grid nested in another grid turns off padding for the right and left by default: top3, right0, bottom3: left0.)
|
34
|
+
|
35
|
+
grid color: :darkgrey do
|
36
|
+
column 12, color: :lightgray do
|
37
|
+
body 'nested default level grid padding'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
blank
|
41
|
+
text %(You can control the padding for each dimension.)
|
42
|
+
|
43
|
+
grid color: :darkgrey, padding: [:left0, :top3, :bottom2, :right1] do
|
44
|
+
column 12, color: :lightgray, padding: [:left3, :top1, :bottom2, :right0] do
|
45
|
+
body 'Custom padding (view source to see this)'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
blank
|
49
|
+
|
50
|
+
title 'Content padding'
|
51
|
+
text %(A content block by default has `:none` padding. The default level is level 2. So :all is equal to [:top2,:right2,:bottom2,:left2])
|
52
|
+
grid color: :darkgrey, padding: :none do
|
53
|
+
column 12, color: :lightgray, padding: :none do
|
54
|
+
content do
|
55
|
+
body 'No padding'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
blank
|
60
|
+
grid color: :darkgrey, padding: :none do
|
61
|
+
column 12, color: :lightgray, padding: :none do
|
62
|
+
content padding: :all do
|
63
|
+
body 'default :all padding is level 2'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
blank
|
68
|
+
grid color: :darkgrey, padding: :none do
|
69
|
+
column 12, color: :lightgray, padding: :none do
|
70
|
+
content padding: [:top3, :bottom0, :right1, :left2] do
|
71
|
+
body 'Custom padding'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
blank
|
76
|
+
title 'Card padding'
|
77
|
+
text %(A card defaults its padding to `:all`. The default level is level 2. So :all is equal to [:top2,:right2,:bottom2,:left2])
|
78
|
+
grid color: :darkgrey, padding: :none do
|
79
|
+
column 12, color: :lightgray, padding: :none do
|
80
|
+
card do
|
81
|
+
body 'Defaults to :all, level2'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
blank
|
86
|
+
grid color: :darkgrey, padding: :none do
|
87
|
+
column 12, color: :lightgray, padding: :none do
|
88
|
+
card padding: [:top3, :bottom0, :right1, :left2] do
|
89
|
+
body 'Custom padding'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
blank
|
94
|
+
attach :code, file: __FILE__
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require_relative '../helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:progress) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
attach :component_drawer
|
7
|
+
page_title 'Progress'
|
8
|
+
|
9
|
+
indented_grid do
|
10
|
+
body <<~DOC
|
11
|
+
Linear Progress bars have special placement and event handling behavior.
|
12
|
+
|
13
|
+
They automatically show themselves when an posts/updates/deletes action starts and hide themselves when an it finishes.
|
14
|
+
|
15
|
+
All you need to do is place your progress bars where you want them. (You can have more than one.)
|
16
|
+
|
17
|
+
The following components allow progress bars: `cards`, `content`, `dialog`, and `grid or column`.
|
18
|
+
|
19
|
+
You can position them on top and/or on the bottom using `position: :top|:bottom|:both`
|
20
|
+
DOC
|
21
|
+
title 'Card'
|
22
|
+
card do
|
23
|
+
progress
|
24
|
+
text 'card progress'
|
25
|
+
end
|
26
|
+
|
27
|
+
title 'Content'
|
28
|
+
content do
|
29
|
+
text 'content progress - top and bottom'
|
30
|
+
progress position: :both
|
31
|
+
end
|
32
|
+
|
33
|
+
title 'Dialog'
|
34
|
+
dialog id: :progress_dlg do
|
35
|
+
text 'dialog progress - bottom'
|
36
|
+
progress position: :bottom
|
37
|
+
actions do
|
38
|
+
button :start do
|
39
|
+
event :click do
|
40
|
+
posts '/_slow_', seconds: 5
|
41
|
+
snackbar 'done'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
button :open do
|
47
|
+
event :click do
|
48
|
+
dialog :progress_dlg
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
title 'Grid'
|
53
|
+
grid do
|
54
|
+
progress
|
55
|
+
column 6 do
|
56
|
+
progress position: :bottom
|
57
|
+
text 'column progress bottom'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
button :start do
|
62
|
+
event :click do
|
63
|
+
posts '/_slow_', seconds: 5
|
64
|
+
snackbar 'done'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
attach :code, file: __FILE__
|
70
|
+
end
|
71
|
+
end
|
@@ -7,9 +7,9 @@ Voom::Presenters.define(:selects) do
|
|
7
7
|
page_title 'Select Fields'
|
8
8
|
|
9
9
|
indented_grid do
|
10
|
-
|
11
|
-
select do
|
12
|
-
label '
|
10
|
+
content do
|
11
|
+
select full_width: false do
|
12
|
+
label 'Default (outlined) style ...'
|
13
13
|
option do
|
14
14
|
value 'value1'
|
15
15
|
text 'First value'
|
@@ -18,10 +18,49 @@ Voom::Presenters.define(:selects) do
|
|
18
18
|
value 'value2'
|
19
19
|
text 'Second value'
|
20
20
|
end
|
21
|
-
event :change do
|
22
|
-
|
21
|
+
# event :change do
|
22
|
+
# snackbar 'item changed'
|
23
|
+
# end
|
24
|
+
end
|
25
|
+
blank
|
26
|
+
|
27
|
+
select outlined: false do
|
28
|
+
label 'Alternate style ...'
|
29
|
+
option do
|
30
|
+
value 'value1'
|
31
|
+
text 'First value'
|
23
32
|
end
|
33
|
+
option do
|
34
|
+
value 'value2'
|
35
|
+
text 'Second value'
|
36
|
+
end
|
37
|
+
# event :change do
|
38
|
+
# snackbar 'item changed'
|
39
|
+
# end
|
24
40
|
end
|
41
|
+
|
42
|
+
blank
|
43
|
+
|
44
|
+
select full_width: false do
|
45
|
+
icon :filter_list
|
46
|
+
label 'Default (outlined) style ...'
|
47
|
+
option disabled: true do
|
48
|
+
text 'Pick One'
|
49
|
+
end
|
50
|
+
option do
|
51
|
+
value 'value1'
|
52
|
+
text ' One value'
|
53
|
+
end
|
54
|
+
option do
|
55
|
+
value 'value2'
|
56
|
+
text ' Second value'
|
57
|
+
end
|
58
|
+
event :change do
|
59
|
+
snackbar 'item changed'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
25
64
|
end
|
26
65
|
|
27
66
|
attach :code, file: __FILE__
|
@@ -28,6 +28,11 @@ Voom::Presenters.define(:sliders) do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
title 'Disabled slider'
|
32
|
+
slider disabled: true, value_min: 0, value_max: 100 do
|
33
|
+
value 42
|
34
|
+
end
|
35
|
+
|
31
36
|
button 'Show hidden slider', type: :flat, color: :secondary do
|
32
37
|
event :click do
|
33
38
|
toggle_visibility :hidden_slider, action: :show
|
@@ -42,6 +42,21 @@ Voom::Presenters.define(:tab_bars) do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
|
+
separator
|
46
|
+
|
47
|
+
title 'Content is automatically displayed/hidden'
|
48
|
+
tab_bar do
|
49
|
+
tab 'One', selected: true do
|
50
|
+
heading3 'Tab 1'
|
51
|
+
end
|
52
|
+
tab 'Two' do
|
53
|
+
heading3 'Tab 2'
|
54
|
+
end
|
55
|
+
tab 'Three' do
|
56
|
+
heading3 'Tab 3'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
45
60
|
end
|
46
61
|
|
47
62
|
attach :code, file: __FILE__
|
@@ -27,61 +27,72 @@ Voom::Presenters.define(:tables) do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
indented_grid do
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
column driver.team
|
44
|
-
column driver.country
|
45
|
-
end
|
46
|
-
end
|
47
|
-
pagination page_size: 5,
|
48
|
-
total: drivers.count,
|
49
|
-
current_page: context.fetch(:page){ 1 },
|
50
|
-
replace_id: 'drivers',
|
51
|
-
replace_presenter: 'drivers_presenter'
|
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
|
52
43
|
end
|
53
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'
|
54
50
|
end
|
55
51
|
end
|
56
52
|
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
grid padding: :top3 do
|
67
|
+
column 6 do
|
68
|
+
form do
|
60
69
|
title 'Selectable (with form)'
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
72
83
|
end
|
73
84
|
end
|
74
85
|
end
|
75
|
-
end
|
76
|
-
column 12 do
|
77
86
|
button 'SUBMIT', type: :raised do
|
78
87
|
event :click do
|
79
|
-
replaces
|
88
|
+
replaces :context_list, :context_list
|
80
89
|
end
|
81
90
|
end
|
82
|
-
attach :context_list
|
83
91
|
end
|
84
92
|
end
|
93
|
+
column 6 do
|
94
|
+
attach :context_list
|
95
|
+
end
|
85
96
|
end
|
86
97
|
|
87
98
|
grid wide: true do
|
@@ -9,23 +9,30 @@ Voom::Presenters.define(:text_areas) do
|
|
9
9
|
indented_grid do
|
10
10
|
headline 'Multiple line'
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
15
34
|
end
|
16
35
|
|
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' do
|
24
|
-
label 'Rich Text Area'
|
25
|
-
hint 'Default is full width and 25 rows'
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
36
|
attach :code, file: __FILE__
|
30
37
|
end
|
31
|
-
end
|
38
|
+
end
|