Jump to content

Module:TabbedCard

From Creopedia

This documentation is transcluded from Module:TabbedCard/doc.

Renders a card with a Tabber within. Implements Template:TabbedCard.


require( 'strict' )

local MAX_WIKITEXT_TABS = 20

local tabber = mw.ext.tabber

local p = {}

--- Process the wikitext args
---
--- @param args table
--- @return table
local function processArgs( args )
	local data = {
		noPadding = args.noPadding,
		tabber = {}
	}

	for i = 1, MAX_WIKITEXT_TABS do
		local label = args[ 'label' .. i ]
		local content = args[ 'content' .. i ]

		if label and content then
			table.insert( data.tabber, {
				label = label,
				content = content
			} )
		end
	end

	return data
end

--- Wikitext entry point for the module
---
--- @param frame mw.frame
--- @return string
function p.main( frame )
	local getArgs = require( 'Module:Arguments' ).getArgs
	return p._main( processArgs( getArgs( frame ) ) )
end

--- Lua entry point for the module
---
--- @param data table
--- @return string
function p._main( data )
	local root = mw.html.create( 'div' )

	root
		:addClass( 't-tabbedCard' )
		:wikitext( tabber.render( data.tabber ) )

	if data.noPadding then
		root:addClass( 't-tabbedCard--noPadding' )
	end

	return mw.getCurrentFrame():extensionTag {
		name = 'templatestyles', args = { src = 'Module:TabbedCard/styles.css' }
	} .. tostring( root )
end


return p