User:The Gaffer/sandbox/modules/switch: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1:
{{D}}
local p = {}
local yesno = require('Module:Yesno')
 
function p.main(frame)
return frame:preprocess(tostring(p._main(frame:getParent().args)))
end
 
function p._main(args)
local contents = {}
 
local i = 1
while args['item'..i] do
table.insert(contents, { text = args['text'..i] or ('Item '..i),
content = '\n' .. args['item'..i],
id = args['switch_id'..i] or i})
i = i + 1
end
 
local ret = mw.html.create('div')
:addClass('switch-infobox')
:addClass('loading')
:tag('span')
:addClass('loading-button')
:addClass('button')
:wikitext('Loading...')
:done()
if args.float then
if args.float == 'left' then
ret:addClass('tleft')
:addClass('thumb')
elseif args.float == 'right' then
ret:addClass('tright')
:addClass('thumb')
end
end
local mah_triggers = ret:tag('div')
:addClass('switch-infobox-triggers')
local isSelect = yesno(args.select)
if isSelect then
mah_triggers:addClass('infobox-triggers-select')
elseif i > 6 and isSelect ~= false then
mah_triggers:addClass('infobox-triggers-select')
end
 
for i, v in ipairs(contents) do
mah_triggers :tag('span')
:addClass('trigger')
:addClass('button')
:addClass(i==1 and 'button-selected' or '')
:attr('data-id',v.id)
:wikitext(v.text)
:done()
 
ret :tag('div')
:addClass('item')
:addClass(i==1 and 'showing' or '')
:attr('data-id',v.id)
:wikitext(v.content)
:done()
end
 
return ret
end
 
return p
526

edits