flamingo-carotene-webpack-svg-sprite
v9.0.0-alpha.13
Published
Flamingo Carotene svg sprite solution
Downloads
33
Keywords
Readme
Module flamingo-carotene-webpack-svg-sprite
This module simplifies the setup, generating and using svg sprites for icons in the Flamingo Carotene environment. During the build step of Flamingo Carotene we use external-svg-sprite-loader webpack module to extract all required svg files into an single svg sprite.
How to setup
1. npm
npm i -D flamingo-carotene-webpack-svg-sprite
2. In your pug
In your base template file you'll need to include the svgIconSprite.pug from this module.
include ~flamingo-carotene-webpack-svg-sprite/dist/svgIconSprite
3. In your sass
If you would like to style your icons then you'll need to @import this in your main index.[sass|scss] file.
@import '~flamingo-carotene-webpack-svg-sprite/dist/svgIconSprite'
4. Register sprite behavior and require svg files
Create app/js/svgIconSprite.js
file and import this in your index.js
file:
import behavior from './behavior'
import svgIconSpriteBehavior from 'flamingo-carotene-webpack-svg-sprite/dist/svgIconSprite.behavior'
behavior.registerBehaviorClasses({
svgIconSpriteBehavior: svgIconSpriteBehavior
});
import './svgIconSprite/*.svg'
The import './svgIconSprite/*.svg'
is the setup for external-svg-sprite-loader webpack module,
which collects all svg files in all js files in your project and extracts them into single svgIconSprite.svg
file.
All svg icons should live in frontend/src/app/js/svgIconSprite/*.js
How to use
pug
| Parameter name | Description | |:---------------|:------------| |$iconName | Here you should provide the file name of the svg icon you would like to use. |
For example if you have chevron.svg in your svg icons folder then you can use this icon like this in your pug:
+svgIcon('chevron')
You could use this as a normal pug mixin and pass any attribute you would like.
sass
After correctly setting it up, this module provides a sass mixin called +svgSpriteIcon
with following parameters:
| Parameter name | Default value | Description |:---------------|:--------------|:-----------| |$width |false | Width in px can be provided | |$height |false | Height in px can be provided | |$userRatio |false | Useful if you would like to have the icon scaled based on the ratio |
For example this will style element with class name .myLogo
, with 25px
width and 25px
height and svg filled red:
.myLogo
+svgSpriteIcon(25, 25)
fill: red
What is $useRatio for?
If turned on, the wrapping element will get padding-top
with percentage based ratio calculated from the provided width and height.