コンポーネント
← すべてのコンポーネント

最下部追従

stimeo--stick-to-bottom

追加された内容にスクロール領域を自動追従 — ただしユーザーが上にスクロール中は追従しない。

stimeo--stick-to-bottom コントローラはスクロール領域(チャットログ・ライブコンソール)を最新の内容に貼り付けます。ただし追従するのはユーザーが既に最下部付近にいるときだけです。末尾からの距離が threshold 以内なら pinned とみなします。content(無ければ要素自身)の子追加を MutationObserver で監視し、pinned 中の追加は最下部へスクロールし、unpinned 中は位置を保持して data-has-new を立て new を発火します。スクロールで pinned を都度算出して data-pinned を反映し、遷移時に pin を発火します。scrollToBottom アクションで最下部へ復帰できます(「新着」ボタン用)。挙動のみで、内容の追加は行わず(Turbo Stream / 利用側の責務)、追従ロジックのみの最小版です(仮想化や入力欄は持たず、それらはプレミアム Chat Base の領分)。スクロール系の軽量メンバーです。状態はスクロール位置から都度導出する(モジュールスコープ状態なし)ため connect で Turbo Stream 追記後も再同期し、 behavior は reduced-motion 下 auto にフォールバックし、自動スクロールはフォーカスを移動せず、observer と passive scroll リスナは disconnect(Turbo 遷移含む)で解放します。

実行中
  • メッセージ 1
  • メッセージ 2
  • メッセージ 3
  • メッセージ 4
  • メッセージ 5
  • メッセージ 6
  • メッセージ 7
  • メッセージ 8