slot parameter puts a component in predefined area, like default - cards, sidebar and nav-right on MaterialDesign theme (forum post)
In fact, I tried to run the above code without the slot parameter, and if works from some reason! Maybe it is related to particular browser, or the fact that I’m still on a trial plan, so there might be some additional iframes around my screen.
But I found an even better and ‘prettier’ solution - by putting a LinearPanel around Link elements, so each menu is a LinearPanel, which can then be hidden or shown, like this:
from anvil import *
class Form1(Form1Template):
def __init__(self, **properties):
self.init_components(**properties)
self.myMenu1Items=[]
self.myMenu2Items=[]
def buildingMenus(self):
l = Link(text="First menu 1")
l.set_event_handler("click", self.eventHandler)
self.myMenu1Items.append(l)
l = Link(text="First menu 2")
l.set_event_handler("click", self.eventHandler)
self.myMenu1Items.append(l)
l = Link(text="Second menu 1")
l.set_event_handler("click", self.eventHandler)
self.myMenu2Items.append(l)
def showMenus(self):
self.myMenu1 = LinearPanel(visible=True)
for m1 in self.myMenu1Items:
self.myMenu1.add_component(m1)
self.myMenu2 = LinearPanel(visible=False)
for m2 in self.myMenu2Items:
self.myMenu2.add_component(m2)
self.add_component(self.myMenu1, slot='sidebar')
self.add_component(self.myMenu2, slot='sidebar')
def eventHandler(self, **event_args):
self.add_component(TextBox(text="menu was clicked"))
self.myMenu1.visible = not self.myMenu1.visible
self.myMenu2.visible = not self.myMenu2.visible
def form_show (self, **event_args):
self.buildingMenus()
self.showMenus()
Thanks for your guidance!