Module:Navbox: Difference between revisions
Content added Content deleted
m (1 revision imported) |
(per tper) |
||
Line 10: | Line 10: | ||
local args |
local args |
||
local border |
local border |
||
local listnums |
local listnums |
||
local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' |
local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' |
||
local RESTART_MARKER = '\127_ODDEVEN0_\127' |
local RESTART_MARKER = '\127_ODDEVEN0_\127' |
||
Line 85: | Line 85: | ||
args.name, |
args.name, |
||
mini = 1, |
mini = 1, |
||
fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;' |
fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none; padding:0;' |
||
}) |
}) |
||
end |
end |
||
Line 134: | Line 134: | ||
titleCell |
titleCell |
||
:tag('div') |
:tag('div') |
||
-- id for aria-labelledby attribute |
|||
:attr('id', mw.uri.anchorEncode(args.title)) |
:attr('id', mw.uri.anchorEncode(args.title)) |
||
:addClass(args.titleclass) |
:addClass(args.titleclass) |
||
Line 163: | Line 164: | ||
:attr('colspan', getAboveBelowColspan()) |
:attr('colspan', getAboveBelowColspan()) |
||
:tag('div') |
:tag('div') |
||
-- id for aria-labelledby attribute, if no title |
|||
⚫ | |||
:wikitext(processItem(args.above, args.nowrapitems)) |
:wikitext(processItem(args.above, args.nowrapitems)) |
||
end |
end |
||
Line 201: | Line 204: | ||
if args['group' .. listnum] then |
if args['group' .. listnum] then |
||
local groupCell = row:tag('th') |
local groupCell = row:tag('th') |
||
-- id for aria-labelledby attribute, if lone group with no title or above |
|||
if listnum == 1 and not (args.title or args.above or args.group2) then |
|||
groupCell |
|||
⚫ | |||
end |
|||
groupCell |
groupCell |
||
Line 207: | Line 216: | ||
:addClass(args.groupclass) |
:addClass(args.groupclass) |
||
:cssText(args.basestyle) |
:cssText(args.basestyle) |
||
:css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width |
|||
groupCell |
groupCell |
||
Line 251: | Line 260: | ||
:addClass('navbox-' .. oddEven) |
:addClass('navbox-' .. oddEven) |
||
:addClass(args.listclass) |
:addClass(args.listclass) |
||
:addClass(args['list' .. listnum .. 'class']) |
|||
:tag('div') |
:tag('div') |
||
:css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em') |
:css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em') |
||
Line 287: | Line 297: | ||
local function hasBackgroundColors() |
local function hasBackgroundColors() |
||
for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle'}) do |
for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do |
||
if tostring(args[key]):find('background', 1, true) then |
if tostring(args[key]):find('background', 1, true) then |
||
return true |
|||
end |
|||
end |
|||
end |
|||
local function hasBorders() |
|||
for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do |
|||
if tostring(args[key]):find('border', 1, true) then |
|||
return true |
return true |
||
end |
end |
||
Line 312: | Line 330: | ||
if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end |
if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end |
||
if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end |
if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end |
||
if hasBorders() then table.insert(cats, 'Navboxes using borders') end |
|||
return cats |
return cats |
||
end |
end |
||
Line 335: | Line 354: | ||
if args.title and (args.state ~= 'plain' and args.state ~= 'off') then |
if args.title and (args.state ~= 'plain' and args.state ~= 'off') then |
||
if args.state == 'collapsed' then args.state = 'mw-collapsed' end |
|||
tbl |
tbl |
||
:addClass('collapsible') |
:addClass('mw-collapsible') |
||
:addClass(args.state or 'autocollapse') |
:addClass(args.state or 'autocollapse') |
||
end |
end |
||
Line 366: | Line 386: | ||
function p._navbox(navboxArgs) |
function p._navbox(navboxArgs) |
||
args = navboxArgs |
args = navboxArgs |
||
listnums = {} |
|||
for k, _ in pairs(args) do |
for k, _ in pairs(args) do |
||
Line 389: | Line 410: | ||
:attr('role', 'navigation') |
:attr('role', 'navigation') |
||
:node(tbl) |
:node(tbl) |
||
-- aria-labelledby title, otherwise above, otherwise lone group |
|||
⚫ | |||
if args.title or args.above or (args.group1 and not args.group2) then |
|||
⚫ | |||
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) |
|||
else |
else |
||
nav:attr('aria-label', 'Navbox') |
nav:attr('aria-label', 'Navbox') |
||
Line 406: | Line 428: | ||
:attr('role', 'navigation') |
:attr('role', 'navigation') |
||
:addClass('navbox') |
:addClass('navbox') |
||
:addClass(args.navboxclass) |
|||
:cssText(args.bodystyle) |
:cssText(args.bodystyle) |
||
:cssText(args.style) |
:cssText(args.style) |
||
:css('padding', '3px') |
:css('padding', '3px') |
||
:node(tbl) |
:node(tbl) |
||
-- aria-labelledby title, otherwise above, otherwise lone group |
|||
if args.title then |
|||
if args.title or args.above or (args.group1 and not args.group2) then |
|||
⚫ | |||
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) |
|||
else |
else |
||
nav:attr('aria-label', 'Navbox') |
nav:attr('aria-label', 'Navbox') |
||
Line 417: | Line 441: | ||
end |
end |
||
if (args.nocat or 'false'):lower() == 'false' then |
|||
renderTrackingCategories(res) |
|||
end |
|||
return striped(tostring(res)) |
return striped(tostring(res)) |
||
end |
end |
||
Line 426: | Line 451: | ||
getArgs = require('Module:Arguments').getArgs |
getArgs = require('Module:Arguments').getArgs |
||
end |
end |
||
args = getArgs(frame, {wrappers = 'Template:Navbox'}) |
args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}}) |
||
⚫ | |||
-- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}. |
|||
args.border = frame.args.border |
|||
end |
|||
-- Read the arguments in the order they'll be output in, to make references number in the right order. |
-- Read the arguments in the order they'll be output in, to make references number in the right order. |