Реализовать ContextMenu
первый аргумент - узел на котором будет работать контекстное меню второй аргумент - описание структуры меню. Пример описания прикладывается. Структура может быть любой по вложенности и количеству элементов меню. (рекурсивно генерировать DOM будет ок) подменю может содержать вложенные подменю при правом клике по узлу, для которого было создано ContextMenu показывать меню прямо под местом клика. при клике по пункту меню должна выполняться соответствующая функция каждый элемент, содержащий подменю, должен быть отмечен ">" символом подменю открывается при наведении на пункт подменю, и закрывается при уходе мышки с подменю или пункта подменю (смотри события mouseenter и mouseleave) с позиционированием (чтобы все меню и подменю вмещались в видимую часть экрана) можно не заморачиваться стилизовать меню можно на свой вкус (главное - видимые границы элементов)