Модальное окно тем в стиле Facebook — лучше ли это?

Я бы с удовольствием протестировал вашу версию @Don :heart_eyes:

Привет :waving_hand:

Конечно, абсолютно! Изначально я встроил эту функцию непосредственно в свою собственную пользовательскую тему, поэтому мне пришлось выделить и разделить её на отдельный компонент темы.

На моём собственном сайте я вызываю модальное окно с помощью специальной кнопки, тогда как этот компонент темы вызывает его напрямую при клике на тему.

Вы можете попробовать его в Theme Creator здесь:

Вау, выглядит очень быстро. Мне это действительно нравится. Было бы здорово, если бы вы сделали его open-source. Отличная работа

Я не пользовался «Книгой друзей» уже несколько десятилетий, так что тут не на что ссылаться, но в любом случае… Дон, это выглядит действительно стильно. Я не ожидал, что мне это понравится, но на телефоне, уверен, это может быть очень круто. Снова без упоминания Facebook, но для меня это что-то среднее между обычным форумом и чатом.

Выглядит и ощущается очень гладко. Очень круто :chefs_kiss:

Похоже, что выполняется множество сетевых запросов… Я постоянно натыкаюсь на ограничения частоты запросов (rate limits), когда тестирую это в конструкторе тем. Похоже, что система загружает содержимое всех тем из списка, даже если вы не заходите в саму тему (из-за этого, вероятно, и создаётся ощущение быстрой работы)?

Да, изначально я создал этот компонент для своего собственного сайта, который использует пользовательскую раскладку карточек, где на экране одновременно помещается только 1–2 темы. В такой настройке предварительная загрузка в области видимости работает плавно, не достигая ограничений частоты запросов. Однако в стандартных списках тем Discourse, основанных на таблицах, одновременно видно гораздо больше тем, из-за чего очередь предварительной загрузки заполняется намного быстрее при прокрутке.

На самом деле это основная причина, по которой я пока не опубликовал компонент официально — я знал, что это поведение нужно сначала адаптировать для стандартных раскладок.

Ты абсолютно прав: чтобы сделать этот компонент надёжным и универсальным, мне нужно его оптимизировать.

Я добавил несколько настроек, которые ранее были жестко заданы, чтобы компонент мог легко адаптироваться к различным макетам.

Не могли бы вы открыть исходный код, чтобы я мог с ним поиграть :slight_smile: Мне это нравится :wink:

Честно говоря, думаю, это лучше подойдёт для вашей темы, а не для стандартного списка тем.

Я только что добавил две новые настройки, чтобы сделать кастомные макеты гораздо более гибкими:

  • trigger_style: Выберите, делать ли всю строку темы кликабельной (row) или добавлять небольшую кнопку-иконку раскрытия (button), которая открывает предпросмотр, оставляя обычную ссылку на тему нетронутой.

  • plugin_outlet: При использовании стиля с кнопкой вы можете указать точный плагин-аутлет, где будет отображаться иконка раскрытия (по умолчанию topic-list-after-title).

Это позволяет кастомным темам прикреплять кнопку-триггер к своим собственным плагин-аутлетам по мере необходимости.

Я фактически только что активировал именно этот независимый компонент на своем сайте. Я полностью удалил свой исходный код из темы и заменил его на этот компонент, работающий через <PluginOutlet />.

Кроме того, я также исправил ошибку в функционале отслеживания прочтения.

Я хотел бы протестировать его в реальной рабочей среде в течение короткого времени, чтобы убедиться, что все работает стабильно, прежде чем открыть исходный код.


Кстати, я временно переключил предпросмотр Theme Creator на тип триггера button на короткое время, чтобы вы могли протестировать!