forked from JamBrain/JamBrain
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathicon.js
55 lines (49 loc) · 1.88 KB
/
icon.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { h, Component } from 'preact/preact';
export default class SVGIcon extends Component {
// setIcon( name ) {
// //el.firstChild.firstChild.setAttributeNS('http://www.w3.org/1999/xlink','href','/static/all.min.svg?v=1017-d0abbd8#icon-home3');
// }
render( props, state ) {
let svg_props = { "class":"svg-icon" };
let use_props = {};
// Alignment Args //
if ( props['baseline'] ) svg_props['class'] += " -baseline";
if ( props['top'] ) svg_props['class'] += " -top";
if ( props['bottom'] ) svg_props['class'] += " -bottom";
if ( props['text-top'] ) svg_props['class'] += " -text-top";
if ( props['text-bottom'] ) svg_props['class'] += " -text-bottom";
if ( props['middle'] ) svg_props['class'] += " -middle";
if ( props['double'] ) svg_props['class'] += " -double";
if ( props['biggest'] ) svg_props['class'] += " -biggest";
if ( props['bigger'] ) svg_props['class'] += " -bigger";
if ( props['big'] ) svg_props['class'] += " -big";
if ( props['small'] ) svg_props['class'] += " -small";
if ( props['half'] ) svg_props['class'] += " -half";
if ( props['quarter'] ) svg_props['class'] += " -quarter";
if ( props['block'] ) svg_props['class'] += " -block";
if ( props['gap'] ) svg_props['class'] += " -gap";
if ( props['pad'] ) svg_props['class'] += " -pad";
// What Icon //
if ( props.name ) {
svg_props['class'] += " icon-"+props.name;
use_props['xlinkHref'] = "#icon-"+props.name;
}
else if ( props.src ) {
svg_props['class'] += " icon-"+props.src;
use_props['xlinkHref'] = "#icon-"+props.src;
}
else {
let name = props.children;
svg_props['class'] += " icon-"+name;
use_props['xlinkHref'] = "#icon-"+name;
}
// Any addon classes //
if ( props.class ) {
svg_props['class'] += " "+props.class;
}
// Generate it //
return (
<svg {...svg_props}><use {...use_props}></use></svg>
);
}
}