Module:Tabber: Difference between revisions
Jump to navigation
Jump to search
HyperNervie (talk | contribs) (Add text-align support) |
HyperNervie (talk | contribs) (Add text-align support for tab menu and panels separately) |
||
| Line 12: | Line 12: | ||
:addClass("rhwiki-tabberneue") | :addClass("rhwiki-tabberneue") | ||
:attr("data-shown-index", tostring(shown)) | :attr("data-shown-index", tostring(shown)) | ||
local menu = tabber:tag("div") | local menu = tabber:tag("div") | ||
:addClass("rhwiki-tabberneue-menu") | :addClass("rhwiki-tabberneue-menu") | ||
:addClass("oo-ui-tabSelectWidget-framed") | :addClass("oo-ui-tabSelectWidget-framed") | ||
:css("text-align", args["tab-align"]) | |||
local content = tabber:tag("div") | local content = tabber:tag("div") | ||
:addClass("rhwiki-tabberneue-content") | :addClass("rhwiki-tabberneue-content") | ||
:css("text-align", args["content-align"]) | |||
local i = 1 | local i = 1 | ||
while true do | while true do | ||
local labelText = args[2 * i - 1] or args["tab" .. i] | local labelText = args[2 * i - 1] or args["tab-" .. i] | ||
local panelText = args[2 * i] or args["content" .. i] | local panelText = args[2 * i] or args["content-" .. i] | ||
if labelText == nil or panelText == nil then break end | if labelText == nil or panelText == nil then break end | ||
Revision as of 10:07, 29 August 2025
Documentation for this module may be created at Module:Tabber/doc
local p = {}
local function tointeger(s)
s = tonumber(s)
if s == nil or s ~= math.floor(s) then return nil end
return s
end
function p.makeTabber(args)
local shown = tointeger(args.shown)
local tabber = mw.html.create("div")
:addClass("rhwiki-tabberneue")
:attr("data-shown-index", tostring(shown))
local menu = tabber:tag("div")
:addClass("rhwiki-tabberneue-menu")
:addClass("oo-ui-tabSelectWidget-framed")
:css("text-align", args["tab-align"])
local content = tabber:tag("div")
:addClass("rhwiki-tabberneue-content")
:css("text-align", args["content-align"])
local i = 1
while true do
local labelText = args[2 * i - 1] or args["tab-" .. i]
local panelText = args[2 * i] or args["content-" .. i]
if labelText == nil or panelText == nil then break end
menu:tag("div")
:addClass("rhwiki-tabberneue-option")
:addClass("oo-ui-optionWidget")
:addClass("oo-ui-tabOptionWidget")
:addClass("oo-ui-labelElement")
:addClass(i == shown and "oo-ui-optionWidget-selected" or nil)
:tag("span")
:addClass("rhwiki-tabberneue-label")
:addClass("oo-ui-labelElement-label")
:wikitext(labelText)
content:tag("div")
:addClass("rhwiki-tabberneue-panel")
:addClass(i ~= shown and "oo-ui-element-hidden" or nil)
:wikitext(panelText)
i = i + 1
end
return tostring(tabber)
end
function p.main(frame)
return p.makeTabber(frame:getParent().args)
end
return p