Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Card

From Vault Hunters Official Wiki

Documentation for this module may be created at Module:Card/doc

local p = {}

local validTypes = {
    default = true,
    primary = true,
    success = true,
    warning = true,
    destructive = true,
    spacer = true,
}

function p.main(frame)
    local args = frame:getParent().args
    return p._main(args)
end

function p._main(args)
    local cardType = args.type or 'default'
    local icon = args.icon or ''
    local title = args.title or ''
    local content = args.content or ''
    local footer = args.footer or ''
    local link = args.link or ''

    if not validTypes[cardType] then
        cardType = 'default'
    end

    if cardType == 'spacer' then
        local div = mw.html.create('div')
            :addClass('vh-card--spacer')
        return tostring(div)
    end

    local html = mw.html.create('div')
        :addClass('vh-card')
        :addClass('vh-card--' .. cardType)

    -- Header
    if title ~= '' or icon ~= '' then
        local header = html:tag('div')
            :addClass('vh-card-header')

        if icon ~= '' then
            header:tag('span')
                :addClass('vh-card-icon')
                :wikitext(icon)
        end

        if title ~= '' then
            local titleElement = header:tag('h3')
                :addClass('vh-card-title')

            if link ~= '' then
                titleElement:wikitext('[[' .. link .. '|' .. title .. ']]')
            else
                titleElement:wikitext(title)
            end
        end
    end

    -- Content
    if content ~= '' then
        html:tag('div')
            :addClass('vh-card-content')
            :wikitext(content)
    end

    -- Footer
    if footer ~= '' then
        html:tag('div')
            :addClass('vh-card-footer')
            :wikitext(footer)
    end

    return tostring(html)
end

function p.group(frame)
    local args = frame:getParent().args
    local content = args.content or args[1] or ''
    local processedContent = frame:preprocess(content)
    -- Remove automatic paragraphing from MediaWiki by trimming
    return '<div class="vh-card-group">\n' .. processedContent .. '\n</div>'
end

function p.quickLink(frame)
    local args = frame:getParent().args
    local icon = args.icon or ''
    local title = args.title or ''
    local link = args.link or ''
    local description = args.description or ''

    local html = mw.html.create('div')
        :addClass('vh-quick-link-card')

    if icon ~= '' then
        html:tag('div')
            :addClass('vh-quick-link-icon')
            :wikitext(icon)
    end

    if title ~= '' then
        local titleDiv = html:tag('div')
            :addClass('vh-quick-link-title')

        if link ~= '' then
            titleDiv:wikitext('[[' .. link .. '|' .. title .. ']]')
        else
            titleDiv:wikitext(title)
        end
    end

    if description ~= '' then
        html:tag('div')
            :addClass('vh-quick-link-desc')
            :wikitext(description)
    end

    return tostring(html)
end

return p