CampaignsSettings.vue 3.34 KB
<template>
    <div>
        <h2 class="mt-12 font-bold text-2xl">Campaigns</h2>
        <div class="mt-4 flex flex-wrap">
            <form v-if="campaigns.length" @submit.prevent="add(campaign_id)" class="flex flex-wrap">
                <select-input v-model="campaign_id"
                              :readonly="campaign_id"
                              class="pr-6"
                >
                    <option v-for="campaign in campaigns" :value="campaign.id">
                        {{ campaign.name }}
                    </option>
                </select-input>
                <loading-button class="btn-indigo hover:underline pl-6"
                                tabindex="-1"
                                type="submit"
                >
                    Add
                </loading-button>
            </form>
        </div>
        <div class="mt-4 flex flex-wrap">
        </div>
        <div class="mt-6 bg-white rounded shadow overflow-x-auto">
            <table class="w-full whitespace-nowrap">
                <tr class="text-left font-bold">
                    <th class="px-6 pt-6 pb-4">Name</th>
                    <th class="px-6 pt-6 pb-4">Action</th>
                </tr>
                <tr v-for="campaign in token.campaigns" :key="campaign.id"
                    class="hover:bg-gray-100 focus-within:bg-gray-100">
                    <td class="border-t py-3">
                        {{ campaign.name }}
                    </td>
                    <td class="border-t py-3">
                        <input :id="'campaign-enabled-' + campaign.id" :checked="campaign.enabled"
                               @change="enabled(campaign.id, !campaign.enabled)"
                               type="checkbox"
                        >
                        <label :for="'campaign-enabled-' + campaign.id">Enabled</label>
                        <button class="text-red-600 hover:underline"
                                tabindex="-1"
                                type="button"
                                @click="destroy(campaign.id)"
                        >
                            Delete Campaign
                        </button>
                    </td>
                </tr>
                <tr v-if="token.campaigns.length === 0">
                    <td class="border-t px-6 py-4" colspan="4">No campaigns found.</td>
                </tr>
            </table>
        </div>
    </div>
</template>

<script>

    import Icon from "../../Shared/Icon";
    import SelectInput from "../../Shared/SelectInput";
    import LoadingButton from "../../Shared/LoadingButton";

    export default {
        components: {
            Icon,
            SelectInput,
            LoadingButton,
        },
        props: {
            campaigns: Array,
            token: Object,
        },
        data() {
            return {
                campaign_id: null,
            }
        },
        watch: {},
        mounted() {

        },
        methods: {
            add(campaign_id) {
                if (!campaign_id) {
                    return;
                }
                this.$emit('add', campaign_id)
            },
            enabled(campaign_id) {
                this.$emit('enabled', campaign_id)
            },
            delete(campaign_id) {
                this.$emit('delete', campaign_id)
            },
        }
    }

</script>