aboutsummaryrefslogtreecommitdiff
path: root/vnext/src/components/Icon.js
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-06-09 15:50:47 +0300
committerGravatar Vitaly Takmazov2023-01-13 10:37:52 +0300
commit733343545f2be35f192011f2741dc8c41948cac8 (patch)
treeba1d4fef36529965b1344f2016e312ad2269816a /vnext/src/components/Icon.js
parent4e744b4ac064133d36f75799139607508e1cb8d1 (diff)
many updates
Diffstat (limited to 'vnext/src/components/Icon.js')
-rw-r--r--vnext/src/components/Icon.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/vnext/src/components/Icon.js b/vnext/src/components/Icon.js
new file mode 100644
index 00000000..b4e8804c
--- /dev/null
+++ b/vnext/src/components/Icon.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+export default class Icon extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ var size = this.props.size ? ' icon--' + this.props.size : '';
+ var className = this.props.className ? ' ' + this.props.className : '';
+ var klass = 'icon icon--' + this.props.name + size + className;
+
+ var name = '#' + this.props.name + '-icon';
+ var useTag = '<use xlink:href=' + name + ' />';
+ var Icon = React.createElement('svg', { className: 'icon__cnt', dangerouslySetInnerHTML: { __html: useTag } });
+ return React.createElement(
+ 'div',
+ { className: klass },
+ this.wrapSpinner(Icon, klass)
+ );
+ }
+
+ wrapSpinner(Html, klass) {
+ if (klass.indexOf('spinner') > -1) {
+ return React.createElement(
+ 'div',
+ { className: 'icon__spinner' },
+ Html
+ );
+ } else {
+ return Html;
+ }
+ }
+}
+
+Icon.propTypes = {
+ size: PropTypes.string.isRequired,
+ name: PropTypes.string.isRequired,
+ className: PropTypes.string
+}