Module: AdminSuite::PanelsHelper

Included in:
BaseHelper
Defined in:
app/helpers/admin_suite/panels_helper.rb

Instance Method Summary collapse

Instance Method Details

#panel_eval(value) ⇒ Object

Evaluates a panel option, calling Procs if needed.

Parameters:

  • value (Object, Proc)

Returns:

  • (Object)


46
47
48
49
50
# File 'app/helpers/admin_suite/panels_helper.rb', line 46

def panel_eval(value)
  return value.call if value.is_a?(Proc) && value.arity == 0
  return value.call(self) if value.is_a?(Proc) && value.arity == 1
  value
end

#render_dashboard_rows(rows) ⇒ Object

Renders a portal dashboard rows grid.

Parameters:



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/helpers/admin_suite/panels_helper.rb', line 8

def render_dashboard_rows(rows)
  return "" if rows.blank?

  (:div, class: "space-y-6") do
    rows.each do |row|
      concat((:div, class: "grid grid-cols-1 lg:grid-cols-12 gap-6") do
        Array(row.panels).each do |panel|
          concat(render_panel(panel))
        end
      end)
    end
  end
end

#render_panel(panel) ⇒ Object

Renders a single panel by selecting a partial.

Host apps can override by setting ‘AdminSuite.config.partials`.

Parameters:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/helpers/admin_suite/panels_helper.rb', line 27

def render_panel(panel)
  type = panel.type.to_sym
  override = AdminSuite.config.partials[:"panel_#{type}"] rescue nil
  partial = override.presence || "admin_suite/panels/#{type}"
  span = (panel.options[:span] || 12).to_i
  span = 12 if span < 1
  span = 12 if span > 12

  # Avoid dynamic Tailwind class generation (e.g. `lg:col-span-#{span}`),
  # which would otherwise require a safelist.
  (:div, style: "grid-column: span #{span} / span #{span};") do
    render partial:, locals: { panel: panel }
  end
end