fix: improve tabular row click handling
- Remove unused event.target.bricks_widget assignment - Add check to prevent clicks on interactive elements (A, BUTTON, INPUT, SELECT, TEXTAREA) from triggering row selection - This ensures toolbar buttons and form inputs inside rows work correctly
This commit is contained in:
parent
b866f236ec
commit
7ca370c0af
@ -40,7 +40,12 @@ bricks.Tabular = class extends bricks.DataViewer {
|
|||||||
return row
|
return row
|
||||||
}
|
}
|
||||||
async record_clicked(row, record, event){
|
async record_clicked(row, record, event){
|
||||||
var r = event.target.bricks_widget;
|
// Prevent click on interactive elements (links, buttons, inputs) from triggering selection
|
||||||
|
var target = event.target;
|
||||||
|
if (target && (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var old_select_row = this.select_row;
|
var old_select_row = this.select_row;
|
||||||
if (old_select_row){
|
if (old_select_row){
|
||||||
this.select_row = null;
|
this.select_row = null;
|
||||||
|
|||||||
23
dist/bricks.js
vendored
23
dist/bricks.js
vendored
@ -3822,15 +3822,28 @@ bricks.Menu = class extends bricks.VScrollPanel {
|
|||||||
opts.height = '100%';
|
opts.height = '100%';
|
||||||
super(options);
|
super(options);
|
||||||
this.dom_element.style.display = "";
|
this.dom_element.style.display = "";
|
||||||
this.dom_element.style.backgroundColor = options.bgcolor || "white";
|
this.dom_element.style.backgroundColor = options.bgcolor || "transparent";
|
||||||
this.build_title();
|
this.build_title();
|
||||||
this.build_description();
|
this.build_description();
|
||||||
this.user_data = this.opts;
|
this.user_data = this.opts;
|
||||||
|
this.is_collapsed = false;
|
||||||
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 = new bricks.VBox({});
|
||||||
this.add_widget(this.container);
|
this.add_widget(this.container);
|
||||||
schedule_once(this.create_children.bind(this, this, 0), 0.1);
|
schedule_once(this.create_children.bind(this, this, 0), 0.1);
|
||||||
}
|
}
|
||||||
|
collapse(){
|
||||||
|
this.is_collapsed = true;
|
||||||
|
this.dom_element.classList.add('menu-collapsed');
|
||||||
|
}
|
||||||
|
expand(){
|
||||||
|
this.is_collapsed = false;
|
||||||
|
this.dom_element.classList.remove('menu-collapsed');
|
||||||
|
}
|
||||||
|
toggle_collapse(){
|
||||||
|
if (this.is_collapsed) this.expand();
|
||||||
|
else this.collapse();
|
||||||
|
}
|
||||||
create_submenu_container(){
|
create_submenu_container(){
|
||||||
let cp = new bricks.VBox({});
|
let cp = new bricks.VBox({});
|
||||||
cp.set_style('marginLeft', "15px");
|
cp.set_style('marginLeft', "15px");
|
||||||
@ -4007,6 +4020,7 @@ bricks.Menu = class extends bricks.VScrollPanel {
|
|||||||
iw.menuitem = w;
|
iw.menuitem = w;
|
||||||
tw.menuitem = w;
|
tw.menuitem = w;
|
||||||
w.set_css(this.menuitem_css || 'menuitem');
|
w.set_css(this.menuitem_css || 'menuitem');
|
||||||
|
if (item.label) w.dom_element.title = item.label;
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
regen_menuitem_event(item, event){
|
regen_menuitem_event(item, event){
|
||||||
@ -13018,7 +13032,12 @@ bricks.Tabular = class extends bricks.DataViewer {
|
|||||||
return row
|
return row
|
||||||
}
|
}
|
||||||
async record_clicked(row, record, event){
|
async record_clicked(row, record, event){
|
||||||
var r = event.target.bricks_widget;
|
// Prevent click on interactive elements (links, buttons, inputs) from triggering selection
|
||||||
|
var target = event.target;
|
||||||
|
if (target && (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var old_select_row = this.select_row;
|
var old_select_row = this.select_row;
|
||||||
if (old_select_row){
|
if (old_select_row){
|
||||||
this.select_row = null;
|
this.select_row = null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user