app/pb_kits/playbook/pb_table/table.rb



# frozen_string_literal: true

module Playbook
  module PbTable
    class Table < Playbook::KitBase
      prop :size, type: Playbook::Props::Enum,
                  values: %w[sm md lg],
                  default: "md"
      prop :single_line, type: Playbook::Props::Boolean,
                         default: false
      prop :disable_hover, type: Playbook::Props::Boolean,
                           default: false
      prop :data_table, type: Playbook::Props::Boolean,
                        default: false
      prop :container, type: Playbook::Props::Boolean,
                       default: true
      prop :responsive, type: Playbook::Props::Enum,
                        values: %w[collapse scroll none],
                        default: "collapse"
      prop :collapse, type: Playbook::Props::Enum,
                      values: %w[sm md lg],
                      default: "sm"
      prop :text
      prop :sticky, type: Playbook::Props::Boolean,
                    default: false
      prop :vertical_border, type: Playbook::Props::Boolean,
                             default: false

      def classname
        generate_classname(
          "pb_table", "table-#{size}", single_line_class, dark_class,
          disable_hover_class, container_class, data_table_class, sticky_class, collapse_class,
          vertical_border_class, "table-responsive-#{responsive}", separator: " "
        )
      end

    private

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

      def data_table_class
        data_table ? "data_table" : nil
      end

      def single_line_class
        single_line ? "single-line" : nil
      end

      def disable_hover_class
        disable_hover ? "no-hover" : nil
      end

      def container_class
        container ? "table-card" : nil
      end

      def collapse_class
        responsive != "none" ? "table-collapse-#{collapse}" : ""
      end

      def sticky_class
        sticky ? "sticky-header" : nil
      end

      def vertical_border_class
        vertical_border ? "vertical-border" : nil
      end
    end
  end
end