Class: Avo::TabSwitcherComponent

Inherits:
BaseComponent
  • Object
show all
Includes:
ApplicationHelper, UrlHelpers
Defined in:
app/components/avo/tab_switcher_component.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ApplicationHelper

#a_button, #a_link, #button_classes, #decode_filter_params, #empty_state, #encode_filter_params, #get_model_class, #input_classes, #mount_path, #number_to_social, #render_license_warning, #root_path_without_url, #svg, #white_panel_classes

Methods included from ResourcesHelper

#field_wrapper, #filter_wrapper, #index_field_wrapper, #item_select_all_input, #item_selector_init, #item_selector_input, #resource_grid, #resource_table

Methods included from UrlHelpers

#edit_resource_path, #new_resource_path, #preview_resource_path, #related_resources_path, #resource_attach_path, #resource_detach_path, #resource_path, #resource_view_path, #resources_path

Methods inherited from BaseComponent

#has_with_trial

Constructor Details

#initialize(resource:, group:, current_tab:, active_tab_name:, view:) ⇒ TabSwitcherComponent

Returns a new instance of TabSwitcherComponent.



15
16
17
18
19
20
21
22
# File 'app/components/avo/tab_switcher_component.rb', line 15

def initialize(resource:, group:, current_tab:, active_tab_name:, view:)
  @active_tab_name = active_tab_name
  @resource = resource
  @group = group
  @current_tab = current_tab
  @tabs = group.items
  @view = view
end

Instance Attribute Details

#active_tab_nameObject (readonly)

Returns the value of attribute active_tab_name.



7
8
9
# File 'app/components/avo/tab_switcher_component.rb', line 7

def active_tab_name
  @active_tab_name
end

#current_tabObject (readonly)

Returns the value of attribute current_tab.



9
10
11
# File 'app/components/avo/tab_switcher_component.rb', line 9

def current_tab
  @current_tab
end

#groupObject (readonly)

Returns the value of attribute group.



8
9
10
# File 'app/components/avo/tab_switcher_component.rb', line 8

def group
  @group
end

#tabsObject (readonly)

Returns the value of attribute tabs.



10
11
12
# File 'app/components/avo/tab_switcher_component.rb', line 10

def tabs
  @tabs
end

#viewObject (readonly)

Returns the value of attribute view.



11
12
13
# File 'app/components/avo/tab_switcher_component.rb', line 11

def view
  @view
end

Instance Method Details

#is_edit?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/components/avo/tab_switcher_component.rb', line 35

def is_edit?
  @view.in?(%w[edit update])
end

#is_initial_load?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/components/avo/tab_switcher_component.rb', line 43

def is_initial_load?
  params[:active_tab_name].blank?
end

#is_new?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/components/avo/tab_switcher_component.rb', line 39

def is_new?
  @view.in?(%w[new create])
end

#selected?(tab) ⇒ Boolean

On initial load we want that each tab button to be the selected one. We do that so we don’t get the wrongly selected item for a quick brief when first switching from one panel to another.

Returns:

  • (Boolean)


49
50
51
52
53
54
55
# File 'app/components/avo/tab_switcher_component.rb', line 49

def selected?(tab)
  if is_initial_load?
    current_tab.name.to_s == tab.name.to_s
  else
    tab.name.to_s == active_tab_name.to_s
  end
end

#tab_path(tab) ⇒ Object

TOD: helper to record:



25
26
27
28
29
30
31
32
33
# File 'app/components/avo/tab_switcher_component.rb', line 25

def tab_path(tab)
  if is_edit?
    helpers.edit_resource_path(resource: @resource, record: @resource.record, keep_query_params: true, active_tab_name: tab.name, tab_turbo_frame: group.turbo_frame_id)
  elsif is_new?
    helpers.new_resource_path(resource: @resource, keep_query_params: true, active_tab_name: tab.name, tab_turbo_frame: group.turbo_frame_id)
  else
    helpers.resource_path(resource: @resource, record: @resource.record, keep_query_params: true, active_tab_name: tab.name, tab_turbo_frame: group.turbo_frame_id)
  end
end