diff --git a/lib/gui/components/svg-icon.js b/lib/gui/components/svg-icon.js index 2f9f0a0b..6739e42f 100644 --- a/lib/gui/components/svg-icon.js +++ b/lib/gui/components/svg-icon.js @@ -69,21 +69,16 @@ class SVGIcon extends react.Component { const doc = parser.parseFromString(contents, 'image/svg+xml') const svg = doc.querySelector('svg') - const img = document.createElement('img') - img.src = `data:image/svg+xml,${encodeURIComponent(svg.outerHTML)}` + const svgData = `data:image/svg+xml,${encodeURIComponent(svg.outerHTML)}` - return react.createElement('div', { + return react.createElement('img', { className: 'svg-icon', - height, - width, style: { width, height }, - disabled: this.props.disabled, - dangerouslySetInnerHTML: { - __html: img.outerHTML - } + src: svgData, + disabled: this.props.disabled }) } diff --git a/lib/gui/css/main.css b/lib/gui/css/main.css index 4cd721d4..a4a51322 100644 --- a/lib/gui/css/main.css +++ b/lib/gui/css/main.css @@ -6480,8 +6480,8 @@ svg-icon { .page-main { margin-top: 75px; } -svg-icon > div[disabled] path { - fill: #787c7f; } +svg-icon > img[disabled] { + opacity: 0.2; } .page-main .step-selection-text { color: #fff; } diff --git a/lib/gui/pages/main/styles/_main.scss b/lib/gui/pages/main/styles/_main.scss index 0736122e..4a25aced 100644 --- a/lib/gui/pages/main/styles/_main.scss +++ b/lib/gui/pages/main/styles/_main.scss @@ -18,8 +18,8 @@ margin-top: 75px; } -svg-icon > div[disabled] path { - fill: $palette-theme-dark-disabled-foreground; +svg-icon > img[disabled] { + opacity: $disabled-opacity; } .page-main .step-selection-text { diff --git a/lib/gui/scss/main.scss b/lib/gui/scss/main.scss index 2f044fba..983ddafd 100644 --- a/lib/gui/scss/main.scss +++ b/lib/gui/scss/main.scss @@ -20,6 +20,7 @@ $cursor-disabled: initial; $link-hover-decoration: none; $btn-min-width: 170px; $link-color: #ddd; +$disabled-opacity: 0.2; @import "../../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; @import "./modules/theme"; diff --git a/tests/gui/components/svg-icon.spec.js b/tests/gui/components/svg-icon.spec.js index 3cf2a75a..3f4ccd06 100644 --- a/tests/gui/components/svg-icon.spec.js +++ b/tests/gui/components/svg-icon.spec.js @@ -56,7 +56,7 @@ describe('Browser: SVGIcon', function () { const originalSVGParser = new DOMParser() const originalDoc = originalSVGParser.parseFromString(iconContents, 'image/svg+xml') const compiledSVGParser = new DOMParser() - const compiledContents = decodeURIComponent(element.children()[0].children[0].src.substr(19)) + const compiledContents = decodeURIComponent(element.children()[0].src.substr(19)) const compiledDoc = compiledSVGParser.parseFromString(compiledContents, 'image/svg+xml') m.chai.expect(compiledDoc.outerHTML).to.equal(originalDoc.outerHTML) @@ -64,12 +64,12 @@ describe('Browser: SVGIcon', function () { it('should accept an SVG in the path attribute', function () { const iconContents = '' - const img = `` + const imgData = `data:image/svg+xml,${encodeURIComponent(iconContents)}` $rootScope.iconContents = iconContents const element = $compile('Resin.io')($rootScope) $rootScope.$digest() - m.chai.expect(element.children().html()).to.equal(img) + m.chai.expect(element.children().attr('src')).to.equal(imgData) }) it('should default the size to 40x40 pixels', function () {