summaryrefslogtreecommitdiff
path: root/src/ollama_web/templates/index.html
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-09-13 14:36:46 +0900
committertanaka takashi <isazaka@gmail.com>2026-09-13 14:36:46 +0900
commitb24aa19ad22f59556fc7bbb63c58836799239588 (patch)
tree0a5cee4357f864fc73cba37d7cd2eb23d5266385 /src/ollama_web/templates/index.html
parentf2d24cb7d437ad099291262d7c1b021809cd66ae (diff)
fix(ui): スマホでセッションを削除できるようにする
セッション削除ボタンが通常時はdisplay:noneで、li:hover時だけ表示されていたため、持続的なhoverを持たないスマートフォンでは安定して操作できなかった。モバイル幅、hover非対応、coarse pointer環境ではボタンを常時表示し、44x44pxのタップ領域とtouch-actionを設定する。 表示修正後もタップ後の処理がネイティブwindow.confirmと複数のclickリスナーに依存していたため、削除とセッション選択をsession-list上の単一イベント委譲へ統合する。削除ボタンを先に判定して行選択とサイドバー閉鎖へ伝播しないようにした。 ネイティブ確認ダイアログを既存modalスタイルに沿ったアプリ内確認ダイアログへ置き換える。キャンセル、背景タップ、Escape、フォーカス復帰に対応し、DELETE実行中の二重送信を防止する。通信失敗はネイティブalertではなくダイアログ内のaria-live領域へ表示する。 削除ボタンへbutton typeとaria-labelを明示し、確認ダイアログへdialog semanticsと日英のキャンセル文言を追加する。CHANGELOGと、タッチ向けCSSのカスケード順・サイズ・ネイティブconfirm非依存を確認する回帰テストも更新する。 Validation: 150 tests passed; ruff check passed; node --check src/ollama_web/static/app.js passed; git diff --check passed.
Diffstat (limited to 'src/ollama_web/templates/index.html')
-rw-r--r--src/ollama_web/templates/index.html21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/ollama_web/templates/index.html b/src/ollama_web/templates/index.html
index 54202e3..86f1ee1 100644
--- a/src/ollama_web/templates/index.html
+++ b/src/ollama_web/templates/index.html
@@ -76,6 +76,25 @@
</form>
</div>
+ <div id="delete-session-modal" class="modal" aria-hidden="true">
+ <div class="modal-content confirm-modal-content" role="dialog" aria-modal="true"
+ aria-labelledby="delete-session-modal-title"
+ aria-describedby="delete-session-modal-message">
+ <div class="modal-header">
+ <h2 id="delete-session-modal-title">{{ t('chat.delete_session') }}</h2>
+ </div>
+ <div class="modal-body">
+ <p id="delete-session-modal-message" class="modal-help">{{ t('chat.delete_confirm') }}</p>
+ <div id="delete-session-status" class="delete-session-status" role="status"
+ aria-live="polite"></div>
+ </div>
+ <div class="modal-footer">
+ <button id="delete-session-cancel" type="button" class="secondary">{{ t('common.cancel') }}</button>
+ <button id="delete-session-confirm" type="button" class="danger">{{ t('common.delete') }}</button>
+ </div>
+ </div>
+ </div>
+
<div id="settings-modal" class="modal" aria-hidden="true">
<div class="modal-content settings-modal-content" role="dialog" aria-modal="true"
aria-labelledby="settings-modal-title">
@@ -202,4 +221,4 @@
<script src="{{ url_for('static', path='settings-actions.js') }}"></script>
<script src="{{ url_for('static', path='app.js') }}"></script>
</body>
-</html> \ No newline at end of file
+</html>