Class: EasyAdmin::Layouts::Nodes::Grid

Inherits:
BaseNode
  • Object
show all
Defined in:
lib/easy_admin/layouts/nodes/grid.rb

Overview

Grid layout node for responsive column layouts

Instance Attribute Summary

Attributes inherited from BaseNode

#attributes, #children, #metadata, #visible_if

Instance Method Summary collapse

Methods inherited from BaseNode

#[], #[]=, #accept, #add_child, #children?, #node_type, #visible?

Constructor Details

#initialize(attributes = {}) ⇒ Grid

Returns a new instance of Grid.



6
7
8
9
10
11
12
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 6

def initialize(attributes = {})
  super
  @attributes[:columns] ||= 2
  @attributes[:gap] ||= 4 # Tailwind gap size
  @attributes[:responsive] ||= true
  @attributes[:css_class] ||= nil
end

Instance Method Details

#columnsObject



14
15
16
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 14

def columns
  @attributes[:columns]
end

#css_classObject



26
27
28
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 26

def css_class
  @attributes[:css_class]
end

#gapObject



18
19
20
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 18

def gap
  @attributes[:gap]
end

#grid_classesObject

Generate Tailwind grid classes



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
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 31

def grid_classes
  classes = []
  
  if responsive?
    # Responsive grid classes
    case columns
    when 1
      classes << "grid-cols-1"
    when 2
      classes << "grid-cols-1 md:grid-cols-2"
    when 3
      classes << "grid-cols-1 md:grid-cols-2 lg:grid-cols-3"
    when 4
      classes << "grid-cols-1 md:grid-cols-2 lg:grid-cols-4"
    else
      classes << "grid-cols-#{columns}"
    end
  else
    classes << "grid-cols-#{columns}"
  end
  
  classes << "gap-#{gap}"
  classes << css_class if css_class
  
  classes.join(' ')
end

#responsive?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/easy_admin/layouts/nodes/grid.rb', line 22

def responsive?
  @attributes[:responsive]
end