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. |