Module:MasonryLayout: Difference between revisions
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| Line 733: | Line 733: | ||
local options = config.options or {} | local options = config.options or {} | ||
local blockRenderers = config.blockRenderers or {} | local blockRenderers = config.blockRenderers or {} | ||
-- Build cards with render-time content generation | -- Build cards with render-time content generation | ||
| Line 772: | Line 770: | ||
end | end | ||
-- | -- NEW: Mobile-first approach - build ordered single column | ||
local orderedCards = {} | |||
local introCard = nil | |||
local infoBoxCard = nil | |||
local otherCards = {} | |||
-- Separate special cards from regular cards | |||
for _, card in ipairs(cards) do | |||
if card.id == 'intro' then | |||
introCard = card | |||
elseif card.id == 'infoBox' then | |||
infoBoxCard = card | |||
else | |||
table.insert(otherCards, card) | |||
end | |||
end | |||
-- Build final ordered list: intro → infoBox → others | |||
if introCard then | |||
table.insert(orderedCards, introCard) | |||
end | |||
if infoBoxCard then | |||
table.insert(orderedCards, infoBoxCard) | |||
end | |||
for _, card in ipairs(otherCards) do | |||
table.insert(orderedCards, card) | |||
end | |||
-- Render | -- Render as single column layout | ||
local containerClass = options.containerClass or 'country-hub-masonry-container' | local containerClass = options.containerClass or 'country-hub-masonry-container' | ||
local cardClass = options.cardClass or 'country-hub-masonry-card' | |||
local masonryHtml = string.format('<div class="%s">', containerClass) | local masonryHtml = string.format('<div class="%s">', containerClass) | ||
-- Add debug information | -- Add debug information | ||
masonryHtml = masonryHtml .. string.format( | |||
'<!-- Masonry Debug: Total cards: %d, Mobile-first single column layout -->', | |||
#orderedCards | |||
) | |||
-- Render each card in order | |||
for _, card in ipairs(orderedCards) do | |||
masonryHtml = masonryHtml .. string.format( | masonryHtml = masonryHtml .. string.format( | ||
'< | '\n<div class="%s" data-card-id="%s">%s</div>', | ||
cardClass, | |||
card.id or 'unknown', | |||
card.content or EMPTY_STRING | |||
) | ) | ||
end | end | ||
masonryHtml = masonryHtml .. '\n | masonryHtml = masonryHtml .. '\n</div>' | ||
return masonryHtml | return masonryHtml | ||