Module:NavboxMobile: Difference between revisions
EnWikiAdmin (talk | contribs) No edit summary |
EnWikiAdmin (talk | contribs) No edit summary |
||
Line 305: | Line 305: | ||
-- List rows | -- List rows | ||
-- | -- | ||
local function renderListRow(tbl | local function renderListRow(tbl, listnum) | ||
local row = tbl | local row = addTableRow(tbl) | ||
-- | -- Process group | ||
if | if args['group' .. listnum] then | ||
local groupCell = row:tag('th') | local groupCell = row:tag('th') | ||
groupCell | |||
:attr('scope', 'row') | :attr('scope', 'row') | ||
:addClass( | :addClass('navboxMobile-group-content') | ||
:cssText(args[ | :cssText(args.basestyle) | ||
:wikitext(processItem(args[ | :cssText(args.groupstyle) | ||
:cssText(args['group' .. listnum .. 'style']) | |||
:wikitext(processItem(args['group' .. listnum])) | |||
end | end | ||
-- | -- Add table row for the list | ||
row = addTableRow(tbl) | |||
local listCell = row:tag('td') | local listCell = row:tag('td') | ||
:addClass(cfg.class.navbox_list) | listCell:attr('colspan', 2) | ||
: | listCell:css('width', '100%') | ||
: | |||
-- Apply dynamic styling | |||
local oddEven = cfg.class.navbox_odd_part | |||
if args['list' .. listnum] and args['list' .. listnum]:sub(1, 12) == '</div><table' then | |||
oddEven = args['list' .. listnum]:find(cfg.pattern.navbox_title) and cfg.marker.restart or | |||
cfg.class.navbox_odd_part | |||
end | |||
listCell:addClass(oddEven) | |||
listCell | |||
:addClass('navboxMobile-list-content') | |||
:addClass(cfg.class.navbox_list) -- Add styling for lists | |||
:addClass(cfg.class.navbox_part .. ((listnum % 2 == 1) and 'odd' or 'even')) -- Ensure odd/even styles | |||
:addClass(args[cfg.arg.listclass]) -- Apply any additional classes from args | |||
:addClass(args['listclass_' .. listnum]) -- Apply list-specific classes | |||
:cssText(args.liststyle) | |||
:cssText(args['list' .. listnum .. 'style']) | |||
-- | -- Check for nested subgroups dynamically | ||
if inArray(cfg.keyword.subgroups, args['list' .. listnum]) then | |||
if inArray(cfg.keyword.subgroups, | |||
local childArgs = { | local childArgs = { | ||
border = 'subgroup', | |||
navbar = 'plain' | |||
} | } | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
local prefix = 'child' .. listnum .. '_' | |||
childArgs[k: | if k:sub(1, #prefix) == prefix then | ||
childArgs[k:sub(#prefix + 1)] = v | |||
end | end | ||
end | end | ||
args['list' .. listnum] = p._navboxMobile(childArgs) | |||
end | end | ||
-- | -- Check for nested lists (e.g., child1_groupX) | ||
local nestedGroup = args['child' .. listnum .. '_group1'] | |||
local nestedList = args['child' .. listnum .. '_list1'] | |||
:addClass( | |||
: | if nestedGroup or nestedList then | ||
: | local nestedTbl = mw.html.create('table') | ||
: | :addClass('navboxMobile-subrendermaintabgroup') | ||
:css('width', '100%') | |||
: | |||
:tag('div') | for i = 1, 10 do -- Assume a max of 10 nested groups/lists | ||
:wikitext(processItem(args[ | local nestedGroup = args['child' .. listnum .. '_group' .. i] | ||
local nestedList = args['child' .. listnum .. '_list' .. i] | |||
if not nestedGroup and not nestedList then break end | |||
local nestedRow = addTableRow(nestedTbl) | |||
if nestedGroup then | |||
nestedRow:tag('th') | |||
:addClass('navboxMobile-group-content') | |||
:cssText(args.basestyle) | |||
:cssText(args['child' .. listnum .. '_group' .. i .. 'style']) | |||
:wikitext(processItem(nestedGroup)) | |||
end | |||
if nestedList then | |||
nestedRow:tag('td') | |||
:addClass('navboxMobile-list-content hlist') | |||
:cssText(args['child' .. listnum .. '_list' .. i .. 'style']) | |||
:wikitext(processItem(nestedList)) | |||
end | |||
end | |||
listCell:node(nestedTbl) | |||
else | |||
listCell | |||
:addClass('hlist') -- Add hlist for horizontal styling | |||
:tag('div') -- Wrap in a div to allow padding and better styling | |||
:css('padding', args[cfg.arg.listpadding] or '0 0.25em') | |||
:wikitext(processItem(args['list' .. listnum], args.nowrapitems)) | |||
end | end | ||
end | end | ||
Line 432: | Line 468: | ||
local tbl = mw.html.create('table') | local tbl = mw.html.create('table') | ||
:addClass('nowraplinks') | :addClass('nowraplinks') | ||
:addClass(cfg.class.navbox_list) | :addClass(cfg.class.navbox_list) | ||
:addClass(args.bodyclass) | :addClass(args.bodyclass) | ||
:cssText(args.bodystyle) | :cssText(args.bodystyle) |