feat(dropdown): support programatic trigger, toggle callback & esc key