Module: Avo::ApplicationHelper
- Includes:
- ResourcesHelper, Pagy::Frontend
- Included in:
- ActionsComponent, AlertComponent, BacktraceAlertComponent, BaseApplicationController, Fields::Common::Files::ControlsComponent, Fields::Common::KeyValueComponent, Fields::HasOneField::ShowComponent, FiltersComponent, FlashAlertsComponent, Index::ResourceControlsComponent, Index::ResourceTableComponent, Items::PanelComponent, PanelComponent, TabSwitcherComponent, Views::ResourceEditComponent, Views::ResourceIndexComponent, Views::ResourceShowComponent
- Defined in:
- app/helpers/avo/application_helper.rb
Instance Method Summary
collapse
-
#a_button(**args, &block) ⇒ Object
-
#a_link(path = nil, **args, &block) ⇒ Object
-
#button_classes(extra_classes = nil, color: nil, variant: nil, size: :md, active: false) ⇒ Object
-
#card_classes ⇒ Object
-
#chart_color(index) ⇒ Object
-
#decode_filter_params(encoded_params) ⇒ Object
-
#empty_state(**args) ⇒ Object
-
#encode_filter_params(filter_params) ⇒ Object
-
#frame_id(resource) ⇒ Object
-
#get_model_class(model) ⇒ Object
-
#input_classes(extra_classes = "", has_error: false) ⇒ Object
-
#mount_path ⇒ Object
-
#number_to_social(number, start_at: 10_000) ⇒ Object
-
#possibly_rails_authentication? ⇒ Boolean
-
#render_license_warning(title: "", message: "", icon: "exclamation") ⇒ Object
-
#root_path_without_url ⇒ Object
-
#svg(file_name, **args) ⇒ Object
Use inline_svg gem but with our own finder implementation.
-
#white_panel_classes ⇒ Object
#field_wrapper, #filter_wrapper, #index_field_wrapper, #item_selector_data_attributes, #resource_grid, #resource_show_path, #resource_table
Instance Method Details
18
19
20
21
22
|
# File 'app/helpers/avo/application_helper.rb', line 18
def a_button(**args, &block)
render Avo::ButtonComponent.new(is_link: false, **args) do
capture(&block) if block.present?
end
end
|
#a_link(path = nil, **args, &block) ⇒ Object
24
25
26
27
28
|
# File 'app/helpers/avo/application_helper.rb', line 24
def a_link(path = nil, **args, &block)
render Avo::ButtonComponent.new(path, is_link: true, **args) do
capture(&block) if block.present?
end
end
|
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'app/helpers/avo/application_helper.rb', line 30
def button_classes( = nil, color: nil, variant: nil, size: :md, active: false)
classes = "inline-flex flex-grow-0 items-center text-sm font-semibold leading-6 fill-current whitespace-nowrap transition duration-100 rounded transform transition duration-100 active:translate-x-px active:translate-y-px cursor-pointer disabled:cursor-not-allowed #{}"
if color.present?
if variant.present? && (variant.to_sym == :outlined)
classes += " bg-white border"
classes += " hover:border-#{color}-700 border-#{color}-500 text-#{color}-600 hover:text-#{color}-700 disabled:border-gray-300 disabled:text-gray-600"
else
classes += " text-white bg-#{color}-500 hover:bg-#{color}-600 disabled:bg-#{color}-300"
end
else
classes += " text-gray-700 bg-white hover:bg-gray-100 disabled:bg-gray-300"
end
size = size.present? ? size.to_sym : :md
classes += case size
when :xs
" p-2 py-1"
when :sm
" py-1 px-4"
when :md
" py-2 px-4"
when :xl
" py-3 px-4"
else
" p-4"
end
classes
end
|
#card_classes ⇒ Object
91
92
93
|
# File 'app/helpers/avo/application_helper.rb', line 91
def card_classes
"bg-white rounded shadow-panel"
end
|
#chart_color(index) ⇒ Object
140
141
142
|
# File 'app/helpers/avo/application_helper.rb', line 140
def chart_color(index)
Avo.configuration.branding.chart_colors[index % Avo.configuration.branding.chart_colors.length]
end
|
#decode_filter_params(encoded_params) ⇒ Object
#empty_state(**args) ⇒ Object
14
15
16
|
# File 'app/helpers/avo/application_helper.rb', line 14
def empty_state(**args)
render Avo::EmptyStateComponent.new(**args)
end
|
#encode_filter_params(filter_params) ⇒ Object
#frame_id(resource) ⇒ Object
136
137
138
|
# File 'app/helpers/avo/application_helper.rb', line 136
def frame_id(resource)
["frame", resource.model_name.singular, resource.record_param].compact.join("-")
end
|
#get_model_class(model) ⇒ Object
95
96
97
98
99
100
101
|
# File 'app/helpers/avo/application_helper.rb', line 95
def get_model_class(model)
if model.instance_of?(Class)
model
else
model.class
end
end
|
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'app/helpers/avo/application_helper.rb', line 73
def input_classes( = "", has_error: false)
classes = "appearance-none inline-flex bg-gray-25 disabled:cursor-not-allowed text-gray-600 disabled:opacity-50 rounded py-2 px-3 leading-tight border focus:border-gray-600 focus-visible:ring-0 focus:text-gray-700 placeholder:text-gray-300"
classes += if has_error
" border-red-600"
else
" border-gray-200"
end
classes += " #{}"
classes
end
|
#mount_path ⇒ Object
109
110
111
|
# File 'app/helpers/avo/application_helper.rb', line 109
def mount_path
Avo::Engine.routes.find_script_name(params.permit!.to_h.symbolize_keys)
end
|
#number_to_social(number, start_at: 10_000) ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'app/helpers/avo/application_helper.rb', line 121
def number_to_social(number, start_at: 10_000)
return number_with_delimiter(number) if number < start_at
number_to_human(number,
precision: 1,
significant: false,
round_mode: :down,
format: "%n%u",
units: {
thousand: "K",
million: "M",
billion: "B"
})
end
|
#possibly_rails_authentication? ⇒ Boolean
144
145
146
|
# File 'app/helpers/avo/application_helper.rb', line 144
def possibly_rails_authentication?
defined?(Authentication) && Authentication.private_instance_methods.include?(:require_authentication) && Authentication.private_instance_methods.include?(:authenticated?)
end
|
#render_license_warning(title: "", message: "", icon: "exclamation") ⇒ Object
6
7
8
9
10
11
12
|
# File 'app/helpers/avo/application_helper.rb', line 6
def render_license_warning(title: "", message: "", icon: "exclamation")
render partial: "avo/sidebar/license_warning", locals: {
title: title,
message: message,
icon: icon
}
end
|
#root_path_without_url ⇒ Object
103
104
105
106
107
|
# File 'app/helpers/avo/application_helper.rb', line 103
def root_path_without_url
"#{Avo.configuration.prefix_path}#{mount_path}"
rescue
Avo.configuration.root_path
end
|
#svg(file_name, **args) ⇒ Object
Use inline_svg gem but with our own finder implementation.
63
64
65
66
67
68
69
70
71
|
# File 'app/helpers/avo/application_helper.rb', line 63
def svg(file_name, **args)
return if file_name.blank?
file_name = "#{file_name}.svg" unless file_name.end_with? ".svg"
with_asset_finder(::Avo::SvgFinder) do
inline_svg file_name, **args
end
end
|
#white_panel_classes ⇒ Object
87
88
89
|
# File 'app/helpers/avo/application_helper.rb', line 87
def white_panel_classes
"bg-white rounded shadow-md"
end
|