40 lines
605 B
Ruby
40 lines
605 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Widgets
|
|
class Sidebar < Container
|
|
def initialize(_parent)
|
|
super
|
|
|
|
@logo = Logo.new self
|
|
@menu = Menu.new self
|
|
end
|
|
|
|
def props=(_value)
|
|
super
|
|
|
|
@logo.props = props[:logo]
|
|
|
|
@menu.props = props[:menu].merge(
|
|
on_up: props[:on_menu_up],
|
|
on_down: props[:on_menu_down],
|
|
).freeze
|
|
end
|
|
|
|
def trigger(event)
|
|
focus&.trigger event
|
|
end
|
|
|
|
private
|
|
|
|
def focus
|
|
case props[:focus]
|
|
when :menu
|
|
@menu
|
|
end
|
|
end
|
|
|
|
def children
|
|
[@logo, @menu]
|
|
end
|
|
end
|
|
end
|