app/pb_kits/playbook/pb_drawer/drawer.rb



# frozen_string_literal: true

module Playbook
  module PbDrawer
    class Drawer < Playbook::KitBase
      prop :size, type: Playbook::Props::Enum,
                  values: %w[xs sm md lg xl full],
                  default: "md"
      prop :placement, type: Playbook::Props::Enum,
                       values: %w[left right bottom],
                       default: "left"
      prop :behavior, type: Playbook::Props::Enum,
                      values: %w[floating push],
                      default: "floating"
      prop :overlay, type: Playbook::Props::Boolean,
                     default: true
      prop :within_element, type: Playbook::Props::Boolean,
                            default: false
      prop :border, type: Playbook::Props::Enum,
                    values: %w[full none right left],
                    default: "none"
      prop :breakpoint, type: Playbook::Props::Enum,
                        values: %w[none xs sm md lg xl],
                        default: "none"

      def classname
        generate_classname("pb_drawer pb_drawer_#{size}_#{placement} #{within_class} #{border_classes}")
      end

      def border_classes
        case border
        when "full"
          "drawer_border-full"
        when "right"
          "drawer_border-right"
        when "left"
          "drawer_border-left"
        else
          ""
        end
      end

      def overlay_close
        !should_close_on_overlay_click ? "overlay_close" : ""
      end

      def within_class
        within_element ? "pb_drawer_within_element_rails" : ""
      end

      def overlay_classes
        "pb_drawer_#{overlay ? '' : 'no_'}overlay drawer_content_#{placement} pb_drawer_overlay_after_open #{overlay ? '' : 'no-background'}"
      end
    end
  end
end