Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Module:TableColors » : différence entre les versions

De Nefald
Hiob (discussion | contributions)
m Espace insécable
Hiob (discussion | contributions)
mAucun résumé des modifications
Ligne 38 : Ligne 38 :
     local args = frame:getParent().args
     local args = frame:getParent().args
     local colorName = mw.text.trim(args[1] or ""):lower()
     local colorName = mw.text.trim(args[1] or ""):lower()
     local customLabel = args[2]
     local content = args[2] -- Ne pas trim ici pour garder le formatage
      
      
     -- Gestion des alias
     -- Gestion des alias
Ligne 53 : Ligne 53 :
     local color = colors[colorName] or colors.light
     local color = colors[colorName] or colors.light
      
      
     -- Construction du style avec classes CSS
     -- Construction du style
     local style = string.format(
     local style = string.format(
         'class="table-color-cell table-color-%s" style="background-color: %s; color: %s"',
         'background-color: %s; color: %s',
        colorName:gsub("%W", "-"),
         color.bg,
         color.bg,
         color.fg
         color.fg
     )
     )
      
      
     -- Traitement du label
     -- Si pas de contenu ou contenu vide
     if customLabel then
     if not content or mw.text.trim(content) == "" then
        local labelTrimmed = mw.text.trim(customLabel)
        return 'style="' .. style .. '"'
        -- Si le label existe et n'est pas vide
        if labelTrimmed ~= "" then
            return style .. ' | ' .. customLabel
        end
     end
     end
      
      
     -- Si pas de label ou label vide, retourner juste le style sans le séparateur
     -- Si contenu présent
     return style
     return 'style="' .. style .. '" | ' .. content
end
end


-- Fonction pour lister les couleurs disponibles
-- Fonction pour lister les couleurs disponibles
function p.list(frame)
function p.list(frame)
     local output = '{| class="wikitable sortable"\n! Nom !! Aperçu !! Code\n'
     local output = {}
    table.insert(output, '{| class="wikitable sortable"')
    table.insert(output, '! Nom !! Aperçu !! Code')
      
      
     local sorted = {}
     local sorted = {}
Ligne 86 : Ligne 83 :
     for _, name in ipairs(sorted) do
     for _, name in ipairs(sorted) do
         local color = colors[name]
         local color = colors[name]
         output = output .. string.format(
         table.insert(output, '|-')
             '|-\n| %s || style="background:%s; color:%s; padding:5px 10px;" | %s || <code>{{Couleur|%s}}</code>\n',
        table.insert(output, string.format(
             '| %s || style="background:%s; color:%s; padding:8px 15px; font-weight:500;" | %s || <code>{{{{Couleur|%s}}}}</code>',
             color.label,
             color.label,
             color.bg,
             color.bg,
Ligne 93 : Ligne 91 :
             color.label,
             color.label,
             name
             name
         )
         ))
     end
     end
      
      
     return output .. '|}'
     table.insert(output, '|}')
   
    return table.concat(output, '\n')
end
end


return p
return p

Version du 1 octobre 2025 à 14:05

La documentation pour ce module peut être créée à Module:TableColors/doc

local p = {}

-- Palette inspirée de Bootstrap 5 + Citizen
local colors = {
    -- Variantes de succès (vert)
    success = { bg = "#d1e7dd", fg = "#0f5132", label = "Succès" },
    ["success-light"] = { bg = "#e8f5e9", fg = "#1b5e20", label = "Succès clair" },
    
    -- Variantes de danger (rouge)
    danger = { bg = "#f8d7da", fg = "#842029", label = "Danger" },
    ["danger-light"] = { bg = "#ffebee", fg = "#c62828", label = "Danger clair" },
    
    -- Variantes d'avertissement (jaune/orange)
    warning = { bg = "#fff3cd", fg = "#664d03", label = "Avertissement" },
    ["warning-light"] = { bg = "#fffde7", fg = "#f57f17", label = "Avertissement clair" },
    
    -- Variantes d'information (bleu)
    info = { bg = "#cfe2ff", fg = "#084298", label = "Info" },
    ["info-light"] = { bg = "#e3f2fd", fg = "#01579b", label = "Info clair" },
    
    -- Variantes neutres
    primary = { bg = "#cfe2ff", fg = "#052c65", label = "Primaire" },
    secondary = { bg = "#e2e3e5", fg = "#41464b", label = "Secondaire" },
    light = { bg = "#f8f9fa", fg = "#495057", label = "Clair" },
    dark = { bg = "#ced4da", fg = "#212529", label = "Foncé" },
    
    -- Compatibilité anciens noms
    vert = { bg = "#d1e7dd", fg = "#0f5132", label = "Vert" },
    rouge = { bg = "#f8d7da", fg = "#842029", label = "Rouge" },
    jaune = { bg = "#fff3cd", fg = "#664d03", label = "Jaune" },
    rose = { bg = "#f8d7da", fg = "#842029", label = "Rose" },
    gris = { bg = "#e2e3e5", fg = "#41464b", label = "Gris" },
    bleu = { bg = "#cfe2ff", fg = "#084298", label = "Bleu" },
}

-- Fonction principale
function p.style(frame)
    local args = frame:getParent().args
    local colorName = mw.text.trim(args[1] or ""):lower()
    local content = args[2] -- Ne pas trim ici pour garder le formatage
    
    -- Gestion des alias
    local aliases = {
        ["gris-"] = "info-light",
        ["gris+"] = "secondary",
        ["vert-clair"] = "success-light",
        ["rouge-clair"] = "danger-light",
    }
    
    colorName = aliases[colorName] or colorName
    
    -- Récupération de la couleur
    local color = colors[colorName] or colors.light
    
    -- Construction du style
    local style = string.format(
        'background-color: %s; color: %s',
        color.bg,
        color.fg
    )
    
    -- Si pas de contenu ou contenu vide
    if not content or mw.text.trim(content) == "" then
        return 'style="' .. style .. '"'
    end
    
    -- Si contenu présent
    return 'style="' .. style .. '" | ' .. content
end

-- Fonction pour lister les couleurs disponibles
function p.list(frame)
    local output = {}
    table.insert(output, '{| class="wikitable sortable"')
    table.insert(output, '! Nom !! Aperçu !! Code')
    
    local sorted = {}
    for name, _ in pairs(colors) do
        table.insert(sorted, name)
    end
    table.sort(sorted)
    
    for _, name in ipairs(sorted) do
        local color = colors[name]
        table.insert(output, '|-')
        table.insert(output, string.format(
            '| %s || style="background:%s; color:%s; padding:8px 15px; font-weight:500;" | %s || <code>{{{{Couleur|%s}}}}</code>',
            color.label,
            color.bg,
            color.fg,
            color.label,
            name
        ))
    end
    
    table.insert(output, '|}')
    
    return table.concat(output, '\n')
end

return p