Module: Panda::CMS::ApplicationHelper
- Included in:
- Panda::CMS::Admin::BaseController, ApplicationController
- Defined in:
- app/helpers/panda/cms/application_helper.rb
Instance Method Summary collapse
- #active_link?(path, match: :starts_with) ⇒ Boolean
- #block_link_to(name = nil, options = nil, html_options = {}) ⇒ Object
-
#component(name) ⇒ Object
Helper method to render a ViewComponent.
- #level_indent(level) ⇒ Object
- #menu_indent(item_with_level_attribute, indent_with: "pl-") ⇒ Object
- #nav_class(mode) ⇒ Object
- #nav_highlight_colour_classes(request) ⇒ Object
- #panda_cms_editor ⇒ Object
- #panda_cms_form_with(**options) ⇒ Object
- #selected_nav_highlight_colour_classes(request) ⇒ Object
- #table_indent(item_with_level_attribute) ⇒ Object
-
#title_tag ⇒ Object
TODO: Expose this elsewhere later, or you have to include helpers in the calling application.
Instance Method Details
#active_link?(path, match: :starts_with) ⇒ Boolean
32 33 34 35 36 37 38 39 40 |
# File 'app/helpers/panda/cms/application_helper.rb', line 32 def active_link?(path, match: :starts_with) if match == :starts_with return request.path.starts_with?(path) elsif match == :exact return (request.path == path) end false end |
#block_link_to(name = nil, options = nil, html_options = {}) ⇒ Object
42 43 44 45 |
# File 'app/helpers/panda/cms/application_helper.rb', line 42 def block_link_to(name = nil, = nil, = {}, &) [:class] = "block-link" link_to(name, , , &) end |
#component(name) ⇒ Object
Helper method to render a ViewComponent
9 10 11 12 |
# File 'app/helpers/panda/cms/application_helper.rb', line 9 def component(name, *, **, &) component = name.to_s.camelize.constantize::Component render(component.new(*, **), &) end |
#level_indent(level) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'app/helpers/panda/cms/application_helper.rb', line 69 def level_indent(level) case level when 0 "ml-0" when 1 "ml-4" when 2 "ml-8" when 3 "ml-12" when 4 "ml-16" when 5 "ml-20" when 6 "ml-24" when 7 "ml-28" when 8 "ml-32" when 9 "ml-36" when 10 "ml-40" # We can go to 72... else "ml-48" end end |
#menu_indent(item_with_level_attribute, indent_with: "pl-") ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'app/helpers/panda/cms/application_helper.rb', line 102 def (item_with_level_attribute, indent_with: "pl-") case item_with_level_attribute.level when 0 "#{indent_with}0" when 1 "#{indent_with}4" when 2 "#{indent_with}8" when 3 "#{indent_with}12" when 4 "#{indent_with}16" else "#{indent_with}20" end end |
#nav_class(mode) ⇒ Object
53 54 55 56 57 58 59 |
# File 'app/helpers/panda/cms/application_helper.rb', line 53 def nav_class(mode) if mode == "mobile" "-mx-3 block rounded-lg px-3 py-2 font-semibold leading-6 text-white hover:text-white hover:underline focus:underline" else "font-semibold leading-6 text-white hover:text-white hover:underline focus:underline" end end |
#nav_highlight_colour_classes(request) ⇒ Object
65 66 67 |
# File 'app/helpers/panda/cms/application_helper.rb', line 65 def nav_highlight_colour_classes(request) "text-white hover:bg-mid/60 transition-all group flex gap-x-3 py-3 px-2 mb-2 rounded-md text-base leading-6 font-normal " end |
#panda_cms_editor ⇒ Object
26 27 28 29 30 |
# File 'app/helpers/panda/cms/application_helper.rb', line 26 def panda_cms_editor if Panda::Core::Current.user&.admin content_tag(:a, "🐼", href: edit_admin_cms_page_url(Panda::CMS::Current.page), class: "text-3xl inline absolute right-2 top-2") end end |
#panda_cms_form_with(**options) ⇒ Object
47 48 49 50 51 |
# File 'app/helpers/panda/cms/application_helper.rb', line 47 def panda_cms_form_with(**, &) [:builder] = Panda::Core::FormBuilder [:class] = ["block visible p-6 bg-mid/5 rounded-lg border-mid border", [:class]].compact.join(" ") form_with(**, &) end |
#selected_nav_highlight_colour_classes(request) ⇒ Object
61 62 63 |
# File 'app/helpers/panda/cms/application_helper.rb', line 61 def selected_nav_highlight_colour_classes(request) "bg-mid text-white relative flex transition-all py-3 px-2 mb-2 rounded-md group flex gap-x-3 rounded-md text-base leading-6 font-normal " end |
#table_indent(item_with_level_attribute) ⇒ Object
98 99 100 |
# File 'app/helpers/panda/cms/application_helper.rb', line 98 def table_indent(item_with_level_attribute) level_indent(item_with_level_attribute.level) end |
#title_tag ⇒ Object
TODO: Expose this elsewhere later, or you have to include helpers in the calling application
16 17 18 19 20 21 22 23 24 |
# File 'app/helpers/panda/cms/application_helper.rb', line 16 def title_tag if @breadcrumbs.present? "#{@breadcrumbs.last&.name} · #{Panda::CMS.config.title}".html_safe elsif @title.present? "#{@title} · #{Panda::CMS.config.title}".html_safe else Panda::CMS.config.title end end |