diff --git a/core/src/components/segment-button/segment-button.tsx b/core/src/components/segment-button/segment-button.tsx index 8d88c29ea1..a030f0c3d9 100644 --- a/core/src/components/segment-button/segment-button.tsx +++ b/core/src/components/segment-button/segment-button.tsx @@ -1,4 +1,4 @@ -import { Component, ComponentInterface, Element, Host, Prop, State, h } from '@stencil/core'; +import { Component, ComponentInterface, Element, Host, Prop, State, forceUpdate, h } from '@stencil/core'; import { getIonMode } from '../../global/ionic-global'; import { SegmentButtonLayout } from '../../interface'; @@ -55,6 +55,7 @@ export class SegmentButton implements ComponentInterface, ButtonInterface { if (segmentEl) { this.updateState(); addEventListener(segmentEl, 'ionSelect', this.updateState); + addEventListener(segmentEl, 'ionStyle', this.updateStyle); } } @@ -62,6 +63,7 @@ export class SegmentButton implements ComponentInterface, ButtonInterface { const segmentEl = this.segmentEl; if (segmentEl) { removeEventListener(segmentEl, 'ionSelect', this.updateState); + removeEventListener(segmentEl, 'ionStyle', this.updateStyle); this.segmentEl = null; } } @@ -74,6 +76,10 @@ export class SegmentButton implements ComponentInterface, ButtonInterface { return !!this.el.querySelector('ion-icon'); } + private updateStyle = () => { + forceUpdate(this); + } + private updateState = () => { if (this.segmentEl) { this.checked = this.segmentEl.value === this.value; @@ -81,8 +87,9 @@ export class SegmentButton implements ComponentInterface, ButtonInterface { } render() { - const { checked, type, disabled, hasIcon, hasLabel, layout } = this; + const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this; const mode = getIonMode(this); + const hasSegmentColor = () => segmentEl !== null && segmentEl.color !== undefined; return (