11local VisualElement = require (" elements/VisualElement" )
2+ local tHex = require (" libraries/colorHex" )
23
34--- This is the slider class. It provides a draggable slider control that can be either horizontal or vertical,
45--- with customizable colors and value ranges.
@@ -11,7 +12,13 @@ Slider.defineProperty(Slider, "step", {default = 1, type = "number", canTriggerR
1112--- @property max number 100 Maximum value for value conversion (maps slider position to this range)
1213Slider .defineProperty (Slider , " max" , {default = 100 , type = " number" })
1314--- @property horizontal boolean true Whether the slider is horizontal (false for vertical)
14- Slider .defineProperty (Slider , " horizontal" , {default = true , type = " boolean" , canTriggerRender = true })
15+ Slider .defineProperty (Slider , " horizontal" , {default = true , type = " boolean" , canTriggerRender = true , setter = function (self , value )
16+ if value then
17+ self .set (" backgroundEnabled" , false )
18+ else
19+ self .set (" backgroundEnabled" , true )
20+ end
21+ end })
1522--- @property barColor color gray Color of the slider track
1623Slider .defineProperty (Slider , " barColor" , {default = colors .gray , type = " color" , canTriggerRender = true })
1724--- @property sliderColor color blue Color of the slider handle
@@ -21,6 +28,7 @@ Slider.defineProperty(Slider, "sliderColor", {default = colors.blue, type = "col
2128Slider .defineEvent (Slider , " mouse_click" )
2229Slider .defineEvent (Slider , " mouse_drag" )
2330Slider .defineEvent (Slider , " mouse_up" )
31+ Slider .defineEvent (Slider , " mouse_scroll" )
2432
2533--- Creates a new Slider instance
2634--- @shortDescription Creates a new Slider instance
@@ -90,6 +98,7 @@ function Slider:mouse_scroll(direction, x, y)
9098 self :updateRender ()
9199 return true
92100 end
101+ return false
93102end
94103
95104--- @shortDescription Renders the slider with track and handle
@@ -101,17 +110,18 @@ function Slider:render()
101110 local horizontal = self .get (" horizontal" )
102111 local step = self .get (" step" )
103112
104- local barChar = horizontal and " \140 " or " │ "
113+ local barChar = horizontal and " \140 " or " "
105114 local text = string.rep (barChar , horizontal and width or height )
106115
107116 if horizontal then
108117 self :textFg (1 , 1 , text , self .get (" barColor" ))
109118 self :textBg (step , 1 , " " , self .get (" sliderColor" ))
110119 else
120+ local bg = self .get (" background" )
111121 for y = 1 , height do
112- self :textFg (1 , y , barChar , self . get ( " barColor " ) )
122+ self :textBg (1 , y , " " , bg )
113123 end
114- self :textFg (1 , step , " \140 " , self .get (" sliderColor" ))
124+ self :textBg (1 , step , " " , self .get (" sliderColor" ))
115125 end
116126end
117127
0 commit comments