Class: Playbook::PbAdvancedTable::TableHeader
- Inherits:
-
KitBase
- Object
- ViewComponent::Base
- KitBase
- Playbook::PbAdvancedTable::TableHeader
- Defined in:
- app/pb_kits/playbook/pb_advanced_table/table_header.rb
Constant Summary
Constants included from Playbook::PositionPropsCss
Playbook::PositionPropsCss::POSITION_VALUES
Instance Attribute Summary
Attributes included from Playbook::Props
Instance Method Summary collapse
- #classname ⇒ Object
-
#find_original_column_def(accessor) ⇒ Object
Get original column definition for custom rendering.
-
#has_header_renderer?(cell) ⇒ Boolean
Check if a header cell has a custom renderer.
- #header_rows ⇒ Object
-
#render_header(cell) ⇒ Object
Render custom header content.
-
#render_select_all_checkbox ⇒ Object
Selectable Rows w/ Subrows - checkboxes part of toggleable first cell.
-
#render_select_all_header ⇒ Object
Selectable Rows No Subrows - checkboxes in their own first cell.
- #th_classname(is_first_column: false) ⇒ Object
Methods inherited from KitBase
#combined_html_options, #global_inline_props, #object, #pb_content_tag, #react_component
Methods included from MaxHeight
included, #max_height_options, #max_height_props, #max_height_values
Methods included from MinHeight
included, #min_height_options, #min_height_props, #min_height_values
Methods included from Height
#height_options, #height_props, #height_values, included
Methods included from VerticalAlign
included, #vertical_align_options, #vertical_align_props, #vertical_align_values
Methods included from Bottom
#bottom_options, #bottom_values, included
Methods included from Playbook::PositionPropsCss
Methods included from Right
included, #right_options, #right_values
Methods included from Top
included, #top_options, #top_values
Methods included from Left
included, #left_options, #left_values
Methods included from Truncate
included, #truncate_options, #truncate_props, #truncate_values
Methods included from Overflow
included, #overflow_options, #overflow_props, #overflow_values
Methods included from TextAlign
included, #text_align_options, #text_align_props, #text_align_values
Methods included from BorderRadius
#border_radius_options, #border_radius_props, #border_radius_values, included
Methods included from Hover
#hover_attributes, #hover_background_values, #hover_color_values, #hover_options, #hover_props, #hover_scale_values, #hover_shadow_values, #hover_underline_values, #hover_values, included
Methods included from Playbook::Position
included, #position_options, #position_values
Methods included from Order
included, #order_options, #order_props, #order_values
Methods included from FlexShrink
#flex_shrink_options, #flex_shrink_props, #flex_shrink_values, included
Methods included from FlexGrow
#flex_grow_options, #flex_grow_props, #flex_grow_values, included
Methods included from Flex
#flex_options, #flex_props, #flex_values, included
Methods included from AlignSelf
#align_self_options, #align_self_props, #align_self_values, included
Methods included from AlignContent
#align_content_options, #align_content_props, #align_content_values, included
Methods included from AlignItems
#align_items_options, #align_items_props, #align_items_values, included
Methods included from JustifySelf
included, #justify_self_options, #justify_self_props, #justify_self_values
Methods included from JustifyContent
included, #justify_content_options, #justify_content_props, #justify_content_values
Methods included from FlexWrap
#flex_wrap_options, #flex_wrap_props, #flex_wrap_values, included
Methods included from FlexDirection
#flex_direction_options, #flex_direction_props, #flex_direction_values, included
Methods included from Cursor
#cursor_options, #cursor_props, #cursor_values, included
Methods included from Display
#display_options, #display_props, #display_size_values, #display_values, included
Methods included from LineHeight
included, #line_height_options, #line_height_props, #line_height_values
Methods included from Shadow
included, #shadow_options, #shadow_props, #shadow_values
Methods included from NumberSpacing
included, #number_spacing_options, #number_spacing_values
Methods included from ZIndex
included, #screen_size_values, #z_index_options, #z_index_props, #z_index_values
Methods included from Spacing
#break_method_values, #column_gap_options, #column_gap_props, #filter_classname, #gap_options, #gap_props, #gap_values, included, #max_width_options, #max_width_props, #max_width_values, #min_width_options, #min_width_props, #min_width_values, #row_gap_options, #row_gap_props, #screen_size_values, #spacing_options, #spacing_props, #spacing_values, #width_options, #width_props, #width_values
Methods included from Classnames
#generate_classname, #generate_classname_without_spacing, included
Methods included from Playbook::Props
Methods included from Playbook::PbKitHelper
Methods included from Playbook::PbFormsHelper
Instance Method Details
#classname ⇒ Object
23 24 25 26 27 28 29 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 23 def classname additional_classes = [] additional_classes << "advanced-table-responsive-#{responsive} pinned-left" if responsive == "scroll" additional_classes << "selectable-rows-enabled" if selectable_rows && enable_toggle_expansion == "none" generate_classname("pb_advanced_table_header", "pb_table_thead", *additional_classes, separator: " ") end |
#find_original_column_def(accessor) ⇒ Object
Get original column definition for custom rendering
86 87 88 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 86 def find_original_column_def(accessor) find_column_def_by_accessor(column_definitions, accessor) end |
#has_header_renderer?(cell) ⇒ Boolean
Check if a header cell has a custom renderer
91 92 93 94 95 96 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 91 def has_header_renderer?(cell) return false unless cell[:accessor].present? original_def = find_original_column_def(cell[:accessor]) original_def && original_def[:header].present? end |
#header_rows ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 39 def header_rows wrapped_columns = wrap_leaf_columns(column_definitions) rows = [] max_depth = compute_max_depth(wrapped_columns) max_depth.times { rows << [] } process_columns(wrapped_columns, rows, 0, max_depth) rows end |
#render_header(cell) ⇒ Object
Render custom header content
99 100 101 102 103 104 105 106 107 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 99 def render_header(cell) return cell[:label] unless has_header_renderer?(cell) original_def = find_original_column_def(cell[:accessor]) custom_renderer = original_def[:header] # Call the custom renderer with the cell data and label custom_renderer.call(cell, cell[:label]) end |
#render_select_all_checkbox ⇒ Object
Selectable Rows w/ Subrows - checkboxes part of toggleable first cell
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 71 def render_select_all_checkbox if selectable_rows pb_rails("checkbox", props: { id: "#{id ? "#{id}-" : ''}select-all-rows", indeterminate_main: true, indeterminate_main_labels: ["", ""], name: "#{id ? "#{id}-" : ''}select-all-rows", data: { action: "click->pb-advanced-table#toggleAllRowSelection", }, }) end end |
#render_select_all_header ⇒ Object
Selectable Rows No Subrows - checkboxes in their own first cell
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 50 def render_select_all_header if selectable_rows additional_classes = [] additional_classes << "table-header-cells-custom" additional_classes << "header-cells-with-actions" if additional_classes << "checkbox-cell-header" additional_classes << "pinned-left" if responsive == "scroll" pb_rails("table/table_header", props: { classname: additional_classes.join(" "), }) do pb_rails("checkbox", props: { id: "#{id ? "#{id}-" : ''}select-all-rows", indeterminate_main: true, indeterminate_main_labels: ["", ""], name: "#{id ? "#{id}-" : ''}select-all-rows", }) end end end |
#th_classname(is_first_column: false) ⇒ Object
31 32 33 34 35 36 37 |
# File 'app/pb_kits/playbook/pb_advanced_table/table_header.rb', line 31 def th_classname(is_first_column: false) additional_classes = [] additional_classes << "pinned-left" if is_first_column && responsive == "scroll" && !selectable_rows additional_classes << "header-cells-with-actions" if selectable_rows && generate_classname("table-header-cells", *additional_classes, separator: " ") end |