Modulo:Materialize colors examples: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
respect color order |
generate also a white+black palette |
||
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 )
function MaterialColor:new( color,
-- no color no party
Riga 207:
local materialColor = {
color = color,
skip = skip or {},
}
setmetatable( materialColor, MaterialColor )
Line 226 ⟶ 224:
--- Create an HTML palette (a stack of colorized divs)
function MaterialColor:createPaletteHTML( flavors,
local s = ""
local APIX = "\""
local colorPre = args.colorPre or ''
containerClass = addStartingSpace( containerClass )▼
local colorPost = args.colorPost or '\n'
▲ local containerClass = addStartingSpace( args.containerClass )
-- for each color flavor, create some HTML
self:eachColorFlavor( flavors, function( flavor )
s = s .. colorPre
.. "<div class=" .. APIX -- start HTML class name:
.. flavor:getContainerCSSClassAndTextClass()
.. containerClass
.. APIX .. ">"
-- displayed text:
.. flavor:getContainerCSSClass()
.. "</div>
.. colorPost
end )
Line 250 ⟶ 252:
local p = {}
-- Internal function to save a new color
function p.
-- index by name
p._KNOWN_COLORS_BY_NAME[ color ] = MaterialColor:new( color,
-- index by desired order
p._KNOWN_COLORS_BY_ORDER[ #p._KNOWN_COLORS_BY_ORDER + 1 ] = p._KNOWN_COLORS_BY_NAME[ color ]
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
p._KNOWN_FLAVORS = {
p.
}
--- a complete array of known colors indexed by name
p._KNOWN_COLORS_BY_ORDER = {}
p._KNOWN_COLORS_BY_NAME = {}
p._newColor( "red"
p._newColor( "pink"
p._newColor( "purple"
p._newColor( "deep-purple"
p._newColor( "indigo"
p._newColor( "blue"
p._newColor( "light-blue"
p._newColor( "cyan"
p._newColor( "teal"
p._newColor( "green"
p._newColor( "light-green"
p._newColor( "lime"
p._newColor( "yellow"
p._newColor( "amber"
p._newColor( "orange"
p._newColor( "deep-orange"
p._newColor( "brown" ,
p._newColor( "grey" ,
p._newColor( "blue-grey" ,
-- add other special colors
p._WHITE = MaterialColor:new( "white", NOT_REALLY_A_COLOR )
p._BLACK = MaterialColor:new( "black", NOT_REALLY_A_COLOR )
---
Line 314 ⟶ 332:
-- get a color by its name
function p._getColor( name )
return p._KNOWN_COLORS_BY_NAME[ name ] or error( "unknown color: " .. tostring( name ) )
end
Line 321 ⟶ 339:
function p._paletteHTML( args )
args = args or {}
-- find the color and generate the HTML palette
return p._getColor( args.color )
:createPaletteHTML( p._KNOWN_FLAVORS,
end
Line 344 ⟶ 358:
-- arguments
args = args or {}
-- find the color and generate the HTML palette
return p._getColor( args.color )
:createPaletteHTML( p._KNOWN_FLAVORS,
end
Line 367 ⟶ 379:
-- 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,
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
|