codevdesign 1.0.38 → 1.0.40

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,213 +1,213 @@
1
- <template>
2
- <div>
3
- <v-row
4
- dense
5
- class="pt-0 mt-0"
6
- >
7
- <v-col
8
- cols="12"
9
- sm="auto"
10
- >
11
- <slot name="recherche"></slot>
12
- <v-text-field
13
- v-if="afficher"
14
- v-model="rechercheLocale"
15
- :label="rechercheTexte ? rechercheTexte : $t('csqc.label.recherche')"
16
- single-line
17
- density="compact"
18
- hide-details
19
- v-bind="$attrs"
20
- clearable
21
- :rounded="0"
22
- variant="outlined"
23
- max-width="640"
24
- min-width="500"
25
- class="BarreRecherche"
26
- :loading="chargement"
27
- :disabled="chargement || desactiver"
28
- >
29
- <template #append>
30
- <v-btn
31
- class="BarreRechercheBackIcone"
32
- :loading="chargement"
33
- :disabled="chargement || desactiver"
34
- >
35
- <v-icon
36
- class="BarreRechercheIcone"
37
- icon="mdi-magnify"
38
- />
39
- </v-btn>
40
- </template>
41
- </v-text-field>
42
- </v-col>
43
- <!-- Entre recherche et ajouté-->
44
- <v-col
45
- cols="12"
46
- sm="auto"
47
- class="pt-1 mt-0 pb-0 mb-0"
48
- >
49
- <slot name="milieu" />
50
- </v-col>
51
-
52
- <!-- Affichage des boutons et icônes-->
53
- <v-col
54
- cols="12"
55
- sm="auto"
56
- class="flex-grow-1 d-flex justify-end"
57
- >
58
- <slot name="droite" />
59
- </v-col>
60
- </v-row>
61
- <v-row
62
- dense
63
- class="pt-0 mt-0"
64
- >
65
- <v-col
66
- cols="12"
67
- :lg="rechercheAvanceeLargeur"
68
- >
69
- <v-expansion-panels
70
- v-if="rechercheAvancee"
71
- static
72
- :readonly="chargement || desactiver"
73
- expand-icon=""
74
- @update:model-value="onPanelChange"
75
- >
76
- <v-expansion-panel
77
- flat
78
- elevation="0"
79
- >
80
- <v-expansion-panel-title
81
- style="color: #095797"
82
- class="pl-0 ml-0"
83
- ><slot name="rechercheAvanceeTitre">
84
- <span
85
- style="text-decoration: underline"
86
- v-html="rechercheAvanceeTexte ? rechercheAvanceeTexte : $t('csqc.label.rechercheAvanceeDefaut')"
87
- ></span>
88
- <slot name="rechercheAvanceeApresTitre"></slot
89
- ></slot>
90
- </v-expansion-panel-title>
91
- <v-expansion-panel-text :style="rechercheAvanceeStyle">
92
- <slot name="rechercheAvancee"></slot>
93
- </v-expansion-panel-text>
94
- </v-expansion-panel>
95
- </v-expansion-panels>
96
- </v-col>
97
- </v-row>
98
- </div>
99
- </template>
100
-
101
- <script lang="ts" setup>
102
- import { ref, watch } from 'vue'
103
-
104
- // Props
105
- const props = defineProps({
106
- afficher: {
107
- type: Boolean,
108
- required: false,
109
- default: true,
110
- },
111
- rechercheTexte: {
112
- type: String,
113
- required: false,
114
- default: '',
115
- },
116
- rechercheAvanceeTexte: {
117
- type: String,
118
- required: false,
119
- default: '',
120
- },
121
- rechercheAvanceeLargeur: {
122
- type: Number,
123
- required: false,
124
- default: 12,
125
- },
126
- chargement: {
127
- type: Boolean,
128
- required: false,
129
- default: false,
130
- },
131
- desactiver: {
132
- type: Boolean,
133
- required: false,
134
- default: false,
135
- },
136
- recherche: {
137
- type: String,
138
- required: false,
139
- default: '',
140
- },
141
- rechercheAvancee: {
142
- type: Boolean,
143
- required: false,
144
- default: false,
145
- },
146
- rechercheAvanceeStyle: {
147
- type: String,
148
- required: false,
149
- default: '',
150
- },
151
- })
152
-
153
- const emit = defineEmits<{
154
- (e: 'update:recherche', recherche: string): void
155
- (e: 'panneau:etat', isOpen: boolean): void // événement pour l'ouverture/fermeture du panneau
156
- }>()
157
-
158
- // Création d'une variable locale pour gérer la recherche
159
- const rechercheLocale = ref(props.recherche)
160
-
161
- // Surveiller les changements de la prop `recherche` et mettre à jour `rechercheLocale`
162
- watch(
163
- () => props.recherche,
164
- nouvelleValeur => {
165
- rechercheLocale.value = nouvelleValeur
166
- },
167
- )
168
-
169
- // Émettre l'événement `update:recherche` chaque fois que l'utilisateur tape
170
- watch(rechercheLocale, nouvelleValeur => {
171
- emit('update:recherche', nouvelleValeur!)
172
- })
173
-
174
- // Fonction pour émettre l'événement d'ouverture/fermeture du panneau
175
- const onPanelChange = (val: unknown) => {
176
- if (typeof val === 'string' || typeof val === 'number' || val === null) {
177
- const isOpen = val !== null && val !== ''
178
- emit('panneau:etat', isOpen)
179
- } else {
180
- emit('panneau:etat', false)
181
- }
182
- }
183
- </script>
184
-
185
- <style lang="css">
186
- /* barre de recherche design QC*/
187
- .BarreRecherche {
188
- min-height: 40px;
189
- }
190
-
191
- .BarreRechercheBackIcone {
192
- border-right: 1px solid #808a9d;
193
- border-top: 1px solid #808a9d;
194
- border-bottom: 1px solid #808a9d;
195
- background-color: #095797 !important;
196
- height: 40px !important;
197
- width: 40px !important;
198
- max-width: 40px !important;
199
- min-width: 40px !important;
200
- padding-right: 0 !important;
201
- padding-left: 0 !important;
202
- border-radius: 0;
203
- margin-left: -16px;
204
- }
205
-
206
- /* icone loupe */
207
- .BarreRechercheIcone {
208
- font-size: 34px !important;
209
- margin-left: 1px !important;
210
- margin-top: 2px !important;
211
- color: white !important;
212
- }
213
- </style>
1
+ <template>
2
+ <div>
3
+ <v-row
4
+ dense
5
+ class="pt-0 mt-0"
6
+ >
7
+ <v-col
8
+ cols="12"
9
+ sm="auto"
10
+ >
11
+ <slot name="recherche"></slot>
12
+ <v-text-field
13
+ v-if="afficher"
14
+ v-model="rechercheLocale"
15
+ :label="rechercheTexte ? rechercheTexte : $t('csqc.label.recherche')"
16
+ single-line
17
+ density="compact"
18
+ hide-details
19
+ v-bind="$attrs"
20
+ clearable
21
+ :rounded="0"
22
+ variant="outlined"
23
+ max-width="640"
24
+ min-width="500"
25
+ class="BarreRecherche"
26
+ :loading="chargement"
27
+ :disabled="chargement || desactiver"
28
+ >
29
+ <template #append>
30
+ <v-btn
31
+ class="BarreRechercheBackIcone"
32
+ :loading="chargement"
33
+ :disabled="chargement || desactiver"
34
+ >
35
+ <v-icon
36
+ class="BarreRechercheIcone"
37
+ icon="mdi-magnify"
38
+ />
39
+ </v-btn>
40
+ </template>
41
+ </v-text-field>
42
+ </v-col>
43
+ <!-- Entre recherche et ajouté-->
44
+ <v-col
45
+ cols="12"
46
+ sm="auto"
47
+ class="pt-1 mt-0 pb-0 mb-0"
48
+ >
49
+ <slot name="milieu" />
50
+ </v-col>
51
+
52
+ <!-- Affichage des boutons et icônes-->
53
+ <v-col
54
+ cols="12"
55
+ sm="auto"
56
+ class="flex-grow-1 d-flex justify-end"
57
+ >
58
+ <slot name="droite" />
59
+ </v-col>
60
+ </v-row>
61
+ <v-row
62
+ dense
63
+ class="pt-0 mt-0"
64
+ >
65
+ <v-col
66
+ cols="12"
67
+ :lg="rechercheAvanceeLargeur"
68
+ >
69
+ <v-expansion-panels
70
+ v-if="rechercheAvancee"
71
+ static
72
+ :readonly="chargement || desactiver"
73
+ expand-icon=""
74
+ @update:model-value="onPanelChange"
75
+ >
76
+ <v-expansion-panel
77
+ flat
78
+ elevation="0"
79
+ >
80
+ <v-expansion-panel-title
81
+ style="color: #095797"
82
+ class="pl-0 ml-0"
83
+ ><slot name="rechercheAvanceeTitre">
84
+ <span
85
+ style="text-decoration: underline"
86
+ v-html="rechercheAvanceeTexte ? rechercheAvanceeTexte : $t('csqc.label.rechercheAvanceeDefaut')"
87
+ ></span>
88
+ <slot name="rechercheAvanceeApresTitre"></slot
89
+ ></slot>
90
+ </v-expansion-panel-title>
91
+ <v-expansion-panel-text :style="rechercheAvanceeStyle">
92
+ <slot name="rechercheAvancee"></slot>
93
+ </v-expansion-panel-text>
94
+ </v-expansion-panel>
95
+ </v-expansion-panels>
96
+ </v-col>
97
+ </v-row>
98
+ </div>
99
+ </template>
100
+
101
+ <script lang="ts" setup>
102
+ import { ref, watch } from 'vue'
103
+
104
+ // Props
105
+ const props = defineProps({
106
+ afficher: {
107
+ type: Boolean,
108
+ required: false,
109
+ default: true,
110
+ },
111
+ rechercheTexte: {
112
+ type: String,
113
+ required: false,
114
+ default: '',
115
+ },
116
+ rechercheAvanceeTexte: {
117
+ type: String,
118
+ required: false,
119
+ default: '',
120
+ },
121
+ rechercheAvanceeLargeur: {
122
+ type: Number,
123
+ required: false,
124
+ default: 12,
125
+ },
126
+ chargement: {
127
+ type: Boolean,
128
+ required: false,
129
+ default: false,
130
+ },
131
+ desactiver: {
132
+ type: Boolean,
133
+ required: false,
134
+ default: false,
135
+ },
136
+ recherche: {
137
+ type: String,
138
+ required: false,
139
+ default: '',
140
+ },
141
+ rechercheAvancee: {
142
+ type: Boolean,
143
+ required: false,
144
+ default: false,
145
+ },
146
+ rechercheAvanceeStyle: {
147
+ type: String,
148
+ required: false,
149
+ default: '',
150
+ },
151
+ })
152
+
153
+ const emit = defineEmits<{
154
+ (e: 'update:recherche', recherche: string): void
155
+ (e: 'panneau:etat', isOpen: boolean): void // événement pour l'ouverture/fermeture du panneau
156
+ }>()
157
+
158
+ // Création d'une variable locale pour gérer la recherche
159
+ const rechercheLocale = ref(props.recherche)
160
+
161
+ // Surveiller les changements de la prop `recherche` et mettre à jour `rechercheLocale`
162
+ watch(
163
+ () => props.recherche,
164
+ nouvelleValeur => {
165
+ rechercheLocale.value = nouvelleValeur
166
+ },
167
+ )
168
+
169
+ // Émettre l'événement `update:recherche` chaque fois que l'utilisateur tape
170
+ watch(rechercheLocale, nouvelleValeur => {
171
+ emit('update:recherche', nouvelleValeur!)
172
+ })
173
+
174
+ // Fonction pour émettre l'événement d'ouverture/fermeture du panneau
175
+ const onPanelChange = (val: unknown) => {
176
+ if (typeof val === 'string' || typeof val === 'number' || val === null) {
177
+ const isOpen = val !== null && val !== ''
178
+ emit('panneau:etat', isOpen)
179
+ } else {
180
+ emit('panneau:etat', false)
181
+ }
182
+ }
183
+ </script>
184
+
185
+ <style lang="css">
186
+ /* barre de recherche design QC*/
187
+ .BarreRecherche {
188
+ min-height: 40px;
189
+ }
190
+
191
+ .BarreRechercheBackIcone {
192
+ border-right: 1px solid #808a9d;
193
+ border-top: 1px solid #808a9d;
194
+ border-bottom: 1px solid #808a9d;
195
+ background-color: #095797 !important;
196
+ height: 40px !important;
197
+ width: 40px !important;
198
+ max-width: 40px !important;
199
+ min-width: 40px !important;
200
+ padding-right: 0 !important;
201
+ padding-left: 0 !important;
202
+ border-radius: 0;
203
+ margin-left: -16px;
204
+ }
205
+
206
+ /* icone loupe */
207
+ .BarreRechercheIcone {
208
+ font-size: 34px !important;
209
+ margin-left: 1px !important;
210
+ margin-top: 2px !important;
211
+ color: white !important;
212
+ }
213
+ </style>