Module:Navbox: Difference between revisions

Ganaram inukshuk (talk | contribs)
undo clear
Ganaram inukshuk (talk | contribs)
switch over to wikitable for readability and to mimic infobox; address spacing issues on mobile; fix up comments
Line 4: Line 4:
local yesno = require("Module:Yesno")
local yesno = require("Module:Yesno")
local p = {}
local p = {}
-- TODO:
-- Add option for header cell width? (low priority)
-- Fix collapse options (high priority)


-- Header/footer row
-- Header/footer row
function p.navbox_header_footer(row_content)
function p.navbox_header_footer(row_content)
local row = '<tr>\n'
local row = "|-\n"
.. '<td style="font-size: 0.8em; text-align: center; background-color: #eaecf0; padding: 0em; border: 1px solid white;" colspan="2">\n'
.. '| colspan="2" style="font-size: 0.8em; text-align: center; background-color: #eaecf0; padding: 0em; border: 1px solid white;" | ' .. row_content .. "\n"
.. row_content
.. '</td>\n'
.. '</tr>\n'


return row
return row
Line 26: Line 19:
local is_row_navbox = row_content["Is Navbox"]
local is_row_navbox = row_content["Is Navbox"]


local row = '<tr>\n'
local row = "|-\n"
if row_header == nil then
if row_header == nil then
-- Headerless row
-- Headerless row; takes up two cells
if is_row_navbox then
if is_row_navbox then
-- Row data is a child navbox
-- Row data is a child navbox; data cell has no padding
row = row .. '<td style="padding: 0em;" colspan="2">\n' .. row_data .. '</td>\n'
row = row
.. '| style="padding: 0;" colspan="2" | \n'
.. row_data .. "\n"
else
else
-- Row data is normal data
-- Row data is normal data
row = row .. '<td style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2">\n' .. row_data .. '</td>\n'
row = row .. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2" | ' .. row_data .. "\n"
     end
     end
else
else
-- Simple row with header and data
-- Row with header and data
if is_row_navbox then
if is_row_navbox then
-- Row data is a child navbox
-- Row data is a child navbox; data cell has no padding
row = row
row = row
--.. '<th style="width: 10em; min-width: 8em; max-width: 10%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;">' .. row_header .. '</th>\n'
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' .. row_header .. "\n"
.. '<th style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;">' .. row_header .. '</th>\n'
.. '| style="padding: 0;" |\n'  
.. '<td style="padding: 0em;">' .. row_data .. '</td>\n'
.. row_data .. "\n"
else
else
-- Row data is normal data
-- Row data is normal data
row = row
row = row
.. '<th style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;">' .. row_header .. '</th>\n'
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' .. row_header .. "\n"
.. '<td style="font-size: 0.9em; text-alight: right; padding: 0.25em 0.5em;">\n' .. row_data .. '</td>\n'
.. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" | ' .. row_data .. "\n"
end
end
end
end
local row = row .. '</tr>\n'
return row
return row
Line 62: Line 56:
local navbox_title = ''
local navbox_title = ''
if title ~= nil then
if title ~= nil then
navbox_title = '<tr>\n'
navbox_title = "|-\n"
.. '<th style="' .. (is_root_navbox and '' or 'font-size: 0.9em; ') .. 'text-align: center; background-color: #eaecf0; white-space: nowrap; padding: 0.25em 0.5em; border: 1px solid white;" colspan="2"><b>' .. title .. '</b></th>\n'
.. '! style="' .. (is_root_navbox and '' or 'font-size: 0.9em; ') .. 'text-align: center; background-color: #eaecf0; white-space: nowrap; padding: 0.25em 0.5em; border: 1px solid white;" colspan="2" | ' .. navbox_title .. "\n"
.. '</tr>\n'
end
end
return navbox_title
return navbox_title
Line 82: Line 75:
local navbox = ''
local navbox = ''
if navbox_type == "Nested" then
if navbox_type == "Nested" then
-- Navbox has a title and collapse options, and a white border. The
-- Navbox has a title, wikitable border, collapse options, and extra
-- white border matches with that of the header cells.
-- margin.
-- This navbox is meant to be a sub-navbox, placed on a headerless row.
-- This navbox is meant to be a sub-navbox, placed on a headerless row.
navbox = '<div class="wikitable" style="margin: 2px;">\n'
navbox = '<div class="wikitable" style="overflow-x: auto; padding: 0; margin: 2px;">\n'
.. '<table class="' .. (is_collapsible and ('mw-collapsible ' .. (is_collapsed and 'mw-collapsed ')) or '') .. 'nowraplinks" style="width: 100%; border-spacing: 0px;">\n'
.. '{| width="100%" style="mw-border-collapse: collapse; border-spacing: 0; margin: 0"' .. (is_collapsible and ('class="mw-collapsed"' .. (is_collapsed and 'mw-collapsed' or '')) or '') .. '\n'
.. p.navbox_title(title, false)
.. p.navbox_title(title, false)
Line 106: Line 99:
-- End of table
-- End of table
navbox = navbox
navbox = navbox
.. '</table>\n'
.. '|}\n'
.. '</div>'
.. '</div>'
Line 124: Line 117:
-- Navbox has a title, wikitable border, and collapse options.
-- Navbox has a title, wikitable border, and collapse options.
-- This navbox is a normal navbox or a nested navbox.
-- This navbox is a normal navbox or a nested navbox.
navbox = '<div class="wikitable" style="overflow-x: auto;">\n'
navbox = '<div class="wikitable" style="overflow-x: auto; padding: 0">\n'
.. '<table class="' .. (is_collapsible and ('mw-collapsible ' .. (is_collapsed and 'mw-collapsed ')) or '') .. 'nowraplinks" style="width: 100%; border-spacing: 0px;">\n'
.. '{| width="100%" style="mw-border-collapse: collapse; border-spacing: 0; margin: 0"' .. (is_collapsible and ('class="mw-collapsed"' .. (is_collapsed and 'mw-collapsed' or '')) or '') .. '\n'
.. p.navbox_title(title, true)
.. p.navbox_title(title, false)
-- Add header
-- Add header
Line 145: Line 138:
-- End of table
-- End of table
navbox = navbox
navbox = navbox
.. '</table>\n'
.. '|}\n'
.. '</div>'
.. '</div>'
end
end