Class: QTimetrap::ProjectSidebar::Component

Inherits:
Object
  • Object
show all
Includes:
ArchiveToggleHelpers, LogoHelpers, ProjectButtonHelpers, ProjectSelectionHelpers, TaskHelpers
Defined in:
app/components/project_sidebar/component.rb

Overview

Displays project shortcuts and notifies on project selection.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent:, on_project_selected:, on_task_selected: nil, on_archive_mode_toggled: nil) ⇒ Component

Returns a new instance of Component.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/components/project_sidebar/component.rb', line 15

def initialize(
  parent:,
  on_project_selected:,
  on_task_selected: nil,
  on_archive_mode_toggled: nil
)
  @parent = parent
  @on_project_selected = on_project_selected
  @on_task_selected = on_task_selected
  @on_archive_mode_toggled = on_archive_mode_toggled
  initialize_selection_state
  build
end

Instance Attribute Details

#widgetObject (readonly)

Returns the value of attribute widget.



13
14
15
# File 'app/components/project_sidebar/component.rb', line 13

def widget
  @widget
end

Instance Method Details

#render(projects:, tasks: [], selection: {}, selected_task: nil, archive_mode: false) ⇒ Object



29
30
31
32
33
34
35
# File 'app/components/project_sidebar/component.rb', line 29

def render(projects:, tasks: [], selection: {}, selected_task: nil, archive_mode: false)
  values = Array(projects)
  selection = selection_state(selection)
  render_projects(projects: values, selection: selection)
  render_tasks(tasks: tasks, selected_project: selection.fetch(:selected_project), selected_task: selected_task)
  archive_toggle_button.checked = archive_mode
end