Add logic for adding & removing domains

pull/111/head
MattIPv4 5 years ago
parent 1d5b1a66b0
commit b337a0d0dc

@ -49,6 +49,26 @@ $highlight: #f2c94c;
color: $dark-blue;
}
}
a {
i {
font-size: .75em;
&.fa-plus {
margin: 0 .35rem 0 0;
}
&.fa-times {
margin: 0 0 0 .35rem;
transition: color $transition;
&:hover,
&:focus {
color: $primary;
}
}
}
}
}
}
}

@ -29,16 +29,22 @@ limitations under the License.
<div class="main container">
<div class="tabs">
<ul>
<li v-for="(data, index) in domains" :class="index === active ? 'is-active' : undefined">
<a @click="active = index">{{ data.server.domain.computed }}{{ changes(index) }}</a>
<li v-for="data in activeDomains" :class="data[1] === active ? 'is-active' : undefined">
<a @click="active = data[1]">
{{ data[0].server.domain.computed }}{{ changes(data[1]) }}
<i class="fas fa-times" @click="remove(data[1])"></i>
</a>
</li>
<li>
<a @click="add"><i class="fas fa-plus"></i> Add site</a>
</li>
</ul>
</div>
<template v-for="(data, index) in domains">
<Domain :key="index"
:data="data"
:style="{ display: index === active ? 'block' : 'none' }"
<template v-for="data in activeDomains">
<Domain :key="data[1]"
:data="data[0]"
:style="{ display: data[1] === active ? 'block' : 'none' }"
></Domain>
</template>
</div>
@ -67,11 +73,15 @@ limitations under the License.
i18n,
domains: [
clone(Domain.delegated),
clone(Domain.delegated),
],
active: 0,
};
},
computed: {
activeDomains() {
return this.$data.domains.map((domain, index) => [domain, index]).filter(d => d[0] !== null);
},
},
methods: {
changes(index) {
const data = this.$data.domains[index];
@ -83,6 +93,14 @@ limitations under the License.
if (changes) return ` (${changes.toLocaleString()})`;
return '';
},
add() {
this.$data.domains.push(clone(Domain.delegated));
this.$data.active = this.$data.domains.length - 1;
},
remove(index) {
this.$set(this.$data.domains, index, null);
if (this.$data.active === index) this.$data.active = 0;
},
},
};
</script>

Loading…
Cancel
Save