bugs fixed: `opt.callback` now only execute from buttons click; `dialog.close()` will close dialog directly