From 8f9634fdf24618938f37ded00de60af9296a9c91 Mon Sep 17 00:00:00 2001 From: joe Date: Tue, 24 Feb 2026 10:40:00 +0900 Subject: [PATCH] =?UTF-8?q?=E6=A4=9C=E7=B4=A2=E3=83=90=E3=83=BC=E3=82=92?= =?UTF-8?q?=E3=83=88=E3=83=83=E3=83=97=E3=83=84=E3=83=BC=E3=83=AB=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=81=AB=E5=8F=8E=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index c85943b..3e21e78 100644 --- a/main.py +++ b/main.py @@ -848,7 +848,6 @@ class FlutterStyleDashboard: self._search_field.value = self.explorer_state.query self.search_overlay.visible = True self.page.update() - self.page.set_focus(self._search_field) def close_search_overlay(self, _=None): if not hasattr(self, "search_overlay"): @@ -869,7 +868,56 @@ class FlutterStyleDashboard: return self._search_field.value = keyword self.page.update() - self.page.set_focus(self._search_field) + + def _clear_search_query(self, _=None): + self._search_field.value = "" + self.explorer_state.query = "" + self.explorer_state.offset = 0 + self.close_search_overlay() + self.update_main_content() + + def _build_search_overlay(self) -> ft.Container: + command_palette = ft.Container( + width=420, + padding=ft.Padding.symmetric(horizontal=12, vertical=8), + bgcolor=ft.Colors.WHITE, + border_radius=12, + shadow=[ft.BoxShadow(blur_radius=20, color=ft.Colors.BLACK26)], + content=ft.Column( + [ + ft.Row( + [ + ft.Icon(ft.Icons.SEARCH, size=22, color=ft.Colors.BLUE_GREY_500), + ft.Container(expand=True, content=self._search_field), + ft.IconButton(ft.Icons.CLOSE, tooltip="閉じる", on_click=self.close_search_overlay), + ], + vertical_alignment=ft.CrossAxisAlignment.CENTER, + ), + ft.Text( + "Enterで検索、ESCで閉じる", + size=11, + color=ft.Colors.BLUE_GREY_400, + ), + ft.Row( + [ + ft.TextButton("すべて表示に戻す", on_click=self._clear_search_query), + ft.TextButton("閉じる", on_click=self.close_search_overlay), + ], + alignment=ft.MainAxisAlignment.END, + ), + ], + spacing=6, + ), + ) + + return ft.Container( + visible=False, + expand=True, + bgcolor=ft.Colors.BLACK54, + alignment=ft.Alignment(0, 0), + content=command_palette, + on_click=lambda _: self.close_search_overlay(), + ) @log_wrap("_build_invoice_detail_screen") def _build_invoice_detail_screen(self) -> ft.Column: