From 527634c2e6b42d3adde2c14345b0f493d16f9615 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Tue, 21 Jul 2026 07:29:26 +0200 Subject: [PATCH 1/4] feat(infobox): collapse Team History in person infoboxes --- .../commons/Widget/Infobox/TeamHistory.lua | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua index 68eaa77604a..3e692123eb0 100644 --- a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua +++ b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua @@ -12,7 +12,10 @@ local Info = Lua.import('Module:Info', {loadData = true}) local Logic = Lua.import('Module:Logic') local TeamHistoryAuto = Lua.import('Module:Infobox/Extension/TeamHistory/Auto') +local CollapsibleToggle = Lua.import('Module:Widget/GeneralCollapsible/Toggle') +local GeneralCollapsible = Lua.import('Module:Widget/GeneralCollapsible/Default') local Html = Lua.import('Module:Widget/Html') +local Icon = Lua.import('Module:Widget/Image/Icon/Fontawesome') local Widget = Lua.import('Module:Widget') local Widgets = Lua.import('Module:Widget/All') @@ -43,9 +46,27 @@ function TeamHistory:render() return {} end - return { - Widgets.Title{children = 'History'}, - Widgets.Center{children = {teamHistory}}, + return GeneralCollapsible{ + shouldCollapse = true, + titleWidget = Widgets.Title{ + children = { + 'Team History', + ' ', + CollapsibleToggle{ + showButtonChildren = { + 'Expand', + ' ', + Icon{iconName = 'expand'} + }, + hideButtonChildren = { + 'Collapse', + ' ', + Icon{iconName = 'collapse'} + } + } + }, + }, + children = Widgets.Center{children = {teamHistory}}, } end From 1237ccf50b33f376811ff7d6984419c4dfe86017 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:14:46 +0900 Subject: [PATCH 2/4] use chevrontoggle --- .../commons/Widget/Infobox/TeamHistory.lua | 18 ++--------- lua/wikis/commons/Widget/Infobox/Title.lua | 31 ++++++++++++++++--- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua index 3e692123eb0..bcb341e0620 100644 --- a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua +++ b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua @@ -12,10 +12,8 @@ local Info = Lua.import('Module:Info', {loadData = true}) local Logic = Lua.import('Module:Logic') local TeamHistoryAuto = Lua.import('Module:Infobox/Extension/TeamHistory/Auto') -local CollapsibleToggle = Lua.import('Module:Widget/GeneralCollapsible/Toggle') local GeneralCollapsible = Lua.import('Module:Widget/GeneralCollapsible/Default') local Html = Lua.import('Module:Widget/Html') -local Icon = Lua.import('Module:Widget/Image/Icon/Fontawesome') local Widget = Lua.import('Module:Widget') local Widgets = Lua.import('Module:Widget/All') @@ -38,7 +36,7 @@ local DEFAULT_MODE = 'manual' ---@field props {player: string, manualInput: string?} local TeamHistory = Class.new(Widget) ----@return Widget[] +---@return VNode[] function TeamHistory:render() local teamHistory = self:_getHistory() @@ -49,21 +47,9 @@ function TeamHistory:render() return GeneralCollapsible{ shouldCollapse = true, titleWidget = Widgets.Title{ + isCollapsibleToggle = true, children = { 'Team History', - ' ', - CollapsibleToggle{ - showButtonChildren = { - 'Expand', - ' ', - Icon{iconName = 'expand'} - }, - hideButtonChildren = { - 'Collapse', - ' ', - Icon{iconName = 'collapse'} - } - } }, }, children = Widgets.Center{children = {teamHistory}}, diff --git a/lua/wikis/commons/Widget/Infobox/Title.lua b/lua/wikis/commons/Widget/Infobox/Title.lua index 183dc87423b..474410b2b71 100644 --- a/lua/wikis/commons/Widget/Infobox/Title.lua +++ b/lua/wikis/commons/Widget/Infobox/Title.lua @@ -7,16 +7,37 @@ local Lua = require('Module:Lua') +local ChevronToggle = Lua.import('Module:Widget/GeneralCollapsible/ChevronToggle') local Component = Lua.import('Module:Widget/Component') local Html = Lua.import('Module:Widget/Html') +local WidgetUtil = Lua.import('Module:Widget/Util') ----@param props {children: Renderable|Renderable[]?} +---@class InfoboxTitleProps +---@field isCollapsibleToggle boolean? +---@field children Renderable|Renderable[]? + +---@param props InfoboxTitleProps ---@return VNode local function Title(props) - return Html.Div{children = {Html.Div{ - children = props.children, - classes = {'infobox-header', 'wiki-backgroundcolor-light', 'infobox-header-2'} - }}} + if props.isCollapsibleToggle then + return Html.Div{ + attributes = { + ['data-collapsible-click-region'] = 'true' + }, + children = WidgetUtil.collect( + props.children, + ChevronToggle{} + ), + classes = {'infobox-header', 'wiki-backgroundcolor-light', 'infobox-header-2'} + } + end + + return Html.Div{ + children = Html.Div{ + children = props.children, + classes = {'infobox-header', 'wiki-backgroundcolor-light', 'infobox-header-2'} + } + } end return Component.component(Title) From 88c63a0a8cdd99f9cd043593af917828036a2ae4 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:20:25 +0900 Subject: [PATCH 3/4] clean up return types --- lua/wikis/commons/Widget/Infobox/TeamHistory.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua index bcb341e0620..b1b17ce2af6 100644 --- a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua +++ b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua @@ -36,12 +36,12 @@ local DEFAULT_MODE = 'manual' ---@field props {player: string, manualInput: string?} local TeamHistory = Class.new(Widget) ----@return VNode[] +---@return VNode? function TeamHistory:render() local teamHistory = self:_getHistory() if Logic.isEmpty(teamHistory) then - return {} + return end return GeneralCollapsible{ From 95a21b6ef8d4a4f49f5e88182d3f6b06ddb5d5e5 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:21:53 +0900 Subject: [PATCH 4/4] type annotation --- lua/wikis/commons/Widget/Infobox/TeamHistory.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua index b1b17ce2af6..a6d2b34e020 100644 --- a/lua/wikis/commons/Widget/Infobox/TeamHistory.lua +++ b/lua/wikis/commons/Widget/Infobox/TeamHistory.lua @@ -56,7 +56,7 @@ function TeamHistory:render() } end ----@return Widget|string? +---@return Renderable? function TeamHistory:_getHistory() local config = (Info.config.infoboxPlayer or {}).automatedHistory or {} local manualInput = self.props.manualInput