@paris-ias/list 1.0.136 → 1.0.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/DenseItem.vue +64 -0
  3. package/dist/runtime/components/actions/ExpandedItem.vue +17 -10
  4. package/dist/runtime/components/actions/RowsItem.vue +57 -7
  5. package/dist/runtime/components/actions/View.vue +5 -17
  6. package/dist/runtime/components/affiliation/DenseItem.vue +26 -6
  7. package/dist/runtime/components/affiliation/ExpandedItem.vue +4 -0
  8. package/dist/runtime/components/affiliation/RowsItem.vue +27 -7
  9. package/dist/runtime/components/affiliation/View.vue +4 -4
  10. package/dist/runtime/components/apps/DenseItem.vue +26 -6
  11. package/dist/runtime/components/apps/ExpandedItem.vue +5 -1
  12. package/dist/runtime/components/apps/RowsItem.vue +27 -7
  13. package/dist/runtime/components/apps/View.vue +4 -4
  14. package/dist/runtime/components/disciplines/DenseItem.vue +26 -6
  15. package/dist/runtime/components/disciplines/ExpandedItem.vue +4 -0
  16. package/dist/runtime/components/disciplines/RowsItem.vue +27 -7
  17. package/dist/runtime/components/disciplines/View.vue +4 -4
  18. package/dist/runtime/components/events/Badges.vue +8 -12
  19. package/dist/runtime/components/events/DenseItem.vue +26 -16
  20. package/dist/runtime/components/events/ExpandedItem.vue +4 -0
  21. package/dist/runtime/components/events/RelatedItem.vue +4 -13
  22. package/dist/runtime/components/events/RowsItem.vue +20 -20
  23. package/dist/runtime/components/events/SlidingItem.vue +39 -47
  24. package/dist/runtime/components/events/View.vue +1 -1
  25. package/dist/runtime/components/fellowships/Badges.vue +15 -11
  26. package/dist/runtime/components/fellowships/DenseItem.vue +22 -11
  27. package/dist/runtime/components/fellowships/ExpandedItem.vue +8 -1
  28. package/dist/runtime/components/fellowships/RowsItem.vue +22 -15
  29. package/dist/runtime/components/fellowships/View.vue +2 -2
  30. package/dist/runtime/components/files/DenseItem.vue +26 -6
  31. package/dist/runtime/components/files/ExpandedItem.vue +4 -0
  32. package/dist/runtime/components/files/RowsItem.vue +27 -7
  33. package/dist/runtime/components/files/View.vue +4 -4
  34. package/dist/runtime/components/list/atoms/FiltersMenu.vue +9 -0
  35. package/dist/runtime/components/list/atoms/PerPage.vue +3 -2
  36. package/dist/runtime/components/list/atoms/ResetButton.vue +5 -1
  37. package/dist/runtime/components/list/atoms/SearchInput.vue +15 -2
  38. package/dist/runtime/components/list/atoms/SearchString.vue +169 -133
  39. package/dist/runtime/components/list/atoms/SortMenu.vue +22 -18
  40. package/dist/runtime/components/list/atoms/ViewMenu.vue +26 -14
  41. package/dist/runtime/components/list/molecules/Filters.vue +8 -8
  42. package/dist/runtime/components/list/molecules/Header.vue +10 -19
  43. package/dist/runtime/components/list/molecules/Pagination.vue +51 -48
  44. package/dist/runtime/components/list/organisms/List.vue +104 -69
  45. package/dist/runtime/components/mailing/DenseItem.vue +4 -0
  46. package/dist/runtime/components/mailing/ExpandedItem.vue +4 -0
  47. package/dist/runtime/components/mailing/RowsItem.vue +27 -7
  48. package/dist/runtime/components/mailing/View.vue +4 -4
  49. package/dist/runtime/components/misc/atoms/ImageContainer.vue +3 -45
  50. package/dist/runtime/components/misc/molecules/Related.vue +1 -1
  51. package/dist/runtime/components/news/DenseItem.vue +63 -54
  52. package/dist/runtime/components/news/ExpandedItem.vue +11 -17
  53. package/dist/runtime/components/news/RelatedItem.vue +4 -13
  54. package/dist/runtime/components/news/RowsItem.vue +21 -42
  55. package/dist/runtime/components/news/View.vue +7 -7
  56. package/dist/runtime/components/people/DenseItem.vue +16 -20
  57. package/dist/runtime/components/people/RelatedItem.vue +4 -14
  58. package/dist/runtime/components/people/RowsItem.vue +14 -23
  59. package/dist/runtime/components/projects/DenseItem.vue +17 -17
  60. package/dist/runtime/components/projects/RelatedItem.vue +4 -13
  61. package/dist/runtime/components/projects/RowsItem.vue +16 -16
  62. package/dist/runtime/components/projects/View.vue +6 -6
  63. package/dist/runtime/components/publications/DenseItem.vue +17 -15
  64. package/dist/runtime/components/publications/RelatedItem.vue +4 -13
  65. package/dist/runtime/components/publications/RowsItem.vue +18 -18
  66. package/dist/runtime/components/tags/DenseItem.vue +4 -0
  67. package/dist/runtime/components/tags/ExpandedItem.vue +4 -0
  68. package/dist/runtime/components/tags/RowsItem.vue +24 -7
  69. package/dist/runtime/components/tags/View.vue +4 -4
  70. package/dist/runtime/components/users/DenseItem.vue +24 -6
  71. package/dist/runtime/components/users/ExpandedItem.vue +5 -1
  72. package/dist/runtime/components/users/RowsItem.vue +25 -7
  73. package/dist/runtime/components/users/View.vue +4 -4
  74. package/dist/runtime/composables/useUtils.js +1 -1
  75. package/dist/runtime/plugins/pinia.js +5 -2
  76. package/dist/runtime/stores/root.d.ts +10 -9
  77. package/dist/runtime/stores/root.js +83 -119
  78. package/package.json +3 -4
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@paris-ias/list",
3
3
  "configKey": "list",
4
- "version": "1.0.136",
4
+ "version": "1.0.138",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "0.8.4",
7
7
  "unbuild": "2.0.0"
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <v-row
3
+ class="my-2 highlight-on-hover"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col v-if="mdAndUp" cols="12" md="2">
8
+ <MiscAtomsImageContainer
9
+ :loading="isLoading"
10
+ :src="imageSrc"
11
+ :ratio="1 / 1"
12
+ cover
13
+ />
14
+ </v-col>
15
+ <v-col cols="12" :md="mdAndUp ? 10 : 12" class="px-4">
16
+ <v-skeleton-loader
17
+ v-if="isLoading"
18
+ :type="
19
+ [
20
+ 'heading, subtitle, text@6',
21
+ 'heading, subtitle, text@6',
22
+ 'heading, subtitle, text@4',
23
+ 'heading, subtitle, text@4',
24
+ 'heading, subtitle, text@4',
25
+ 'heading, subtitle, text@4',
26
+ ][['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')]
27
+ "
28
+ />
29
+ <template v-else>
30
+ <div class="text-h5">{{ item.name }}</div>
31
+ <div v-if="item.summary" class="text-body-1 mt-2">
32
+ <MDC :value="item.summary" />
33
+ </div>
34
+ </template>
35
+ </v-col>
36
+ </v-row>
37
+ <v-divider />
38
+ </template>
39
+
40
+ <script setup>
41
+ import { useDisplay } from "vuetify"
42
+ import { computed } from "#imports"
43
+ import { useRootStore } from "../../stores/root"
44
+
45
+ const { name, mdAndUp } = useDisplay()
46
+ const rootStore = useRootStore()
47
+ const props = defineProps({
48
+ item: { type: Object, required: true },
49
+ index: { type: Number, required: false, default: 0 },
50
+ pathPrefix: { type: String, required: true },
51
+ loading: { type: Boolean, required: false, default: false },
52
+ })
53
+
54
+ const isLoading = computed(() => rootStore.loading || props.loading)
55
+ const imageSrc = computed(() => {
56
+ const img = props.item && props.item.image
57
+ if (!img) return "/default.png"
58
+ if (typeof img === "string") return img
59
+ if (img && img.url) return img
60
+ return "/default.png"
61
+ })
62
+ </script>
63
+
64
+ <style></style>
@@ -1,16 +1,23 @@
1
1
  <template>
2
- <div>
3
- {{ item.name }}
4
- </div>
2
+ <v-card flat class="pa-4">
3
+ <v-skeleton-loader v-if="isLoading" type="heading, text@10" />
4
+ <template v-else>
5
+ <div class="text-h4 mb-2">{{ item.name }}</div>
6
+ <MDC v-if="item.description" :value="item.description" />
7
+ </template>
8
+ </v-card>
5
9
  </template>
6
10
 
7
- <script lang="ts" setup>
11
+ <script setup>
12
+ import { computed } from "#imports"
13
+ import { useRootStore } from "../../stores/root"
14
+
15
+ const rootStore = useRootStore()
8
16
  const props = defineProps({
9
- item: {
10
- type: Object,
11
- required: true,
12
- },
17
+ item: { type: Object, required: true },
18
+ pathPrefix: { type: String, required: true },
19
+ loading: { type: Boolean, default: false },
13
20
  })
14
- </script>
15
21
 
16
- <style></style>
22
+ const isLoading = computed(() => rootStore.loading || props.loading)
23
+ </script>
@@ -1,14 +1,64 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col v-if="mdAndUp" cols="12" md="3">
8
+ <MiscAtomsImageContainer
9
+ cover
10
+ :src="imageSrc"
11
+ :ratio="1 / 1"
12
+ :loading="isLoading"
13
+ />
14
+ </v-col>
15
+ <v-col cols="12" :md="mdAndUp ? 9 : 12" class="px-6">
16
+ <v-skeleton-loader
17
+ v-if="isLoading"
18
+ :type="
19
+ [
20
+ 'heading, ossein, text@6, button',
21
+ 'heading, ossein, text@6, button',
22
+ 'heading, ossein, text@4, button',
23
+ 'heading, ossein, text@4, button',
24
+ 'heading, ossein, text@4, button',
25
+ 'heading, ossein, text@4, button',
26
+ ][['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].indexOf(name || 'md')]
27
+ "
28
+ />
29
+ <template v-else>
30
+ <div class="text-h5 text-wrap">{{ item.name }}</div>
31
+ <div v-if="item.summary" class="mt-2">
32
+ <MDC :value="item.summary" />
33
+ </div>
34
+ </template>
35
+ </v-col>
36
+ </v-row>
37
+ <v-divider />
3
38
  </template>
4
39
 
5
40
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- });
41
+ import { useDisplay } from "vuetify"
42
+ import { computed } from "#imports"
43
+ import { useRootStore } from "../../stores/root"
44
+
45
+ const { name, mdAndUp } = useDisplay()
46
+ const rootStore = useRootStore()
47
+ const props = defineProps({
48
+ item: { type: Object, required: true },
49
+ index: { type: Number, required: false, default: 0 },
50
+ pathPrefix: { type: String, required: true },
51
+ loading: { type: Boolean, required: false, default: false },
52
+ })
53
+
54
+ const isLoading = computed(() => rootStore.loading || props.loading)
55
+ const imageSrc = computed(() => {
56
+ const img = props.item && props.item.image
57
+ if (!img) return "/default.png"
58
+ if (typeof img === "string") return img
59
+ if (img && img.url) return img
60
+ return "/default.png"
61
+ })
12
62
  </script>
13
63
 
14
64
  <style></style>
@@ -1,22 +1,10 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row no-gutters>
3
+ <slot />
4
+ </v-row>
5
+ <v-divider />
3
6
  </template>
4
7
 
5
8
  <script setup>
6
- import { useNuxtApp } from "#imports";
7
-
8
- const { $stores } = useNuxtApp();
9
- defineProps({
10
- item: {
11
- type: Object,
12
- required: true,
13
- },
14
- loading: {
15
- type: Boolean,
16
- required: false,
17
- default: false,
18
- },
19
- });
20
-
21
- $stores.actions.loading = false;
9
+ defineProps({ loading: { type: Boolean, default: false } })
22
10
  </script>
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="my-2 highlight-on-hover"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-4">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@6" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="text-body-1 mt-1">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
11
29
  })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -10,6 +10,10 @@ const props = defineProps({
10
10
  type: Object,
11
11
  required: true,
12
12
  },
13
+ pathPrefix: {
14
+ type: String,
15
+ required: true,
16
+ },
13
17
  })
14
18
  </script>
15
19
 
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-6">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@8, button" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="mt-2">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- });
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
29
+ })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -3,9 +3,9 @@
3
3
  </template>
4
4
 
5
5
  <script setup>
6
- import { useNuxtApp } from "#imports";
6
+ import { useNuxtApp } from "#imports"
7
7
 
8
- const { $stores } = useNuxtApp();
8
+ const { $stores } = useNuxtApp()
9
9
  defineProps({
10
10
  item: {
11
11
  type: Object,
@@ -16,7 +16,7 @@ defineProps({
16
16
  required: false,
17
17
  default: false,
18
18
  },
19
- });
19
+ })
20
20
 
21
- $stores.affiliations.loading = false;
21
+ $stores.affiliations.loading = false
22
22
  </script>
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="my-2 highlight-on-hover"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-4">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@6" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="text-body-1 mt-1">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
11
29
  })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -10,7 +10,11 @@ const props = defineProps({
10
10
  type: Object,
11
11
  required: true,
12
12
  },
13
- });
13
+ pathPrefix: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ })
14
18
  </script>
15
19
 
16
20
  <style></style>
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-6">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@8, button" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="mt-2">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- });
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
29
+ })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -3,9 +3,9 @@
3
3
  </template>
4
4
 
5
5
  <script setup>
6
- import { useNuxtApp } from "#imports";
6
+ import { useNuxtApp } from "#imports"
7
7
 
8
- const { $stores } = useNuxtApp();
8
+ const { $stores } = useNuxtApp()
9
9
  defineProps({
10
10
  item: {
11
11
  type: Object,
@@ -16,7 +16,7 @@ defineProps({
16
16
  required: false,
17
17
  default: false,
18
18
  },
19
- });
19
+ })
20
20
 
21
- $stores.apps.loading = false;
21
+ $stores.apps.loading = false
22
22
  </script>
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="my-2 highlight-on-hover"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-4">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@6" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="text-body-1 mt-1">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
11
29
  })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -10,6 +10,10 @@ const props = defineProps({
10
10
  type: Object,
11
11
  required: true,
12
12
  },
13
+ pathPrefix: {
14
+ type: String,
15
+ required: true,
16
+ },
13
17
  })
14
18
  </script>
15
19
 
@@ -1,14 +1,34 @@
1
1
  <template>
2
- {{ item }}
2
+ <v-row
3
+ class="highlight-on-hover pa-3"
4
+ no-gutters
5
+ @click="$router.push(pathPrefix)"
6
+ >
7
+ <v-col cols="12" class="px-6">
8
+ <v-skeleton-loader v-if="isLoading" type="heading, text@8, button" />
9
+ <template v-else>
10
+ <div class="text-h5">{{ item.name }}</div>
11
+ <div v-if="item.summary" class="mt-2">
12
+ <MDC :value="item.summary" />
13
+ </div>
14
+ </template>
15
+ </v-col>
16
+ </v-row>
17
+ <v-divider />
3
18
  </template>
4
19
 
5
20
  <script setup>
6
- defineProps({
7
- item: {
8
- type: Object,
9
- required: true,
10
- },
11
- });
21
+ import { computed } from "#imports"
22
+ import { useRootStore } from "../../stores/root"
23
+
24
+ const rootStore = useRootStore()
25
+ const props = defineProps({
26
+ item: { type: Object, required: true },
27
+ pathPrefix: { type: String, required: true },
28
+ loading: { type: Boolean, default: false },
29
+ })
30
+
31
+ const isLoading = computed(() => rootStore.loading || props.loading)
12
32
  </script>
13
33
 
14
34
  <style></style>
@@ -3,9 +3,9 @@
3
3
  </template>
4
4
 
5
5
  <script setup>
6
- import { useNuxtApp } from "#imports";
6
+ import { useNuxtApp } from "#imports"
7
7
 
8
- const { $stores } = useNuxtApp();
8
+ const { $stores } = useNuxtApp()
9
9
  defineProps({
10
10
  item: {
11
11
  type: Object,
@@ -16,7 +16,7 @@ defineProps({
16
16
  required: false,
17
17
  default: false,
18
18
  },
19
- });
19
+ })
20
20
 
21
- $stores.disciplines.loading = false;
21
+ $stores.disciplines.loading = false
22
22
  </script>
@@ -25,12 +25,7 @@
25
25
  prepend-icon="mdi-television-play"
26
26
  size="small"
27
27
  class="my-xs-2"
28
- :to="
29
- localePath({
30
- name: 'activities-events-slug',
31
- params: { slug: item.slug[locale] },
32
- })
33
- "
28
+ :to="prefixPath"
34
29
  >
35
30
  {{ $t("live-stream-available") }}
36
31
  </v-btn>
@@ -62,15 +57,16 @@
62
57
  </template>
63
58
 
64
59
  <script setup>
65
- import { useLocalePath, useI18n } from "#imports";
66
- import { useDisplay } from "vuetify";
67
- const localePath = useLocalePath();
60
+ import { useDisplay } from "vuetify"
68
61
 
69
- const { smAndUp } = useDisplay();
70
- const { locale } = useI18n();
62
+ const { smAndUp } = useDisplay()
71
63
  const props = defineProps({
72
64
  item: { type: Object, required: true },
73
- });
65
+ pathPrefix: {
66
+ type: String,
67
+ required: true,
68
+ },
69
+ })
74
70
  </script>
75
71
 
76
72
  <style lang="scss" scoped></style>