Module:QuoteSlider

From Heterodontosaurus Balls

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

local QuoteSlider = {}
local getArgs = require('Module:Arguments').getArgs

local function buildSlide(content)
    -- Wrap each quote safely so table syntax renders properly
    local slide = mw.html.create('div')
        :addClass('quote-slider__slide')
        :addClass('fade')

    -- Instead of direct HTML nodes, just append the wikitext (tables render fine)
    slide:wikitext('\n' .. content .. '\n')

    return slide
end

function QuoteSlider.slider(frame)
    local args = getArgs(frame)
    local container = mw.html.create('div')
        :addClass('quote-slider__container')
        :addClass('mw-parser-output')

    local dots = mw.html.create('div'):addClass('quote-slider__dots')

    local i = 1
    while args['s' .. i] do
        container:node(buildSlide(args['s' .. i]))
        dots:tag('span')
            :addClass('quote-slider__dot')
            :attr('data-slide', i)
        i = i + 1
    end

    container:tag('div')
        :addClass('quote-slider__prev')
        :wikitext('❮')
    container:tag('div')
        :addClass('quote-slider__next')
        :wikitext('❯')

    container:node(dots)

    return tostring(container)
end

return QuoteSlider