Facebook風トピックモーダル - これは良い?

@Don のバージョンを試してみたいです :heart_eyes:

こんにちは :waving_hand:

もちろんです、ぜひ!当初、この機能は自分のカスタムテーマに直接組み込んでいたので、それを抽出して独立したテーマコンポーネントに分割する必要がありました。

自分のサイトでは、専用のボタンでモーダルをトリガーしていますが、このテーマコンポーネントではトピックをクリックしたときに直接トリガーされます。

Theme Creatorで試してみてください:

わあ、とても速そうです。本当に気に入りました。オープンソース化していただけると非常に興味深いですね。素晴らしい仕事です。

何十年も「Book of Faces」を使っていないので、そこからの参照はできませんが、とにかく……ドン、これは本当にすっきりしていますね。気に入るとは思っていませんでしたが、スマートフォンで使えば本当にクールになりそうです。再び言いますが、Facebookへの参照ではありませんが、私にはこれは通常のフォーラムとチャットの中間のようなものに思えます。

見た目も使い心地も非常に滑らかです。とてもクールですね :chefs_kiss:

ネットワークリクエストが大量に発生しているようです… テーマクリエーターで試している際に、レート制限に何度も引っかかります。トピックにアクセスしなくても、トピックリストからすべてのトピックの内容を取得しているように見えます(これが、非常に高速に感じられる理由でしょうか?)。

はい、このコンポーネントは元々、1画面に1~2件のトピックしか収まらないカスタムカードレイアウトを採用している私のサイトのために開発しました。その構成では、ビューポートプリフェッチはレート制限に引っかかることなくスムーズに動作します。しかし、標準的なDiscourseのテーブル形式のトピックリストでは、同時に表示されるトピック数がはるかに多くなるため、スクロール中にプリフェッチキューが急速に埋まってしまいます。

実はこれが、私がこのコンポーネントを公式に公開していない主な理由です。標準的なレイアウトに対応するためにこの動作を調整する必要があることを知っていたからです。

おっしゃる通りです。これを堅牢で汎用性の高いコンポーネントにするためには、この部分を最適化する必要があります。

以前はハードコーディングされていたいくつかの設定を追加したので、コンポーネントは異なるレイアウトに簡単に適応できるようになりました。

これをオープンソース化して、ちょっと遊んでみようという可能性はありますか? :slight_smile: 気に入りましたよ :wink:

正直に言うと、これは標準的なトピックリストよりもあなたのテーマにより適していると思います

カスタムレイアウトをより柔軟に設定できるよう、2つの新しい設定を追加しました:

  • trigger_style:トピック行全体をクリック可能にする(row)か、通常のトピックリンクをそのまま残したままプレビューを開く小さな展開アイコン(button)を追加するかを選択できます。

  • plugin_outlet:ボタンスタイルを使用する場合、展開アイコンがレンダリングされるプラグインアウトレットの正確な位置を指定できます(デフォルトは topic-list-after-title)。

これにより、カスタムテーマは必要に応じてトリガーボタンを独自のプラグインアウトレットに接続できます。

実は、このスタンドアロンコンポーネントを私のサイトでちょうど有効化しました。テーマから元のコードを完全に削除し、<PluginOutlet /> を通じて動作するこのコンポーネントに置き換えました。

さらに、読み取り追跡機能のバグも修正しました。

オープンソース化する前に、すべての機能がしっかりしていることを確認するため、本番環境で少しだけテストしてみたいと思います。


ちなみに、テストできるように、一時的にテーマクリエーターのプレビューをボタントリガータイプに切り替えました!