« Module:TableColors » : différence entre les versions
De Nefald
Autres actions
m Espace insécable |
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 | 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 | -- Construction du style | ||
local style = string.format( | local style = string.format( | ||
' | 'background-color: %s; color: %s', | ||
color.bg, | color.bg, | ||
color.fg | color.fg | ||
) | ) | ||
-- | -- Si pas de contenu ou contenu vide | ||
if | if not content or mw.text.trim(content) == "" then | ||
return 'style="' .. style .. '"' | |||
end | end | ||
-- Si | -- 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" | 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 | 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.label, | ||
color.bg, | color.bg, | ||
Ligne 93 : | Ligne 91 : | ||
color.label, | color.label, | ||
name | name | ||
) | )) | ||
end | end | ||
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