Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Flexbox

From Credoth
Revision as of 13:44, 28 December 2024 by Buzzworth (talk | contribs) (Created page with "local mArguments --initialize lazily local getArgNums = require('Module:Common').getArgNums local p = {} --Implements {{flexbox}} from the frame function p.flexbox(frame) mArguments = require('Module:Arguments') return p._flexbox(mArguments.getArgs(frame), frame) end function p._flexbox(args, frame) if not args then return 'Missing arguments' end local html = mw.html.create('div'):addClass('template-flexbox') local columns = args['columns'] local rows = args...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

local mArguments --initialize lazily
local getArgNums = require('Module:Common').getArgNums
local p = {}


--Implements {{flexbox}} from the frame
function p.flexbox(frame)
	mArguments = require('Module:Arguments')
	return p._flexbox(mArguments.getArgs(frame), frame)
end

function p._flexbox(args, frame)
	if not args then
		return 'Missing arguments'
	end

	local html = mw.html.create('div'):addClass('template-flexbox')
	local columns = args['columns']
	local rows = args['rows']
	local gap = args['gap'] or '0.5rem'
	local direction

	if columns then
		direction = 'row'
	elseif rows then
		direction = 'column'
	end

	html:css('--template-flexbox-columns', columns or rows )
	html:css('--template-flexbox-direction', direction )
	html:css('--template-flexbox-gap', gap )

	for i, _ in ipairs(getArgNums('content', args)) do
		local num = tostring(i)
		local content = args['content' .. num]
		if not content then return end

		local item = mw.html.create('div'):addClass('template-flexbox-item')
		local span = args['span' .. num] or '1'
		item:css('--template-flexbox-item-span', span)
		item:wikitext(content)
		html:node(item)
	end

	return frame:extensionTag {
		name = 'templatestyles', args = { src = 'Module:Flexbox/styles.css' }
	} .. tostring(html)
end

return p