local p = {}
function p.createCollapsible(frame)
local args = frame.args
local fz = tonumber(args.fz) or 14
local textOn = args['text-on'] or args[3] or '展开'
local textOff = args['text-off'] or args[2] or '折叠'
local name = args.name or args[1] or tostring(math.random(10000))
local len = string.len(textOn)
local wd = tonumber(args.wd) or fz * len
local ht = tonumber(args.ht) or fz * 1.2
local cOn = args['c-on'] or '#0645ad'
local cOff = args['c-off'] or 'red'
local textAlign = args['text-align'] or ''
local css = args.css or ''
local cssOn = args['css-on'] or ''
local cssOff = args['css-off'] or ''
local styleDiv = string.format('font-size:%dpx;position:relative;width:%dpx;height:%dpx;display:inline-block;%s%s',
fz, wd, ht, textAlign ~= '' and 'text-align:'..textAlign..';' or '', css)
local styleOff = string.format('display:inline-block;width:100%%;position:absolute;font-size:%dpx;left:0;color:%s;transition:0s all linear;%s',
fz, cOff, cssOff)
local styleOn = string.format('display:inline-block;width:100%%;position:absolute;font-size:%dpx;left:0;color:%s;transition:0s all linear;%s',
fz, cOn, cssOn)
local result = string.format([[
<div style="%s">
<span class="mw-collapsible mw-collapsed mw-customtoggle-%s" id="mw-customcollapsible-%s" style="%s">%s</span>
<span class="mw-collapsible mw-customtoggle-%s" id="mw-customcollapsible-%s" style="%s">%s</span>
</div>
]], styleDiv, name, name, styleOff, textOff, name, name, styleOn, textOn)
return result
end
return p