feature(menu) add options: beforeClose, beforeClick, beforeOpen, name