From bc2da596bee792fcc4d032cee36cefc58f140a8f Mon Sep 17 00:00:00 2001 From: kosay Date: Wed, 22 Nov 2023 03:34:36 +0900 Subject: [PATCH] feat(ui/table): Highlight the filter form only when it is active and in input mode. --- src/ui/widget/table.rs | 5 ++++- src/ui/widget/table/filter_form.rs | 15 ++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/ui/widget/table.rs b/src/ui/widget/table.rs index 114f0cb7..e50603b1 100644 --- a/src/ui/widget/table.rs +++ b/src/ui/widget/table.rs @@ -633,7 +633,10 @@ impl RenderTrait for Table<'_> { self.widget_config.clone() }; - let block = widget_config.render_block(self.can_activate() && is_active, is_mouse_over); + let block = widget_config.render_block( + self.can_activate() && !self.mode.is_filter_input() && is_active, + is_mouse_over, + ); let constraints = constraints(self.items.digits()); diff --git a/src/ui/widget/table/filter_form.rs b/src/ui/widget/table/filter_form.rs index ec6016f1..1f16dd29 100644 --- a/src/ui/widget/table/filter_form.rs +++ b/src/ui/widget/table/filter_form.rs @@ -1,7 +1,7 @@ use crossterm::event::KeyEvent; use ratatui::{ layout::{Constraint, Direction, Layout, Rect}, - widgets::{Block, BorderType, Borders, Paragraph}, + widgets::{Block, Paragraph}, Frame, }; @@ -18,7 +18,7 @@ struct Chunk { #[derive(Debug)] pub struct FilterForm { - block: Block<'static>, + widget_config: WidgetConfig, input_widget: InputForm, chunk: Chunk, layout: Layout, @@ -27,9 +27,7 @@ pub struct FilterForm { impl Default for FilterForm { fn default() -> Self { Self { - block: Block::default() - .border_type(BorderType::Plain) - .borders(Borders::ALL), + widget_config: WidgetConfig::default(), input_widget: InputForm::new(WidgetConfig::builder().block(Block::default()).build()), chunk: Chunk::default(), layout: Layout::default() @@ -46,7 +44,7 @@ impl FilterForm { pub fn update_chunk(&mut self, chunk: Rect) { let block_chunk = Rect::new(chunk.x, chunk.y, chunk.width, FILTER_HEIGHT); - let inner_chunk = self.block.inner(block_chunk); + let inner_chunk = self.widget_config.block().inner(block_chunk); let chunks = self.layout.split(inner_chunk); @@ -75,7 +73,10 @@ impl FilterForm { } pub fn render(&mut self, f: &mut Frame<'_>, is_active: bool) { - f.render_widget(self.block.clone(), self.chunk.block); + f.render_widget( + self.widget_config.render_block(is_active, false), + self.chunk.block, + ); f.render_widget(Paragraph::new("FILTER: "), self.chunk.header);