Module: Playbook::Border

Included in:
KitBase
Defined in:
lib/playbook/border.rb

Constant Summary collapse

BORDER_VALUES =
%w[
  none
  default
  active
  default_thick
  default_thicker
  active_thick
  active_thicker
].freeze
BORDER_PROP_MAP =
{
  border: "",
  border_top: "top",
  border_bottom: "bottom",
  border_left: "left",
  border_right: "right",
  border_x: "x",
  border_y: "y",
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.border_class_for(side, value) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/playbook/border.rb', line 64

def border_class_for(side, value)
  v = value.to_s
  return nil unless BORDER_VALUES.include?(v)

  if v == "none"
    return "border_none" if side == ""

    "border_#{side}_none"
  elsif side == ""
    "border_#{v}"
  else
    "border_#{side}_#{v}"
  end
end

.border_class_for_prop(prop_name, value) ⇒ Object



79
80
81
82
83
84
# File 'lib/playbook/border.rb', line 79

def border_class_for_prop(prop_name, value)
  side = BORDER_PROP_MAP[prop_name.to_sym]
  return nil unless side

  border_class_for(side, value)
end

.included(base) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/playbook/border.rb', line 5

def self.included(base)
  base.prop :border
  base.prop :border_top
  base.prop :border_bottom
  base.prop :border_left
  base.prop :border_right
  base.prop :border_x
  base.prop :border_y
end

Instance Method Details

#border_optionsObject



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/playbook/border.rb', line 35

def border_options
  {
    border: "border",
    border_top: "border_top",
    border_bottom: "border_bottom",
    border_left: "border_left",
    border_right: "border_right",
    border_x: "border_x",
    border_y: "border_y",
  }
end

#border_propsObject



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/playbook/border.rb', line 51

def border_props
  css = +""
  BORDER_PROP_MAP.each do |prop_name, side|
    value = send(prop_name)
    next unless value
    next unless BORDER_VALUES.include?(value.to_s)

    css << "#{Playbook::Border.border_class_for(side, value)} "
  end
  css.strip unless css.empty?
end

#border_valuesObject



47
48
49
# File 'lib/playbook/border.rb', line 47

def border_values
  BORDER_VALUES
end