Jump to content

Module:Infobox: Difference between revisions

From VassarWiki
uses common colors
ehh we're going back to 100%
 
(25 intermediate revisions by the same user not shown)
Line 5: Line 5:
local root = mw.html.create('table')
local root = mw.html.create('table')
:addClass('infobox')
:addClass('infobox')
:css('width', '250px')
:css('border', '1px solid var(--vw-border)')
:css('border', '1px solid var(--vw-bg-subtle)')
:css('font-size', '90%')
:css('font-size', '90%')
:css('float', 'right')
:css('background', 'var(--vw-bg-subtle)')
:css('margin', '0 0 1em 1em')
:css('padding-bottom', '4px')
:css('border-collapse', 'collapse')
:css('background', 'var(--vw-bg-surface)')
 
-- Title
if args.title and args.title ~= '' then
if args.title and args.title ~= '' then
root:tag('tr')
root:tag('tr')
:tag('th')
:tag('th')
:attr('colspan', '2')
:attr('colspan', '2')
:css('width', '100%')
:css('text-align', 'center')
:css('text-align', 'center')
:css('background', 'var(--vw-accent)')
:css('font-size', '115%')
:css('color', 'var(--vw-bg-page)')
:css('background', 'var(--vw-accent-subtle)')
:css('padding', '6px')
:css('padding', '6px')
:wikitext(args.title)
:wikitext(args.title)
Line 33: Line 30:
:css('text-align', 'center')
:css('text-align', 'center')
:css('padding', '6px')
:css('padding', '6px')
:wikitext('[[File:' .. args.image .. '|200px]]')
:wikitext('[[File:' .. args.image .. '|300px]]')
if caption ~= '' then
if caption ~= '' then
root:tag('tr')
root:tag('tr')
Line 39: Line 36:
:attr('colspan', '2')
:attr('colspan', '2')
:css('text-align', 'center')
:css('text-align', 'center')
:css('font-size', '85%')
:css('font-size', '90%')
:css('padding', '2px 6px')
:css('padding', '0px 6px 4px 6px')
:wikitext(caption)
:wikitext(caption)
end
end
Line 47: Line 44:
-- Data rows
-- Data rows
local i = 1
local i = 1
while args['label' .. i] or args['data' .. i] do
while args['label' .. i] or args['data' .. i] or args['header' .. i] do
local label = args['label' .. i]
local header = args['header' .. i]
local data = args['data' .. i]
local label = args['label' .. i]
if data and data ~= '' then
local data   = args['data' .. i]
 
if header and header ~= '' then
root:tag('tr')
:tag('th')
:attr('colspan', '2')
:css('width', '100%')
:css('text-align', 'center')
:css('background', 'var(--vw-bg-heading)')
:css('padding', '4px 6px')
:css('margin', '8px 0px')
:css('font-size', '95%')
:wikitext(header)
elseif data and data ~= '' then
local row = root:tag('tr')
local row = root:tag('tr')
if label and label ~= '' then
if label and label ~= '' then
row:tag('th')
row:tag('th')
:css('text-align', 'left')
:css('text-align', 'left')
:css('padding', '4px 6px')
:css('padding', '2px 6px 2px 6px')
:css('background', 'var(--vw-accent-subtle)')
:css('background', 'var(--vw-bg-subtle)')
:css('width', '45%')
:css('width', '45%')
:wikitext(label)
:wikitext(label)
end
end
row:tag('td')
row:tag('td')
:css('padding', '4px 6px')
:css('padding', '2px 6px 2px 6px')
:attr('colspan', (label and label ~= '') and '1' or '2')
:attr('colspan', (label and label ~= '') and '1' or '2')
:wikitext(data)
:wikitext(data)
Line 67: Line 77:
i = i + 1
i = i + 1
end
end
return tostring(root)
return tostring(root)
end
end


return p
return p

Latest revision as of 01:32, 12 May 2026

Documentation for this module may be created at Module:Infobox/doc

local p = {}

function p.render(frame)
	local args = frame:getParent().args
	local root = mw.html.create('table')
		:addClass('infobox')
		:css('border', '1px solid var(--vw-border)')
		:css('font-size', '90%')
		:css('background', 'var(--vw-bg-subtle)')
		:css('padding-bottom', '4px')
		
	if args.title and args.title ~= '' then
		root:tag('tr')
			:tag('th')
				:attr('colspan', '2')
				:css('width', '100%')
				:css('text-align', 'center')
				:css('font-size', '115%')
				:css('background', 'var(--vw-accent-subtle)')
				:css('padding', '6px')
				:wikitext(args.title)
	end
	
	-- Image
	if args.image and args.image ~= '' then
		local caption = args.caption or ''
		root:tag('tr')
			:tag('td')
				:attr('colspan', '2')
				:css('text-align', 'center')
				:css('padding', '6px')
				:wikitext('[[File:' .. args.image .. '|300px]]')
		if caption ~= '' then
			root:tag('tr')
				:tag('td')
					:attr('colspan', '2')
					:css('text-align', 'center')
					:css('font-size', '90%')
					:css('padding', '0px 6px 4px 6px')
					:wikitext(caption)
		end
	end

	-- Data rows
	local i = 1
	while args['label' .. i] or args['data' .. i] or args['header' .. i] do
		local header = args['header' .. i]
		local label  = args['label' .. i]
		local data   = args['data' .. i]

		if header and header ~= '' then
			root:tag('tr')
				:tag('th')
					:attr('colspan', '2')
					:css('width', '100%')
					:css('text-align', 'center')
					:css('background', 'var(--vw-bg-heading)')
					:css('padding', '4px 6px')
					:css('margin', '8px 0px')
					:css('font-size', '95%')
					:wikitext(header)
		elseif data and data ~= '' then
			local row = root:tag('tr')
			if label and label ~= '' then
				row:tag('th')
					:css('text-align', 'left')
					:css('padding', '2px 6px 2px 6px')
					:css('background', 'var(--vw-bg-subtle)')
					:css('width', '45%')
					:wikitext(label)
			end
			row:tag('td')
				:css('padding', '2px 6px 2px 6px')
				:attr('colspan', (label and label ~= '') and '1' or '2')
				:wikitext(data)
		end
		i = i + 1
	end
	return tostring(root)
end

return p