Module:Navbox: Difference between revisions

no edit summary
imported>MacFan4000
m (1 revision imported)
No edit summary
 
(22 intermediate revisions by 14 users not shown)
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;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 189: Line 192:
row
row
:tag('td')
:tag('td')
:addClass('noviewer')
:addClass('navbox-image')
:addClass('navbox-image')
:addClass(args.imageclass)
:addClass(args.imageclass)
Line 201: Line 205:
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 217:
: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 220: Line 230:
listCell
listCell
:css('text-align', 'left')
:css('text-align', 'left')
:css('border-left-width', '2px')
:css('border-left-style', 'solid')
else
else
listCell:attr('colspan', 2)
listCell:attr('colspan', 2)
Line 251: Line 259:
: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 258: Line 267:
row
row
:tag('td')
:tag('td')
:addClass('noviewer')
:addClass('navbox-image')
:addClass('navbox-image')
:addClass(args.imageclass)
:addClass(args.imageclass)
Line 344: 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


tbl:css('border-spacing', 0)
if border == 'subgroup' or border == 'none' then
if border == 'subgroup' or border == 'none' then
tbl
tbl
Line 375: 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 398: 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 415: Line 427:
: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')
: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 426: 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 435: Line 449:
getArgs = require('Module:Arguments').getArgs
getArgs = require('Module:Arguments').getArgs
end
end
args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}})
args = getArgs(frame, {wrappers = {'Template:Navbox'}})
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.