Class: Playbook::PbNav::Item

Inherits:
KitBase
  • Object
show all
Defined in:
app/pb_kits/playbook/pb_nav/item.rb

Constant Summary

Constants included from Playbook::PositionPropsCss

Playbook::PositionPropsCss::POSITION_VALUES

Instance Attribute Summary

Attributes included from Playbook::Props

#values

Instance Method Summary collapse

Methods inherited from KitBase

#combined_html_options, #object, #pb_content_tag

Methods included from Bottom

#bottom_options, #bottom_values, included

Methods included from Playbook::PositionPropsCss

#positioning_css

Methods included from Right

included, #right_options, #right_values

Methods included from Top

included, #top_options, #top_values

Methods included from Left

included, #left_options, #left_values

Methods included from Truncate

included, #truncate_options, #truncate_props, #truncate_values

Methods included from Overflow

included, #overflow_options, #overflow_props, #overflow_values

Methods included from TextAlign

included, #text_align_options, #text_align_props, #text_align_values

Methods included from BorderRadius

#border_radius_options, #border_radius_props, #border_radius_values, included

Methods included from Hover

#hover_attributes, #hover_background_values, #hover_color_values, #hover_options, #hover_props, #hover_scale_values, #hover_shadow_values, #hover_values, included

Methods included from Playbook::Position

included, #position_options, #position_values

Methods included from Order

included, #order_options, #order_props, #order_values

Methods included from FlexShrink

#flex_shrink_options, #flex_shrink_props, #flex_shrink_values, included

Methods included from FlexGrow

#flex_grow_options, #flex_grow_props, #flex_grow_values, included

Methods included from Flex

#flex_options, #flex_props, #flex_values, included

Methods included from AlignSelf

#align_self_options, #align_self_props, #align_self_values, included

Methods included from AlignContent

#align_content_options, #align_content_props, #align_content_values, included

Methods included from AlignItems

#align_items_options, #align_items_props, #align_items_values, included

Methods included from JustifySelf

included, #justify_self_options, #justify_self_props, #justify_self_values

Methods included from JustifyContent

included, #justify_content_options, #justify_content_props, #justify_content_values

Methods included from FlexWrap

#flex_wrap_options, #flex_wrap_props, #flex_wrap_values, included

Methods included from FlexDirection

#flex_direction_options, #flex_direction_props, #flex_direction_values, included

Methods included from Cursor

#cursor_options, #cursor_props, #cursor_values, included

Methods included from Display

#display_options, #display_props, #display_size_values, #display_values, included

Methods included from LineHeight

included, #line_height_options, #line_height_props, #line_height_values

Methods included from Shadow

included, #shadow_options, #shadow_props, #shadow_values

Methods included from NumberSpacing

included, #number_spacing_options, #number_spacing_values

Methods included from ZIndex

included, #screen_size_values, #z_index_options, #z_index_props, #z_index_values

Methods included from Spacing

#break_method_values, included, #max_width_options, #max_width_props, #max_width_values, #screen_size_values, #spacing_options, #spacing_values

Methods included from Classnames

#generate_classname, #generate_classname_without_spacing, included

Methods included from Playbook::Props

#initialize, #prop

Methods included from Playbook::PbKitHelper

#pb_rails

Methods included from Playbook::PbFormsHelper

#pb_form_with

Instance Method Details

#classnameObject



24
25
26
27
28
29
30
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 24

def classname
  if collapsible
    "#{generate_classname('pb_nav_list_kit_item', active_class, highlighted_border_class)} #{generate_classname('pb_collapsible_nav_item', active_class, collapsible_trail_class)} #{font_size_class} #{font_weight_class} pb_nav_list_item_link_collapsible"
  else
    "#{generate_classname('pb_nav_list_kit_item', active_class, highlighted_border_class)} #{font_size_class} #{font_weight_class} pb_nav_list_item_link"
  end
end

#collapsible_iconsObject



86
87
88
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 86

def collapsible_icons
  icon_right.present? && icon_right
end

#collapsible_nav_classnameObject



90
91
92
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 90

def collapsible_nav_classname
  generate_classname("collapsible_nav_wrapper", active_class, collapsible_trail_class)
end

#margin_classesObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 61

def margin_classes
  margin_attributes = {
    margin: "m",
    margin_x: "mx",
    margin_y: "my",
    margin_bottom: "mb",
    margin_top: "mt",
    margin_right: "mr",
    margin_left: "ml",
  }

  # rubocop:disable Style/RedundantAssignment
  margin_classes = margin_attributes.map do |attr, class_prefix|
    # rubocop:enable Style/RedundantAssignment
    value = object.public_send(attr)
    " #{class_prefix}_#{value}" if value
  end.compact.join

  margin_classes
end

#spacing_propsObject



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
57
58
59
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 32

def spacing_props
  if collapsible
    if object.margin || object.margin_x || object.margin_y || object.margin_bottom || object.margin_top || object.margin_right || object.margin_left
      # Call the original method
      original_result = super

      # Remove p_value, px_value, py_value, etc. based on the object's properties
      margin_classes_to_remove = []
      margin_classes_to_remove << "m_#{object.margin}" if object.margin
      margin_classes_to_remove << "mx_#{object.margin_x}" if object.margin_x
      margin_classes_to_remove << "my_#{object.margin_y}" if object.margin_y
      margin_classes_to_remove << "mb_#{object.margin_bottom}" if object.margin_bottom
      margin_classes_to_remove << "mt_#{object.margin_top}" if object.margin_top
      margin_classes_to_remove << "mr_#{object.margin_right}" if object.margin_right
      margin_classes_to_remove << "ml_#{object.margin_left}" if object.margin_left

      margin_classes_to_remove.each do |class_to_remove|
        original_result.gsub!(class_to_remove, "")
      end

      original_result.strip
    else
      super
    end
  else
    super
  end
end

#tagObject



82
83
84
# File 'app/pb_kits/playbook/pb_nav/item.rb', line 82

def tag
  link ? "a" : "div"
end