codevdesign 1.0.78 → 2.0.0
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.
- package/assets/csqc.css +28 -30
- package/composants/csqcAide.vue +1 -1
- package/composants/csqcAlerteErreur.vue +1 -1
- package/composants/csqcChaise/chaiseConteneur.vue +4 -4
- package/composants/csqcChaise/chaiseItem.vue +54 -54
- package/composants/csqcCodeBudgetaireGenerique.vue +260 -256
- package/composants/csqcConfirmation.vue +76 -75
- package/composants/csqcDate.vue +88 -86
- package/composants/csqcDialogue.vue +120 -118
- package/composants/csqcEditeurTexteRiche.vue +378 -378
- package/composants/csqcEntete.vue +17 -17
- package/composants/csqcImportCSV.vue +2 -2
- package/composants/csqcModaleSaisie.vue +97 -97
- package/composants/csqcRecherche.vue +9 -9
- package/composants/csqcRechercheUtilisateur.vue +198 -198
- package/composants/csqcSnackbar.vue +207 -207
- package/composants/csqcSwitch.vue +6 -6
- package/composants/csqcTable/csqcTable.vue +19 -14
- package/composants/csqcTable/csqcTableModaleChoixColonnes.vue +5 -5
- package/composants/csqcTable/sortableDataTable.ts +1 -1
- package/composants/csqcTexteBilingue.vue +1 -1
- package/composants/csqcTiroir.vue +197 -197
- package/composants/gabarit/csqcMenu.vue +4 -4
- package/composants/gabarit/pivEntete.vue +6 -5
- package/composants/gabarit/pivPiedPage.vue +44 -29
- package/composants/validateurs.ts +8 -2
- package/editeur.ts +1 -1
- package/importCSV.ts +1 -1
- package/index.ts +80 -80
- package/locales/en.json +1 -1
- package/locales/fr.json +3 -3
- package/modeles/assurancesAssuranceGeneraleGrics.ts +3 -3
- package/modeles/assurancesAssurancePersonnelleGrics.ts +6 -6
- package/modeles/assurancesContratGrics.ts +6 -6
- package/modeles/assurancesDetailsPrimeReguliereGrics.ts +4 -4
- package/modeles/assurancesDonneesAssureurGrics.ts +5 -5
- package/modeles/assurancesEmployeGrics.ts +4 -4
- package/modeles/assurancesGrics.ts +6 -6
- package/modeles/assurancesRegimeAssuranceGrics.ts +2 -2
- package/modeles/assurancesRegimeBaseEmployeurGrics.ts +2 -2
- package/modeles/assurancesRegimeBaseGrics.ts +2 -2
- package/modeles/composants/csqcMenuModele.ts +18 -18
- package/modeles/composants/datatableColonne.ts +19 -19
- package/modeles/employeAdresseGrics.ts +6 -6
- package/modeles/employeAdressesPersonnellesGrics.ts +4 -4
- package/modeles/employeAffectationCorpsEmploiGrics.ts +2 -2
- package/modeles/employeBanquesCongeBanqueGrics.ts +2 -2
- package/modeles/employeBanquesCongeGrics.ts +6 -6
- package/modeles/employeBanquesCongeRegimeAbsenceGrics.ts +2 -2
- package/modeles/employeCourrielsPersonnels.ts +2 -2
- package/modeles/employeCourrielsProfessionnels.ts +2 -2
- package/modeles/employeEmploisCategorieGrics.ts +2 -2
- package/modeles/employeEmploisClasseGrics.ts +2 -2
- package/modeles/employeEmploisCorpsEmploiGrics.ts +2 -2
- package/modeles/employeEmploisEtatEmploiGrics.ts +2 -2
- package/modeles/employeEmploisGrics.ts +29 -29
- package/modeles/employeEmploisGroupePaieGrics.ts +2 -2
- package/modeles/employeEmploisLieuTravailPrincipalGrics.ts +3 -3
- package/modeles/employeEmploisLieuxTravailSecondairesGrics.ts +3 -3
- package/modeles/employeEmploisRegimeAbsenceGrics.ts +2 -2
- package/modeles/employeEmploisSecteurGrics.ts +2 -2
- package/modeles/employeEmploisStatutEngagementGrics.ts +2 -2
- package/modeles/employeExperienceEmploiGrics.ts +2 -2
- package/modeles/employeExperienceEmployeGrics.ts +5 -5
- package/modeles/employeExperienceExperiencesGrics.ts +4 -4
- package/modeles/employeExperienceExperiencesTotalesGrics.ts +7 -7
- package/modeles/employeExperienceGrics.ts +9 -9
- package/modeles/employeGrics.ts +23 -23
- package/modeles/employeTelephoneGrics.ts +4 -4
- package/modeles/employeTelephonesPersonnelsGrics.ts +3 -3
- package/modeles/employeTelephonesProfessionnelsGrics.ts +3 -3
- package/modeles/groupeCE.ts +6 -6
- package/modeles/groupeCEIntervalle.ts +6 -6
- package/modeles/historiquesAbsenceBanqueGrics.ts +2 -2
- package/modeles/historiquesAbsenceGrics.ts +13 -13
- package/modeles/historiquesAbsenceLieuTravailGrics.ts +2 -2
- package/modeles/historiquesAbsenceSousBanqueGrics.ts +2 -2
- package/modeles/motifsAbsenceBanque.ts +2 -2
- package/modeles/motifsAbsenceGrics.ts +9 -9
- package/modeles/motifsAbsenceRegimeAbsence.ts +2 -2
- package/modeles/motifsAbsenceSousMotifs.ts +2 -2
- package/modeles/motifsAbsenceTraitementBanques.ts +3 -3
- package/modeles/syndicat.ts +18 -18
- package/modeles/syndicatGroupeCe.ts +3 -3
- package/modeles/syndicatResponsable.ts +8 -8
- package/modeles/syndicatUnite.ts +3 -3
- package/modeles/unite.ts +15 -15
- package/modeles/uniteTypeEnseignement.ts +4 -4
- package/modeles/utilisateur.ts +8 -8
- package/outils/appAxios.ts +16 -16
- package/outils/csqcOutils.ts +6 -5
- package/outils/csqcRafraichisseurTokenParent.ts +20 -4
- package/outils/rafraichisseurToken.ts +1 -1
- package/package.json +13 -13
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<v-navigation-drawer
|
|
3
|
-
v-model="visible"
|
|
4
|
-
location="right"
|
|
5
|
-
temporary
|
|
6
|
-
class="pa-0 elevation-2 csqc-ligneBleue"
|
|
7
|
-
:persistent="persistant"
|
|
8
|
-
v-bind="$attrs"
|
|
9
|
-
:width="grosseurTiroir"
|
|
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 iconeHover"
|
|
19
|
-
style="
|
|
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
|
-
<Teleport to="body">
|
|
64
|
-
<v-fab
|
|
65
|
-
v-if="retourEnHaut && afficherBoutonHaut"
|
|
66
|
-
style="
|
|
67
|
-
elevation="8"
|
|
68
|
-
color="primary"
|
|
69
|
-
icon="mdi-arrow-up"
|
|
70
|
-
@click="allerEnHaut"
|
|
71
|
-
/>
|
|
72
|
-
</Teleport>
|
|
73
|
-
</template>
|
|
74
|
-
<script lang="ts" setup>
|
|
75
|
-
import { ref, computed, watch, nextTick, useAttrs } from 'vue'
|
|
76
|
-
import { useDisplay } from 'vuetify'
|
|
77
|
-
|
|
78
|
-
const visible = ref(false)
|
|
79
|
-
const display = useDisplay()
|
|
80
|
-
const attrs = useAttrs()
|
|
81
|
-
|
|
82
|
-
// Déclaration des props
|
|
83
|
-
const props = defineProps({
|
|
84
|
-
titre: {
|
|
85
|
-
type: String,
|
|
86
|
-
default: '',
|
|
87
|
-
required: false,
|
|
88
|
-
},
|
|
89
|
-
btnAnnuler: {
|
|
90
|
-
type: Boolean,
|
|
91
|
-
default: true,
|
|
92
|
-
required: false,
|
|
93
|
-
},
|
|
94
|
-
btnOk: {
|
|
95
|
-
type: Boolean,
|
|
96
|
-
default: true,
|
|
97
|
-
required: false,
|
|
98
|
-
},
|
|
99
|
-
btnAnnulerTexte: {
|
|
100
|
-
type: String,
|
|
101
|
-
default: '',
|
|
102
|
-
required: false,
|
|
103
|
-
},
|
|
104
|
-
btnOkDesactiver: {
|
|
105
|
-
type: Boolean,
|
|
106
|
-
default: false,
|
|
107
|
-
required: false,
|
|
108
|
-
},
|
|
109
|
-
operationEnCours: { type: Boolean, default: false },
|
|
110
|
-
persistant: { type: Boolean, default: true },
|
|
111
|
-
btnOkTexte: {
|
|
112
|
-
type: String,
|
|
113
|
-
default: '',
|
|
114
|
-
required: false,
|
|
115
|
-
},
|
|
116
|
-
retourEnHaut: {
|
|
117
|
-
type: Boolean,
|
|
118
|
-
default: true,
|
|
119
|
-
},
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
// Déclaration des événements
|
|
123
|
-
const emit = defineEmits(['fermer', 'ok'])
|
|
124
|
-
|
|
125
|
-
// Back to top
|
|
126
|
-
const afficherBoutonHaut = ref(false)
|
|
127
|
-
let conteneurScroll: Element | null = null
|
|
128
|
-
|
|
129
|
-
function onScroll() {
|
|
130
|
-
afficherBoutonHaut.value = (conteneurScroll?.scrollTop ?? 0) > 350
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function allerEnHaut() {
|
|
134
|
-
conteneurScroll?.scrollTo({ top: 0, behavior: 'smooth' })
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
watch(visible, async val => {
|
|
138
|
-
if (!props.retourEnHaut) return
|
|
139
|
-
if (val) {
|
|
140
|
-
await nextTick()
|
|
141
|
-
conteneurScroll = document.querySelector('.v-navigation-drawer--active .v-navigation-drawer__content')
|
|
142
|
-
conteneurScroll?.addEventListener('scroll', onScroll)
|
|
143
|
-
} else {
|
|
144
|
-
conteneurScroll?.removeEventListener('scroll', onScroll)
|
|
145
|
-
conteneurScroll = null
|
|
146
|
-
afficherBoutonHaut.value = false
|
|
147
|
-
}
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
// Méthodes
|
|
151
|
-
const ouvrir = () => {
|
|
152
|
-
visible.value = true
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const fermer = () => {
|
|
156
|
-
visible.value = false
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const fermeture = () => {
|
|
160
|
-
emit('fermer')
|
|
161
|
-
fermer()
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const okBouton = () => {
|
|
165
|
-
emit('ok')
|
|
166
|
-
fermer()
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Calcul des tailles du tiroir en fonction du breakpoint
|
|
170
|
-
const grosseurTiroir = computed(() => {
|
|
171
|
-
if (attrs.width !== undefined && attrs.width !== null) return attrs.width as string | number
|
|
172
|
-
switch (display.name.value) {
|
|
173
|
-
case 'xs':
|
|
174
|
-
return ''
|
|
175
|
-
case 'sm':
|
|
176
|
-
return 0.95 * display.width.value
|
|
177
|
-
case 'md':
|
|
178
|
-
return 0.8 * display.width.value
|
|
179
|
-
case 'lg':
|
|
180
|
-
return 0.7 * display.width.value
|
|
181
|
-
case 'xl':
|
|
182
|
-
return 0.6 * display.width.value
|
|
183
|
-
case 'xxl':
|
|
184
|
-
return 0.5 * display.width.value
|
|
185
|
-
default:
|
|
186
|
-
return ''
|
|
187
|
-
}
|
|
188
|
-
})
|
|
189
|
-
|
|
190
|
-
defineExpose({ ouvrir, fermer })
|
|
191
|
-
</script>
|
|
192
|
-
|
|
193
|
-
<style>
|
|
194
|
-
.csqc-ligneBleue {
|
|
195
|
-
border-left: 30px #095797 solid !important;
|
|
196
|
-
}
|
|
197
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<v-navigation-drawer
|
|
3
|
+
v-model="visible"
|
|
4
|
+
location="right"
|
|
5
|
+
temporary
|
|
6
|
+
class="pa-0 elevation-2 csqc-ligneBleue"
|
|
7
|
+
:persistent="persistant"
|
|
8
|
+
v-bind="$attrs"
|
|
9
|
+
:width="grosseurTiroir"
|
|
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 iconeHover"
|
|
19
|
+
style="right: 5px; top: 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
|
+
<Teleport to="body">
|
|
64
|
+
<v-fab
|
|
65
|
+
v-if="retourEnHaut && afficherBoutonHaut"
|
|
66
|
+
style="bottom: 24px; position: fixed; right: 24px; z-index: 2000"
|
|
67
|
+
elevation="8"
|
|
68
|
+
color="primary"
|
|
69
|
+
icon="mdi-arrow-up"
|
|
70
|
+
@click="allerEnHaut"
|
|
71
|
+
/>
|
|
72
|
+
</Teleport>
|
|
73
|
+
</template>
|
|
74
|
+
<script lang="ts" setup>
|
|
75
|
+
import { ref, computed, watch, nextTick, useAttrs } from 'vue'
|
|
76
|
+
import { useDisplay } from 'vuetify'
|
|
77
|
+
|
|
78
|
+
const visible = ref(false)
|
|
79
|
+
const display = useDisplay()
|
|
80
|
+
const attrs = useAttrs()
|
|
81
|
+
|
|
82
|
+
// Déclaration des props
|
|
83
|
+
const props = defineProps({
|
|
84
|
+
titre: {
|
|
85
|
+
type: String,
|
|
86
|
+
default: '',
|
|
87
|
+
required: false,
|
|
88
|
+
},
|
|
89
|
+
btnAnnuler: {
|
|
90
|
+
type: Boolean,
|
|
91
|
+
default: true,
|
|
92
|
+
required: false,
|
|
93
|
+
},
|
|
94
|
+
btnOk: {
|
|
95
|
+
type: Boolean,
|
|
96
|
+
default: true,
|
|
97
|
+
required: false,
|
|
98
|
+
},
|
|
99
|
+
btnAnnulerTexte: {
|
|
100
|
+
type: String,
|
|
101
|
+
default: '',
|
|
102
|
+
required: false,
|
|
103
|
+
},
|
|
104
|
+
btnOkDesactiver: {
|
|
105
|
+
type: Boolean,
|
|
106
|
+
default: false,
|
|
107
|
+
required: false,
|
|
108
|
+
},
|
|
109
|
+
operationEnCours: { type: Boolean, default: false },
|
|
110
|
+
persistant: { type: Boolean, default: true },
|
|
111
|
+
btnOkTexte: {
|
|
112
|
+
type: String,
|
|
113
|
+
default: '',
|
|
114
|
+
required: false,
|
|
115
|
+
},
|
|
116
|
+
retourEnHaut: {
|
|
117
|
+
type: Boolean,
|
|
118
|
+
default: true,
|
|
119
|
+
},
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
// Déclaration des événements
|
|
123
|
+
const emit = defineEmits(['fermer', 'ok'])
|
|
124
|
+
|
|
125
|
+
// Back to top
|
|
126
|
+
const afficherBoutonHaut = ref(false)
|
|
127
|
+
let conteneurScroll: Element | null = null
|
|
128
|
+
|
|
129
|
+
function onScroll() {
|
|
130
|
+
afficherBoutonHaut.value = (conteneurScroll?.scrollTop ?? 0) > 350
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function allerEnHaut() {
|
|
134
|
+
conteneurScroll?.scrollTo({ top: 0, behavior: 'smooth' })
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
watch(visible, async val => {
|
|
138
|
+
if (!props.retourEnHaut) return
|
|
139
|
+
if (val) {
|
|
140
|
+
await nextTick()
|
|
141
|
+
conteneurScroll = document.querySelector('.v-navigation-drawer--active .v-navigation-drawer__content')
|
|
142
|
+
conteneurScroll?.addEventListener('scroll', onScroll)
|
|
143
|
+
} else {
|
|
144
|
+
conteneurScroll?.removeEventListener('scroll', onScroll)
|
|
145
|
+
conteneurScroll = null
|
|
146
|
+
afficherBoutonHaut.value = false
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
// Méthodes
|
|
151
|
+
const ouvrir = () => {
|
|
152
|
+
visible.value = true
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const fermer = () => {
|
|
156
|
+
visible.value = false
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const fermeture = () => {
|
|
160
|
+
emit('fermer')
|
|
161
|
+
fermer()
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const okBouton = () => {
|
|
165
|
+
emit('ok')
|
|
166
|
+
fermer()
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Calcul des tailles du tiroir en fonction du breakpoint
|
|
170
|
+
const grosseurTiroir = computed(() => {
|
|
171
|
+
if (attrs.width !== undefined && attrs.width !== null) return attrs.width as string | number
|
|
172
|
+
switch (display.name.value) {
|
|
173
|
+
case 'xs':
|
|
174
|
+
return ''
|
|
175
|
+
case 'sm':
|
|
176
|
+
return 0.95 * display.width.value
|
|
177
|
+
case 'md':
|
|
178
|
+
return 0.8 * display.width.value
|
|
179
|
+
case 'lg':
|
|
180
|
+
return 0.7 * display.width.value
|
|
181
|
+
case 'xl':
|
|
182
|
+
return 0.6 * display.width.value
|
|
183
|
+
case 'xxl':
|
|
184
|
+
return 0.5 * display.width.value
|
|
185
|
+
default:
|
|
186
|
+
return ''
|
|
187
|
+
}
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
defineExpose({ ouvrir, fermer })
|
|
191
|
+
</script>
|
|
192
|
+
|
|
193
|
+
<style>
|
|
194
|
+
.csqc-ligneBleue {
|
|
195
|
+
border-left: 30px #095797 solid !important;
|
|
196
|
+
}
|
|
197
|
+
</style>
|
|
@@ -238,9 +238,9 @@
|
|
|
238
238
|
}
|
|
239
239
|
/* desktop */
|
|
240
240
|
.params_item {
|
|
241
|
-
font-weight: 400;
|
|
242
|
-
color: white !important;
|
|
243
241
|
background-color: #223654 !important;
|
|
242
|
+
color: white !important;
|
|
243
|
+
font-weight: 400;
|
|
244
244
|
}
|
|
245
245
|
/* desktop */
|
|
246
246
|
.params_item.v-btn--active {
|
|
@@ -249,8 +249,8 @@
|
|
|
249
249
|
}
|
|
250
250
|
/* desktop */
|
|
251
251
|
.params_item.v-btn--active:hover {
|
|
252
|
-
color: white !important;
|
|
253
252
|
background-color: #223654 !important;
|
|
253
|
+
color: white !important;
|
|
254
254
|
}
|
|
255
255
|
/* desktop */
|
|
256
256
|
.params_item.v-btn--active:hover::before {
|
|
@@ -258,10 +258,10 @@
|
|
|
258
258
|
}
|
|
259
259
|
/* desktop */
|
|
260
260
|
.params_item.v-btn--active::before {
|
|
261
|
-
opacity: 0.24;
|
|
262
261
|
border-radius: 0;
|
|
263
262
|
color: #ffffff80 !important;
|
|
264
263
|
margin-top: 1px !important;
|
|
264
|
+
opacity: 0.24;
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
/* mobile couleur du texte de la barre, marge du haut, padding */
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
elevation="1"
|
|
6
6
|
>
|
|
7
7
|
<v-row
|
|
8
|
-
class="pl-6 pr-6"
|
|
9
|
-
align="center"
|
|
8
|
+
class="pl-6 pr-6 align-center"
|
|
10
9
|
no-gutters
|
|
11
10
|
>
|
|
12
11
|
<!-- Première colonne : Logo -->
|
|
@@ -24,8 +23,8 @@
|
|
|
24
23
|
<!-- On ne rend l'image qu'une fois la source choisie -->
|
|
25
24
|
<img
|
|
26
25
|
v-else
|
|
27
|
-
class="logo-img"
|
|
28
26
|
id="pivImage"
|
|
27
|
+
class="logo-img"
|
|
29
28
|
:src="currentSrc!"
|
|
30
29
|
:alt="$t('csqc.pivFooter.logoAlt')"
|
|
31
30
|
decoding="async"
|
|
@@ -52,6 +51,7 @@
|
|
|
52
51
|
<v-col class="d-none d-flex justify-end">
|
|
53
52
|
<!-- langue -->
|
|
54
53
|
<v-btn
|
|
54
|
+
v-if="props.estVisibleLangue"
|
|
55
55
|
variant="text"
|
|
56
56
|
@click="enregistrerLangue()"
|
|
57
57
|
>{{ $t('csqc.pivEntete.langue') }}
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
const { current } = useLocale()
|
|
93
93
|
const props = defineProps({
|
|
94
94
|
estMobile: { type: Boolean, default: false },
|
|
95
|
+
estVisibleLangue: { type: Boolean, default: true },
|
|
95
96
|
urlBase: { type: String, required: true },
|
|
96
97
|
aideUrl: { type: String, default: '' },
|
|
97
98
|
cssUrl: { type: String, default: '' },
|
|
@@ -197,9 +198,9 @@
|
|
|
197
198
|
width: 180px;
|
|
198
199
|
}
|
|
199
200
|
.logo-img {
|
|
201
|
+
display: block;
|
|
200
202
|
height: 72px;
|
|
201
|
-
transition: opacity 0.15s;
|
|
202
203
|
opacity: 1;
|
|
203
|
-
|
|
204
|
+
transition: opacity 0.15s;
|
|
204
205
|
}
|
|
205
206
|
</style>
|
|
@@ -1,33 +1,48 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<footer>
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
<v-row>
|
|
4
|
+
<!-- slot gauche -->
|
|
5
|
+
<v-col cols="3">
|
|
6
|
+
<slot name="gauche" />
|
|
7
|
+
</v-col>
|
|
8
|
+
|
|
9
|
+
<!-- colonne centrale pour logo Quebec et versions -->
|
|
10
|
+
<v-col cols="6">
|
|
11
|
+
<div class="footer-content">
|
|
12
|
+
<a href="https://quebec.ca">
|
|
13
|
+
<img
|
|
14
|
+
id="logoFooter"
|
|
15
|
+
alt="Gouvernement du Québec."
|
|
16
|
+
src="/images/QUEBEC_couleur.svg"
|
|
17
|
+
width="117"
|
|
18
|
+
height="35"
|
|
19
|
+
/>
|
|
19
20
|
</a>
|
|
21
|
+
<div>
|
|
22
|
+
<small>
|
|
23
|
+
<a
|
|
24
|
+
href="http://www.droitauteur.gouv.qc.ca/copyright.php"
|
|
25
|
+
target="_blank"
|
|
26
|
+
>© Gouvernement du Québec {{ anneeEnCours }}
|
|
27
|
+
</a>
|
|
28
|
+
|
|
29
|
+
<a
|
|
30
|
+
v-if="props.version"
|
|
31
|
+
:href="props.lien"
|
|
32
|
+
target="_blank"
|
|
33
|
+
><br />
|
|
34
|
+
version <span v-html="props.version"
|
|
35
|
+
/></a>
|
|
36
|
+
</small>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</v-col>
|
|
20
40
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
version <span v-html="props.version"
|
|
27
|
-
/></a>
|
|
28
|
-
</small>
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
41
|
+
<!-- slot droite -->
|
|
42
|
+
<v-col cols="3">
|
|
43
|
+
<slot name="droite" />
|
|
44
|
+
</v-col>
|
|
45
|
+
</v-row>
|
|
31
46
|
</footer>
|
|
32
47
|
</template>
|
|
33
48
|
|
|
@@ -46,18 +61,18 @@
|
|
|
46
61
|
|
|
47
62
|
<style scoped>
|
|
48
63
|
footer {
|
|
64
|
+
align-items: center; /* Centrer verticalement */
|
|
49
65
|
display: flex;
|
|
66
|
+
height: 100px; /* Ajuster la hauteur du footer */
|
|
50
67
|
justify-content: center; /* Centrer horizontalement */
|
|
51
|
-
align-items: center; /* Centrer verticalement */
|
|
52
68
|
text-align: center; /* Centrer le texte à l'intérieur des éléments */
|
|
53
|
-
height: 100px; /* Ajuster la hauteur du footer */
|
|
54
69
|
}
|
|
55
70
|
|
|
56
71
|
.footer-content {
|
|
72
|
+
align-items: center; /* Centrer horizontalement à l'intérieur de .footer-content */
|
|
57
73
|
display: flex;
|
|
58
74
|
flex-direction: column; /* Disposer les éléments les uns sous les autres */
|
|
59
75
|
justify-content: center; /* Centrer verticalement à l'intérieur de .footer-content */
|
|
60
|
-
align-items: center; /* Centrer horizontalement à l'intérieur de .footer-content */
|
|
61
76
|
}
|
|
62
77
|
|
|
63
78
|
footer a {
|
|
@@ -35,7 +35,10 @@ export function estMinimumLongueur(valeur: string, min: number, t: (key: string,
|
|
|
35
35
|
'CsqcValidateurs (estMinimumLongeur) - Une valeur négative ou égale à 0 a été reçue. Assurez-vous de passer une valeur supérieur à 0 dans la fonction estMinimumLongeur. La valeur a été mise à 1.',
|
|
36
36
|
)
|
|
37
37
|
}
|
|
38
|
-
return (
|
|
38
|
+
return (
|
|
39
|
+
(valeur && valeur.trim().length >= min) ||
|
|
40
|
+
t('csqc.validateurs.estMinimumLongueur', { count: min, nbCaracteres: min })
|
|
41
|
+
)
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
/**
|
|
@@ -52,7 +55,10 @@ export function estMaximumLongueur(valeur: string, max: number, t: (key: string,
|
|
|
52
55
|
)
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
return (
|
|
58
|
+
return (
|
|
59
|
+
(valeur && valeur.trim().length <= max) ||
|
|
60
|
+
t('csqc.validateurs.estMaximumLongueur', { count: max, nbCaracteres: max })
|
|
61
|
+
)
|
|
56
62
|
}
|
|
57
63
|
|
|
58
64
|
/**
|
package/editeur.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as csqcEditeurTexteRiche } from './composants/csqcEditeurTexteRiche.vue'
|
|
1
|
+
export { default as csqcEditeurTexteRiche } from './composants/csqcEditeurTexteRiche.vue'
|
package/importCSV.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as csqcImportCSV } from './composants/csqcImportCSV.vue'
|
|
1
|
+
export { default as csqcImportCSV } from './composants/csqcImportCSV.vue'
|