CampaignsSettings.vue 3.95 KB
<template>
    <div>
        <h2 class="mt-12 font-bold text-2xl">Campaigns</h2>

        <div v-if="campaigns.length" class="mt-4 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>
            <button class="btn-indigo hover:underline"
                            tabindex="-1"
                            type="button"
                            @click="add"
            >
                Add
            </button>
        </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" colspan="2">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 px-6 py-3">
                        <inertia-link class="hover:text-indigo-500 focus:text-indigo-500"
                                      :href="route('token.campaign.vars', [token.id, campaign.id])"
                        >
                            {{ campaign.name }}
                        </inertia-link>
                    </td>
                    <td class="border-t px-6 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>
                    <td class="border-t w-px">
                        <inertia-link class="px-4 flex items-center"
                                      :href="route('token.campaign.vars', [token.id, campaign.id])"
                                      tabindex="-1"
                        >
                            <icon name="cheveron-right" class="block w-6 h-6 fill-gray-400" />
                        </inertia-link>
                    </td>
                </tr>
                <tr v-if="token.campaigns.length === 0">
                    <td class="border-t px-6 py-4" colspan="5">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() {
                if (!this.campaign_id) {
                    return;
                }
                this.$emit('add', this.campaign_id)
            },
            enabled(campaign_id, enabled) {
                this.$emit('enabled', campaign_id, enabled)
            },
            destroy(campaign_id) {
                this.$emit('delete', campaign_id)
            },
        }
    }

</script>