Module: Maglev::ApplicationHelper
- Defined in:
- app/helpers/maglev/application_helper.rb
Instance Method Summary collapse
-
#maglev_button_classes ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#maglev_button_label(label, options = {}) ⇒ Object
UI helpers.
- #maglev_client_javascript_tags ⇒ Object
- #maglev_delayed_stream_tag ⇒ Object
- #maglev_editor_javascript_tags ⇒ Object
- #maglev_editor_logo_url ⇒ Object
-
#maglev_editor_title ⇒ Object
Editor helpers.
- #maglev_favicon_url ⇒ Object
- #maglev_flash_message ⇒ Object
-
#maglev_icon_button_classes ⇒ Object
rubocop:enable Metrics/MethodLength.
- #maglev_importmap_tags(namespace, entry_point) ⇒ Object
-
#maglev_javascript_importmap_tags(entry_point = 'application', importmap: Rails.application.importmap) ⇒ Object
Use this helper in your theme layout instead of calling javascript_importmap_tags and maglev_client_javascript_tags separately.
- #maglev_live_preview_client_javascript_tag ⇒ Object
- #maglev_page_icon(page, size: '1.15rem', wrapper_class_names: nil) ⇒ Object
- #maglev_page_preview_reload_data ⇒ Object
- #maglev_primary_hex_color ⇒ Object
- #maglev_primary_rgb_color ⇒ Object
-
#turbo_stream ⇒ Object
"system" helpers.
Instance Method Details
#maglev_button_classes ⇒ Object
rubocop:disable Metrics/MethodLength
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'app/helpers/maglev/application_helper.rb', line 130 def (...) ClassVariants.build( base: %( rounded-sm transition-colors transition-background duration-200 text-center cursor-pointer group-[.is-success]/form:bg-green-500 group-[.is-success]/form:hover:bg-green-500/90 group-[.is-success]/form:disabled:bg-green-500/75 group-[.is-error]/form:bg-red-500 group-[.is-error]/form:hover:bg-red-500/90 group-[.is-error]/form:disabled:bg-red-500/75 ), variants: { color: { primary: 'text-white bg-editor-primary hover:bg-editor-primary/90 disabled:bg-editor-primary/75', secondary: 'text-gray-800 hover:bg-gray-100' }, size: { big: 'flex items-center justify-center w-full px-6 h-14', medium: 'inline-flex items-center justify-center px-4 h-10' } }, defaults: { color: :primary, size: :medium } ).render(...) end |
#maglev_button_label(label, options = {}) ⇒ Object
UI helpers
120 121 122 123 124 125 126 127 |
# File 'app/helpers/maglev/application_helper.rb', line 120 def (label, = {}) = ( || {}).with_indifferent_access render 'maglev/editor/shared/button_label', label: label, pending_label: [:pending] || label, success_label: [:success] || label, error_label: [:error] || label end |
#maglev_client_javascript_tags ⇒ Object
16 17 18 19 20 |
# File 'app/helpers/maglev/application_helper.rb', line 16 def return '' unless maglev_rendering_mode == :editor (:client, 'maglev-client') end |
#maglev_delayed_stream_tag ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'app/helpers/maglev/application_helper.rb', line 55 def maglev_delayed_stream_tag # since we set the turbo request id before the build of the fetch request, Turbo will set # the X-TURBO-REQUEST-ID header to a comma-separated list of request ids # we only want to use the first request id (ours), so we split the header value and take the first part safe_join [ tag.(name: 'turbo-request-id', content: ::Turbo.current_request_id.split(',').first), tag.(name: 'turbo-delayed-stream', content: 'true') ], "\n" end |
#maglev_editor_javascript_tags ⇒ Object
12 13 14 |
# File 'app/helpers/maglev/application_helper.rb', line 12 def (:editor, 'editor') end |
#maglev_editor_logo_url ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'app/helpers/maglev/application_helper.rb', line 77 def maglev_editor_logo_url case maglev_config.logo when nil asset_path('maglev/logo.svg') when String asset_path(maglev_config.logo) when Proc instance_exec(maglev_site, &maglev_config.logo) end end |
#maglev_editor_title ⇒ Object
Editor helpers
66 67 68 69 70 71 72 73 74 75 |
# File 'app/helpers/maglev/application_helper.rb', line 66 def maglev_editor_title case maglev_config.title when nil 'Maglev - EDITOR' when String maglev_config.title when Proc instance_exec(maglev_site, &maglev_config.title) end end |
#maglev_favicon_url ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'app/helpers/maglev/application_helper.rb', line 88 def maglev_favicon_url case maglev_config.favicon when nil asset_path('maglev/favicon.svg') when String asset_path(maglev_config.favicon) when Proc instance_exec(maglev_site, &maglev_config.favicon) end end |
#maglev_flash_message ⇒ Object
165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'app/helpers/maglev/application_helper.rb', line 165 def , color, icon_name = if flash[:notice].present? [flash[:notice], :green, 'checkbox_circle'] elsif flash[:alert].present? [flash[:alert], :red, 'error_warning'] end return '' if .blank? render Maglev::Uikit::BadgeComponent.new(color: color, icon_name: icon_name, disappear_after: 3.seconds).with_content() end |
#maglev_icon_button_classes ⇒ Object
rubocop:enable Metrics/MethodLength
157 158 159 160 161 162 163 |
# File 'app/helpers/maglev/application_helper.rb', line 157 def (...) ClassVariants.build( base: %(h-7 w-7 flex items-center justify-center rounded-full focus:outline-none transition-colors duration-200 cursor-pointer bg-gray-600/0 text-gray-800 hover:bg-gray-600/10 hover:text-gray-900) ).render(...) end |
#maglev_importmap_tags(namespace, entry_point) ⇒ Object
47 48 49 50 51 52 53 |
# File 'app/helpers/maglev/application_helper.rb', line 47 def (namespace, entry_point) safe_join [ javascript_inline_importmap_tag(Maglev::Engine.importmaps[namespace].to_json(resolver: self)), (Maglev::Engine.importmaps[namespace]), javascript_import_module_tag(entry_point) ], "\n" end |
#maglev_javascript_importmap_tags(entry_point = 'application', importmap: Rails.application.importmap) ⇒ Object
Use this helper in your theme layout instead of calling javascript_importmap_tags and maglev_client_javascript_tags separately.
Firefox (unlike Chrome) strictly follows the HTML spec which only allows a single