codevdesign 0.0.12 → 0.0.14

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,348 +1,342 @@
1
- <template>
2
- <div>
3
- <v-row>
4
- <slot name="ligne" />
5
- <!-- Affichage de la boite de recherche-->
6
- <v-col
7
- cols="12"
8
- sm="7"
9
- md="6"
10
- lg="5"
11
- xl="4"
12
- >
13
- <slot name="recherche"></slot>
14
- <Recherche
15
- v-if="rechercheAfficher"
16
- :rechercheTexte="rechercheTexte"
17
- :chargement="chargementListe"
18
- :recherche="recherche"
19
- @update:recherche="chargerRecherche"
20
- class="flex-grow-1"
21
- ></Recherche>
22
- </v-col>
23
-
24
- <!-- Entre recherche et ajouté-->
25
- <v-col
26
- cols="12"
27
- sm="auto"
28
- class="pt-1 mt-0 pb-0 mb-0"
29
- >
30
- <slot name="milieu" />
31
- </v-col>
32
-
33
- <!-- Affichage des boutons et icônes-->
34
- <v-col
35
- cols="12"
36
- sm="auto"
37
- class="flex-grow-1 d-flex justify-end"
38
- >
39
- <slot name="droite" />
40
-
41
- <v-btn
42
- v-if="btnAjouter"
43
- color="primary"
44
- class="ml-1 float-right"
45
- @click.stop="ajouter"
46
- >
47
- {{ props.btnAjouterTexte ? props.btnAjouterTexte : $t('csqc.bouton.ajouter') }}
48
- </v-btn>
49
-
50
- <exportExcelComponent
51
- v-if="excel"
52
- :liste="filteredItems"
53
- :chargement-liste="chargementListe"
54
- :nom-fichier="excelNomFichier"
55
- class="mt-1 ml-1 float-right"
56
- />
57
- </v-col>
58
- </v-row>
59
-
60
- <!-- ligne pour la recherche avancee -->
61
- <v-row>
62
- <slot name="rechercheAvancee"></slot>
63
- </v-row>
64
-
65
- <!-- datatable-->
66
- <v-row>
67
- <v-col
68
- cols="12"
69
- class="d-flex ControlesDatatable flex-wrap"
70
- >
71
- <v-data-table
72
- ref="datatable"
73
- color="green"
74
- :headers="colonnes"
75
- :item-key="itemKey"
76
- :items="liste"
77
- :search="recherche"
78
- :loading="chargementListe"
79
- @click:row="cliqueLigne"
80
- >
81
- <!-- utilisation des slots via le component parent-->
82
- <!-- eslint-disable-next-line -->
83
- <template
84
- v-for="(_, slot) of $slots"
85
- :key="slot"
86
- #[slot]="scope"
87
- >
88
- <slot
89
- :name="slot"
90
- v-bind="scope"
91
- />
92
- </template>
93
-
94
- <!-- boutons supprimer et modifier -->
95
- <!-- eslint-disable-next-line -->
96
- <template v-slot:item.action="{ item }">
97
- <slot
98
- name="actionsCustom"
99
- v-bind:item="item"
100
- ></slot>
101
- <v-icon
102
- v-if="props.btnSupprimer"
103
- size="large"
104
- @click.stop.prevent="ouvrirModaleSupprimer(item)"
105
- class="iconeSupprimer float-right"
106
- >
107
- mdi-delete
108
- </v-icon>
109
-
110
- <v-icon
111
- v-if="props.btnModifier"
112
- size="large"
113
- class="iconeEditer float-right"
114
- @click.stop.prevent="modifier(item)"
115
- >
116
- mdi-pencil
117
- </v-icon>
118
- </template>
119
- </v-data-table>
120
-
121
- <!-- Fenêtre de suppression -->
122
- <confirmation
123
- v-if="props.btnSupprimer"
124
- ref="modaleSupprimer"
125
- @confirmer="supprimer"
126
- :texte="supprimerTexte"
127
- :titre="supprimerTitreTexte"
128
- :largeur="modaleSupprimerLargeur"
129
- />
130
- </v-col>
131
- </v-row>
132
- </div>
133
- </template>
134
-
135
- <script setup lang="ts">
136
- /* eslint-disable @typescript-eslint/no-explicit-any */
137
-
138
- import { ref, computed, defineProps, type Slots, type PropType } from 'vue'
139
- import Recherche from '../csqcRecherche.vue'
140
- import confirmation from '../csqcConfirmation.vue'
141
- import exportExcelComponent from './csqcTableExportExcel.vue'
142
- //import ModaleChoix from './csqc-table-modale-choix-colonnes.vue';
143
- //import axios from 'axios'
144
- import { useI18n } from 'vue-i18n'
145
-
146
- interface Colonne {
147
- title: string
148
- key: string // Correspond à la clé des objets dans `liste`
149
- align?: 'start' | 'center' | 'end'
150
- sortable?: boolean
151
- }
152
-
153
- // Props
154
- const props = defineProps({
155
- btnAjouter: { type: Boolean, default: true },
156
- btnAjouterTexte: { type: String, default: '' },
157
- btnModifier: { type: Boolean, default: true },
158
- btnSupprimer: { type: Boolean, default: true },
159
- chargementListe: { type: Boolean, default: false },
160
- operationEnCours: { type: Boolean, default: false },
161
- //choixSwitchOptionDepart: { type: Boolean, default: false },
162
- // classeRangee: { type: String, default: '' },
163
- colonnes: {
164
- type: Array as PropType<Colonne[]>,
165
- default: () => [],
166
- },
167
- excel: { type: Boolean, default: false },
168
- excelNomFichier: { type: String, default: 'csqc' },
169
- //filtresDepart: { type: Object, default: null },
170
- //flechesTri: { type: Boolean, default: false },
171
- // formulaireId: { type: Number, default: -1 },
172
- //identifiant: { type: String, default: '' },
173
- itemKey: { type: String, default: 'id' },
174
- // itemsParPage: { type: Number, default: 10 },
175
- liste: {
176
- type: Array as PropType<Record<string, any>[]>,
177
- default: () => [],
178
- },
179
- // modulerDense: { type: Boolean, default: false },
180
- // multifiltre: { type: Boolean, default: false },
181
- // multiTri: { type: Boolean, default: false },
182
- //optionsItemsParPage: { type: Array, default: () => [10, 25, 30, -1] },
183
- //pageCourante: { type: Number, default: 1 },
184
- //paginationBottom: { type: Boolean, default: true },
185
- // paginationTop: { type: Boolean, default: false },
186
- // permettreChoixColonnes: { type: Boolean, default: false },
187
- // rechercheDepart: { type: String, default: '' },
188
- rechercheTexte: { type: String, default: '' },
189
- rechercheAfficher: { type: Boolean, default: true },
190
- // selectionChoixColonnesDepart: { type: String, default: '' },
191
- // showSelect: { type: Boolean, default: false },
192
-
193
- modaleSupprimerChamp: { type: String, default: '' },
194
- modaleSupprimerTexte: { type: String, default: '' },
195
- modaleSupprimerTitre: { type: String, default: '' },
196
- modaleSupprimerLargeur: { type: String, default: '525px' },
197
- //triParDepart: { type: Array, default: () => undefined },
198
- //urlbase: { type: String, default: '' },
199
- })
200
-
201
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
202
- const slots = defineSlots<Slots>()
203
- const { t } = useI18n({ useScope: 'global' })
204
- const itemSelectionne = ref(null)
205
- const modaleSupprimer = ref<InstanceType<typeof confirmation> | null>(null)
206
- const supprimerTexte = computed(() => {
207
- if (itemSelectionne.value == null) return ''
208
-
209
- if (props.modaleSupprimerTexte != null && props.modaleSupprimerTexte != '') return props.modaleSupprimerTexte
210
-
211
- return t('csqc.message.supprimerMessage', { nom: itemSelectionne?.value[props.modaleSupprimerChamp] ?? '' })
212
- })
213
-
214
- const supprimerTitreTexte = computed(() => props.modaleSupprimerTitre || t('csqc.message.supprimerTitre'))
215
-
216
- // Fonction pour ouvrir le dialogue pour un item spécifique
217
- const ouvrirModaleSupprimer = (item: any) => {
218
- itemSelectionne.value = item
219
-
220
- //modaleSupprimer.value?.ouvrir()
221
- emit('supprimer', itemSelectionne.value)
222
- }
223
-
224
- const supprimer = () => {
225
- emit('supprimer', itemSelectionne.value)
226
- }
227
-
228
- const recherche = ref<string>('')
229
- const chargerRecherche = (val: string) => {
230
- recherche.value = val
231
- }
232
-
233
- const ajouter = () => {
234
- emit('ajouter')
235
- }
236
- const cliqueLigne = (e: Event, { item }: { item: any }) => {
237
- emit('cliqueLigne', item)
238
- }
239
-
240
- const modifier = (item: any) => {
241
- emit('modifier', item)
242
- }
243
- const filteredItems = computed(() => {
244
- if (!recherche.value) return props.liste // Si rien écrit, affiche tout
245
-
246
- return props.liste.filter(item =>
247
- Object.values(item).some(val => String(val).toLowerCase().includes(recherche.value.toLowerCase())),
248
- )
249
- })
250
- const emit = defineEmits(['ajouter', 'cliqueLigne', 'supprimer', 'modifier', 'donneesExportees'])
251
- </script>
252
-
253
- <style scoped lang="css">
254
- .ControlesDatatable {
255
- gap: 4px;
256
- }
257
-
258
- /* barre de recherche design QC*/
259
- .BarreRecherche {
260
- min-height: 40px;
261
- }
262
-
263
- .BarreRechercheBackIcone {
264
- border-right: 1px solid #808a9d;
265
- border-top: 1px solid #808a9d;
266
- border-bottom: 1px solid #808a9d;
267
- background-color: #095797 !important;
268
- height: 40px !important;
269
- width: 40px !important;
270
- max-width: 40px !important;
271
- min-width: 40px !important;
272
- padding-right: 0 !important;
273
- padding-left: 0 !important;
274
- border-radius: 0;
275
- margin-left: -16px;
276
- }
277
-
278
- /* icone loupe */
279
- .BarreRechercheIcone {
280
- font-size: 34px !important;
281
- margin-left: 1px !important;
282
- margin-top: 2px !important;
283
- color: white !important;
284
- }
285
-
286
- /* datatable contour */
287
- .v-data-table {
288
- border: 1px solid #d3d3d3;
289
- border-radius: 5px;
290
- overflow: hidden;
291
- }
292
-
293
- /* hover */
294
- .v-data-table:hover {
295
- cursor: pointer !important;
296
- }
297
-
298
- /* datatable row */
299
- .v-data-table .v-table__wrapper > table > thead > tr > td,
300
- .v-data-table .v-table__wrapper > table > thead > tr th,
301
- .v-data-table .v-table__wrapper > table tbody > tr > td,
302
- .v-data-table .v-table__wrapper > table tbody > tr th {
303
- background-color: #d3d3d375 !important;
304
- }
305
-
306
- /* datatable header contour */
307
- .v-data-table .v-table__wrapper > table > thead > tr > th,
308
- .v-data-table .v-table__wrapper > table tbody > tr > th {
309
- background-color: white !important;
310
- border-bottom: 4px #223654 solid !important;
311
- }
312
-
313
- /* datatable header intérieur*/
314
- .v-data-table-header__content {
315
- background-color: white !important;
316
- color: #223654 !important;
317
- font-weight: 600;
318
- font-size: 15px;
319
- height: 46px;
320
- }
321
-
322
- /* datatable footer */
323
- .v-data-table-footer {
324
- background-color: white !important;
325
- border-top: 4px #223654 solid !important;
326
- }
327
-
328
- /* datatable row hover */
329
- .v-data-table .v-table__wrapper > table tbody > tr:hover > td,
330
- .v-data-table .v-table__wrapper > table tbody > tr:hover {
331
- background-color: #e0e0e0 !important;
332
- }
333
-
334
- .iconeSupprimer:hover {
335
- color: red;
336
- }
337
- .v-icon.v-icon.v-icon--link.iconeSupprimer:hover {
338
- color: red !important;
339
- }
340
- .iconeEditer:hover {
341
- color: #095797;
342
- }
343
-
344
- /* hover icone à droite du ajouter*/
345
- .text-grisMoyen:hover {
346
- color: #095797 !important;
347
- }
348
- </style>
1
+ <template>
2
+ <div>
3
+ <v-row>
4
+ <slot name="ligne" />
5
+ <!-- Affichage de la boite de recherche-->
6
+ <v-col
7
+ cols="12"
8
+ sm="7"
9
+ md="6"
10
+ lg="5"
11
+ xl="4"
12
+ >
13
+ <slot name="recherche"></slot>
14
+ <Recherche
15
+ v-if="rechercheAfficher"
16
+ :rechercheTexte="rechercheTexte"
17
+ :chargement="chargementListe"
18
+ :recherche="recherche"
19
+ @update:recherche="chargerRecherche"
20
+ class="flex-grow-1"
21
+ ></Recherche>
22
+ </v-col>
23
+
24
+ <!-- Entre recherche et ajouté-->
25
+ <v-col
26
+ cols="12"
27
+ sm="auto"
28
+ class="pt-1 mt-0 pb-0 mb-0"
29
+ >
30
+ <slot name="milieu" />
31
+ </v-col>
32
+
33
+ <!-- Affichage des boutons et icônes-->
34
+ <v-col
35
+ cols="12"
36
+ sm="auto"
37
+ class="flex-grow-1 d-flex justify-end"
38
+ >
39
+ <slot name="droite" />
40
+
41
+ <v-btn
42
+ v-if="btnAjouter"
43
+ color="primary"
44
+ class="ml-1 float-right"
45
+ @click.stop="ajouter"
46
+ >
47
+ {{ props.btnAjouterTexte ? props.btnAjouterTexte : $t('csqc.bouton.ajouter') }}
48
+ </v-btn>
49
+
50
+ <exportExcelComponent
51
+ v-if="excel"
52
+ :liste="filteredItems"
53
+ :chargement-liste="chargementListe"
54
+ :nom-fichier="excelNomFichier"
55
+ class="mt-1 ml-1 float-right"
56
+ />
57
+ </v-col>
58
+ </v-row>
59
+
60
+ <!-- ligne pour la recherche avancee -->
61
+ <v-row>
62
+ <slot name="rechercheAvancee"></slot>
63
+ </v-row>
64
+
65
+ <!-- datatable-->
66
+ <v-row>
67
+ <v-col
68
+ cols="12"
69
+ class="d-flex ControlesDatatable flex-wrap"
70
+ >
71
+ <v-data-table
72
+ ref="datatable"
73
+ color="green"
74
+ :headers="colonnes"
75
+ :item-key="itemKey"
76
+ :items="liste"
77
+ :search="recherche"
78
+ :loading="chargementListe"
79
+ @click:row="cliqueLigne"
80
+ >
81
+ <!-- utilisation des slots via le component parent-->
82
+ <!-- eslint-disable-next-line -->
83
+ <template
84
+ v-for="(_, slot) of $slots"
85
+ :key="slot"
86
+ #[slot]="scope"
87
+ >
88
+ <slot
89
+ :name="slot"
90
+ v-bind="scope"
91
+ />
92
+ </template>
93
+
94
+ <!-- boutons supprimer et modifier -->
95
+ <!-- eslint-disable-next-line -->
96
+ <template v-slot:item.action="{ item }">
97
+ <slot
98
+ name="actionsCustom"
99
+ v-bind:item="item"
100
+ ></slot>
101
+ <v-icon
102
+ v-if="props.btnSupprimer"
103
+ size="large"
104
+ @click.stop.prevent="ouvrirModaleSupprimer(item)"
105
+ class="iconeSupprimer float-right"
106
+ >
107
+ mdi-delete
108
+ </v-icon>
109
+
110
+ <v-icon
111
+ v-if="props.btnModifier"
112
+ size="large"
113
+ class="iconeEditer float-right"
114
+ @click.stop.prevent="modifier(item)"
115
+ >
116
+ mdi-pencil
117
+ </v-icon>
118
+ </template>
119
+ </v-data-table>
120
+
121
+ <!-- Fenêtre de suppression -->
122
+ <confirmation
123
+ v-if="props.btnSupprimer"
124
+ ref="modaleSupprimer"
125
+ @confirmer="supprimer"
126
+ :texte="supprimerTexte"
127
+ :titre="supprimerTitreTexte"
128
+ :largeur="modaleSupprimerLargeur"
129
+ />
130
+ </v-col>
131
+ </v-row>
132
+ </div>
133
+ </template>
134
+
135
+ <script setup lang="ts">
136
+ /* eslint-disable @typescript-eslint/no-explicit-any */
137
+
138
+ import { ref, computed, defineProps, type Slots, type PropType } from 'vue'
139
+ import Recherche from '../csqcRecherche.vue'
140
+ import confirmation from '../csqcConfirmation.vue'
141
+ import exportExcelComponent from './csqcTableExportExcel.vue'
142
+ //import ModaleChoix from './csqc-table-modale-choix-colonnes.vue';
143
+ //import axios from 'axios'
144
+ import { useI18n } from 'vue-i18n'
145
+ import Colonne from '../../modeles/composants/datatableColonne'
146
+
147
+ // Props
148
+ const props = defineProps({
149
+ btnAjouter: { type: Boolean, default: true },
150
+ btnAjouterTexte: { type: String, default: '' },
151
+ btnModifier: { type: Boolean, default: true },
152
+ btnSupprimer: { type: Boolean, default: true },
153
+ chargementListe: { type: Boolean, default: false },
154
+ operationEnCours: { type: Boolean, default: false },
155
+ //choixSwitchOptionDepart: { type: Boolean, default: false },
156
+ // classeRangee: { type: String, default: '' },
157
+ colonnes: {
158
+ type: Array as PropType<Colonne[]>,
159
+ default: () => [],
160
+ },
161
+ excel: { type: Boolean, default: false },
162
+ excelNomFichier: { type: String, default: 'csqc' },
163
+ //filtresDepart: { type: Object, default: null },
164
+ //flechesTri: { type: Boolean, default: false },
165
+ // formulaireId: { type: Number, default: -1 },
166
+ //identifiant: { type: String, default: '' },
167
+ itemKey: { type: String, default: 'id' },
168
+ // itemsParPage: { type: Number, default: 10 },
169
+ liste: {
170
+ type: Array as PropType<Record<string, any>[]>,
171
+ default: () => [],
172
+ },
173
+ // modulerDense: { type: Boolean, default: false },
174
+ // multifiltre: { type: Boolean, default: false },
175
+ // multiTri: { type: Boolean, default: false },
176
+ //optionsItemsParPage: { type: Array, default: () => [10, 25, 30, -1] },
177
+ //pageCourante: { type: Number, default: 1 },
178
+ //paginationBottom: { type: Boolean, default: true },
179
+ // paginationTop: { type: Boolean, default: false },
180
+ // permettreChoixColonnes: { type: Boolean, default: false },
181
+ // rechercheDepart: { type: String, default: '' },
182
+ rechercheTexte: { type: String, default: '' },
183
+ rechercheAfficher: { type: Boolean, default: true },
184
+ // selectionChoixColonnesDepart: { type: String, default: '' },
185
+ // showSelect: { type: Boolean, default: false },
186
+
187
+ modaleSupprimerChamp: { type: String, default: '' },
188
+ modaleSupprimerTexte: { type: String, default: '' },
189
+ modaleSupprimerTitre: { type: String, default: '' },
190
+ modaleSupprimerLargeur: { type: String, default: '525px' },
191
+ //triParDepart: { type: Array, default: () => undefined },
192
+ //urlbase: { type: String, default: '' },
193
+ })
194
+
195
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
196
+ const slots = defineSlots<Slots>()
197
+ const { t } = useI18n({ useScope: 'global' })
198
+ const itemSelectionne = ref(null)
199
+ const modaleSupprimer = ref<InstanceType<typeof confirmation> | null>(null)
200
+ const supprimerTexte = computed(() => {
201
+ if (itemSelectionne.value == null) return ''
202
+
203
+ if (props.modaleSupprimerTexte != null && props.modaleSupprimerTexte != '') return props.modaleSupprimerTexte
204
+
205
+ return t('csqc.message.supprimerMessage', { nom: itemSelectionne?.value[props.modaleSupprimerChamp] ?? '' })
206
+ })
207
+
208
+ const supprimerTitreTexte = computed(() => props.modaleSupprimerTitre || t('csqc.message.supprimerTitre'))
209
+
210
+ // Fonction pour ouvrir le dialogue pour un item spécifique
211
+ const ouvrirModaleSupprimer = (item: any) => {
212
+ itemSelectionne.value = item
213
+
214
+ //modaleSupprimer.value?.ouvrir()
215
+ emit('supprimer', itemSelectionne.value)
216
+ }
217
+
218
+ const supprimer = () => {
219
+ emit('supprimer', itemSelectionne.value)
220
+ }
221
+
222
+ const recherche = ref<string>('')
223
+ const chargerRecherche = (val: string) => {
224
+ recherche.value = val
225
+ }
226
+
227
+ const ajouter = () => {
228
+ emit('ajouter')
229
+ }
230
+ const cliqueLigne = (e: Event, { item }: { item: any }) => {
231
+ emit('cliqueLigne', item)
232
+ }
233
+
234
+ const modifier = (item: any) => {
235
+ emit('modifier', item)
236
+ }
237
+ const filteredItems = computed(() => {
238
+ if (!recherche.value) return props.liste // Si rien écrit, affiche tout
239
+
240
+ return props.liste.filter(item =>
241
+ Object.values(item).some(val => String(val).toLowerCase().includes(recherche.value.toLowerCase())),
242
+ )
243
+ })
244
+ const emit = defineEmits(['ajouter', 'cliqueLigne', 'supprimer', 'modifier', 'donneesExportees'])
245
+ </script>
246
+
247
+ <style scoped lang="css">
248
+ .ControlesDatatable {
249
+ gap: 4px;
250
+ }
251
+
252
+ /* barre de recherche design QC*/
253
+ .BarreRecherche {
254
+ min-height: 40px;
255
+ }
256
+
257
+ .BarreRechercheBackIcone {
258
+ border-right: 1px solid #808a9d;
259
+ border-top: 1px solid #808a9d;
260
+ border-bottom: 1px solid #808a9d;
261
+ background-color: #095797 !important;
262
+ height: 40px !important;
263
+ width: 40px !important;
264
+ max-width: 40px !important;
265
+ min-width: 40px !important;
266
+ padding-right: 0 !important;
267
+ padding-left: 0 !important;
268
+ border-radius: 0;
269
+ margin-left: -16px;
270
+ }
271
+
272
+ /* icone loupe */
273
+ .BarreRechercheIcone {
274
+ font-size: 34px !important;
275
+ margin-left: 1px !important;
276
+ margin-top: 2px !important;
277
+ color: white !important;
278
+ }
279
+
280
+ /* datatable contour */
281
+ .v-data-table {
282
+ border: 1px solid #d3d3d3;
283
+ border-radius: 5px;
284
+ overflow: hidden;
285
+ }
286
+
287
+ /* hover */
288
+ .v-data-table:hover {
289
+ cursor: pointer !important;
290
+ }
291
+
292
+ /* datatable row */
293
+ .v-data-table .v-table__wrapper > table > thead > tr > td,
294
+ .v-data-table .v-table__wrapper > table > thead > tr th,
295
+ .v-data-table .v-table__wrapper > table tbody > tr > td,
296
+ .v-data-table .v-table__wrapper > table tbody > tr th {
297
+ background-color: #d3d3d375 !important;
298
+ }
299
+
300
+ /* datatable header contour */
301
+ .v-data-table .v-table__wrapper > table > thead > tr > th,
302
+ .v-data-table .v-table__wrapper > table tbody > tr > th {
303
+ background-color: white !important;
304
+ border-bottom: 4px #223654 solid !important;
305
+ }
306
+
307
+ /* datatable header intérieur*/
308
+ .v-data-table-header__content {
309
+ background-color: white !important;
310
+ color: #223654 !important;
311
+ font-weight: 600;
312
+ font-size: 15px;
313
+ height: 46px;
314
+ }
315
+
316
+ /* datatable footer */
317
+ .v-data-table-footer {
318
+ background-color: white !important;
319
+ border-top: 4px #223654 solid !important;
320
+ }
321
+
322
+ /* datatable row hover */
323
+ .v-data-table .v-table__wrapper > table tbody > tr:hover > td,
324
+ .v-data-table .v-table__wrapper > table tbody > tr:hover {
325
+ background-color: #e0e0e0 !important;
326
+ }
327
+
328
+ .iconeSupprimer:hover {
329
+ color: red;
330
+ }
331
+ .v-icon.v-icon.v-icon--link.iconeSupprimer:hover {
332
+ color: red !important;
333
+ }
334
+ .iconeEditer:hover {
335
+ color: #095797;
336
+ }
337
+
338
+ /* hover icone à droite du ajouter*/
339
+ .text-grisMoyen:hover {
340
+ color: #095797 !important;
341
+ }
342
+ </style>