Class: Playbook::PbSelect::Select

Inherits:
KitBase
  • Object
show all
Defined in:
app/pb_kits/playbook/pb_select/select.rb

Constant Summary

Constants inherited from KitBase

KitBase::EMPTY_HASH

Constants included from MaxHeight

MaxHeight::MAX_HEIGHT_VALUES

Constants included from MinHeight

MinHeight::MIN_HEIGHT_VALUES

Constants included from Height

Height::HEIGHT_VALUES

Constants included from VerticalAlign

VerticalAlign::SCREEN_SIZES, VerticalAlign::VERTICAL_ALIGN_VALUES

Constants included from Bottom

Bottom::BOTTOM_VALUES

Constants included from Playbook::PositionPropsCss

Playbook::PositionPropsCss::POSITION_VALUES

Constants included from Right

Right::RIGHT_VALUES

Constants included from Top

Top::TOP_VALUES

Constants included from Left

Left::LEFT_VALUES

Constants included from Truncate

Truncate::TRUNCATE_VALUES

Constants included from Overflow

Overflow::OVERFLOW_VALUES

Constants included from TextAlign

TextAlign::SCREEN_SIZES, TextAlign::TEXT_ALIGN_VALUES

Constants included from BorderRadius

BorderRadius::BORDER_RADIUS_VALUES

Constants included from Hover

Hover::HOVER_ATTRIBUTES, Hover::HOVER_BACKGROUND_VALUES, Hover::HOVER_COLOR_VALUES, Hover::HOVER_SCALE_VALUES, Hover::HOVER_SHADOW_VALUES, Hover::HOVER_UNDERLINE_VALUES, Hover::HOVER_VISIBLE_VALUES

Constants included from Playbook::Position

Playbook::Position::POSITION_VALUES

Constants included from Order

Order::ORDER_VALUES, Order::SCREEN_SIZES

Constants included from FlexShrink

FlexShrink::FLEX_SHRINK_VALUES, FlexShrink::SCREEN_SIZES

Constants included from FlexGrow

FlexGrow::FLEX_GROW_VALUES, FlexGrow::SCREEN_SIZES

Constants included from Flex

Flex::FLEX_VALUES, Flex::SCREEN_SIZES

Constants included from AlignSelf

AlignSelf::ALIGN_SELF_VALUES, AlignSelf::SCREEN_SIZES

Constants included from AlignContent

AlignContent::ALIGN_CONTENT_VALUES, AlignContent::SCREEN_SIZES

Constants included from AlignItems

AlignItems::ALIGN_ITEMS_VALUES, AlignItems::SCREEN_SIZES

Constants included from JustifySelf

JustifySelf::JUSTIFY_SELF_VALUES, JustifySelf::SCREEN_SIZES

Constants included from JustifyContent

JustifyContent::JUSTIFY_CONTENT_VALUES, JustifyContent::SCREEN_SIZES

Constants included from FlexWrap

FlexWrap::FLEX_WRAP_VALUES, FlexWrap::SCREEN_SIZES

Constants included from FlexDirection

FlexDirection::FLEX_DIRECTION_VALUES, FlexDirection::SCREEN_SIZES

Constants included from Cursor

Cursor::CURSOR_VALUES

Constants included from Display

Display::DISPLAY_SIZE_VALUES, Display::DISPLAY_VALUES

Constants included from LineHeight

LineHeight::LINE_HEIGHT_VALUES

Constants included from Shadow

Shadow::SHADOW_VALUES

Constants included from NumberSpacing

NumberSpacing::NUMBER_SPACING_VALUES

Constants included from ZIndex

ZIndex::SCREEN_SIZES, ZIndex::Z_INDEX_VALUES

Constants included from Spacing

Spacing::BREAK_METHOD_VALUES, Spacing::GAP_VALUES, Spacing::MAX_WIDTH_VALUES, Spacing::MIN_WIDTH_VALUES, Spacing::SCREEN_SIZES, Spacing::SCREEN_SIZE_VALUES, Spacing::SPACING_HASH_SKIP_KEYS, Spacing::SPACING_PROP_MAP, Spacing::SPACING_VALUES, Spacing::WIDTH_VALUES

Instance Attribute Summary

Attributes included from Playbook::Props

#values

Instance Method Summary collapse

Methods inherited from KitBase

#combined_html_options, #global_inline_props, #object, #pb_content_tag, #react_component

Methods included from MaxHeight

included, #max_height_options, #max_height_props, #max_height_values

Methods included from MinHeight

included, #min_height_options, #min_height_props, #min_height_values

Methods included from Height

#height_options, #height_props, #height_values, included

Methods included from VerticalAlign

included, #vertical_align_options, #vertical_align_props, #vertical_align_values

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_underline_values, #hover_values, #hover_visible_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, #column_gap_options, #column_gap_props, #filter_classname, #gap_options, #gap_props, #gap_values, included, #max_width_options, #max_width_props, #max_width_values, #min_width_options, #min_width_props, #min_width_values, #row_gap_options, #row_gap_props, #screen_size_values, #spacing_options, #spacing_props, #spacing_values, #width_options, #width_props, #width_values

Methods included from Classnames

#dark_props, #generate_classname, #generate_classname_without_spacing, included

Methods included from Playbook::Props

#initialize, #prop

Methods included from Playbook::PbKitHelper

#deprecated_kit_warning, #pb_rails

Methods included from Playbook::PbFormsHelper

#pb_form_with

Instance Method Details

#all_attributesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/pb_kits/playbook/pb_select/select.rb', line 36

def all_attributes
  {
    id: id,
    prompt: blank_selection,
    disabled: disabled,
    required: required,
    requiredIndicator: required_indicator,
    multiple: multiple,
    onchange: onchange,
    include_blank: include_blank,
    data: validation_data,
  }.merge(attributes).merge(input_options)
end

#angle_down_pathObject



107
108
109
# File 'app/pb_kits/playbook/pb_select/select.rb', line 107

def angle_down_path
  "app/pb_kits/playbook/utilities/icons/angle-down.svg"
end

#classnameObject



61
62
63
# File 'app/pb_kits/playbook/pb_select/select.rb', line 61

def classname
  generate_classname("pb_select", select_margin_bottom, separator: " ")
end

#classnamesObject



30
31
32
33
34
# File 'app/pb_kits/playbook/pb_select/select.rb', line 30

def classnames
  ([classname] + [inline_class, compact_class, show_arrow_class])
    .reject(&:empty?)
    .join(" ")
end

#compact_classObject



69
70
71
# File 'app/pb_kits/playbook/pb_select/select.rb', line 69

def compact_class
  compact ? "compact" : ""
end

#data_attributesObject



111
112
113
114
115
116
# File 'app/pb_kits/playbook/pb_select/select.rb', line 111

def data_attributes
  data = attributes[:data] || {}
  data.merge!("data-pb-select" => true)
  data.merge!("data-validation-message" => validation_message) if validation_message.present?
  data
end

#disabled_optionsObject



98
99
100
101
102
103
104
105
# File 'app/pb_kits/playbook/pb_select/select.rb', line 98

def disabled_options
  disabled_options = options.map { |option| option[:value] if option[:disabled] == true }.compact
  if disabled_options.empty?
    nil
  else
    disabled_options
  end
end

#inline_classObject



65
66
67
# File 'app/pb_kits/playbook/pb_select/select.rb', line 65

def inline_class
  inline ? "inline" : ""
end

#options_to_arrayObject



85
86
87
# File 'app/pb_kits/playbook/pb_select/select.rb', line 85

def options_to_array
  options.map { |option| [option[:value_text] || option[:value], option[:value]] }
end

#select_input_idObject

Same resolved id as the native <select> (all_attributes[:id]) for label for.



57
58
59
# File 'app/pb_kits/playbook/pb_select/select.rb', line 57

def select_input_id
  all_attributes[:id].presence
end

#select_margin_bottomObject



81
82
83
# File 'app/pb_kits/playbook/pb_select/select.rb', line 81

def select_margin_bottom
  margin.present? || margin_bottom.present? ? nil : "mb_sm"
end

#select_wrapper_classObject



77
78
79
# File 'app/pb_kits/playbook/pb_select/select.rb', line 77

def select_wrapper_class
  "pb_select_kit_wrapper" + error_class
end

#selectedObject



89
90
91
92
93
94
95
96
# File 'app/pb_kits/playbook/pb_select/select.rb', line 89

def selected
  selections = options.map { |option| option[:value] if option[:selected] == true }.compact
  if selections.empty?
    nil
  else
    selections
  end
end

#show_arrow_classObject



73
74
75
# File 'app/pb_kits/playbook/pb_select/select.rb', line 73

def show_arrow_class
  show_arrow ? "show_arrow" : ""
end

#validation_dataObject



50
51
52
53
54
# File 'app/pb_kits/playbook/pb_select/select.rb', line 50

def validation_data
  fields = input_options[:data] || {}
  fields[:message] = validation_message unless validation_message.blank?
  fields
end