64 lines
1.4 KiB
Vue
64 lines
1.4 KiB
Vue
|
<template>
|
||
|
<button
|
||
|
class="button"
|
||
|
:class="[{'not-visited': !(hasVisitedOnboarding || isFirstTimeViewingDashboard)}, isFirstTimeViewingDashboard ? 'button--cta' : 'button--ghost']"
|
||
|
@click="openOnboarding()">
|
||
|
{{ $t('Wizards.Distributor.cta') }}
|
||
|
</button>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
name: 'OnboardingButton',
|
||
|
props: {
|
||
|
isFirstTimeViewingDashboard: {
|
||
|
type: Boolean,
|
||
|
default: false
|
||
|
}
|
||
|
},
|
||
|
data () {
|
||
|
return {
|
||
|
hasVisitedOnboarding: false
|
||
|
};
|
||
|
},
|
||
|
mounted () {
|
||
|
this.hasVisitedOnboarding = this.setHasVisitedOnboarding();
|
||
|
},
|
||
|
methods: {
|
||
|
openOnboarding () {
|
||
|
this.updateHasVisitedOnboarding(true);
|
||
|
this.$router.push({ name: 'onboarding' });
|
||
|
},
|
||
|
setHasVisitedOnboarding () {
|
||
|
if (localStorage.hasOwnProperty('hasVisitedOnboarding')) {
|
||
|
return JSON.parse(window.localStorage.getItem('hasVisitedOnboarding'));
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
},
|
||
|
updateHasVisitedOnboarding (visited) {
|
||
|
this.hasVisitedOnboarding = visited;
|
||
|
localStorage.hasVisitedOnboarding = JSON.stringify(visited);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
</script>
|
||
|
<style scoped lang="scss">
|
||
|
@import 'new-dashboard/styles/variables';
|
||
|
|
||
|
button.button--ghost {
|
||
|
position: relative;
|
||
|
|
||
|
&.not-visited::after {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
top: -4px;
|
||
|
right: -12px;
|
||
|
width: 8px;
|
||
|
height: 8px;
|
||
|
border-radius: 50%;
|
||
|
background-color: $onboarding-notification;
|
||
|
}
|
||
|
}
|
||
|
</style>
|