diff --git a/src/ftxui/component/slider.cpp b/src/ftxui/component/slider.cpp
index 13daee035fe27cd032e690c44fc1e1a16851a212..e45bd916d803c61ae047abf4ffedf18e111c30a6 100644
--- a/src/ftxui/component/slider.cpp
+++ b/src/ftxui/component/slider.cpp
@@ -227,6 +227,7 @@ class SliderWithLabel : public ComponentBase {
   }
 
   Element Render() override {
+    auto focus_management = Focused() ? focus : Active() ? select : nothing;
     auto gauge_color = Focused() ? color(Color::White) : color(Color::GrayDark);
     return hbox({
                text(label_()) | dim | vcenter,
@@ -236,7 +237,7 @@ class SliderWithLabel : public ComponentBase {
                    text("]"),
                }) | xflex,
            }) |
-           gauge_color | xflex | reflect(box_);
+           gauge_color | xflex | reflect(box_) | focus_management;
   }
 
   ConstStringRef label_;
diff --git a/src/ftxui/component/slider_test.cpp b/src/ftxui/component/slider_test.cpp
index ecaf3ed1e86317a6078ff4f7a344346882ff65f4..12f60ce8dfe12d9cae76ca13ca015b7ab3ec0a8f 100644
--- a/src/ftxui/component/slider_test.cpp
+++ b/src/ftxui/component/slider_test.cpp
@@ -1,4 +1,5 @@
 #include <gtest/gtest.h>  // for AssertionResult, Message, TestPartResult, Test, EXPECT_TRUE, EXPECT_EQ, SuiteApiResolver, TestInfo (ptr only), EXPECT_FALSE, TEST, TestFactoryImpl
+#include <array>          // for array
 #include <ftxui/component/mouse.hpp>  // for Mouse, Mouse::Left, Mouse::Pressed, Mouse::Released
 #include <ftxui/dom/elements.hpp>  // for GaugeDirection, GaugeDirection::Down, GaugeDirection::Left, GaugeDirection::Right, GaugeDirection::Up
 #include <memory>  // for __shared_ptr_access, shared_ptr, allocator
@@ -129,6 +130,59 @@ TEST(SliderTest, Up) {
   EXPECT_FALSE(slider->OnEvent(MousePressed(2, 5)));
 }
 
+TEST(SliderTest, Focus) {
+  static std::array<int, 10> values;
+  auto container = Container::Vertical({});
+  for(size_t i = 0; i<values.size(); ++i) {
+    container->Add(Slider(std::to_string(i), &values[i]));
+  }
+  container |= frame;
+
+  Screen screen(10, 3);
+
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "0"); // Select 0
+  EXPECT_EQ(screen.at(0, 1), "1");
+  EXPECT_EQ(screen.at(0, 2), "2");
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown));
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "0");
+  EXPECT_EQ(screen.at(0, 1), "1"); // Select 1
+  EXPECT_EQ(screen.at(0, 2), "2");
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown));
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "1");
+  EXPECT_EQ(screen.at(0, 1), "2"); // Select 2
+  EXPECT_EQ(screen.at(0, 2), "3");
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown)); // Select 3
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown)); // Select 4
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown)); // Select 5
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown)); // Select 6
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown));
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "6");
+  EXPECT_EQ(screen.at(0, 1), "7"); // Select 7
+  EXPECT_EQ(screen.at(0, 2), "8");
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown));
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "7");
+  EXPECT_EQ(screen.at(0, 1), "8"); // Select 8
+  EXPECT_EQ(screen.at(0, 2), "9");
+
+  EXPECT_TRUE(container->OnEvent(Event::ArrowDown));
+  Render(screen, container->Render());
+  EXPECT_EQ(screen.at(0, 0), "7");
+  EXPECT_EQ(screen.at(0, 1), "8");
+  EXPECT_EQ(screen.at(0, 2), "9"); // Select 9
+  
+  EXPECT_FALSE(container->OnEvent(Event::ArrowDown));
+}
+
 }  // namespace ftxui
 
 // Copyright 2022 Arthur Sonzogni. All rights reserved.