this is just a basic way of filtering a nested array. There are shorter ways to write this but this should give you an idea xd
if not value.filter:
return value.allItems
filteredItems = []
def recursiveFilter(menuItem, toFilter):
for item in menuItem:
if toFilter.lower() in item.label.text.lower():
filteredItems.append(item)
elif len(item.items):
recursiveFilter(item.items, toFilter)
recursiveFilter(value.allItems, value.filter)
return filteredItems

