var bricks = window.bricks || {}; bricks.key_selectable_stack = []; bricks.Layout = class extends bricks.JsWidget { constructor(options){ if (! options){ options = {}; } super(options); this._container = true; this.keyselectable = options.keyselectable || false; this.children = []; if (this.use_key_select){ this.enable_key_select(); } } build_title(){ if (this.title){ this.title_w = new bricks.Title3({otext:this.title, i18n:true, dynsize:true}); this.add_widget(this.title_w); } } build_description(){ if (this.description){ this.description_w = new bricks.Text({otext:this.description, i18n:true, dynsize:true }); this.add_widget(this.description_w); } } set_key_select_items(){ this.key_select_items = this.children; } enable_key_select(){ this.keyselectable = true; this.set_key_select_items(); bricks.app.bind('keydown', this.key_handler.bind(this)); bricks.key_selectable_stack.push(this) this.select_default_item(); } is_currkeyselectable(){ if (!this.keyselectable) return false; var p = bricks.key_selectable_stack.length -1; return bricks.key_selectable_stack[p] == this; } disable_key_select(){ this.keyselectable = false; bricks.app.unbind('keydown', this.key_handler.bind(this)); if (this.is_currkeyselectable()){ this.select_item.selected(false); this.select_item = null; bricks.key_selectable_stack.pop(); } return; } select_item(w){ if (!w) return; // if (!this.keyselectable) return; if (this.selected_item){ this.selected_item.selected(false); } this.selected_item = w; this.selected_item.selected(true); } select_default_item(){ if (!this.keyselectable) return; var w = this.children[0]; this.select_item(w); } select_next_item(){ if (!this.keyselectable) return; this.set_key_select_items(); for (var i=0;i= this.key_select_items.length){ k = 0; } this.select_item(this.key_select_items[k]) break } } } select_previous_item(){ if (!this.keyselectable) return; this.set_key_select_items(); for (var i=0;i=0 && index < this.children.length){ var pos_w = this.children[index]; this.dom_element.insertBefore(w.dom_element, pos_w.dom_element); this.children.insert(index, w); } else { // append child at end w.parent = this; if (this.baseURI && !w.baseURI){ w.set_baseURI(this.baseURI); } this.children.push(w); this.dom_element.appendChild(w.dom_element); } w.dispatch('on_parent', this); } remove_widgets_at_begin(cnt){ return this._remove_widgets(cnt, false); } remove_widgets_at_end(cnt){ return this._remove_widgets(cnt, true); } _remove_widgets(cnt, from_end){ var children = objcopy(this.children); var len = this.children.length; for (var i=0; i= cnt) break; var k = i; if (from_end) k = len - 1 - i; var w = children[k] this.children.remove(w); this.remove_widget(w); } } remove_widget(w){ w.parent = null; this.children = this.children.filter(function(item){ return item != w; }); this.dom_element.removeChild(w.dom_element); w.dispatch('on_parent', null); } clear_widgets(w){ var e = this.dom_element; while(e.firstChild){ e.removeChild(e.firstChild); } for (var i=0;i h) { this.set_css('vcontainer', true); this.set_css('hcontainer'); this.set_style('width', 'auto'); this.set_style('height', '100%'); } else { this.set_css('vcontainer'); this.set_css('hcontainer', true); this.set_style('height', 'auto'); this.set_style('width', '100%'); } } } bricks.Factory.register('HBox', bricks.HBox); bricks.Factory.register('FHBox', bricks.FHBox); bricks.Factory.register('VBox', bricks.VBox); bricks.Factory.register('FVBox', bricks.FVBox); bricks.Factory.register('Filler', bricks.Filler); bricks.Factory.register('HFiller', bricks.Filler); bricks.Factory.register('VFiller', bricks.Filler); bricks.Factory.register('ResponsableBox', bricks.ResponsableBox);