Changing how permalink and download links are hidden
Using a class name instead of setting the display CSS property. This way, the ::after of the download link can be hidden when the permalink is gone
This commit is contained in:
parent
6c49d6ba8e
commit
facd4f6ac4
@ -9,11 +9,15 @@ describe('regexper.js', function() {
|
|||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
this.root = document.createElement('div');
|
this.root = document.createElement('div');
|
||||||
this.root.innerHTML = [
|
this.root.innerHTML = [
|
||||||
'<form id="regexp-form" action="/"><input type="text" id="regexp-input" /></form>',
|
'<form id="regexp-form" action="/">',
|
||||||
|
'<input type="text" id="regexp-input">',
|
||||||
|
'<ul class="example">',
|
||||||
|
'<ul><a href="#" data-glyph="link-intact"></a></ul>',
|
||||||
|
'<ul><a href="#" data-glyph="data-transfer-download"></a></ul>',
|
||||||
|
'</ul>',
|
||||||
|
'</form>',
|
||||||
'<div id="error"></div>',
|
'<div id="error"></div>',
|
||||||
'<ul id="warnings"></ul>',
|
'<ul id="warnings"></ul>',
|
||||||
'<div><a href="#" data-glyph="link-intact"></a></div>',
|
|
||||||
'<div><a href="#" data-glyph="data-transfer-download"></a></div>',
|
|
||||||
'<div id="regexp-render"></div>',
|
'<div id="regexp-render"></div>',
|
||||||
].join('');
|
].join('');
|
||||||
|
|
||||||
@ -308,7 +312,8 @@ describe('regexper.js', function() {
|
|||||||
|
|
||||||
it('hides the download link', function() {
|
it('hides the download link', function() {
|
||||||
this.regexper.updateLinks();
|
this.regexper.updateLinks();
|
||||||
expect(this.regexper.download.parentNode.style.display).toEqual('none');
|
expect(this.regexper.links.className).toMatch(/\bexample\b/);
|
||||||
|
expect(this.regexper.links.className).toMatch(/\bhide-download\b/);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -334,7 +339,8 @@ describe('regexper.js', function() {
|
|||||||
|
|
||||||
it('hides the permalink', function() {
|
it('hides the permalink', function() {
|
||||||
this.regexper.updateLinks();
|
this.regexper.updateLinks();
|
||||||
expect(this.regexper.permalink.parentNode.style.display).toEqual('none');
|
expect(this.regexper.links.className).toMatch(/\bexample\b/);
|
||||||
|
expect(this.regexper.links.className).toMatch(/\bhide-permalink\b/);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -4,8 +4,12 @@
|
|||||||
<button type="submit">Display</button>
|
<button type="submit">Display</button>
|
||||||
|
|
||||||
<ul class="inline-list">
|
<ul class="inline-list">
|
||||||
<li><a href="#" class="oi with-text" data-glyph="data-transfer-download" download="image.svg" type="image/svg+xml">Download</a></li>
|
<li class="download">
|
||||||
<li><a href="#" class="oi with-text" data-glyph="link-intact">Permalink</a></li>
|
<a href="#" class="oi with-text" data-glyph="data-transfer-download" download="image.svg" type="image/svg+xml">Download</a>
|
||||||
|
</li>
|
||||||
|
<li class="permalink">
|
||||||
|
<a href="#" class="oi with-text" data-glyph="link-intact">Permalink</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -10,8 +10,11 @@ export default class Regexper {
|
|||||||
this.field = root.querySelector('#regexp-input');
|
this.field = root.querySelector('#regexp-input');
|
||||||
this.error = root.querySelector('#error');
|
this.error = root.querySelector('#error');
|
||||||
this.warnings = root.querySelector('#warnings');
|
this.warnings = root.querySelector('#warnings');
|
||||||
this.permalink = root.querySelector('a[data-glyph="link-intact"]');
|
|
||||||
this.download = root.querySelector('a[data-glyph="data-transfer-download"]');
|
this.links = this.form.querySelector('ul');
|
||||||
|
this.permalink = this.links.querySelector('a[data-glyph="link-intact"]');
|
||||||
|
this.download = this.links.querySelector('a[data-glyph="data-transfer-download"]');
|
||||||
|
|
||||||
this.svgContainer = root.querySelector('#regexp-render');
|
this.svgContainer = root.querySelector('#regexp-render');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +100,8 @@ export default class Regexper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateLinks() {
|
updateLinks() {
|
||||||
|
var classes = _.without(this.links.className.split(' '), ['hide-download', 'hide-permalink']);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.download.parentNode.style.display = null;
|
this.download.parentNode.style.display = null;
|
||||||
this.download.href = this.buildBlobURL(this.svgContainer.querySelector('.svg').innerHTML);
|
this.download.href = this.buildBlobURL(this.svgContainer.querySelector('.svg').innerHTML);
|
||||||
@ -104,15 +109,17 @@ export default class Regexper {
|
|||||||
catch(e) {
|
catch(e) {
|
||||||
// Blobs or URLs created from them don't work here.
|
// Blobs or URLs created from them don't work here.
|
||||||
// Giving up on the download link
|
// Giving up on the download link
|
||||||
this.download.parentNode.style.display = 'none';
|
classes.push('hide-download');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.permalinkEnabled) {
|
if (this.permalinkEnabled) {
|
||||||
this.permalink.parentNode.style.display = null;
|
this.permalink.parentNode.style.display = null;
|
||||||
this.permalink.href = location.toString();
|
this.permalink.href = location.toString();
|
||||||
} else {
|
} else {
|
||||||
this.permalink.parentNode.style.display = 'none';
|
classes.push('hide-permalink');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.links.className = classes.join(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
displayWarnings(warnings) {
|
displayWarnings(warnings) {
|
||||||
|
@ -273,6 +273,12 @@ header {
|
|||||||
body.has-results & {
|
body.has-results & {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.hide-permalink .permalink,
|
||||||
|
&.hide-permalink .download::after,
|
||||||
|
&.hide-download .download {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user