Modulo:Materialize colors examples: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix caso base
+possibilità di avere i colori dei testi
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 166:
-- Get the CSS class name for the text
-- @return string
function MaterialColorFlavor:getTextCSSClass( isText )
return self.flavor.isDark and not isText and 'white-text' or nil
end
 
---
-- Constructor for a MaterialColorFlavor
-- @param colorisText nameWhenever ofthis theshould colornot e.g.be '"red' darken-1" but "red-text text-darken-1"
-- @param flavor reference to a MaterialFlavor
-- @return string
function MaterialColorFlavor:getContainerCSSClass( isText )
local stextPrefix = self.colorisText and 'text-' or ''
local textSuffix = isText and '-text' or ''
local cssClass = self.color .. textSuffix
if self.flavor.name then
scssClass = scssClass .. " " .. textPrefix .. self.flavor.name
end
return scssClass
end
 
---
-- Get the container's CSS class, plus the text class (if any)
-- @param colorisText nameWhenever ofthis theshould colornot e.g.be '"red' darken-1" but "red-text text-darken-1"
-- @param flavor reference to a MaterialFlavor
-- @return string
function MaterialColorFlavor:getContainerCSSClassAndTextClass( isText )
return concatClasses(
self:getContainerCSSClass( isText ),
self:getTextCSSClass( isText )
)
end
Riga 197:
--- Constructor for a MaterialColor
-- @param color name of the color e.g. 'red'
-- @param skip Table of flavor names to be skipped (e.g. { darken = true } to skip darken )
-- @param skipAccent whenever to skip the "accents" flavor
function MaterialColor:new( color, skipAccentskip )
 
-- no color no party
Riga 207:
local materialColor = {
color = color,
skip = skip or {},
accent = skipAccent or true and false,
},
}
setmetatable( materialColor, MaterialColor )
Line 226 ⟶ 224:
 
--- Create an HTML palette (a stack of colorized divs)
function MaterialColor:createPaletteHTML( flavors, containerClassargs )
local s = ""
local APIX = "\""
 
local colorPre = args.colorPre or ''
containerClass = addStartingSpace( containerClass )
local colorPost = args.colorPost or '\n'
local colorExtraClass = addStartingSpace( args.colorExtraClass )
local isText = tostring( args.isText ) == '1'
 
-- for each color flavor, create some HTML
self:eachColorFlavor( flavors, function( flavor )
s = s .. colorPre
.. "<div class=" .. APIX
-- start HTML class name:
.. flavor:getContainerCSSClassAndTextClass( isText )
.. containerClasscolorExtraClass
.. APIX .. ">"
-- displayed text:
.. flavor:getContainerCSSClass( isText )
.. "</div>\n"
.. colorPost
end )
 
Line 250 ⟶ 253:
local p = {}
 
-- Internal function to save a new color flavorby name
function p._newFlavor_newColor( basecolor, i, isDarkskip )
-- index by name
p._KNOWN_FLAVORS[ #p._KNOWN_FLAVORS +1 ] = MaterialFlavor:new( base, i, isDark )
p._KNOWN_COLORS_KNOWN_COLORS_BY_NAME[ color ] = MaterialColor:new( color, skipAccentskip )
end
 
-- save a colorindex by itsdesired nameorder
p._KNOWN_COLORS_BY_ORDER[ #p._KNOWN_COLORS_BY_ORDER + 1 ] = p._KNOWN_COLORS_BY_NAME[ color ]
function p._newColor( color, skipAccent )
p._KNOWN_COLORS[ color ] = MaterialColor:new( color, skipAccent )
end
 
---
--- CONSTANTS
---
 
local SKIP_ACCENTS = {
accent = true, -- skip flavor accent
}
 
local NOT_REALLY_A_COLOR = {
accent = true, -- skip flavor accent
lighten = true, -- skip flavor lighten
darken = true, -- skip flavor darken
}
 
---
--- INITIALIZATION
---
-- special flavors useful for black and white
p._SPECIAL_FLAVOR_NEUTRAL = MaterialFlavor:new( nil, nil ) -- just color, no flavor
p._SPECIAL_FLAVOR_DARK = MaterialFlavor:new( nil, nil, true ) -- just color, no flavor, is dark
 
--- a complete arraypalette of generic color flavors
p._KNOWN_FLAVORS = {}
p._newFlavor MaterialFlavor:new( "lighten", 5 ),
p._newFlavor MaterialFlavor:new( "lighten", 4 ),
p._newFlavor MaterialFlavor:new( "lighten", 3 ),
p._newFlavor MaterialFlavor:new( "lighten", 2 ),
p._newFlavor(_SPECIAL_FLAVOR_NEUTRAL, nil , nil ) -- yup, the default color without flavor
p._newFlavor MaterialFlavor:new( "darken" , 1, true ), -- dark version with white text
p._newFlavor MaterialFlavor:new( "darken" , 2, true ), -- dark version with white text
p._newFlavor MaterialFlavor:new( "darken" , 3, true ), -- dark version with white text
p._newFlavor MaterialFlavor:new( "darken" , 4, true ), -- dark version with white text
p._newFlavor MaterialFlavor:new( "accent" , 1 ),
p._newFlavor MaterialFlavor:new( "accent" , 2 ),
p._newFlavor MaterialFlavor:new( "accent" , 3 ),
p._newFlavor MaterialFlavor:new( "accent" , 4 ),
}
 
--- a complete array of known colors indexed by name
p._KNOWN_COLORS_KNOWN_COLORS_BY_ORDER = {}
p._KNOWN_COLORS_BY_NAME = {}
p._newColor( "red" )
p._newColor( "pinkred" )
p._newColor( "purplepink" )
p._newColor( "deep-purple" )
p._newColor( "indigodeep-purple" )
p._newColor( "blueindigo" )
p._newColor( "light-blue" )
p._newColor( "cyanlight-blue" )
p._newColor( "tealcyan" )
p._newColor( "greenteal" )
p._newColor( "light-green" )
p._newColor( "limelight-green" )
p._newColor( "yellowlime" )
p._newColor( "amberyellow" )
p._newColor( "orangeamber" )
p._newColor( "deep-orange" )
p._newColor( "browndeep-orange" , true ) -- no "accent"
p._newColor( "greybrown" , trueSKIP_ACCENTS ) -- no "accent"
p._newColor( "blue-grey" , true ) -- no "accent", SKIP_ACCENTS )
p._newColor( "redblue-grey" , SKIP_ACCENTS )
 
-- add other special colors
p._WHITE = MaterialColor:new( "white", NOT_REALLY_A_COLOR )
p._BLACK = MaterialColor:new( "black", NOT_REALLY_A_COLOR )
 
---
Line 308 ⟶ 333:
-- get a color by its name
function p._getColor( name )
return p._KNOWN_COLORS_KNOWN_COLORS_BY_NAME[ name ] or error( "unknown color: " .. tostring( name ) )
end
 
Line 315 ⟶ 340:
function p._paletteHTML( args )
args = args or {}
 
-- find the color and generate the HTML palette
return p._getColor( args.color )
:createPaletteHTML( p._KNOWN_FLAVORS, args )
end
 
--- Generate an HTML color palette
-- This function should be called from wikitext
function p.paletteHTML( frame )
local args = frameArguments( frame )
return p._paletteHTML( args )
end
 
--- Generate an HTML color palette
-- This function should be called from Lua
function p._paletteHTML( args )
 
-- arguments
args = args or {}
local color = args.color
local containerClass = args.containerClass
 
-- find the color and generate the HTML palette
return p._getColor( args.color )
:createPaletteHTML( p._KNOWN_FLAVORS, containerClassargs )
end
 
Line 330 ⟶ 370:
local args = frameArguments( frame )
return p._paletteHTML( args )
end
 
--- Generate an HTML color palette
-- This function should be called from Lua
function p._allPalettesHTML( args )
 
local s = ""
 
-- arguments
args = args or {}
local containerPre = args.containerPre or ''
local containerPost = args.containerPost or ''
 
-- generate all palettes (but not white and black)
for i, color in pairs( p._KNOWN_COLORS_BY_ORDER ) do
s = s .. containerPre
s = s .. color:createPaletteHTML( p._KNOWN_FLAVORS, args )
s = s .. containerPost
end
 
-- generate also a nice palette for white and black
s = s .. containerPre
s = s .. p._WHITE:createPaletteHTML( { p._SPECIAL_FLAVOR_NEUTRAL }, args )
s = s .. p._BLACK:createPaletteHTML( { p._SPECIAL_FLAVOR_DARK }, args )
s = s .. containerPost
 
-- find the color and generate the HTML palette
return s
end
 
--- Generate an HTML color palette
-- This function should be called from wikitext
function p.allPalettesHTML( frame )
local args = frameArguments( frame )
return p._allPalettesHTML( args )
end