Files
mixtape/zero.Backoffice.UI/old_app/pages/settings/integrations.vue
T

74 lines
1.7 KiB
Vue
Raw Normal View History

2020-12-10 15:57:59 +01:00
<template>
<div class="integrations">
<ui-header-bar title="@integration.list" :count="count" :back-button="true" />
2021-01-15 13:56:50 +01:00
<div class="ui-box">
<!--<h2 v-if="available.length > 0" class="ui-headline integrations-headline">Available</h2>-->
<integration-item v-for="(item, index) in items" :key="index" :model="item" @change="onChanged" @onActiveChange="onActiveChanged" />
2020-12-10 15:57:59 +01:00
</div>
</div>
</template>
<script>
import IntegrationsApi from 'zero/api/integrations.js';
import IntegrationItem from './integrations-item.vue';
2021-01-15 13:56:50 +01:00
import Notification from 'zero/helpers/notification.js'
2020-12-10 15:57:59 +01:00
export default {
data: () => ({
count: 0,
2021-01-15 13:56:50 +01:00
items: []
2020-12-10 15:57:59 +01:00
}),
components: { IntegrationItem },
mounted()
{
2021-01-15 13:56:50 +01:00
this.load();
},
methods: {
load()
2020-12-10 15:57:59 +01:00
{
2021-01-15 13:56:50 +01:00
IntegrationsApi.getTypes().then(res =>
{
this.items = res;
});
},
onChanged()
{
this.load();
},
onActiveChanged(model)
{
model.isLoading = true;
IntegrationsApi.saveActiveState({ alias: model.type.alias, isActive: model.isActive }).then(res =>
{
if (!res.success)
{
model.isActive = !model.isActive;
Notification.error('@integration.errors.couldnotupdatestate', res.errors[0].message);
}
model.isLoading = false;
});
}
2020-12-10 15:57:59 +01:00
}
}
</script>
<style lang="scss">
h2.ui-headline.integrations-headline
{
font-family: var(--font);
color: var(--color-text);
2020-12-15 13:08:48 +01:00
margin: 0 0 var(--padding);
2020-12-10 15:57:59 +01:00
font-size: var(--font-size-l);
font-weight: 700;
padding-bottom: var(--padding-m);
border-bottom: 1px dashed var(--color-line-dashed);
}
</style>