Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
m (HylianKing moved page Module:UtilsNavbox to Module:UtilsNavigation/Navbox without leaving a redirect)
m (Protected "Module:UtilsLayout/Navbox": Critical wiki page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(One intermediate revision by the same user not shown)
(No difference)

Revision as of 18:34, 4 August 2020

Lua error in package.lua at line 80: module 'Module:Tab2' not found.


local p = {}

local tab2 = require("Module:Tab2")
local utilsCode = require("Module:UtilsCode")

local SMALLEST_DESKTOP_SIZE = 600

function p.CreateNavbox(content, title, options)
	local collapsed = options and options.collapsed
	local thick = options and options.thick
	local class = "navbox mw-collapsible"
	if thick then
		class = class .. " navbox-thick"
	end
	if collapsed ~= false then --collapsed is the default unless explicitly set to false.
		class = class .. " mw-collapsed"
	end
	result = mw.html.create("div")
		:addClass(class)
		:node(mw.html.create("div")
			:addClass("navbox-title")
			:wikitext(title))
		:node(mw.html.create("div")
			:addClass("navbox-links mw-collapsible-content")
			:wikitext(content))
	return tostring(result)
end

function p.CreateRowNavbox(rows, title, options)
	local result = mw.html.create("table")
		:addClass("navbox-table")
	for key, row in ipairs(rows) do
		if not utilsCode.IsEmpty(row["content"]) then
			result:node(mw.html.create("tr")
				:node(mw.html.create("th")
					:wikitext(row["title"])
				:node(mw.html.create("td")
					:wikitext(row["content"]))))
		end
	end
	
	return p.CreateNavbox(tostring(result), title, options)
end

function p.CreateTabbedNavbox(title, tabs, options)
	local defaultTab = options and options.defaultTab
	local minTabWidth = options and options.minTabWidth
	local tabsPerRow = options and options.tabsPerRow
	if not tabsPerRow and minTabWidth then
		-- Calculate the number of tabs per row
		local rows = 0
		repeat
			rows = rows + 1
			local rowWidth = (minTabWidth * #tabs) / rows
		until rowWidth <= SMALLEST_DESKTOP_SIZE
		tabsPerRow = math.ceil(#tabs / rows)
	end
	local tabbed = tab2.Main(tabs, defaultTab, "top", tabsPerRow, nil, nil, nil, "center")
	return p.CreateNavbox(tostring(tabbed), title, options)
end
	
return p