« Module:Icône » : différence entre les versions

Aucun résumé des modifications
Balise : Révoqué
Annulation des modifications 169153 de Atsarb (discussion)
Balise : Annulation
Ligne 37 : Ligne 37 :


     local iconHtml = '[[Fichier:'..filename..'|'..size..'x'..size..'px|link='..link..'|alt=]]'
     local iconHtml = '[[Fichier:'..filename..'|'..size..'x'..size..'px|link='..link..'|alt=]]'
     local popup = mw.html.create('span')
     local popup = mw.html.create('span')
         :addClass('avt-tooltip-popup')
         :addClass('avt-tooltip-popup')
Ligne 49 : Ligne 48 :
         :css('border-radius', '4px')
         :css('border-radius', '4px')
         :css('white-space', 'nowrap')
         :css('white-space', 'nowrap')
         :css('display', 'none')
         :css('display', 'none') -- à afficher via hover ou JS
         :wikitext(tooltip)
         :wikitext(tooltip)


Ligne 57 : Ligne 56 :
     return tostring(wrapper)
     return tostring(wrapper)
end
end


--[[
--[[

Version du 24 août 2025 à 17:11

Documentation du module

Ce module contient le paramétrage du modèle {{Icône}}.

Documentation transclues de Module:Icône/doc.
local p = {}

local icons = require('Module:Icône/Données')

local DEFAULT_ICON_NAME = '_DEFAULT'
local DEFAULT_SIZE = 'normal'
local STANDARD_SIZE = {
	petit = '20',
	normal  = '30',
	grand    = '50',
	big = '50',
	geant = '80'
}

function p._build(args)
    local name = args[1] or DEFAULT_ICON_NAME
    local link = args['lien'] or args['link'] or ''
    
    local icon = icons[name:lower()] or icons[DEFAULT_ICON_NAME]
    local filename = icon.filename
    local tooltip = args['infobulle'] or args['tooltip'] or icon.tooltip
    
    local userSize = args[2] or DEFAULT_SIZE
    local size = STANDARD_SIZE[userSize]
    if not size then
        size = userSize:gsub('[px]', '')
        size = tonumber(size)
        if not size then
            size = STANDARD_SIZE[DEFAULT_SIZE]
        end
    end

    local wrapper = mw.html.create('span')
        :addClass('avt-tooltip')
        :css('position', 'relative')
        :css('display', 'inline-block')

    local iconHtml = '[[Fichier:'..filename..'|'..size..'x'..size..'px|link='..link..'|alt=]]'
    local popup = mw.html.create('span')
        :addClass('avt-tooltip-popup')
        :css('position', 'absolute')
        :css('bottom', '100%')
        :css('left', '50%')
        :css('transform', 'translateX(-50%)')
        :css('background', '#333')
        :css('color', '#fff')
        :css('padding', '5px 8px')
        :css('border-radius', '4px')
        :css('white-space', 'nowrap')
        :css('display', 'none') -- à afficher via hover ou JS
        :wikitext(tooltip)

    wrapper:wikitext(iconHtml)
    wrapper:node(popup)

    return tostring(wrapper)
end

--[[
	Fonction utilisée dans la doc du modèle pour présenter
	les cônes disponibles aux contributeurs
]]
function p.doc()
	local tabDefinition = '{| class="va-table va-table-center-col2" style="float:left;margin-right:4px;width:250px;"\n!style="width:70%;"|mot-clé!!style="width:30%;"|icône\n'
	local doc = tabDefinition

	keywords = {}
    for k in pairs(icons) do
        table.insert(keywords, k)
    end
    table.sort(keywords)
    
    local split = math.ceil(#keywords / 3)
    local n = 0
    
    for k, v in ipairs(keywords) do
    	if n > split then
    		doc = doc..'\n|}'
    		doc = doc..'\n'..tabDefinition
    		n = 0
    	end
    	
    	n = n + 1
    	local icon = icons[v]
    	
    	doc = doc..'|-\n|<code>'..v..'</code>||[[Fichier:'..icon.filename..'|20x20px|link=]]\n'
    end
    
    doc = doc..'|}'

	return doc
end

function p.build(frame)
	local args = {}
	
	local argsParent = frame:getParent().args
	for cle, val in pairs(argsParent) do
		if val then
			args[cle] = mw.text.trim(val)
		end
	end
	
	return p._build(args)
end

return p