На самом деле ничего сложно. При клике пишете в localStorage количество кликов и дату последнего клика. При повторном клике сверяете сколько прошло времени с даты последнего клика и обнуляете.
Я не против написания собственных велосипедов, это полезно для понимания принципов работы тех или иных решений, но все же посоветую ant.design и ее компонент tree, который отлично подходит для реализации подобных задач.
1. Можно сделать отдельный адрес https://mysite.ru?parent=N, где N - идентификатор родителя и уже на этой странице подгружать данные от родителя.
2. Можно при клике всех потомком класть в sessionStorage и отображать их на новой вкладке уже из него. Это даст быстроту открытия, но следует помнить, что вкладок с разными данными может быть несколько и данные нужно разделять.
На самом деле, в простой реализации, массовое редактирование ничем не отличается от одиночного. Вместо одного ID, редактируемого объекта, передается несколько, которые кладутся в некий массив при выборе чекбоксов и далее участвуют в update записей в БД