fix(button): only apply has-icon-only if icon has the slot for icon-only (#18343)

fixes #18329
This commit is contained in:
Brandy Carney
2019-05-22 11:28:06 -04:00
committed by GitHub
parent 788a56c5e9
commit d13983451a
2 changed files with 35 additions and 13 deletions

View File

@ -130,16 +130,8 @@ export class Button implements ComponentInterface {
}
}
private get hasLabel() {
return this.el.textContent !== null && this.el.textContent.trim() !== '';
}
private get hasIcon() {
return !!this.el.querySelector('ion-icon');
}
private get hasIconOnly() {
return this.hasIcon && !this.hasLabel;
return !!this.el.querySelector('ion-icon[slot="icon-only"]');
}
private get rippleType() {

View File

@ -117,12 +117,12 @@
</ion-buttons>
<ion-buttons slot="primary">
<ion-button>
<ion-icon name="star"></ion-icon>
<ion-icon slot="icon-only" name="star"></ion-icon>
</ion-button>
</ion-buttons>
<ion-buttons slot="secondary">
<ion-button>
<ion-icon name="call"></ion-icon>
<ion-icon slot="icon-only" name="call"></ion-icon>
</ion-button>
</ion-buttons>
<ion-buttons slot="start">
@ -138,12 +138,12 @@
</ion-buttons>
<ion-buttons slot="primary">
<ion-button>
<ion-icon name="star"></ion-icon>
<ion-icon slot="icon-only" name="star"></ion-icon>
</ion-button>
</ion-buttons>
<ion-buttons slot="secondary">
<ion-button>
<ion-icon name="call"></ion-icon>
<ion-icon slot="icon-only" name="call"></ion-icon>
</ion-button>
</ion-buttons>
<ion-buttons slot="start">
@ -242,6 +242,36 @@
</ion-content>
<ion-footer>
<ion-toolbar>
<ion-title>
Click to Add Text
</ion-title>
<ion-buttons slot="end">
<ion-button id="changeText" onClick="toggleText()">
<ion-icon slot="start" name="refresh"></ion-icon>
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
<script>
const button = document.getElementById('changeText');
function toggleText() {
const hasText = button.querySelector('#childText');
if (hasText) {
button.removeChild(hasText);
} else {
var text = document.createElement('span');
text.innerHTML = 'Toggle';
text.id = 'childText';
button.appendChild(text, button);
}
}
</script>
<style>
ion-toolbar {
margin-bottom: 10px;