acceptable-cartoon-88076
06/28/2023, 4:14 PMlemon-wall-20836
06/28/2023, 4:26 PMlemon-wall-20836
06/28/2023, 4:27 PMacceptable-cartoon-88076
06/28/2023, 4:47 PMacceptable-cartoon-88076
06/28/2023, 4:48 PMhttps://cdn.discordapp.com/attachments/1123647534468960367/1123656160361336962/image.png▾
acceptable-cartoon-88076
06/28/2023, 4:48 PMacceptable-cartoon-88076
06/28/2023, 4:48 PMlemon-wall-20836
06/28/2023, 4:48 PMlemon-wall-20836
06/28/2023, 4:49 PMacceptable-cartoon-88076
06/28/2023, 4:49 PMlemon-wall-20836
06/28/2023, 4:49 PMacceptable-cartoon-88076
06/28/2023, 4:49 PMacceptable-cartoon-88076
06/28/2023, 4:49 PMacceptable-cartoon-88076
06/28/2023, 4:50 PMlemon-wall-20836
06/28/2023, 4:52 PMruby
class WorkflowEditorMenu < Avo::BaseMenu
def items
link_to ...
resource...
end
end
lemon-wall-20836
06/28/2023, 4:52 PMrender WorkflowEditorMenu.new
somewhere in the code...acceptable-cartoon-88076
06/28/2023, 4:52 PMacceptable-cartoon-88076
06/28/2023, 4:53 PMacceptable-cartoon-88076
06/28/2023, 4:53 PMlemon-wall-20836
06/28/2023, 4:53 PMacceptable-cartoon-88076
06/28/2023, 4:53 PMacceptable-cartoon-88076
06/28/2023, 4:54 PMlemon-wall-20836
06/28/2023, 5:17 PMlemon-wall-20836
06/28/2023, 5:18 PMacceptable-cartoon-88076
06/28/2023, 5:19 PMacceptable-cartoon-88076
06/28/2023, 5:21 PMlemon-wall-20836
06/28/2023, 5:21 PMacceptable-cartoon-88076
06/28/2023, 5:22 PMacceptable-cartoon-88076
06/28/2023, 5:22 PMlemon-wall-20836
06/28/2023, 5:22 PMapp/components
dir and follow the conventions app/components/avo/sidebar/workflow_component.rb
acceptable-cartoon-88076
06/28/2023, 5:22 PMacceptable-cartoon-88076
06/28/2023, 5:23 PMlemon-wall-20836
06/28/2023, 5:23 PMlemon-wall-20836
06/28/2023, 5:23 PMacceptable-cartoon-88076
06/28/2023, 9:21 PMacceptable-cartoon-88076
06/28/2023, 9:24 PMacceptable-cartoon-88076
06/28/2023, 9:28 PMlemon-wall-20836
06/29/2023, 9:33 AMacceptable-cartoon-88076
06/29/2023, 1:59 PMacceptable-cartoon-88076
06/29/2023, 9:35 PMacceptable-cartoon-88076
06/29/2023, 9:42 PMlemon-wall-20836
07/02/2023, 8:43 PMlemon-wall-20836
07/02/2023, 8:45 PMItemSwitcher
(which I created because I was lazy), we add a def component
method on the Avo::Menu::BaseItem
which will produce the name of the view component used by the renderer.
ruby
#pseudo code
class Avo::Menu::BaseItem
def namespace
# code that transforms classes from Avo::Menu::Link to Link
end
def view_component
"Avo::Sidebar::#{name_without_namespace}Component".safe_constantize.new **view_component_args
end
def view_component_args
{
label: item.label,
path: item.path,
...
}
end
end
lemon-wall-20836
07/02/2023, 8:50 PMerb
<!-- Instead of this -->
<% Avo::App.main_menu.items.each do |item| %>
<%= render Avo::Sidebar::ItemSwitcherComponent.new item: item %>
<% end %>
<!-- Something like this of this -->
<% Avo::App.main_menu.items.each do |item| %>
<%= render item.view_component %>
<% end %>
lemon-wall-20836
07/02/2023, 8:51 PMAvo::Menu::Link
) and view component files (ex: Avo::Sidebar::LinkComponent
) and they can self-registerlemon-wall-20836
07/02/2023, 8:53 PMlemon-wall-20836
07/02/2023, 8:54 PMacceptable-cartoon-88076
07/02/2023, 10:22 PMacceptable-cartoon-88076
07/02/2023, 10:23 PMlemon-wall-20836
07/03/2023, 4:09 PMlemon-wall-20836
07/03/2023, 4:09 PM