@@ -174,14 +174,14 @@ end
174174--- @param expanded boolean Whether the panel starts expanded (default : false )
175175--- @return table panelContainer The container for this panel
176176function Accordion :newPanel (title , expanded )
177- local panels = self .get (" panels" ) or {}
177+ local panels = self .getResolved (" panels" ) or {}
178178 local panelId = # panels + 1
179179
180180 local panelContainer = self :addContainer ()
181181 panelContainer .set (" x" , 1 )
182182 panelContainer .set (" y" , 1 )
183- panelContainer .set (" width" , self .get (" width" ))
184- panelContainer .set (" height" , self .get (" height" ))
183+ panelContainer .set (" width" , self .getResolved (" width" ))
184+ panelContainer .set (" height" , self .getResolved (" height" ))
185185 panelContainer .set (" visible" , expanded or false )
186186 panelContainer .set (" ignoreOffset" , true )
187187
@@ -202,11 +202,11 @@ Accordion.addPanel = Accordion.newPanel
202202--- @shortDescription Updates the layout of all panels (positions and visibility)
203203--- @private
204204function Accordion :updatePanelLayout ()
205- local panels = self .get (" panels" ) or {}
206- local headerHeight = self .get (" panelHeaderHeight" ) or 1
205+ local panels = self .getResolved (" panels" ) or {}
206+ local headerHeight = self .getResolved (" panelHeaderHeight" ) or 1
207207 local currentY = 1
208- local width = self .get (" width" )
209- local accordionHeight = self .get (" height" )
208+ local width = self .getResolved (" width" )
209+ local accordionHeight = self .getResolved (" height" )
210210
211211 for _ , panel in ipairs (panels ) do
212212 local contentY = currentY + headerHeight
@@ -238,7 +238,7 @@ function Accordion:updatePanelLayout()
238238
239239 local totalHeight = currentY - 1
240240 local maxOffset = math.max (0 , totalHeight - accordionHeight )
241- local currentOffset = self .get (" offsetY" )
241+ local currentOffset = self .getResolved (" offsetY" )
242242
243243 if currentOffset > maxOffset then
244244 self .set (" offsetY" , maxOffset )
251251--- @param panelId number The ID of the panel to toggle
252252--- @return Accordion self For method chaining
253253function Accordion :togglePanel (panelId )
254- local panels = self .get (" panels" ) or {}
255- local allowMultiple = self .get (" allowMultiple" )
254+ local panels = self .getResolved (" panels" ) or {}
255+ local allowMultiple = self .getResolved (" allowMultiple" )
256256
257257 for i , panel in ipairs (panels ) do
258258 if panel .id == panelId then
279279--- @param panelId number The ID of the panel to expand
280280--- @return Accordion self For method chaining
281281function Accordion :expandPanel (panelId )
282- local panels = self .get (" panels" ) or {}
283- local allowMultiple = self .get (" allowMultiple" )
282+ local panels = self .getResolved (" panels" ) or {}
283+ local allowMultiple = self .getResolved (" allowMultiple" )
284284
285285 for i , panel in ipairs (panels ) do
286286 if panel .id == panelId then
309309--- @param panelId number The ID of the panel to collapse
310310--- @return Accordion self For method chaining
311311function Accordion :collapsePanel (panelId )
312- local panels = self .get (" panels" ) or {}
312+ local panels = self .getResolved (" panels" ) or {}
313313
314314 for _ , panel in ipairs (panels ) do
315315 if panel .id == panelId then
329329--- @param panelId number The ID of the panel
330330--- @return table ? container The panel ' s container or nil
331331function Accordion :getPanel (panelId )
332- local panels = self .get (" panels" ) or {}
332+ local panels = self .getResolved (" panels" ) or {}
333333 for _ , panel in ipairs (panels ) do
334334 if panel .id == panelId then
335335 return panel .container
342342--- @return table metrics Panel layout information
343343--- @private
344344function Accordion :_getPanelMetrics ()
345- local panels = self .get (" panels" ) or {}
346- local headerHeight = self .get (" panelHeaderHeight" ) or 1
345+ local panels = self .getResolved (" panels" ) or {}
346+ local headerHeight = self .getResolved (" panelHeaderHeight" ) or 1
347347
348348 local positions = {}
349349 local currentY = 1
@@ -381,7 +381,7 @@ function Accordion:mouse_click(button, x, y)
381381 end
382382
383383 local relX , relY = VisualElement .getRelativePosition (self , x , y )
384- local offsetY = self .get (" offsetY" )
384+ local offsetY = self .getResolved (" offsetY" )
385385 local adjustedY = relY + offsetY
386386 local metrics = self :_getPanelMetrics ()
387387
@@ -400,12 +400,12 @@ end
400400function Accordion :mouse_scroll (direction , x , y )
401401 if VisualElement .mouse_scroll (self , direction , x , y ) then
402402 local metrics = self :_getPanelMetrics ()
403- local accordionHeight = self .get (" height" )
403+ local accordionHeight = self .getResolved (" height" )
404404 local totalHeight = metrics .totalHeight
405405 local maxOffset = math.max (0 , totalHeight - accordionHeight )
406406
407407 if maxOffset > 0 then
408- local currentOffset = self .get (" offsetY" )
408+ local currentOffset = self .getResolved (" offsetY" )
409409 local newOffset = currentOffset + direction
410410 newOffset = math.max (0 , math.min (maxOffset , newOffset ))
411411 self .set (" offsetY" , newOffset )
@@ -422,17 +422,17 @@ end
422422function Accordion :render ()
423423 VisualElement .render (self )
424424
425- local width = self .get (" width" )
426- local offsetY = self .get (" offsetY" )
425+ local width = self .getResolved (" width" )
426+ local offsetY = self .getResolved (" offsetY" )
427427 local metrics = self :_getPanelMetrics ()
428428
429429 for _ , panelInfo in ipairs (metrics .positions ) do
430- local bgColor = panelInfo .expanded and self .get (" expandedHeaderBackground" ) or self .get (" headerBackground" )
431- local fgColor = panelInfo .expanded and self .get (" expandedHeaderTextColor" ) or self .get (" headerTextColor" )
430+ local bgColor = panelInfo .expanded and self .getResolved (" expandedHeaderBackground" ) or self .getResolved (" headerBackground" )
431+ local fgColor = panelInfo .expanded and self .getResolved (" expandedHeaderTextColor" ) or self .getResolved (" headerTextColor" )
432432
433433 local headerY = panelInfo .headerY - offsetY
434434
435- if headerY >= 1 and headerY <= self .get (" height" ) then
435+ if headerY >= 1 and headerY <= self .getResolved (" height" ) then
436436 VisualElement .multiBlit (
437437 self ,
438438 1 ,
@@ -450,16 +450,16 @@ function Accordion:render()
450450 end
451451 end
452452
453- if not self .get (" childrenSorted" ) then
453+ if not self .getResolved (" childrenSorted" ) then
454454 self :sortChildren ()
455455 end
456- if not self .get (" childrenEventsSorted" ) then
456+ if not self .getResolved (" childrenEventsSorted" ) then
457457 for eventName in pairs (self ._values .childrenEvents or {}) do
458458 self :sortChildrenEvents (eventName )
459459 end
460460 end
461461
462- for _ , child in ipairs (self .get (" visibleChildren" ) or {}) do
462+ for _ , child in ipairs (self .getResolved (" visibleChildren" ) or {}) do
463463 if child == self then
464464 error (" CIRCULAR REFERENCE DETECTED!" )
465465 return
0 commit comments