module Playbook::Hover
def self.included(base)
def self.included(base) base.prop :hover base.prop :group_hover, type: Playbook::Props::Boolean, default: false end
def hover_attributes
def hover_attributes %w[background shadow scale color underline] end
def hover_background_values
def hover_background_values [] end
def hover_color_values
def hover_color_values [] end
def hover_options
def hover_options { hover: "hover", } end
def hover_props
def hover_props selected_props = hover_options.keys.select { |sk| try(sk) } return nil if selected_props.nil? && group_hover.nil? responsive = selected_props.present? && try(selected_props.first).is_a?(::Hash) css = "" selected_props.each do |prop| value = send(prop) prefix = hover_options[prop] if responsive value.each do |key, val| if %i[background color].include?(key) css += "#{prefix}_#{key}-#{val} " if hover_attributes.include?(key.to_s) elsif %i[underline].include?(key) && val == true css += "hover_underline " elsif hover_attributes.include?(key.to_s) && send("hover_#{key}_values").include?(val.to_s) css += "#{prefix}_#{key}_#{val} " end end elsif send("hover_#{prop}_values").include?(value) css += "#{prefix}_#{value} " end end css += "group_hover " if group_hover css.strip unless css.blank? end
def hover_scale_values
def hover_scale_values %w[sm md lg] end
def hover_shadow_values
def hover_shadow_values %w[deep deeper deepest] end
def hover_underline_values
def hover_underline_values [true, false] end
def hover_values
def hover_values hover_options.keys.select { |sk| try(sk) } end