js не воспринимает before как часть класса toggle
Не совсем так - как
часть toggle псевдоэлемент как раз воспринимается, но в функции скрытия вы проверяете на то, что элемент является
ребёнком toggle и вот для псведоэлементов это не так. Собственно, у js нет доступа к псевдоэлементам и их он воспринимает как сам основной элемент.
Для решения проблемы достаточно изменить условие:
if (!$(e.target).parents().hasClass("toggle") && !$(e.target).hasClass("toggle") && $(e.target).parents(".nav-items").length === 0)