This commit is contained in:
yumoqing 2025-12-29 14:37:13 +08:00
parent 2cdac6e815
commit f9184da720

View File

@ -14,9 +14,13 @@ bricks.Menu = class extends bricks.VScrollPanel {
this.dom_element.style.backgroundColor = options.bgcolor || "white"; this.dom_element.style.backgroundColor = options.bgcolor || "white";
this.build_title(); this.build_title();
this.build_description(); this.build_description();
this.create_children(this, this.opts.items); // this.create_children(this, this.opts.items);
this.user_data = opts; this.user_data = opts;
this.bind('item_click', this.menu_clicked.bind(this)); this.bind('item_click', this.menu_clicked.bind(this));
this.container = new bricks.VBox({});
this.container.user_data = opts;
this.add_widget(this.container);
this.schedule_once(this.create_children.bind(this.container, this.opts.items), 0.1);
} }
create_submenu_container(){ create_submenu_container(){
let cp = new bricks.VBox({}); let cp = new bricks.VBox({});
@ -84,7 +88,7 @@ bricks.Menu = class extends bricks.VScrollPanel {
} }
this.dispatch('command', opts); this.dispatch('command', opts);
} }
create_children(w, items){ async create_children(w, items){
for (let i=0;i<items.length;i++){ for (let i=0;i<items.length;i++){
let item = items[i]; let item = items[i];
let subw = this.create_menuitem(item); let subw = this.create_menuitem(item);
@ -93,12 +97,13 @@ bricks.Menu = class extends bricks.VScrollPanel {
} }
if (item.hasOwnProperty('items')){ if (item.hasOwnProperty('items')){
var itw = new bricks.VBox({}); var itw = new bricks.VBox({});
itw.user_data = item;
let w1 = this.create_submenu_container(); let w1 = this.create_submenu_container();
itw.add_widget(subw); itw.add_widget(subw);
itw.add_widget(w1); itw.add_widget(w1);
this.create_children(w1, item.items); this.create_children(w1, item.items);
subw.bind('click', this.items_toggle_hide.bind(this, w1)); subw.bind('click', this.items_toggle_hide.bind(this, w1));
itw.container = w1;
itw.user_data = item;
w.add_widget(itw); w.add_widget(itw);
} else { } else {
subw.bind('click', this.regen_menuitem_event.bind(this, item)) subw.bind('click', this.regen_menuitem_event.bind(this, item))
@ -115,7 +120,7 @@ bricks.Menu = class extends bricks.VScrollPanel {
get_container(w, mpath){ get_container(w, mpath){
var x = mpath.split('/'); var x = mpath.split('/');
var name = x.shift() var name = x.shift()
var container = w.children[w.children.length - 1]; var container = w.container;
var fc; var fc;
containers.children.forEach(c=>{ containers.children.forEach(c=>{
if (c.user_data){ if (c.user_data){