voom-presenters 0.1.13 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +186 -0
- data/Gemfile.lock +37 -38
- data/HISTORY.md +61 -0
- data/README.md +23 -1
- data/app/demo/components/chips.pom +6 -0
- data/app/demo/components/{forms.pom → content.pom} +3 -3
- data/app/demo/components/date_fields.pom +1 -1
- data/app/demo/components/datetime_fields.pom +6 -0
- data/app/demo/components/drawers.pom +1 -1
- data/app/demo/components/file_inputs.pom +16 -0
- data/app/demo/components/footers.pom +1 -1
- data/app/demo/components/google_maps.pom +17 -0
- data/app/demo/components/headers.pom +1 -1
- data/app/demo/components/layouts.pom +36 -4
- data/app/demo/components/lists.pom +25 -0
- data/app/demo/components/nav/menu.pom +9 -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/sliders.pom +49 -0
- data/app/demo/components/snackbar.pom +10 -0
- data/app/demo/components/steppers.pom +178 -0
- data/app/demo/components/tab_bars.pom +51 -0
- data/app/demo/components/tables.pom +85 -13
- data/app/demo/components/text_areas.pom +13 -0
- data/app/demo/components/text_fields.pom +20 -8
- data/app/demo/components/toggles.pom +50 -14
- data/app/demo/components/tooltips.pom +2 -6
- data/app/demo/events/actions/clear.pom +23 -0
- data/app/demo/events/actions/loads.pom +16 -6
- data/app/demo/events/actions/posts.pom +1 -1
- data/app/demo/events/actions/toggle_visiblity.pom +4 -3
- data/app/demo/events/nav/drawer.pom +2 -2
- data/app/demo/events/tagged_input.pom +37 -0
- data/app/demo/hello_world.pom +3 -0
- data/app/demo/markdown.pom +1 -0
- data/app/demo/namespaces.pom +89 -0
- data/app/demo/nav/top_nav.pom +12 -0
- data/app/demo/patterns.pom +19 -0
- data/app/demo/patterns/search_select.pom +104 -0
- data/app/demo/shared/context_list.pom +1 -1
- data/app/demo/styles.pom +21 -11
- data/component-status.yml +11 -11
- data/config.ru +2 -1
- data/lib/voom/container_methods.rb +1 -1
- data/lib/voom/presenters-engine.rb +29 -26
- data/lib/voom/presenters.rb +15 -9
- data/lib/voom/presenters/api/app.rb +18 -5
- data/lib/voom/presenters/api/router.rb +11 -49
- data/lib/voom/presenters/demo/echo.rb +5 -0
- data/lib/voom/presenters/dsl.rb +10 -4
- data/lib/voom/presenters/dsl/components/actions/base.rb +37 -0
- data/lib/voom/presenters/dsl/components/actions/clear.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/deletes.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/dialog.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/loads.rb +32 -0
- data/lib/voom/presenters/dsl/components/actions/navigates.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/posts.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/remove.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/replaces.rb +25 -0
- data/lib/voom/presenters/dsl/components/actions/snackbar.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/stepper.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/toggle_visibility.rb +17 -0
- data/lib/voom/presenters/dsl/components/actions/updates.rb +17 -0
- data/lib/voom/presenters/dsl/components/avatar.rb +4 -5
- data/lib/voom/presenters/dsl/components/badge.rb +1 -1
- data/lib/voom/presenters/dsl/components/base.rb +20 -11
- data/lib/voom/presenters/dsl/components/button.rb +12 -10
- data/lib/voom/presenters/dsl/components/card.rb +18 -19
- data/lib/voom/presenters/dsl/components/checkbox.rb +3 -1
- data/lib/voom/presenters/dsl/components/chip.rb +9 -10
- data/lib/voom/presenters/dsl/components/content.rb +21 -11
- data/lib/voom/presenters/dsl/components/date_field.rb +1 -1
- data/lib/voom/presenters/dsl/components/datetime_base.rb +1 -2
- data/lib/voom/presenters/dsl/components/datetime_field.rb +1 -1
- data/lib/voom/presenters/dsl/components/dialog.rb +10 -6
- data/lib/voom/presenters/dsl/components/drawer.rb +6 -4
- data/lib/voom/presenters/dsl/components/event.rb +55 -39
- data/lib/voom/presenters/dsl/components/event_base.rb +2 -2
- data/lib/voom/presenters/dsl/components/expansion_panel.rb +5 -5
- data/lib/voom/presenters/dsl/components/file_input.rb +22 -0
- data/lib/voom/presenters/dsl/components/footer.rb +1 -1
- data/lib/voom/presenters/dsl/components/form.rb +17 -15
- data/lib/voom/presenters/dsl/components/google_map.rb +40 -0
- data/lib/voom/presenters/dsl/components/grid.rb +58 -18
- data/lib/voom/presenters/dsl/components/header.rb +2 -5
- data/lib/voom/presenters/dsl/components/hidden_field.rb +2 -2
- data/lib/voom/presenters/dsl/components/icon.rb +4 -5
- data/lib/voom/presenters/dsl/components/icon_base.rb +3 -3
- data/lib/voom/presenters/dsl/components/icon_toggle.rb +2 -2
- data/lib/voom/presenters/dsl/components/image.rb +3 -3
- data/lib/voom/presenters/dsl/components/input.rb +2 -2
- data/lib/voom/presenters/dsl/components/list.rb +12 -10
- data/lib/voom/presenters/dsl/components/lists/action.rb +8 -9
- data/lib/voom/presenters/dsl/components/lists/actions.rb +8 -8
- data/lib/voom/presenters/dsl/components/lists/header.rb +2 -2
- data/lib/voom/presenters/dsl/components/lists/line.rb +14 -17
- data/lib/voom/presenters/dsl/components/lists/separator.rb +2 -2
- data/lib/voom/presenters/dsl/components/menu.rb +10 -12
- data/lib/voom/presenters/dsl/components/mixins/attaches.rb +9 -3
- data/lib/voom/presenters/dsl/components/mixins/avatar.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/buttons.rb +1 -1
- data/lib/voom/presenters/dsl/components/mixins/chips.rb +1 -2
- data/lib/voom/presenters/dsl/components/mixins/common.rb +20 -14
- 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 +1 -2
- data/lib/voom/presenters/dsl/components/mixins/event.rb +3 -3
- 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/menus.rb +1 -1
- 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 +15 -0
- data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +5 -3
- data/lib/voom/presenters/dsl/components/mixins/toggles.rb +1 -4
- data/lib/voom/presenters/dsl/components/mixins/tooltips.rb +0 -1
- data/lib/voom/presenters/dsl/components/mixins/typography.rb +43 -13
- data/lib/voom/presenters/dsl/components/page.rb +0 -1
- data/lib/voom/presenters/dsl/components/radio_button.rb +1 -1
- data/lib/voom/presenters/dsl/components/rich_text_area.rb +26 -0
- data/lib/voom/presenters/dsl/components/select.rb +4 -5
- data/lib/voom/presenters/dsl/components/slider.rb +39 -0
- data/lib/voom/presenters/dsl/components/snackbar.rb +2 -2
- data/lib/voom/presenters/dsl/components/stepper.rb +106 -0
- data/lib/voom/presenters/dsl/components/switch.rb +1 -1
- data/lib/voom/presenters/dsl/components/tab_bar.rb +53 -0
- data/lib/voom/presenters/dsl/components/table.rb +99 -27
- data/lib/voom/presenters/dsl/components/text_area.rb +4 -3
- data/lib/voom/presenters/dsl/components/text_field.rb +8 -12
- data/lib/voom/presenters/dsl/components/time_field.rb +1 -1
- data/lib/voom/presenters/dsl/components/toggle_base.rb +2 -2
- data/lib/voom/presenters/dsl/components/tooltip.rb +1 -2
- data/lib/voom/presenters/dsl/components/typography.rb +4 -5
- data/lib/voom/presenters/dsl/definer.rb +2 -2
- data/lib/voom/presenters/dsl/definition.rb +6 -4
- data/lib/voom/presenters/dsl/user_interface.rb +17 -21
- data/lib/voom/presenters/errors/parameter_validation.rb +1 -1
- data/lib/voom/presenters/helpers.rb +5 -5
- data/lib/voom/presenters/helpers/date.rb +3 -3
- data/lib/voom/presenters/helpers/rails.rb +7 -2
- data/lib/voom/presenters/helpers/rails/model_table.rb +14 -6
- data/lib/voom/presenters/helpers/route.rb +6 -0
- data/lib/voom/presenters/helpers/time.rb +1 -1
- data/lib/voom/presenters/namespace.rb +12 -0
- data/lib/voom/presenters/settings.rb +58 -37
- data/lib/voom/presenters/version.rb +1 -1
- data/lib/voom/presenters/web_client/app.rb +50 -20
- data/lib/voom/presenters/web_client/markdown_render.rb +24 -11
- data/lib/voom/presenters/web_client/router.rb +17 -52
- data/lib/voom/serializer.rb +2 -2
- data/lib/voom/trace.rb +1 -1
- data/presenters.gemspec +2 -1
- data/public/style-bundle.js +2 -2
- data/scripts/bump.sh +1 -0
- data/scripts/changelog.sh +5 -0
- data/scripts/deploy-demo.sh +1 -0
- data/scripts/release.sh +1 -1
- data/scripts/tag.sh +5 -0
- data/views/mdc/.babelrc +8 -0
- data/views/mdc/.eslintrc.yml +23 -0
- data/views/mdc/assets/js/app.js +19 -6
- data/views/mdc/assets/js/components/base-component.js +25 -2
- data/views/mdc/assets/js/components/base-container.js +47 -0
- data/views/mdc/assets/js/components/button.js +3 -10
- data/views/mdc/assets/js/components/cards.js +11 -0
- data/views/mdc/assets/js/components/checkboxes.js +30 -7
- data/views/mdc/assets/js/components/chips.js +38 -5
- data/views/mdc/assets/js/components/content.js +13 -0
- data/views/mdc/assets/js/components/data-tables.js +38 -0
- data/views/mdc/assets/js/components/datetime.js +61 -21
- data/views/mdc/assets/js/components/dialogs.js +25 -19
- data/views/mdc/assets/js/components/events.js +13 -3
- data/views/mdc/assets/js/components/events/base.js +13 -3
- data/views/mdc/assets/js/components/events/errors.js +1 -1
- data/views/mdc/assets/js/components/events/posts.js +53 -13
- data/views/mdc/assets/js/components/events/removes.js +20 -0
- data/views/mdc/assets/js/components/events/replaces.js +35 -36
- data/views/mdc/assets/js/components/events/stepper.js +23 -0
- data/views/mdc/assets/js/components/events/toggle_visibility.js +15 -11
- data/views/mdc/assets/js/components/file-inputs.js +29 -0
- data/views/mdc/assets/js/components/forms.js +8 -59
- data/views/mdc/assets/js/components/grid.js +20 -0
- data/views/mdc/assets/js/components/hidden-fields.js +33 -0
- data/views/mdc/assets/js/components/icon-toggles.js +7 -14
- data/views/mdc/assets/js/components/initialize.js +20 -1
- data/views/mdc/assets/js/components/lists.js +1 -1
- data/views/mdc/assets/js/components/menus.js +12 -13
- data/views/mdc/assets/js/components/mixins/visibility-observer.js +34 -0
- data/views/mdc/assets/js/components/radios.js +39 -0
- data/views/mdc/assets/js/components/rich-text-area.js +43 -0
- data/views/mdc/assets/js/components/selects.js +24 -23
- data/views/mdc/assets/js/components/sliders.js +56 -0
- data/views/mdc/assets/js/components/snackbar.js +14 -23
- data/views/mdc/assets/js/components/steppers.js +48 -0
- data/views/mdc/assets/js/components/switches.js +24 -23
- data/views/mdc/assets/js/components/tab-bars.js +14 -0
- data/views/mdc/assets/js/components/text-fields.js +37 -35
- 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/scss/app.scss +11 -3
- data/views/mdc/assets/scss/components/button.scss +17 -2
- data/views/mdc/assets/scss/components/card.scss +8 -3
- data/views/mdc/assets/scss/components/checkbox.scss +0 -4
- data/views/mdc/assets/scss/components/content.scss +11 -0
- data/views/mdc/assets/scss/components/data-table.scss +80 -0
- data/views/mdc/assets/scss/components/datetime.scss +6 -0
- data/views/mdc/assets/scss/components/fab.scss +2 -1
- data/views/mdc/assets/scss/components/file-input.scss +22 -0
- data/views/mdc/assets/scss/components/grid.scss +59 -3
- data/views/mdc/assets/scss/components/image.scss +6 -0
- data/views/mdc/assets/scss/components/list.scss +13 -0
- data/views/mdc/assets/scss/components/menu.scss +1 -0
- data/views/mdc/assets/scss/components/radio.scss +4 -0
- data/views/mdc/assets/scss/components/rich-text-area.scss +37 -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 +4 -5
- data/views/mdc/assets/scss/components/tab-bars.scss +4 -0
- data/views/mdc/assets/scss/components/textfield.scss +8 -1
- data/views/mdc/assets/scss/components/typography.scss +4 -0
- data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +2 -2
- data/views/mdc/assets/scss/components/vendor/quill.snow.css +945 -0
- data/views/mdc/assets/scss/styles.scss +3 -2
- data/views/mdc/assets/scss/theme.scss +6 -0
- data/views/mdc/body/header.erb +1 -0
- data/views/mdc/body/snackbar.erb +1 -1
- data/views/mdc/components/actions/clear.rb +11 -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 +11 -0
- data/views/mdc/components/actions/navigates.rb +11 -0
- data/views/mdc/components/actions/post.rb +17 -0
- data/views/mdc/components/actions/remove.rb +10 -0
- data/views/mdc/components/actions/replaces.rb +12 -0
- data/views/mdc/components/actions/snackbar.rb +10 -0
- data/views/mdc/components/actions/stepper.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/button.erb +9 -6
- data/views/mdc/components/buttons/button.erb +10 -5
- data/views/mdc/components/buttons/fab.erb +8 -2
- data/views/mdc/components/buttons/icon.erb +9 -2
- data/views/mdc/components/buttons/image.erb +9 -4
- data/views/mdc/components/{display.erb → caption.erb} +0 -0
- data/views/mdc/components/card.erb +6 -3
- data/views/mdc/components/checkbox.erb +21 -9
- data/views/mdc/components/chip.erb +12 -3
- data/views/mdc/components/content.erb +6 -1
- data/views/mdc/components/datetime.erb +21 -13
- data/views/mdc/components/dialog.erb +4 -1
- data/views/mdc/components/event.erb +5 -9
- data/views/mdc/components/file_input.erb +13 -0
- data/views/mdc/components/form.erb +19 -5
- data/views/mdc/components/google_map.erb +9 -0
- data/views/mdc/components/grid.erb +18 -4
- data/views/mdc/components/headline.erb +2 -0
- data/views/mdc/components/hidden_field.erb +6 -1
- data/views/mdc/components/icon_toggle.erb +1 -1
- data/views/mdc/components/list.erb +5 -2
- data/views/mdc/components/list/actions/switch.erb +1 -1
- data/views/mdc/components/list/line.erb +7 -6
- data/views/mdc/components/menu.erb +8 -12
- data/views/mdc/components/{subheading.erb → overline.erb} +0 -0
- data/views/mdc/components/radio_button.erb +20 -10
- data/views/mdc/components/rich_text_area.erb +19 -0
- data/views/mdc/components/select.erb +7 -3
- data/views/mdc/components/slider.erb +41 -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 +27 -12
- data/views/mdc/components/tab_bar.erb +29 -0
- data/views/mdc/components/table.erb +4 -2
- data/views/mdc/components/table/checkbox.erb +17 -0
- data/views/mdc/components/table/header.erb +13 -4
- data/views/mdc/components/table/pagination.erb +14 -23
- data/views/mdc/components/table/row.erb +3 -1
- data/views/mdc/components/text_area.erb +17 -7
- data/views/mdc/components/text_field.erb +31 -13
- data/views/mdc/components/typography.erb +2 -2
- data/views/mdc/layout.erb +33 -31
- data/views/mdc/package-lock.json +11019 -6996
- data/views/mdc/package.json +46 -27
- data/views/mdc/webpack.config.js +1 -0
- metadata +112 -13
- data/app/demo/events/actions/autocomplete.pom +0 -32
- data/lib/voom/presenters/dsl/components/action.rb +0 -35
- data/views/mdc/assets/js/components/events/autocomplete.js +0 -96
- data/views/mdc/assets/js/material.js +0 -3996
- data/views/mdc/assets/scss/components/table-pagination.scss +0 -65
- data/views/mdc/components/modal.erb +0 -15
- data/views/mdc/components/static.erb +0 -7
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'voom/presenters/dsl/components/actions/base'
|
2
|
+
|
3
|
+
module Voom
|
4
|
+
module Presenters
|
5
|
+
module DSL
|
6
|
+
module Components
|
7
|
+
module Actions
|
8
|
+
class ToggleVisibility < Actions::Base
|
9
|
+
def initialize(**attribs_, &block)
|
10
|
+
super(type: :toggle_visibility, **attribs_, &block)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'voom/presenters/dsl/components/actions/base'
|
2
|
+
|
3
|
+
module Voom
|
4
|
+
module Presenters
|
5
|
+
module DSL
|
6
|
+
module Components
|
7
|
+
module Actions
|
8
|
+
class Updates < Actions::Base
|
9
|
+
def initialize(**attribs_, &block)
|
10
|
+
super(type: :update, **attribs_, &block)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'voom/presenters/dsl/components/event_base'
|
2
|
+
require 'voom/presenters/dsl/components/mixins/event'
|
3
|
+
require 'voom/presenters/dsl/components/mixins/tooltips'
|
4
4
|
|
5
5
|
module Voom
|
6
6
|
module Presenters
|
@@ -12,8 +12,7 @@ module Voom
|
|
12
12
|
attr_accessor :avatar, :color, :size, :position
|
13
13
|
|
14
14
|
def initialize(**attribs_, &block)
|
15
|
-
super(type: :avatar,
|
16
|
-
**attribs_, &block)
|
15
|
+
super(type: :avatar, **attribs_, &block)
|
17
16
|
@avatar = attribs.delete(:avatar)
|
18
17
|
@color = attribs.delete(:color)
|
19
18
|
@size = attribs.delete(:size)
|
@@ -1,9 +1,10 @@
|
|
1
|
-
require_relative '../lockable'
|
2
|
-
require_relative '../../../serializer'
|
3
|
-
require_relative '../../../trace'
|
4
|
-
require_relative 'mixins/yield_to'
|
5
1
|
require 'securerandom'
|
6
2
|
|
3
|
+
require 'voom/serializer'
|
4
|
+
require 'voom/trace'
|
5
|
+
require 'voom/presenters/dsl/lockable'
|
6
|
+
require 'voom/presenters/dsl/components/mixins/yield_to'
|
7
|
+
|
7
8
|
module Voom
|
8
9
|
module Presenters
|
9
10
|
module DSL
|
@@ -18,16 +19,15 @@ module Voom
|
|
18
19
|
include Trace
|
19
20
|
include Mixins::YieldTo
|
20
21
|
|
21
|
-
attr_reader :type, :id, :
|
22
|
-
|
23
|
-
alias params context
|
22
|
+
attr_reader :type, :id, :tag, :attributes
|
23
|
+
|
24
24
|
alias attribs attributes
|
25
25
|
|
26
|
-
def initialize(type:, parent:, id: nil,
|
26
|
+
def initialize(type:, parent:, id: nil, tag: nil, **attributes, &block)
|
27
27
|
@id = h(id) || generate_id
|
28
|
+
@tag = tag
|
28
29
|
@type = h(type)
|
29
30
|
@parent = parent
|
30
|
-
@context = context
|
31
31
|
@attributes = escape(attributes)
|
32
32
|
@block = block
|
33
33
|
end
|
@@ -63,6 +63,16 @@ module Voom
|
|
63
63
|
@parent.send(:router)
|
64
64
|
end
|
65
65
|
|
66
|
+
def namespace
|
67
|
+
@parent.send(:namespace)
|
68
|
+
end
|
69
|
+
|
70
|
+
def context
|
71
|
+
@parent.send(:context)
|
72
|
+
end
|
73
|
+
alias params context
|
74
|
+
|
75
|
+
|
66
76
|
def yield_block
|
67
77
|
return @_yield_block_ if @_yield_block_
|
68
78
|
@parent.send(:yield_block)
|
@@ -74,9 +84,8 @@ module Voom
|
|
74
84
|
|
75
85
|
|
76
86
|
def default(key)
|
77
|
-
Settings.
|
87
|
+
Settings.default(type, key)
|
78
88
|
end
|
79
|
-
|
80
89
|
end
|
81
90
|
end
|
82
91
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'voom/presenters/dsl/components/mixins/common'
|
2
|
+
require 'voom/presenters/dsl/components/mixins/tooltips'
|
3
3
|
|
4
4
|
module Voom
|
5
5
|
module Presenters
|
@@ -10,40 +10,42 @@ module Voom
|
|
10
10
|
|
11
11
|
BUTTON_TYPES = %i(raised flat fab icon)
|
12
12
|
|
13
|
-
attr_accessor :text, :icon, :button_type, :color, :disabled, :size, :position
|
13
|
+
attr_accessor :text, :icon, :button_type, :color, :disabled, :size, :position, :full_width, :hidden
|
14
14
|
|
15
15
|
def initialize(type: nil, **attribs_, &block)
|
16
|
-
@button_type = h(type) || ((attribs_[:icon]
|
16
|
+
@button_type = h(type) || ((attribs_[:icon] && !attribs_[:text]) ? :icon : nil) || :flat
|
17
17
|
super(type: :button, **attribs_, &block)
|
18
18
|
self.icon(attribs.delete(:icon)) if attribs.key?(:icon)
|
19
19
|
@text = attribs.delete(:text)
|
20
20
|
@color = attribs.delete(:color)
|
21
|
-
@disabled = attribs.delete(:disabled) {
|
21
|
+
@disabled = attribs.delete(:disabled) {false}
|
22
|
+
@hidden = attribs.delete(:hidden) {false}
|
22
23
|
@size = attribs.delete(:size)
|
24
|
+
@full_width = attribs.delete(:full_width) {false}
|
23
25
|
@position = Array(attribs.delete(:position)).compact
|
24
26
|
expand!
|
25
27
|
@event_parent_id = self.parent(:form)&.id || id
|
26
28
|
end
|
27
29
|
|
28
|
-
def icon(icon=nil, **attribs, &block)
|
30
|
+
def icon(icon = nil, **attribs, &block)
|
29
31
|
return @icon if locked?
|
30
32
|
@icon = Components::Icon.new(parent: self, icon: icon,
|
31
|
-
context: context,
|
32
33
|
**attribs, &block)
|
33
34
|
|
34
35
|
end
|
35
36
|
|
36
|
-
def image(image=nil, **attribs, &block)
|
37
|
+
def image(image = nil, **attribs, &block)
|
37
38
|
return @image if locked?
|
38
|
-
@image = Components::Image.new(parent: self, image: image,
|
39
|
+
@image = Components::Image.new(parent: self, image: image, **attribs, &block)
|
39
40
|
end
|
40
41
|
|
41
42
|
def menu(**attributes, &block)
|
42
43
|
return @menu if locked?
|
43
|
-
@menu = Components::Menu.new(parent: self, position: menu_position,
|
44
|
+
@menu = Components::Menu.new(parent: self, position: menu_position, **attributes, &block)
|
44
45
|
end
|
45
46
|
|
46
47
|
private
|
48
|
+
|
47
49
|
def menu_position
|
48
50
|
position.include?(:right) ? :right : nil
|
49
51
|
end
|
@@ -1,14 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
require 'voom/presenters/dsl/components/menu'
|
2
|
+
require 'voom/presenters/dsl/components/typography'
|
3
|
+
require 'voom/presenters/dsl/components/mixins/common'
|
4
|
+
require 'voom/presenters/dsl/components/mixins/event'
|
5
|
+
require 'voom/presenters/dsl/components/mixins/attaches'
|
6
|
+
require 'voom/presenters/dsl/components/mixins/avatar'
|
7
|
+
require 'voom/presenters/dsl/components/mixins/text_fields'
|
8
|
+
require 'voom/presenters/dsl/components/mixins/icons'
|
9
|
+
require 'voom/presenters/dsl/components/mixins/selects'
|
10
|
+
require 'voom/presenters/dsl/components/mixins/snackbars'
|
11
|
+
require 'voom/presenters/dsl/components/mixins/date_time_fields'
|
12
|
+
require 'voom/presenters/dsl/components/mixins/chips'
|
12
13
|
|
13
14
|
module Voom
|
14
15
|
module Presenters
|
@@ -20,6 +21,7 @@ module Voom
|
|
20
21
|
include Mixins::TextFields
|
21
22
|
include Mixins::DateTimeFields
|
22
23
|
include Mixins::Icons
|
24
|
+
include Mixins::Selects
|
23
25
|
include Mixins::Snackbars
|
24
26
|
include Mixins::Chips
|
25
27
|
|
@@ -41,7 +43,6 @@ module Voom
|
|
41
43
|
def media(**attribs, &block)
|
42
44
|
return @media if locked?
|
43
45
|
@media = Media.new(parent: self,
|
44
|
-
context: context,
|
45
46
|
**attribs, &block)
|
46
47
|
end
|
47
48
|
|
@@ -71,33 +72,32 @@ module Voom
|
|
71
72
|
|
72
73
|
def title(*title, **attribs, &block)
|
73
74
|
return @title if locked?
|
74
|
-
@title = Typography.new(type: :
|
75
|
+
@title = Typography.new(type: :headline,
|
76
|
+
level: 6,
|
75
77
|
parent: self,
|
76
78
|
text: title,
|
77
|
-
context: context,
|
78
79
|
**attribs, &block)
|
79
80
|
end
|
80
81
|
|
81
82
|
def image(image=nil, **attribs, &block)
|
82
83
|
return @image if locked?
|
83
|
-
@image = Image.new(parent: self, image: image,
|
84
|
+
@image = Image.new(parent: self, image: image, **attribs, &block)
|
84
85
|
end
|
85
86
|
|
86
87
|
def button(icon=nil, **attributes, &block)
|
87
88
|
return @button if locked?
|
88
|
-
@button = Components::Button.new(icon: icon, position:[:top, :right], parent: self,
|
89
|
+
@button = Components::Button.new(icon: icon, position:[:top, :right], parent: self, **attributes, &block)
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
92
93
|
def text(*text, **attribs, &block)
|
93
94
|
self << Typography.new(type: :body,
|
94
|
-
parent: self, text: text,
|
95
|
+
parent: self, text: text, **attribs, &block)
|
95
96
|
end
|
96
97
|
|
97
98
|
def actions(**attribs, &block)
|
98
99
|
return @actions if locked?
|
99
100
|
@actions = Actions.new(parent: self,
|
100
|
-
context: context,
|
101
101
|
**attribs, &block)
|
102
102
|
end
|
103
103
|
|
@@ -112,7 +112,6 @@ module Voom
|
|
112
112
|
|
113
113
|
def button(text=nil, **options, &block)
|
114
114
|
@buttons << Components::Button.new(parent: self, text: text,
|
115
|
-
context: context,
|
116
115
|
**options, &block)
|
117
116
|
end
|
118
117
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
-
|
1
|
+
require 'voom/presenters/dsl/components/toggle_base'
|
2
2
|
|
3
3
|
module Voom
|
4
4
|
module Presenters
|
5
5
|
module DSL
|
6
6
|
module Components
|
7
7
|
class Checkbox < ToggleBase
|
8
|
+
attr_accessor :indeterminate
|
8
9
|
|
9
10
|
def initialize(**attribs_, &block)
|
10
11
|
super(type: :checkbox, **attribs_, &block)
|
12
|
+
@indeterminate = attribs.delete(:indeterminate) { false }
|
11
13
|
expand!
|
12
14
|
end
|
13
15
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'voom/presenters/dsl/components/icon_base'
|
2
|
+
require 'voom/presenters/dsl/components/mixins/event'
|
3
|
+
require 'voom/presenters/dsl/components/mixins/tooltips'
|
4
4
|
|
5
5
|
module Voom
|
6
6
|
module Presenters
|
@@ -8,40 +8,39 @@ module Voom
|
|
8
8
|
module Components
|
9
9
|
class Chip < EventBase
|
10
10
|
include Mixins::Tooltips
|
11
|
-
attr_reader :icons, :color
|
11
|
+
attr_reader :icons, :color, :name, :value
|
12
12
|
|
13
13
|
def initialize(**attribs_, &block)
|
14
14
|
super(type: :chip,
|
15
|
-
context: context,
|
16
15
|
**attribs_, &block)
|
17
16
|
@icons = []
|
18
17
|
self.text(attribs.delete(:text)) if attribs.key?(:text)
|
19
18
|
self.icon(attribs.delete(:icon)) if attribs.key?(:icon)
|
20
19
|
@color = attribs.delete(:color)
|
20
|
+
@name = attribs.delete(:name)
|
21
|
+
@value = attribs.delete(:value)
|
21
22
|
expand!
|
22
23
|
end
|
23
24
|
|
24
25
|
def text(*text, **attribs, &block)
|
25
26
|
return @text if locked?
|
26
|
-
@text = Components::Typography.new(parent: self, type: :text, text: text,
|
27
|
+
@text = Components::Typography.new(parent: self, type: :text, text: text, **attribs, &block)
|
27
28
|
end
|
28
29
|
|
29
30
|
def icon(icon=nil, **attribs, &block)
|
30
31
|
@icons << Icon.new(parent: self, icon: icon,
|
31
|
-
context: context,
|
32
32
|
**attribs, &block)
|
33
33
|
end
|
34
34
|
|
35
35
|
def menu(**attributes, &block)
|
36
36
|
return @menu if locked?
|
37
|
-
@menu = Components::Menu.new(parent: self,
|
37
|
+
@menu = Components::Menu.new(parent: self, **attributes, &block)
|
38
38
|
end
|
39
39
|
|
40
40
|
class Icon < Components::IconBase
|
41
41
|
|
42
42
|
def initialize(**attribs_, &block)
|
43
|
-
super(
|
44
|
-
**attribs_, &block)
|
43
|
+
super(**attribs_, &block)
|
45
44
|
@position = [:left] if position.empty?
|
46
45
|
expand!
|
47
46
|
end
|
@@ -1,12 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
require 'voom/presenters/dsl/components/menu'
|
2
|
+
require 'voom/presenters/dsl/components/mixins/common'
|
3
|
+
require 'voom/presenters/dsl/components/mixins/event'
|
4
|
+
require 'voom/presenters/dsl/components/mixins/attaches'
|
5
|
+
require 'voom/presenters/dsl/components/mixins/text_fields'
|
6
|
+
require 'voom/presenters/dsl/components/mixins/selects'
|
7
|
+
require 'voom/presenters/dsl/components/mixins/snackbars'
|
8
|
+
require 'voom/presenters/dsl/components/mixins/date_time_fields'
|
9
|
+
require 'voom/presenters/dsl/components/mixins/images'
|
10
|
+
require 'voom/presenters/dsl/components/mixins/steppers'
|
11
|
+
require 'voom/presenters/dsl/components/mixins/sliders'
|
12
|
+
require 'voom/presenters/dsl/components/mixins/chips'
|
13
|
+
require 'voom/presenters/dsl/components/mixins/icons'
|
14
|
+
require 'voom/presenters/dsl/components/mixins/dialogs'
|
10
15
|
|
11
16
|
module Voom
|
12
17
|
module Presenters
|
@@ -19,14 +24,19 @@ module Voom
|
|
19
24
|
include Mixins::DateTimeFields
|
20
25
|
include Mixins::Selects
|
21
26
|
include Mixins::Snackbars
|
22
|
-
include Mixins::
|
27
|
+
include Mixins::Steppers
|
28
|
+
include Mixins::Sliders
|
29
|
+
include Mixins::Chips
|
30
|
+
include Mixins::Icons
|
31
|
+
include Mixins::Dialogs
|
23
32
|
|
24
|
-
attr_reader :hidden, :components, :shows_errors
|
33
|
+
attr_reader :hidden, :float, :components, :shows_errors
|
25
34
|
|
26
35
|
def initialize(**attribs_, &block)
|
27
36
|
super(type: :content, **attribs_, &block)
|
28
37
|
@components = []
|
29
38
|
@hidden = attribs.delete(:hidden){false}
|
39
|
+
@float = attribs.delete(:float){false}
|
30
40
|
@shows_errors = attribs.delete(:shows_errors){false}
|
31
41
|
expand!
|
32
42
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'voom/presenters/dsl/components/text_field'
|
2
2
|
|
3
3
|
module Voom
|
4
4
|
module Presenters
|
@@ -26,7 +26,6 @@ module Voom
|
|
26
26
|
def clear_icon(icon=nil, **attribs, &block)
|
27
27
|
return @clear_icon if locked?
|
28
28
|
@clear_icon = icon ? Components::Icon.new(parent: self, icon: icon,
|
29
|
-
context: context,
|
30
29
|
**attribs, &block) : nil
|
31
30
|
end
|
32
31
|
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'voom/presenters/dsl/components/mixins/common'
|
2
|
+
require 'voom/presenters/dsl/components/mixins/attaches'
|
3
|
+
require 'voom/presenters/dsl/components/mixins/steppers'
|
4
|
+
require 'voom/presenters/dsl/components/mixins/sliders'
|
3
5
|
|
4
6
|
module Voom
|
5
7
|
module Presenters
|
@@ -8,6 +10,9 @@ module Voom
|
|
8
10
|
class Dialog < Base
|
9
11
|
include Mixins::Common
|
10
12
|
include Mixins::Attaches
|
13
|
+
include Mixins::Steppers
|
14
|
+
include Mixins::Sliders
|
15
|
+
|
11
16
|
attr_accessor :width, :height, :buttons, :components, :shows_errors
|
12
17
|
|
13
18
|
def initialize(**attribs_, &block)
|
@@ -24,25 +29,24 @@ module Voom
|
|
24
29
|
def title(*title, **options, &block)
|
25
30
|
return @title if locked?
|
26
31
|
@title = Components::Typography.new(parent: self, type: :title,
|
27
|
-
text: title,
|
32
|
+
text: title,
|
28
33
|
**options, &block)
|
29
34
|
end
|
30
35
|
|
31
36
|
def heading(*text, **options, &block)
|
32
37
|
components << Components::Typography.new(parent: self, type: :heading,
|
33
|
-
text: text,
|
38
|
+
text: text,
|
34
39
|
**options, &block)
|
35
40
|
end
|
36
41
|
|
37
42
|
def body(*text, **options, &block)
|
38
43
|
components << Components::Typography.new(parent: self, type: :body,
|
39
|
-
text: text,
|
44
|
+
text: text,
|
40
45
|
**options, &block)
|
41
46
|
end
|
42
47
|
|
43
48
|
def button(text=nil, **attribs, &block)
|
44
49
|
@buttons << Button.new(parent: self, text: text,
|
45
|
-
context: context,
|
46
50
|
**attribs, &block)
|
47
51
|
end
|
48
52
|
end
|