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
|
||||
}
|
||||
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;
|
||||
if (old_select_row){
|
||||
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%';
|
||||
super(options);
|
||||
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_description();
|
||||
this.user_data = this.opts;
|
||||
this.is_collapsed = false;
|
||||
this.bind('item_click', this.menu_clicked.bind(this));
|
||||
this.container = new bricks.VBox({});
|
||||
this.add_widget(this.container);
|
||||
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(){
|
||||
let cp = new bricks.VBox({});
|
||||
cp.set_style('marginLeft', "15px");
|
||||
@ -4007,6 +4020,7 @@ bricks.Menu = class extends bricks.VScrollPanel {
|
||||
iw.menuitem = w;
|
||||
tw.menuitem = w;
|
||||
w.set_css(this.menuitem_css || 'menuitem');
|
||||
if (item.label) w.dom_element.title = item.label;
|
||||
return w;
|
||||
}
|
||||
regen_menuitem_event(item, event){
|
||||
@ -13018,7 +13032,12 @@ bricks.Tabular = class extends bricks.DataViewer {
|
||||
return row
|
||||
}
|
||||
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;
|
||||
if (old_select_row){
|
||||
this.select_row = null;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user