arara 0.2.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 +7 -0
- data/README.md +38 -0
- data/Rakefile +32 -0
- data/app/assets/config/arara_manifest.js +1 -0
- data/app/assets/javascripts/arara.js +603 -0
- data/app/assets/stylesheets/arara/application.css +15 -0
- data/app/components/arara.rb +2 -0
- data/app/components/arara/base_component.rb +62 -0
- data/app/components/arara/button_component.html.erb +7 -0
- data/app/components/arara/button_component.rb +50 -0
- data/app/components/arara/card_action_buttons_component.html.erb +3 -0
- data/app/components/arara/card_action_buttons_component.rb +15 -0
- data/app/components/arara/card_action_icons_component.html.erb +3 -0
- data/app/components/arara/card_action_icons_component.rb +15 -0
- data/app/components/arara/card_actions_component.html.erb +3 -0
- data/app/components/arara/card_actions_component.rb +15 -0
- data/app/components/arara/card_component.html.erb +3 -0
- data/app/components/arara/card_component.rb +15 -0
- data/app/components/arara/card_media_component.html.erb +3 -0
- data/app/components/arara/card_media_component.rb +20 -0
- data/app/components/arara/card_media_content_component.html.erb +3 -0
- data/app/components/arara/card_media_content_component.rb +15 -0
- data/app/components/arara/card_primary_content_component.html.erb +3 -0
- data/app/components/arara/card_primary_content_component.rb +18 -0
- data/app/components/arara/checkbox_component.html.erb +22 -0
- data/app/components/arara/checkbox_component.rb +25 -0
- data/app/components/arara/chip_component.html.erb +13 -0
- data/app/components/arara/chip_component.rb +22 -0
- data/app/components/arara/chipset_component.html.erb +6 -0
- data/app/components/arara/chipset_component.rb +23 -0
- data/app/components/arara/data_table_body_cell_component.html.erb +3 -0
- data/app/components/arara/data_table_body_cell_component.rb +18 -0
- data/app/components/arara/data_table_body_checkbox_component.html.erb +11 -0
- data/app/components/arara/data_table_body_checkbox_component.rb +25 -0
- data/app/components/arara/data_table_body_component.html.erb +3 -0
- data/app/components/arara/data_table_body_component.rb +15 -0
- data/app/components/arara/data_table_body_row_component.html.erb +3 -0
- data/app/components/arara/data_table_body_row_component.rb +27 -0
- data/app/components/arara/data_table_component.html.erb +5 -0
- data/app/components/arara/data_table_component.rb +36 -0
- data/app/components/arara/data_table_header_cell_component.html.erb +3 -0
- data/app/components/arara/data_table_header_cell_component.rb +24 -0
- data/app/components/arara/data_table_header_checkbox_component.html.erb +11 -0
- data/app/components/arara/data_table_header_checkbox_component.rb +25 -0
- data/app/components/arara/data_table_header_component.html.erb +3 -0
- data/app/components/arara/data_table_header_component.rb +11 -0
- data/app/components/arara/data_table_header_row_component.html.erb +3 -0
- data/app/components/arara/data_table_header_row_component.rb +15 -0
- data/app/components/arara/dialog_button_component.html.erb +4 -0
- data/app/components/arara/dialog_button_component.rb +31 -0
- data/app/components/arara/dialog_component.html.erb +8 -0
- data/app/components/arara/dialog_component.rb +34 -0
- data/app/components/arara/dialog_content_component.html.erb +3 -0
- data/app/components/arara/dialog_content_component.rb +15 -0
- data/app/components/arara/dialog_footer_component.html.erb +3 -0
- data/app/components/arara/dialog_footer_component.rb +15 -0
- data/app/components/arara/dialog_title_component.html.erb +3 -0
- data/app/components/arara/dialog_title_component.rb +16 -0
- data/app/components/arara/elevation_component.html.erb +3 -0
- data/app/components/arara/elevation_component.rb +19 -0
- data/app/components/arara/fab_component.html.erb +13 -0
- data/app/components/arara/fab_component.rb +42 -0
- data/app/components/arara/fab_icon_component.html.erb +3 -0
- data/app/components/arara/fab_icon_component.rb +15 -0
- data/app/components/arara/form_builder.rb +142 -0
- data/app/components/arara/form_field_component.html.erb +3 -0
- data/app/components/arara/form_field_component.rb +15 -0
- data/app/components/arara/google_calendar/menu_item_component.html.erb +11 -0
- data/app/components/arara/google_calendar/menu_item_component.rb +34 -0
- data/app/components/arara/google_calendar/nav_bar_component.html.erb +176 -0
- data/app/components/arara/google_calendar/nav_bar_component.rb +6 -0
- data/app/components/arara/icon_button_component.html.erb +3 -0
- data/app/components/arara/icon_button_component.rb +42 -0
- data/app/components/arara/icon_toggle_component.html.erb +3 -0
- data/app/components/arara/icon_toggle_component.rb +18 -0
- data/app/components/arara/material_icon_component.html.erb +3 -0
- data/app/components/arara/material_icon_component.rb +18 -0
- data/app/components/arara/menu_component.html.erb +5 -0
- data/app/components/arara/menu_component.rb +19 -0
- data/app/components/arara/menu_divider_component.html.erb +1 -0
- data/app/components/arara/menu_divider_component.rb +19 -0
- data/app/components/arara/menu_item_component.html.erb +3 -0
- data/app/components/arara/menu_item_component.rb +22 -0
- data/app/components/arara/nav_bar_component.html.erb +293 -0
- data/app/components/arara/nav_bar_component.rb +7 -0
- data/app/components/arara/radio_button_component.html.erb +8 -0
- data/app/components/arara/radio_button_component.rb +35 -0
- data/app/components/arara/select_component.html.erb +22 -0
- data/app/components/arara/select_component.rb +27 -0
- data/app/components/arara/select_item_component.html.erb +3 -0
- data/app/components/arara/select_item_component.rb +45 -0
- data/app/components/arara/step_component.html.erb +27 -0
- data/app/components/arara/step_component.rb +100 -0
- data/app/components/arara/step_connector_component.html.erb +4 -0
- data/app/components/arara/step_connector_component.rb +31 -0
- data/app/components/arara/stepper_component.html.erb +3 -0
- data/app/components/arara/stepper_component.rb +20 -0
- data/app/components/arara/switch_component.html.erb +8 -0
- data/app/components/arara/switch_component.rb +35 -0
- data/app/components/arara/tags.rb +2 -0
- data/app/components/arara/tags/check_box.rb +63 -0
- data/app/components/arara/tags/chip_choice.rb +81 -0
- data/app/components/arara/tags/chipset.rb +39 -0
- data/app/components/arara/tags/country_select.rb +110 -0
- data/app/components/arara/tags/label.rb +78 -0
- data/app/components/arara/tags/password_field.rb +16 -0
- data/app/components/arara/tags/radio_button.rb +31 -0
- data/app/components/arara/tags/select.rb +120 -0
- data/app/components/arara/tags/text_area.rb +25 -0
- data/app/components/arara/tags/text_field.rb +31 -0
- data/app/components/arara/text_field_component.html.erb +47 -0
- data/app/components/arara/text_field_component.rb +101 -0
- data/app/components/arara/typography_component.html.erb +1 -0
- data/app/components/arara/typography_component.rb +51 -0
- data/app/controllers/arara/application_controller.rb +5 -0
- data/app/helpers/arara/application_helper.rb +4 -0
- data/app/javascript/arara/controllers/body_class_toggler_controller.js +20 -0
- data/app/javascript/arara/controllers/counter_controller.js +22 -0
- data/app/javascript/arara/controllers/demo_dialog_controller.js +24 -0
- data/app/javascript/arara/controllers/mdc_chip_set_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_data_table_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_form_field_controller.js +40 -0
- data/app/javascript/arara/controllers/mdc_icon_toggle_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_linear_progress_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_list_controller.js +23 -0
- data/app/javascript/arara/controllers/mdc_menu_controller.js +25 -0
- data/app/javascript/arara/controllers/mdc_ripple_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_select_controller.js +27 -0
- data/app/javascript/arara/controllers/mdc_slider_controller.js +21 -0
- data/app/javascript/arara/controllers/mdc_snackbar_controller.js +38 -0
- data/app/javascript/arara/controllers/mdc_switch_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_tab_bar_controller.js +18 -0
- data/app/javascript/arara/controllers/mdc_text_field_controller.js +35 -0
- data/app/javascript/arara/controllers/mdc_top_app_bar_controller.js +18 -0
- data/app/javascript/arara/controllers/rails_chip_set_choice_controller.js +31 -0
- data/app/javascript/arara/controllers/rails_chip_set_filter_controller.js +39 -0
- data/app/javascript/arara/controllers/remote_form_controller.js +79 -0
- data/app/javascript/arara/helpers/sum.js +5 -0
- data/app/javascript/arara/index.js +65 -0
- data/app/javascript/arara/scss/_material_design.scss +34 -0
- data/app/javascript/arara/scss/_tailwind.scss +4 -0
- data/app/javascript/arara/scss/arara.scss +5 -0
- data/app/javascript/arara/scss/material_design/_custom.scss +61 -0
- data/app/javascript/arara/scss/tailwind/_ripple_workaround.scss +22 -0
- data/app/jobs/arara/application_job.rb +4 -0
- data/app/mailers/arara/application_mailer.rb +6 -0
- data/app/models/arara/application_record.rb +5 -0
- data/app/views/layouts/arara/application.html.erb +15 -0
- data/config/routes.rb +2 -0
- data/lib/arara.rb +5 -0
- data/lib/arara/engine.rb +7 -0
- data/lib/arara/version.rb +3 -0
- data/lib/tasks/arara_tasks.rake +4 -0
- metadata +238 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<%= content_tag(html_tag, html_options) do %>
|
|
2
|
+
<div class="<%= checkbox_class %>">
|
|
3
|
+
<input type="checkbox" class="mdc-checkbox__native-control" <%= selected ? "checked" : nil %> aria-labelledby="<%= id %>"/>
|
|
4
|
+
<div class="mdc-checkbox__background">
|
|
5
|
+
<svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
|
|
6
|
+
<path class="mdc-checkbox__checkmark-path" fill="none" d="M1.73,12.91 8.1,19.28 22.79,4.59" />
|
|
7
|
+
</svg>
|
|
8
|
+
<div class="mdc-checkbox__mixedmark"></div>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableBodyCheckboxComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
attr_reader :selected, :id
|
|
5
|
+
|
|
6
|
+
def initialize(selected: false, id:, **kw)
|
|
7
|
+
super(tag: "td", **kw)
|
|
8
|
+
@selected = selected
|
|
9
|
+
@id = id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def default_html_class
|
|
13
|
+
"mdc-data-table__cell mdc-data-table__cell--checkbox"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def html_options
|
|
17
|
+
super.merge!({role: "columnheader", scope: "col"})
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def checkbox_class
|
|
21
|
+
return "mdc-checkbox mdc-data-table__row-checkbox mdc-checkbox--selected" if selected
|
|
22
|
+
"mdc-checkbox mdc-data-table__row-checkbox"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableBodyComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
|
|
5
|
+
validates :content, presence: true
|
|
6
|
+
|
|
7
|
+
def initialize(**kw)
|
|
8
|
+
super(tag: "tbody", **kw)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def default_html_class
|
|
12
|
+
"mdc-data-table__content"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableBodyRowComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
attr_reader :selected
|
|
5
|
+
|
|
6
|
+
validates :content, presence: true
|
|
7
|
+
|
|
8
|
+
def initialize(selected: false, **kw)
|
|
9
|
+
super(tag: "tr", **kw)
|
|
10
|
+
@selected = selected
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def default_html_class
|
|
14
|
+
return "mdc-data-table__row mdc-data-table__row--selected" if selected
|
|
15
|
+
"mdc-data-table__row"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def html_options
|
|
19
|
+
opts = super
|
|
20
|
+
if selected
|
|
21
|
+
opts[:aria] = {} unless opts.has_key?(:aria)
|
|
22
|
+
opts[:aria][:selected] = true
|
|
23
|
+
end
|
|
24
|
+
opts
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
attr_reader :label
|
|
5
|
+
|
|
6
|
+
validates :content, presence: true
|
|
7
|
+
|
|
8
|
+
def initialize(label: nil, **kw)
|
|
9
|
+
super(tag: "div", **kw)
|
|
10
|
+
@label = label
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def default_html_class
|
|
14
|
+
"mdc-data-table"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def default_data_controller
|
|
18
|
+
"mdc-data-table"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def table_tag
|
|
22
|
+
"table"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def table_options
|
|
26
|
+
opts = {
|
|
27
|
+
class: "mdc-data-table__table"
|
|
28
|
+
}
|
|
29
|
+
unless label.empty?
|
|
30
|
+
opts[:aria] ||= {}
|
|
31
|
+
opts[:aria][:label] = label
|
|
32
|
+
end
|
|
33
|
+
opts
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableHeaderCellComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
attr_reader :numeric
|
|
5
|
+
|
|
6
|
+
validates :content, presence: true
|
|
7
|
+
|
|
8
|
+
def initialize(numeric: false, **kw)
|
|
9
|
+
super(tag: "th", **kw)
|
|
10
|
+
@numeric = numeric
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def default_html_class
|
|
14
|
+
return "mdc-data-table__header-cell mdc-data-table__header-cell--numeric" if numeric
|
|
15
|
+
"mdc-data-table__header-cell"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def html_options
|
|
19
|
+
opts = super
|
|
20
|
+
opts.merge!(role: "columnheader", scope: "col")
|
|
21
|
+
opts
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<%= content_tag(html_tag, html_options) do %>
|
|
2
|
+
<div class="<%= checkbox_class %>">
|
|
3
|
+
<input type="checkbox" class="mdc-checkbox__native-control" aria-label="<%= label %>%"/>
|
|
4
|
+
<div class="mdc-checkbox__background">
|
|
5
|
+
<svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
|
|
6
|
+
<path class="mdc-checkbox__checkmark-path" fill="none" d="M1.73,12.91 8.1,19.28 22.79,4.59" />
|
|
7
|
+
</svg>
|
|
8
|
+
<div class="mdc-checkbox__mixedmark"></div>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableHeaderCheckboxComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
attr_reader :selected, :label
|
|
5
|
+
|
|
6
|
+
def initialize(selected: false, label:, **kw)
|
|
7
|
+
super(tag: "th", **kw)
|
|
8
|
+
@selected = selected
|
|
9
|
+
@label = label
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def default_html_class
|
|
13
|
+
"mdc-data-table__header-cell mdc-data-table__header-cell--checkbox"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def html_options
|
|
17
|
+
super.merge!({role: "columnheader", scope: "col"})
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def checkbox_class
|
|
21
|
+
return "mdc-checkbox mdc-data-table__header-row-checkbox mdc-checkbox--selected" if selected
|
|
22
|
+
"mdc-checkbox mdc-data-table__header-row-checkbox"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DataTableHeaderRowComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
|
|
5
|
+
validates :content, presence: true
|
|
6
|
+
|
|
7
|
+
def initialize(**kw)
|
|
8
|
+
super(tag: "tr", **kw)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def default_html_class
|
|
12
|
+
"mdc-data-table__header-row"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DialogButtonComponent < ActionView::Component::Base
|
|
3
|
+
include Arara::BaseComponent
|
|
4
|
+
validates :content, presence: true
|
|
5
|
+
|
|
6
|
+
attr_reader :dialog_action
|
|
7
|
+
|
|
8
|
+
def initialize(dialog_action:, **kw)
|
|
9
|
+
super(tag: "button", **kw)
|
|
10
|
+
|
|
11
|
+
@dialog_action = dialog_action
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def default_html_class
|
|
16
|
+
"mdc-button mdc-dialog__button"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def html_options
|
|
20
|
+
opts = super
|
|
21
|
+
opts.merge!({type: "button"})
|
|
22
|
+
opts
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def html_data
|
|
26
|
+
data = super
|
|
27
|
+
data.merge!('mdc-dialog-action': dialog_action)
|
|
28
|
+
data
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DialogComponent < ActionView::Component::Base
|
|
3
|
+
validates :content, presence: true
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
|
|
7
|
+
attr_reader :role, :labelledby, :describedby
|
|
8
|
+
|
|
9
|
+
def initialize(role: "alertdialog", labelledby:, describedby:, **kw)
|
|
10
|
+
super(tag: "div", role: role, **kw)
|
|
11
|
+
|
|
12
|
+
@role = role
|
|
13
|
+
@labelledby = labelledby
|
|
14
|
+
@describedby = describedby
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def default_html_class
|
|
19
|
+
"mdc-dialog"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def surface_options
|
|
23
|
+
opts = {
|
|
24
|
+
class: "mdc-dialog__surface",
|
|
25
|
+
role: role,
|
|
26
|
+
aria: {
|
|
27
|
+
modal: "true",
|
|
28
|
+
labelledby: labelledby,
|
|
29
|
+
describedby: describedby
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DialogContentComponent < ActionView::Component::Base
|
|
3
|
+
validates :content, presence: true
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
|
|
7
|
+
def initialize(id:, **kw)
|
|
8
|
+
super(tag: "div", id: id, **kw)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def default_html_class
|
|
12
|
+
"mdc-dialog__content"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DialogFooterComponent < ActionView::Component::Base
|
|
3
|
+
validates :content, presence: true
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
|
|
7
|
+
def initialize(**kw)
|
|
8
|
+
super(tag: "footer", id: id, **kw)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def default_html_class
|
|
12
|
+
"mdc-dialog__actions"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class DialogTitleComponent < ActionView::Component::Base
|
|
3
|
+
validates :content, presence: true
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
|
|
7
|
+
def initialize(id:, **kw)
|
|
8
|
+
super(tag: "h2", id: id, **kw)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def default_html_class
|
|
13
|
+
"mdc-dialog__title"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class ElevationComponent < ActionView::Component::Base
|
|
3
|
+
validates :content, presence: true
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
|
|
7
|
+
attr_reader :depth
|
|
8
|
+
|
|
9
|
+
def initialize(depth:, **kw)
|
|
10
|
+
super(tag: "div", depth: depth, **kw)
|
|
11
|
+
|
|
12
|
+
@depth = depth
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def default_html_class
|
|
16
|
+
"mdc-elevation--z#{depth}"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%= content_tag(html_tag, html_options) do %>
|
|
2
|
+
<div class="mdc-fab__ripple"></div>
|
|
3
|
+
<% if user_variant == "extended" && label_before %>
|
|
4
|
+
<span class="mdc-fab__label"><%= extended_label %></span>
|
|
5
|
+
<% end %>
|
|
6
|
+
<%= content %>
|
|
7
|
+
<% if user_variant == "extended" && !label_before %>
|
|
8
|
+
<span class="mdc-fab__label"><%= extended_label %></span>
|
|
9
|
+
<% end %>
|
|
10
|
+
<% if user_variant == "extended_no_icon" %>
|
|
11
|
+
<span class="mdc-fab__label"><%= extended_label %></span>
|
|
12
|
+
<% end %>
|
|
13
|
+
<% end %>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Arara
|
|
2
|
+
class FabComponent < ActionView::Component::Base
|
|
3
|
+
class InvalidVariant < StandardError; end
|
|
4
|
+
|
|
5
|
+
include Arara::BaseComponent
|
|
6
|
+
VALID_VARIANTS = %w(default mini extended extended_no_icon)
|
|
7
|
+
|
|
8
|
+
attr_reader :label, :extended_label, :label_before
|
|
9
|
+
with_options if: -> { user_variant == "extended" } do |extended|
|
|
10
|
+
extended.validates :content, presence: true
|
|
11
|
+
extended.validates :extended_label, presence: true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def initialize(variant: "default", label:, extended_label: nil, label_before: false, **kw)
|
|
15
|
+
raise InvalidVariant.new("`#{variant}' is not a valid variant") unless VALID_VARIANTS.include?(variant.to_s)
|
|
16
|
+
super(tag: "button", variant: variant, **kw)
|
|
17
|
+
|
|
18
|
+
@variant = variant
|
|
19
|
+
@label = label
|
|
20
|
+
@extended_label = extended_label
|
|
21
|
+
@label_before = label_before
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def default_html_class
|
|
25
|
+
return "mdc-fab mdc-fab--mini" if user_variant == "mini"
|
|
26
|
+
return "mdc-fab mdc-fab--extended" if user_variant == "extended"
|
|
27
|
+
return "mdc-fab mdc-fab--extended" if user_variant == "extended_no_icon"
|
|
28
|
+
"mdc-fab"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def html_options
|
|
32
|
+
opts = super
|
|
33
|
+
opts[:aria] = {} unless opts.has_key?(:aria)
|
|
34
|
+
opts[:aria][:label] = label
|
|
35
|
+
opts
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def default_data_controller
|
|
39
|
+
"mdc-ripple"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|