main
vue 65 lines 1.5 KB
Raw
1 <template>
2 <div class="page">
3 <CustomersList
4 :highlight
5 :reload
6 @loaded="
7 (() => {
8 customersCount = $event
9 reload = false
10 firstLoad = true
11 })()
12 "
13 >
14 <CustomerDefaultSettingsButton />
15 <CustomerCreationButton
16 v-model:open-form="openForm"
17 :customers-count
18 :disabled="!firstLoad"
19 @submitted="reload = true"
20 />
21 </CustomersList>
22 </div>
23 </template>
24
25 <script setup lang="ts">
26 import { onBeforeMount, onMounted, onUnmounted, ref } from "vue"
27 import { useRoute, useRouter } from "vue-router"
28 import CustomerCreationButton from "@/components/customers/CustomerCreationButton.vue"
29 import CustomersList from "@/components/customers/CustomersList.vue"
30 import CustomerDefaultSettingsButton from "@/components/customers/provision/CustomerDefaultSettingsButton.vue"
31 import { emitter } from "@/emitter"
32
33 const route = useRoute()
34 const router = useRouter()
35
36 const highlight = ref<string | undefined>(undefined)
37 const reload = ref(false)
38 const firstLoad = ref(false)
39 const openForm = ref(false)
40 const customersCount = ref<undefined | number>(undefined)
41
42 function setOpenForm() {
43 if (!openForm.value) {
44 openForm.value = true
45 router.replace({ name: "Customers" })
46 }
47 }
48
49 onBeforeMount(() => {
50 if (route.query?.code) {
51 highlight.value = route.query.code.toString()
52 }
53
54 if (route.query?.action === "add-customer") {
55 setOpenForm()
56 }
57 })
58
59 onMounted(() => {
60 emitter.on("action:add-customer", setOpenForm)
61 })
62 onUnmounted(() => {
63 emitter.off("action:add-customer", setOpenForm)
64 })
65 </script>