Почему не работает сортировка по цене?
у вас обработчик отрабатывает только 1 разdocument.addEventListener("click", (e) => {
    // Используйте e.target 
    shop.sortProductsByPrice(Product.SORT_ORDER_ASC);
    shop.show();
}, false);
Если e.target === (вашей ячейки) то перерисовывать таблицу и делать сортировку, дальше думаю разберетесь
Когда вы делаете show() вы убиваете priceFilter вместе с его подпиской на событие. Нужно заново подписаться ну или не убивать его.