Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
MediaWiki help
Creopedia
Search
Search
Appearance
Log in
Personal tools
Log in
View source for Module:InfoboxLua/Components/Section
Module
Discussion
English
Read
View source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
View source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
←
Module:InfoboxLua/Components/Section
require( 'strict' ) local tabber = mw.ext.tabber local util = require( 'Module:InfoboxLua/Util' ) local types = require( 'Module:InfoboxLua/Types' ) local itemComponent = require( 'Module:InfoboxLua/Components/Item' ) local p = {} --- @param section SectionComponentData --- @return mw.html local function getItemsHtml( section ) local root = mw.html.create( 'div' ) root:addClass( 't-infobox-section-items' ) if section.columns and section.columns > 1 then root:css( '--infobox-section-columns', tostring( section.columns ) ) end for _, itemData in ipairs( section.items ) do local itemHtml = itemComponent.getHtml( itemData ) if itemHtml then root:node( itemHtml ) end end return root end --- @param section SectionComponentData --- @return mw.html|nil local function getSubSectionsHtml( section ) local tabberData = {} for i, subSectionData in ipairs( section.sections ) do local label = subSectionData.label local contentHtml = p.getHtml( subSectionData, true ) if label and contentHtml then table.insert( tabberData, { label = label, content = tostring( contentHtml ) } ) end end if tabberData == {} then return nil end local root = mw.html.create( 'div' ) root:addClass( 't-infobox-section-subsections' ) root:node( tabber.render( tabberData ) ) return root end --- Renders an infobox section. --- --- @param data table --- @param isSubSection boolean|nil --- @return mw.html|nil function p.getHtml( data, isSubSection ) --- @type SectionComponentData|nil local section = util.validateAndConstruct( data, types.SectionComponentDataSchema ) if not section then return nil end local isEmpty = true local root = mw.html.create( 'div' ) root:addClass( 't-infobox-section' ) if util.isNonEmptyString( section.class ) then root:addClass( section.class ) end if util.isNonEmptyString( section.label ) and isSubSection ~= true then root:tag( 'div' ) :addClass( 't-infobox-section-label' ) :wikitext( section.label ) :done() end if util.isNonEmptyString( section.content ) then isEmpty = false root:wikitext( section.content ) end if util.isNonEmptyTable( section.items ) then local itemsHtml = getItemsHtml( section ) if itemsHtml then isEmpty = false root:node( itemsHtml ) end end if util.isNonEmptyTable( section.sections ) then local subSectionsHtml = getSubSectionsHtml( section ) if subSectionsHtml then isEmpty = false root:node( subSectionsHtml ) end end return isEmpty and nil or root end return p
Templates used on this page:
Template:Documentation
(
view source
)
Module:InfoboxLua/Components/Section/doc
(
view source
)
Return to
Module:InfoboxLua/Components/Section
.