Changes

Jump to navigation Jump to search
1,268 bytes added ,  21:33, 26 October 2018
per discussion at WT:Lua, this needs to be initialized in a non-global context
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
 +
:attr('id', args.title and nil or mw.uri.anchorEncode(args.above))
 
: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
 +
:attr('id', mw.uri.anchorEncode(args.group1))
 +
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
+
: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 366: Line 385:  
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 409:  
:attr('role', 'navigation')
 
:attr('role', 'navigation')
 
:node(tbl)
 
:node(tbl)
if args.title then
+
-- aria-labelledby title, otherwise above, otherwise lone group
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title))
+
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 410: Line 431:  
:css('padding', '3px')
 
:css('padding', '3px')
 
:node(tbl)
 
:node(tbl)
if args.title then
+
-- aria-labelledby title, otherwise above, otherwise lone group
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title))
+
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 439:  
end
 
end
   −
renderTrackingCategories(res)
+
if (args.nocat or 'false'):lower() == 'false' then
 
+
renderTrackingCategories(res)
 +
end
 
return striped(tostring(res))
 
return striped(tostring(res))
 
end
 
end
Line 426: Line 449:  
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'}})
 +
if frame.args.border then
 +
-- 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.
Anonymous user

Navigation menu