<template>
    <div class="field has-addons">
        <div class="control">
            <button class="button is-small" @click.capture="decrementar();">
                <i class="fa fa-solid fa-minus"></i>
            </button>
        </div>
        <div class="control">
            <input id="cantidad" v-model="cantidad" class="input is-small" type="number" style="text-align: center">
        </div>
        <div class="control" @click="incrementar();">
            <button class="button is-small">
                <i class="fa fa-solid fa-plus"></i>
            </button>
        </div>
        <button :disabled="!hayCambios()" class="button is-small is-success ml-3" @click="confirmar()">
            <span class="icon">
                <i class="fas fa-check"></i>
            </span>
        </button>
        <button :disabled="!puedeBorrar()" class="button is-small is-danger ml-3" @click="borrar()">
            <span class="icon">
                <i class="fas fa-trash-alt"></i>
            </span>
        </button>
    </div>
</template>

<script>
    export default {
        props: {
            producto: Object
        },
        data() {
            return {
                cantidad: this.producto.cantidad,
                enChismosa: this.producto.cantidad,
            }
        },
        mounted() {
            Event.$on('sync-subpedido', (cantidad,productoId) => {
                if (this.producto.id === productoId)
                    this.sincronizar(cantidad);
            });
        },
        methods: {
            decrementar() {
                this.cantidad -= 1;
            },
            incrementar() {
                this.cantidad += 1;
            },
            confirmar() {
                Event.$emit('sync-subpedido', this.cantidad, this.producto.id);
            },
            borrar() {
                this.cantidad = 0;
                this.confirmar();
            },
            sincronizar(cantidad) {
                this.cantidad = cantidad;
                this.producto.cantidad = cantidad;
                this.enChismosa = cantidad;
            },
            hayCambios() {
                return this.cantidad != this.enChismosa;
            },
            puedeBorrar() {
                return this.enChismosa > 0;
            },
        }
    }
</script>

<style>
    /* Chrome, Safari, Edge, Opera */
    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

    /* Firefox */
    input[type=number] {
        appearance: textfield;
        -moz-appearance: textfield;
    }
</style>