voom-presenters 0.2.0 → 2.1.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 +42 -0
- data/.gitignore +3 -2
- data/.releaserc +15 -0
- data/.ruby-version +2 -1
- data/CHANGELOG.md +71 -108
- data/CONTRIBUTING.md +60 -0
- data/Gemfile +14 -4
- data/Gemfile.lock +93 -46
- data/Procfile +1 -0
- data/README.md +48 -39
- 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/multi_selects.pom +29 -0
- data/app/demo/components/nav/menu.pom +39 -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 +45 -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/index.pom +5 -5
- data/app/demo/nav/top_nav.pom +10 -4
- 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/component-status.yml +15 -15
- data/config.ru +20 -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 +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/selects.rb +6 -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/multi_select.rb +56 -0
- 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 +18 -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 +3 -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 +10 -6
- data/public/bundle.css +18256 -0
- data/public/bundle.js +60106 -0
- data/public/img/demo/avatar.jpg +0 -0
- data/public/presenters/custom_css.css +26 -0
- data/public/wc.js +52861 -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 +54 -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/multi-select.js +75 -0
- data/views/mdc/assets/js/components/plugins.js +86 -0
- data/views/mdc/assets/js/components/progress.js +31 -0
- data/views/mdc/assets/js/components/radios.js +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 +13 -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/multi-select.scss +44 -0
- 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/multi_select.erb +33 -0
- 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 +2241 -1332
- data/views/mdc/package.json +47 -29
- data/views/mdc/web.erb +4 -0
- data/views/mdc/webpack.config.js +13 -1
- metadata +228 -32
- data/app/demo/component_status.pom +0 -76
- 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
@@ -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
|
@@ -13,10 +13,23 @@ Voom::Presenters.define(:text_fields) do
|
|
13
13
|
label 'Text...'
|
14
14
|
end
|
15
15
|
|
16
|
-
title '
|
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'
|
@@ -28,15 +41,6 @@ Voom::Presenters.define(:text_fields) do
|
|
28
41
|
hint 'Input should be a number!'
|
29
42
|
end
|
30
43
|
|
31
|
-
title 'With Errors'
|
32
|
-
text_field name: :guess_me do
|
33
|
-
label 'Guess a number...'
|
34
|
-
pattern /-?[0-9]*(\.[0-9]+)?/
|
35
|
-
value '7'
|
36
|
-
error 'Input is not the right number!'
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
44
|
title 'With Leading Icon'
|
41
45
|
text_field name: :numeric do
|
42
46
|
label 'Amount'
|
@@ -49,10 +53,32 @@ Voom::Presenters.define(:text_fields) do
|
|
49
53
|
icon :remove_red_eye
|
50
54
|
end
|
51
55
|
|
56
|
+
blank
|
57
|
+
card do
|
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
|
52
78
|
card do
|
53
79
|
headline 'Field Level Events'
|
54
80
|
title 'Text Fields'
|
55
|
-
body 'This demonstrates that a change event will submit the
|
81
|
+
body 'This demonstrates that a change event will submit the field value to the event action. '\
|
56
82
|
'This works with posts and replace actions'
|
57
83
|
text_field name: :myfield do
|
58
84
|
label 'Data to post'
|
@@ -62,7 +88,27 @@ Voom::Presenters.define(:text_fields) do
|
|
62
88
|
end
|
63
89
|
attach :context_list
|
64
90
|
end
|
65
|
-
|
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
|
+
|
66
112
|
attach :code, file: __FILE__
|
67
113
|
end
|
68
114
|
end
|
@@ -18,8 +18,22 @@ Voom::Presenters.define(:toggles) do
|
|
18
18
|
radio_button name: :radio, value: 'two', text: "Two"
|
19
19
|
|
20
20
|
title 'ICON TOGGLE'
|
21
|
-
|
22
|
-
icon_toggle
|
21
|
+
|
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
|
33
|
+
|
34
|
+
icon_toggle :toggle_off, on_icon: :toggle_on, disabled: true do
|
35
|
+
tooltip 'Im disabled'
|
36
|
+
end
|
23
37
|
|
24
38
|
title 'SWITCH'
|
25
39
|
grid do
|
@@ -29,12 +43,19 @@ Voom::Presenters.define(:toggles) do
|
|
29
43
|
end
|
30
44
|
grid do
|
31
45
|
column 6 do
|
32
|
-
switch
|
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
|
33
52
|
end
|
34
53
|
end
|
35
54
|
grid do
|
36
55
|
column 6 do
|
37
|
-
switch disabled: true
|
56
|
+
switch disabled: true do
|
57
|
+
tooltip 'I am disabled'
|
58
|
+
end
|
38
59
|
end
|
39
60
|
end
|
40
61
|
grid do
|
@@ -70,7 +91,17 @@ Voom::Presenters.define(:toggles) do
|
|
70
91
|
replaces :context_list, :context_list
|
71
92
|
end
|
72
93
|
end
|
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
|
73
103
|
|
104
|
+
blank
|
74
105
|
headline 'Posts in Form', level: 3
|
75
106
|
body 'This demonstrates that a change event on **ANY** form input will send all the form inputs to the event action. '\
|
76
107
|
'This works with posts and replace actions'
|
@@ -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
|
@@ -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
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'helpers/indented_grid'
|
2
|
+
|
3
|
+
Voom::Presenters.define(:custom_css) do
|
4
|
+
helpers Demo::Helpers::IndentedGrid
|
5
|
+
attach :top_nav
|
6
|
+
|
7
|
+
page_title 'Custom CSS' do
|
8
|
+
icon :settings
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
indented_grid do
|
13
|
+
headline 'CSS', level: 1
|
14
|
+
|
15
|
+
body 'You can define custom CSS globally and for each namespace/presenter.'
|
16
|
+
blank
|
17
|
+
title 'Global CSS'
|
18
|
+
body 'Define global css in the file `public/presenters/global.css`. Styles defined here will be loaded after default styling.'
|
19
|
+
|
20
|
+
title 'Presenter CSS'
|
21
|
+
body 'Each `[namespace/]presenter` can have custom css.'
|
22
|
+
body 'Simply create a file `public/presenters/[namspace]/[presenter].css` that matches your namespace and presenter.'
|
23
|
+
body 'This page has a presenter css file that is located at: `public/presenters/custom_css.css`'
|
24
|
+
|
25
|
+
title 'Settings'
|
26
|
+
body 'You can set the default path to load css from using the following:'
|
27
|
+
body <<-HTML
|
28
|
+
```
|
29
|
+
Voom::Presenters::Settings.configure do |config|
|
30
|
+
config.presenters.web_client.custom_css = 'public/presenters'
|
31
|
+
end
|
32
|
+
```
|
33
|
+
HTML
|
34
|
+
|
35
|
+
end
|
36
|
+
attach :code, file: __FILE__
|
37
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Voom::Presenters.define(:autocomplete_action) do
|
2
|
+
helpers Demo::Helpers::IndentedGrid
|
3
|
+
attach :top_nav
|
4
|
+
attach :events_drawer
|
5
|
+
|
6
|
+
indented_grid do
|
7
|
+
|
8
|
+
heading 'Autocomplete'
|
9
|
+
title 'Work In Progress'
|
10
|
+
body 'Provides a text field that when typed into will fetch a set of items to select base on what was typed.',
|
11
|
+
'Useful for providing search clues as the user types.',
|
12
|
+
'The search command returned should either be an array of text terms found,
|
13
|
+
or optionally an id that will also be submitted using the same name as plus `_id` as the text field.'
|
14
|
+
|
15
|
+
|
16
|
+
heading 'Search'
|
17
|
+
content id: :search_field do
|
18
|
+
text_field name: :search, full_width: false do
|
19
|
+
label 'Search Silicon Valley'
|
20
|
+
event :input do
|
21
|
+
autocomplete '/_search_'
|
22
|
+
end
|
23
|
+
event :change do
|
24
|
+
replaces :context_list, :context_list, title: 'Search Results'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
attach :context_list, title: 'Search Results'
|
29
|
+
end
|
30
|
+
|
31
|
+
attach :code, file: __FILE__
|
32
|
+
end
|
@@ -5,17 +5,19 @@ Voom::Presenters.define(:clear_action) do
|
|
5
5
|
|
6
6
|
indented_grid do
|
7
7
|
heading 'Clear'
|
8
|
-
body 'Allows you to clear
|
8
|
+
body 'Allows you to clear a component.',
|
9
9
|
'Takes the id of the element to clear.'
|
10
10
|
|
11
11
|
text_field id: :input_to_clear do
|
12
12
|
label 'Input to clear'
|
13
|
-
value '
|
13
|
+
value 'Value to clear'
|
14
14
|
end
|
15
15
|
|
16
|
+
subtitle 'Text to clear', id: :text_to_clear
|
17
|
+
|
16
18
|
button 'clear' do
|
17
19
|
event :click do
|
18
|
-
clear :input_to_clear
|
20
|
+
clear :input_to_clear, :text_to_clear
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -3,7 +3,9 @@ Voom::Presenters.define(:show_dialog) do
|
|
3
3
|
title "Show Dialog"
|
4
4
|
body 'This is an example and event opening a dialog'
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
actions do
|
7
|
+
button 'Close'
|
8
|
+
button 'Disabled action', disabled: true
|
9
|
+
end
|
8
10
|
end
|
9
11
|
end
|