app/pb_kits/playbook/pb_home_address_street/home_address_street.rb



# frozen_string_literal: true

module Playbook
  module PbHomeAddressStreet
    class HomeAddressStreet < Playbook::KitBase
      prop :address
      prop :address_cont
      prop :city
      prop :emphasis, type: Playbook::Props::Enum,
                      values: %w[street city none],
                      default: "street"
      prop :home_id, type: Playbook::Props::Number
      prop :home_url
      prop :house_style
      prop :new_window, type: Playbook::Props::Boolean,
                        default: false
      prop :target
      prop :state
      prop :zipcode
      prop :territory
      prop :dark, type: Playbook::Props::Boolean, default: false

      def classname
        generate_classname("pb_home_address_street_kit", dark_class)
      end

      def city_state_zip
        [city_state, zipcode].join(" ")
      end

      def city_state
        [city&.titleize, state].join(", ")
      end

      def zip
        zipcode.to_s
      end

      def address_house_style
        [address&.titleize, house_style].join(separator)
      end

      def address_house_style2
        address_cont&.titleize
      end

      def separator
        house_style ? " \u00b7 " : ""
      end

      def city_emphasis_props
        {
          address_house_style: address_house_style,
          address_house_style2: address_house_style2,
          city_state: city_state,
          dark: dark,
          home_id: home_id,
          home_url: home_url,
          target: target_option,
          new_window: new_window,
          territory: territory,
          zip: zip,
        }
      end

      def street_emphasis_props
        {
          address_house_style: address_house_style,
          address_house_style2: address_house_style2,
          city_state_zip: city_state_zip,
          dark: dark,
          home_id: home_id,
          home_url: home_url,
          target: target_option,
          new_window: new_window,
          territory: territory,
        }
      end

      def none_emphasis_props
        {
          address_house_style: address_house_style,
          address_house_style2: address_house_style2,
          city_state_zip: city_state_zip,
          dark: dark,
          home_id: home_id,
          home_url: home_url,
          target: target_option,
          new_window: new_window,
          territory: territory,
        }
      end

      def target_option
        if target && home_url
          target
        elsif new_window
          "_blank"
        else
          "_self"
        end
      end

    private

      def dark_class
        dark ? "dark" : nil
      end
    end
  end
end