diff --git a/src/multi-select/tp-multi-select-pills.ts b/src/multi-select/tp-multi-select-pills.ts index acc1622..e46228f 100644 --- a/src/multi-select/tp-multi-select-pills.ts +++ b/src/multi-select/tp-multi-select-pills.ts @@ -65,13 +65,35 @@ export class TPMultiSelectPillsElement extends HTMLElement { return; } - const newPill: HTMLElement = document.createElement( 'tp-multi-select-pill' ); - newPill.setAttribute( 'value', pillValue ); - newPill.innerHTML = ` - ${ multiSelectOption.getAttribute( 'label' ) ?? '' } - - `; - this.appendChild( newPill ); + this.appendChild( this.createPill( pillValue, multiSelectOption.getAttribute( 'label' ) ?? '' ) ); } ); } + + /** + * Create a new pill. + * + * @param {string} value Pill value. + * @param {string} label Pill label. + * + * @return {TPMultiSelectPillElement} New pill. + */ + createPill( value: string, label: string ): TPMultiSelectPillElement { + const newPill = document.createElement( 'tp-multi-select-pill' ) as TPMultiSelectPillElement; + newPill.setAttribute( 'value', value ); + + const pillLabel: HTMLElement = document.createElement( 'span' ); + pillLabel.textContent = label; + + const pillCloseButton: HTMLElement = document.createElement( 'button' ); + pillCloseButton.setAttribute( 'type', 'button' ); + pillCloseButton.textContent = 'x'; + pillCloseButton.addEventListener( 'click', () => { + newPill.removePill(); + } ); + + newPill.appendChild( pillLabel ); + newPill.appendChild( pillCloseButton ); + + return newPill; + } }