Module: PandaCms::ApplicationHelper

Included in:
ApplicationController
Defined in:
app/helpers/panda_cms/application_helper.rb

Instance Method Summary collapse

Instance Method Details

#active_link?(path, match: :starts_with) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
# File 'app/helpers/panda_cms/application_helper.rb', line 27

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


37
38
39
40
# File 'app/helpers/panda_cms/application_helper.rb', line 37

def block_link_to(name = nil, options = nil, html_options = {}, &)
  html_options[:class] = "block-link"
  link_to(name, options, html_options, &)
end

#component(name) ⇒ Object

Helper method to render a ViewComponent

See Also:

  • ViewComponent::Rendering#render


8
9
10
11
# File 'app/helpers/panda_cms/application_helper.rb', line 8

def component(name, *, **, &)
  component = name.to_s.camelize.constantize::Component
  render(component.new(*, **), &)
end

#level_indent(level) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/helpers/panda_cms/application_helper.rb', line 64

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


97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'app/helpers/panda_cms/application_helper.rb', line 97

def menu_indent(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


48
49
50
51
52
53
54
# File 'app/helpers/panda_cms/application_helper.rb', line 48

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


60
61
62
# File 'app/helpers/panda_cms/application_helper.rb', line 60

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_editorObject



21
22
23
24
25
# File 'app/helpers/panda_cms/application_helper.rb', line 21

def panda_cms_editor
  if Current.user&.admin
    (:a, "🐼", href: edit_admin_page_url(Current.page), class: "text-3xl inline absolute right-2 top-2")
  end
end

#panda_cms_form_with(**options) ⇒ Object



42
43
44
45
46
# File 'app/helpers/panda_cms/application_helper.rb', line 42

def panda_cms_form_with(**options, &)
  options[:builder] = PandaCms::FormBuilder
  options[:class] = "p-6 bg-mid/5 rounded-lg border-mid border"
  form_with(**options, &)
end

#selected_nav_highlight_colour_classes(request) ⇒ Object



56
57
58
# File 'app/helpers/panda_cms/application_helper.rb', line 56

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



93
94
95
# File 'app/helpers/panda_cms/application_helper.rb', line 93

def table_indent(item_with_level_attribute)
  level_indent(item_with_level_attribute.level)
end

#title_tagObject



13
14
15
16
17
18
19
# File 'app/helpers/panda_cms/application_helper.rb', line 13

def title_tag
  if @breadcrumbs.present?
    "#{@breadcrumbs.last&.name} · #{PandaCms.config.title}".html_safe
  else
    PandaCms.config.title
  end
end