codevdesign 0.0.91 → 0.0.93

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.
@@ -1,98 +1,88 @@
1
- <template>
2
- <v-snackbar
3
- v-model="snackbar"
4
- :timeout="tempsFinal"
5
- :style="styleCss"
6
- multi-line
7
- :location="position"
8
- :color="props.couleur"
9
- @update:model-value="fermer"
10
- >
11
- <template v-if="props.titre || props.message">
12
- <b style="font-size: 12pt">{{ props.titre }}</b>
13
- <br v-if="props.titre" />
14
- <b>{{ props.message }}</b>
15
- </template>
16
-
17
- <template #actions>
18
- <!-- on affiche tjrs si c'est -1 car on ne pourra pas fermer le snack -->
19
- <v-icon
20
- v-if="props.btnFermer || props.temps === -1"
21
- color="white"
22
- style="cursor: pointer"
23
- @click.stop="fermer"
24
- >
25
- mdi-close
26
- </v-icon>
27
- </template>
28
- </v-snackbar>
29
- </template>
30
- <script lang="ts" setup>
31
- import { computed, ref, watch, type PropType } from 'vue'
32
-
33
- // Définir les props avec les types
34
- const props = defineProps({
35
- styleCss: {
36
- type: String,
37
- required: false,
38
- },
39
- temps: {
40
- type: Number,
41
- required: false,
42
- default: 4000,
43
- validator(value: number) {
44
- // Si la valeur est inférieure à -1, on la remplace par -1
45
- if (value < -1) {
46
- return false // Laisser échouer la validation pour gérer ça dans une logique personnalisée
47
- }
48
- // Validation que la valeur soit comprise entre -1 et Number.MAX_VALUE
49
- return value <= Number.MAX_VALUE
50
- },
51
- },
52
- message: {
53
- type: String,
54
- required: true,
55
- },
56
- titre: {
57
- type: String,
58
- required: false,
59
- },
60
- couleur: {
61
- type: String,
62
- required: false,
63
- default: 'success',
64
- },
65
- position: {
66
- type: String as PropType<'top' | 'bottom' | 'left' | 'right' | 'center'>,
67
- required: false,
68
- default: 'left',
69
- },
70
- btnFermer: {
71
- type: Boolean,
72
- required: false,
73
- default: true,
74
- },
75
- })
76
- const emit = defineEmits(['fermer:snackbar'])
77
- const fermer = (): void => {
78
- snackbar.value = false
79
- emit('fermer:snackbar')
80
- }
81
- // Déclarer l'état réactif pour snackbar
82
- const snackbar = ref(false)
83
- const message = computed(() => props.message)
84
- const tempsFinal = computed(() => {
85
- if (props.temps < -1) {
86
- return -1 // Si la valeur est inférieure à -1, on la met à -1
87
- }
88
- if (props.temps >= 0 && props.temps < 1000) return 1000 // on met 1 seconde minimum sinon one ne la voit pas
89
-
90
- return props.temps // Sinon, on retourne la valeur de la prop
91
- })
92
-
93
- watch(message, nouveau => {
94
- if (nouveau != null && nouveau !== '') {
95
- snackbar.value = true
96
- }
97
- })
98
- </script>
1
+ <template>
2
+ <v-snackbar
3
+ v-model="snackbar"
4
+ v-bind="$attrs"
5
+ :timeout="tempsFinal"
6
+ :style="styleCss"
7
+ color="success"
8
+ multi-line
9
+ @update:model-value="fermer"
10
+ >
11
+ <template v-if="props.titre || props.message">
12
+ <b style="font-size: 12pt">{{ props.titre }}</b>
13
+ <br v-if="props.titre" />
14
+ <b>{{ props.message }}</b>
15
+ </template>
16
+
17
+ <template #actions>
18
+ <!-- on affiche tjrs si c'est -1 car on ne pourra pas fermer le snack -->
19
+ <v-icon
20
+ v-if="props.btnFermer || props.temps === -1"
21
+ color="white"
22
+ style="cursor: pointer"
23
+ @click.stop="fermer"
24
+ >
25
+ mdi-close
26
+ </v-icon>
27
+ </template>
28
+ </v-snackbar>
29
+ </template>
30
+ <script lang="ts" setup>
31
+ import { computed, ref, watch, type PropType } from 'vue'
32
+
33
+ // Définir les props avec les types
34
+ const props = defineProps({
35
+ styleCss: {
36
+ type: String,
37
+ required: false,
38
+ },
39
+ temps: {
40
+ type: Number,
41
+ required: false,
42
+ default: 4000,
43
+ validator(value: number) {
44
+ // Si la valeur est inférieure à -1, on la remplace par -1
45
+ if (value < -1) {
46
+ return false // Laisser échouer la validation pour gérer ça dans une logique personnalisée
47
+ }
48
+ // Validation que la valeur soit comprise entre -1 et Number.MAX_VALUE
49
+ return value <= Number.MAX_VALUE
50
+ },
51
+ },
52
+ message: {
53
+ type: String,
54
+ required: true,
55
+ },
56
+ titre: {
57
+ type: String,
58
+ required: false,
59
+ },
60
+ btnFermer: {
61
+ type: Boolean,
62
+ required: false,
63
+ default: true,
64
+ },
65
+ })
66
+ const emit = defineEmits(['fermer:snackbar'])
67
+ const fermer = (): void => {
68
+ snackbar.value = false
69
+ emit('fermer:snackbar')
70
+ }
71
+ // Déclarer l'état réactif pour snackbar
72
+ const snackbar = ref(false)
73
+ const message = computed(() => props.message)
74
+ const tempsFinal = computed(() => {
75
+ if (props.temps < -1) {
76
+ return -1 // Si la valeur est inférieure à -1, on la met à -1
77
+ }
78
+ if (props.temps >= 0 && props.temps < 1000) return 1000 // on met 1 seconde minimum sinon one ne la voit pas
79
+
80
+ return props.temps // Sinon, on retourne la valeur de la prop
81
+ })
82
+
83
+ watch(message, nouveau => {
84
+ if (nouveau != null && nouveau !== '') {
85
+ snackbar.value = true
86
+ }
87
+ })
88
+ </script>
@@ -1,155 +1,156 @@
1
- <template>
2
- <v-navigation-drawer
3
- v-model="visible"
4
- location="right"
5
- temporary
6
- class="pa-0 elevation-2 csqc-ligneBleue"
7
- :width="grosseurTiroir"
8
- :persistent="persistant"
9
- @keydown.esc="!persistant ? fermeture : ''"
10
- @click:outside="!persistant ? fermeture : ''"
11
- >
12
- <v-card class="pa-0 ma-0 pl-8 pt-8">
13
- <!-- Bouton en haut à droite -->
14
- <v-btn
15
- icon="mdi-close"
16
- variant="text"
17
- class="position-absolute couleurHover"
18
- style="top: 5px; right: 5px"
19
- @click="fermeture"
20
- ></v-btn>
21
-
22
- <v-card-title
23
- class="pa-0 ma-0 pb-6 text-wrap"
24
- style="font-size: 24px"
25
- >
26
- <slot name="titre"></slot>
27
- <div text-h5>{{ titre }}</div>
28
- </v-card-title>
29
-
30
- <v-card-text class="pa-0 ma-0 pb-6 pr-6">
31
- <v-container>
32
- <slot></slot>
33
- <slot name="content"></slot>
34
- </v-container>
35
- </v-card-text>
36
- <v-card-actions class="my-2 d-flex justify-end pr-6 pb-5">
37
- <slot name="actions"></slot>
38
- <v-btn
39
- v-if="btnAnnuler"
40
- color="primary"
41
- variant="text"
42
- :loading="operationEnCours"
43
- @click="fermeture"
44
- >
45
- {{ props.btnAnnulerTexte ? props.btnAnnulerTexte : $t('csqc.bouton.annuler') }}
46
- </v-btn>
47
-
48
- <v-btn
49
- v-if="btnOk"
50
- class="Gouttiere"
51
- color="primary"
52
- variant="flat"
53
- :loading="operationEnCours"
54
- :disabled="btnOkDesactiver || operationEnCours"
55
- @click="okBouton"
56
- >
57
- {{ props.btnOkTexte ? props.btnOkTexte : $t('csqc.bouton.ok') }}
58
- </v-btn>
59
- </v-card-actions>
60
- </v-card>
61
- </v-navigation-drawer>
62
- </template>
63
- <script lang="ts" setup>
64
- import { ref, computed } from 'vue'
65
- import { useDisplay } from 'vuetify'
66
-
67
- const visible = ref(false)
68
- const display = useDisplay()
69
-
70
- // Déclaration des props
71
- const props = defineProps({
72
- titre: {
73
- type: String,
74
- default: '',
75
- required: false,
76
- },
77
- btnAnnuler: {
78
- type: Boolean,
79
- default: true,
80
- required: false,
81
- },
82
- btnOk: {
83
- type: Boolean,
84
- default: true,
85
- required: false,
86
- },
87
- btnAnnulerTexte: {
88
- type: String,
89
- default: '',
90
- required: false,
91
- },
92
- btnOkDesactiver: {
93
- type: Boolean,
94
- default: false,
95
- required: false,
96
- },
97
- operationEnCours: { type: Boolean, default: false },
98
- persistant: { type: Boolean, default: true },
99
- btnOkTexte: {
100
- type: String,
101
- default: '',
102
- required: false,
103
- },
104
- })
105
-
106
- // Déclaration des événements
107
- const emit = defineEmits(['fermer', 'ok'])
108
-
109
- // Méthodes
110
- const ouvrir = () => {
111
- visible.value = true
112
- }
113
-
114
- const fermer = () => {
115
- visible.value = false
116
- }
117
-
118
- const fermeture = () => {
119
- emit('fermer')
120
- fermer()
121
- }
122
-
123
- const okBouton = () => {
124
- emit('ok')
125
- fermer()
126
- }
127
-
128
- // Calcul des tailles du tiroir en fonction du breakpoint
129
- const grosseurTiroir = computed(() => {
130
- switch (display.name.value) {
131
- case 'xs':
132
- return ''
133
- case 'sm':
134
- return 0.95 * display.width.value
135
- case 'md':
136
- return 0.8 * display.width.value
137
- case 'lg':
138
- return 0.7 * display.width.value
139
- case 'xl':
140
- return 0.6 * display.width.value
141
- case 'xxl':
142
- return 0.5 * display.width.value
143
- default:
144
- return ''
145
- }
146
- })
147
-
148
- defineExpose({ ouvrir, fermer })
149
- </script>
150
-
151
- <style>
152
- .csqc-ligneBleue {
153
- border-left: 30px #095797 solid !important;
154
- }
155
- </style>
1
+ <template>
2
+ <v-navigation-drawer
3
+ v-model="visible"
4
+ location="right"
5
+ temporary
6
+ v-bind="$attrs"
7
+ :width="grosseurTiroir"
8
+ class="pa-0 elevation-2 csqc-ligneBleue"
9
+ :persistent="persistant"
10
+ @keydown.esc="!persistant ? fermeture : ''"
11
+ @click:outside="!persistant ? fermeture : ''"
12
+ >
13
+ <v-card class="pa-0 ma-0 pl-8 pt-8">
14
+ <!-- Bouton en haut à droite -->
15
+ <v-btn
16
+ icon="mdi-close"
17
+ variant="text"
18
+ class="position-absolute couleurHover"
19
+ style="top: 5px; right: 5px"
20
+ @click="fermeture"
21
+ ></v-btn>
22
+
23
+ <v-card-title
24
+ class="pa-0 ma-0 pb-6 text-wrap"
25
+ style="font-size: 24px"
26
+ >
27
+ <slot name="titre"></slot>
28
+ <div text-h5>{{ titre }}</div>
29
+ </v-card-title>
30
+
31
+ <v-card-text class="pa-0 ma-0 pb-6 pr-6">
32
+ <v-container>
33
+ <slot></slot>
34
+ <slot name="content"></slot>
35
+ </v-container>
36
+ </v-card-text>
37
+ <v-card-actions class="my-2 d-flex justify-end pr-6 pb-5">
38
+ <slot name="actions"></slot>
39
+ <v-btn
40
+ v-if="btnAnnuler"
41
+ color="primary"
42
+ variant="text"
43
+ :loading="operationEnCours"
44
+ @click="fermeture"
45
+ >
46
+ {{ props.btnAnnulerTexte ? props.btnAnnulerTexte : $t('csqc.bouton.annuler') }}
47
+ </v-btn>
48
+
49
+ <v-btn
50
+ v-if="btnOk"
51
+ class="Gouttiere"
52
+ color="primary"
53
+ variant="flat"
54
+ :loading="operationEnCours"
55
+ :disabled="btnOkDesactiver || operationEnCours"
56
+ @click="okBouton"
57
+ >
58
+ {{ props.btnOkTexte ? props.btnOkTexte : $t('csqc.bouton.ok') }}
59
+ </v-btn>
60
+ </v-card-actions>
61
+ </v-card>
62
+ </v-navigation-drawer>
63
+ </template>
64
+ <script lang="ts" setup>
65
+ import { ref, computed } from 'vue'
66
+ import { useDisplay } from 'vuetify'
67
+
68
+ const visible = ref(false)
69
+ const display = useDisplay()
70
+
71
+ // Déclaration des props
72
+ const props = defineProps({
73
+ titre: {
74
+ type: String,
75
+ default: '',
76
+ required: false,
77
+ },
78
+ btnAnnuler: {
79
+ type: Boolean,
80
+ default: true,
81
+ required: false,
82
+ },
83
+ btnOk: {
84
+ type: Boolean,
85
+ default: true,
86
+ required: false,
87
+ },
88
+ btnAnnulerTexte: {
89
+ type: String,
90
+ default: '',
91
+ required: false,
92
+ },
93
+ btnOkDesactiver: {
94
+ type: Boolean,
95
+ default: false,
96
+ required: false,
97
+ },
98
+ operationEnCours: { type: Boolean, default: false },
99
+ persistant: { type: Boolean, default: true },
100
+ btnOkTexte: {
101
+ type: String,
102
+ default: '',
103
+ required: false,
104
+ },
105
+ })
106
+
107
+ // Déclaration des événements
108
+ const emit = defineEmits(['fermer', 'ok'])
109
+
110
+ // Méthodes
111
+ const ouvrir = () => {
112
+ visible.value = true
113
+ }
114
+
115
+ const fermer = () => {
116
+ visible.value = false
117
+ }
118
+
119
+ const fermeture = () => {
120
+ emit('fermer')
121
+ fermer()
122
+ }
123
+
124
+ const okBouton = () => {
125
+ emit('ok')
126
+ fermer()
127
+ }
128
+
129
+ // Calcul des tailles du tiroir en fonction du breakpoint
130
+ const grosseurTiroir = computed(() => {
131
+ switch (display.name.value) {
132
+ case 'xs':
133
+ return ''
134
+ case 'sm':
135
+ return 0.95 * display.width.value
136
+ case 'md':
137
+ return 0.8 * display.width.value
138
+ case 'lg':
139
+ return 0.7 * display.width.value
140
+ case 'xl':
141
+ return 0.6 * display.width.value
142
+ case 'xxl':
143
+ return 0.5 * display.width.value
144
+ default:
145
+ return ''
146
+ }
147
+ })
148
+
149
+ defineExpose({ ouvrir, fermer })
150
+ </script>
151
+
152
+ <style>
153
+ .csqc-ligneBleue {
154
+ border-left: 30px #095797 solid !important;
155
+ }
156
+ </style>