recursive category tree directive