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 :sticky_left_column, type: Playbook::Props::Array,
default: []
prop :vertical_border, type: Playbook::Props::Boolean,
default: false
prop :striped, type: Playbook::Props::Boolean,
default: false
prop :tag, type: Playbook::Props::Enum,
values: %w[table div],
default: "table"
prop :outer_padding, type: Playbook::Props::Enum,
values: ["none", "xxs", "xs", "sm", "md", "lg", "xl", nil],
default: nil
def classname
generate_classname(
"pb_table", "table-#{size}", single_line_class, dark_class,
disable_hover_class, container_class, data_table_class, sticky_class, sticky_left_column_class,
collapse_class, vertical_border_class, striped_class, outer_padding_class,
"table-responsive-#{responsive}", separator: " "
)
end
def responsive_classname
responsive ? "table-responsive-#{responsive}" : nil
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 sticky_left_column_class
if sticky_left_column.empty?
nil
else
sticky_col_classname = "sticky-left-column sticky-columns"
sticky_left_column.each do |id|
sticky_col_classname += "-#{id}"
end
sticky_col_classname
end
end
def striped_class
striped ? "striped" : nil
end
def vertical_border_class
vertical_border ? "vertical-border" : nil
end
def outer_padding_class
if outer_padding.nil?
outer_padding
else
space_css_name = outer_padding != "none" ? "space_" : ""
outer_padding.present? ? "outer_padding_#{space_css_name}#{outer_padding}" : nil
end
end
end
end
end