import { Component, Element, Event, EventEmitter, Prop, h } from '@stencil/core'; import { getConfig } from '../../classes/helpers'; @Component({ tag: 'quantity-toggle', styleUrl: 'quantity-toggle.css', scoped: true, }) export class QuantityToggle { @Prop({ mutable: true }) quantity: number = 0; @Prop() confirmDelete: boolean = false; @Event() quantityChange: EventEmitter; @Element() el: HTMLElement; removeEl: HTMLElement; requestDelete() { (async () => { await customElements.whenDefined('tooltip-confirm-delete'); const todoListElement = this.el.querySelector('tooltip-confirm-delete'); await todoListElement.init(this.removeEl); })(); } onDecrement() { this.quantity--; this.quantityChange.emit(this.quantity); } onIncrement() { if (this.quantity == getConfig().maxQuantity) { return; } this.quantity++; this.quantityChange.emit(this.quantity); } incrementClassName() { const prefix = 'increment'; if (this.quantity == getConfig().maxQuantity) { return prefix + ' max'; } return prefix; } generateDecrementButton() { if (this.quantity > 0) { var btn; if (this.confirmDelete && this.quantity == 1) { btn = ( this.quantityChange.emit(0)}> ); } else { btn = ( ); } return ( {btn} {this.quantity} ); } } getWrapperClass() { return this.confirmDelete ? 'wrapper wrapper-minimised' : 'wrapper'; } render() { return (
{this.generateDecrementButton()}
); } }