codevdesign 0.0.14 → 0.0.16
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/README.md +117 -117
- package/composants/csqcAlerteErreur.vue +86 -86
- package/composants/csqcChaise/chaiseConteneur.vue +330 -330
- package/composants/csqcChaise/chaiseItem.vue +53 -53
- package/composants/csqcConfirmation.vue +74 -74
- package/composants/csqcDialogue.vue +118 -118
- package/composants/csqcOptionSwitch.vue +113 -113
- package/composants/csqcRecherche.vue +158 -158
- package/composants/csqcSnackbar.vue +99 -99
- package/composants/csqcTable/csqcTable.vue +342 -342
- package/composants/csqcTable/csqcTableExportExcel.vue +58 -58
- package/composants/csqcTiroir.vue +150 -150
- package/composants/gabarit/csqcMenu.vue +241 -241
- package/composants/gabarit/pivEntete.vue +111 -111
- package/index.ts +42 -42
- package/modeles/composants/datatableColonne.ts +14 -14
- package/modeles/composants/snackbar.ts +18 -18
- package/modeles/intervention.ts +38 -38
- package/modeles/unite.ts +42 -42
- package/modeles/utilisateur.ts +33 -33
- package/package.json +1 -1
|
@@ -1,241 +1,241 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<!-- desktop -->
|
|
3
|
-
<div v-if="!estMobile">
|
|
4
|
-
<v-toolbar
|
|
5
|
-
class="pa-0 ajouterPointeur barreMenu"
|
|
6
|
-
:border="false"
|
|
7
|
-
elevation="2"
|
|
8
|
-
>
|
|
9
|
-
<div
|
|
10
|
-
v-for="item in filtrerMenuItems"
|
|
11
|
-
:key="item.title"
|
|
12
|
-
class="pt-1"
|
|
13
|
-
>
|
|
14
|
-
<v-btn
|
|
15
|
-
variant="text"
|
|
16
|
-
v-if="doitAfficherItemMenu(item)"
|
|
17
|
-
:to="item.path"
|
|
18
|
-
:active="item.path === route"
|
|
19
|
-
:active-color="'white'"
|
|
20
|
-
>{{ item.title }}</v-btn
|
|
21
|
-
>
|
|
22
|
-
</div>
|
|
23
|
-
<v-spacer></v-spacer>
|
|
24
|
-
<!-- Sous Liste -->
|
|
25
|
-
<v-menu
|
|
26
|
-
open-on-hover
|
|
27
|
-
v-for="(item, index) in filtrerSousListe"
|
|
28
|
-
:key="index"
|
|
29
|
-
>
|
|
30
|
-
<template v-slot:activator="{ props }">
|
|
31
|
-
<v-btn
|
|
32
|
-
color="white"
|
|
33
|
-
v-bind="props"
|
|
34
|
-
:active="estActifSousliste"
|
|
35
|
-
>
|
|
36
|
-
{{ item.nom }}
|
|
37
|
-
</v-btn>
|
|
38
|
-
</template>
|
|
39
|
-
|
|
40
|
-
<v-list
|
|
41
|
-
style="background-color: #223654 !important"
|
|
42
|
-
min-width="230px"
|
|
43
|
-
>
|
|
44
|
-
<v-list-item
|
|
45
|
-
v-for="(sousitem, sousindex) in obtenirItemsSousListeSelonDroits(item.id)"
|
|
46
|
-
:key="sousindex"
|
|
47
|
-
>
|
|
48
|
-
<v-btn
|
|
49
|
-
:max-height="35"
|
|
50
|
-
width="100%"
|
|
51
|
-
class="params_item"
|
|
52
|
-
:to="sousitem.path"
|
|
53
|
-
variant="text"
|
|
54
|
-
>{{ sousitem.title }}</v-btn
|
|
55
|
-
>
|
|
56
|
-
</v-list-item>
|
|
57
|
-
</v-list>
|
|
58
|
-
</v-menu>
|
|
59
|
-
</v-toolbar>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
<!-- mobile -->
|
|
63
|
-
<div v-else>
|
|
64
|
-
<v-toolbar class="pa-0 ajouterPointeur barreMenuMobile">
|
|
65
|
-
<v-app-bar-nav-icon
|
|
66
|
-
variant="text"
|
|
67
|
-
@click.stop="menu = !menu"
|
|
68
|
-
></v-app-bar-nav-icon>
|
|
69
|
-
<v-toolbar-title
|
|
70
|
-
><label
|
|
71
|
-
class="ajouterPointeur"
|
|
72
|
-
style="color: white !important"
|
|
73
|
-
>{{ $t('menu.menu') }}</label
|
|
74
|
-
>
|
|
75
|
-
</v-toolbar-title>
|
|
76
|
-
</v-toolbar>
|
|
77
|
-
|
|
78
|
-
<v-navigation-drawer v-model="menu">
|
|
79
|
-
<v-list>
|
|
80
|
-
<div
|
|
81
|
-
v-for="item in filtrerMenuItems"
|
|
82
|
-
:key="item.title"
|
|
83
|
-
>
|
|
84
|
-
<v-list-item
|
|
85
|
-
:to="item.path"
|
|
86
|
-
:active="item.path === route"
|
|
87
|
-
:title="item.title"
|
|
88
|
-
/>
|
|
89
|
-
</div>
|
|
90
|
-
<div
|
|
91
|
-
v-for="item in filtrerSousListe"
|
|
92
|
-
:key="item.id"
|
|
93
|
-
>
|
|
94
|
-
<v-list-group :value="item.nom">
|
|
95
|
-
<template v-slot:activator="{ props }">
|
|
96
|
-
<v-list-item
|
|
97
|
-
v-bind="props"
|
|
98
|
-
:title="item.nom"
|
|
99
|
-
/>
|
|
100
|
-
</template>
|
|
101
|
-
<div
|
|
102
|
-
v-for="(sousitem, index) in obtenirItemsSousListeSelonDroits(item.id)"
|
|
103
|
-
:key="index"
|
|
104
|
-
>
|
|
105
|
-
<v-list-item
|
|
106
|
-
:title="sousitem.title"
|
|
107
|
-
:value="sousitem.title"
|
|
108
|
-
:to="sousitem.path"
|
|
109
|
-
/>
|
|
110
|
-
</div>
|
|
111
|
-
</v-list-group>
|
|
112
|
-
</div>
|
|
113
|
-
</v-list>
|
|
114
|
-
</v-navigation-drawer>
|
|
115
|
-
</div>
|
|
116
|
-
</template>
|
|
117
|
-
|
|
118
|
-
<script setup lang="ts">
|
|
119
|
-
import type { MenuItem, SousListe, SousListeItems } from '../../modeles/composants/csqcMenuModele'
|
|
120
|
-
import { ref, computed } from 'vue'
|
|
121
|
-
const props = defineProps({
|
|
122
|
-
estMobile: {
|
|
123
|
-
type: Boolean,
|
|
124
|
-
required: true,
|
|
125
|
-
},
|
|
126
|
-
route: {
|
|
127
|
-
type: String,
|
|
128
|
-
required: true,
|
|
129
|
-
},
|
|
130
|
-
menuItems: {
|
|
131
|
-
type: Array as () => MenuItem[],
|
|
132
|
-
required: true,
|
|
133
|
-
},
|
|
134
|
-
sousliste: {
|
|
135
|
-
type: Array as () => SousListe[],
|
|
136
|
-
required: false,
|
|
137
|
-
default: () => [],
|
|
138
|
-
},
|
|
139
|
-
souslisteItems: {
|
|
140
|
-
type: Array as () => SousListeItems[],
|
|
141
|
-
required: false,
|
|
142
|
-
default: () => [],
|
|
143
|
-
},
|
|
144
|
-
droitsMap: {
|
|
145
|
-
type: Object as () => Record<string, boolean>,
|
|
146
|
-
required: true,
|
|
147
|
-
default: () => ({}),
|
|
148
|
-
},
|
|
149
|
-
})
|
|
150
|
-
const menu = ref<boolean>(false)
|
|
151
|
-
|
|
152
|
-
/*const verifierDroits = (monelement: string) => {
|
|
153
|
-
return props.droitsMap[monelement] || false
|
|
154
|
-
}*/
|
|
155
|
-
|
|
156
|
-
const doitAfficherItemMenu = (item: MenuItem) => {
|
|
157
|
-
return props.droitsMap[item.droit] || false
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const filtrerMenuItems = computed(() => {
|
|
161
|
-
return props.menuItems.filter(item => props.droitsMap[item.droit])
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
const filtrerSousListe = computed(() => {
|
|
165
|
-
return props.sousliste.filter(item => props.droitsMap[item.droit])
|
|
166
|
-
})
|
|
167
|
-
|
|
168
|
-
const obtenirItemsSousListeSelonDroits = (monitemId: number) => {
|
|
169
|
-
return props.souslisteItems.filter(item => item.parentId === monitemId && props.droitsMap[item.droit])
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// Vérifie si un item de la sous-liste est actif (route correspond à un item)
|
|
173
|
-
const estActifSousliste = computed(() => {
|
|
174
|
-
return props.souslisteItems.some(item => props.route === item.path)
|
|
175
|
-
})
|
|
176
|
-
</script>
|
|
177
|
-
<style lang="css" scoped>
|
|
178
|
-
/* desktop background de la barre de menu et hauteur */
|
|
179
|
-
.v-toolbar {
|
|
180
|
-
background-color: #223654;
|
|
181
|
-
height: 66px;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/* desktop couleur du texte de la barre, marge du haut, padding */
|
|
185
|
-
.barreMenu {
|
|
186
|
-
color: white !important;
|
|
187
|
-
padding: 0 10px 0 10px !important;
|
|
188
|
-
}
|
|
189
|
-
/* desktop */
|
|
190
|
-
.v-btn {
|
|
191
|
-
font-weight: 400;
|
|
192
|
-
height: 72px !important;
|
|
193
|
-
}
|
|
194
|
-
/* desktop */
|
|
195
|
-
.v-btn--active {
|
|
196
|
-
font-weight: 600 !important;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/* desktop empeche le texte parametre detre trop bas */
|
|
200
|
-
.params {
|
|
201
|
-
padding-top: 5px !important;
|
|
202
|
-
}
|
|
203
|
-
/* desktop */
|
|
204
|
-
.params_item {
|
|
205
|
-
font-weight: 400;
|
|
206
|
-
color: white !important;
|
|
207
|
-
background-color: #223654 !important;
|
|
208
|
-
}
|
|
209
|
-
/* desktop */
|
|
210
|
-
.params_item.v-btn--active {
|
|
211
|
-
color: white !important;
|
|
212
|
-
font-weight: 600 !important;
|
|
213
|
-
}
|
|
214
|
-
/* desktop */
|
|
215
|
-
.params_item.v-btn--active:hover {
|
|
216
|
-
color: white !important;
|
|
217
|
-
background-color: #223654 !important;
|
|
218
|
-
}
|
|
219
|
-
/* desktop */
|
|
220
|
-
.params_item.v-btn--active:hover::before {
|
|
221
|
-
color: #ffffff80 !important;
|
|
222
|
-
}
|
|
223
|
-
/* desktop */
|
|
224
|
-
.params_item.v-btn--active::before {
|
|
225
|
-
opacity: 0.24;
|
|
226
|
-
border-radius: 0;
|
|
227
|
-
color: #ffffff80 !important;
|
|
228
|
-
margin-top: 1px !important;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/* mobile couleur du texte de la barre, marge du haut, padding */
|
|
232
|
-
.barreMenuMobile {
|
|
233
|
-
color: white !important;
|
|
234
|
-
padding: 0 10px 0 10px !important;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/* mobile drawer apparait sous les app bar */
|
|
238
|
-
.v-navigation-drawer {
|
|
239
|
-
top: 132px !important;
|
|
240
|
-
}
|
|
241
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<!-- desktop -->
|
|
3
|
+
<div v-if="!estMobile">
|
|
4
|
+
<v-toolbar
|
|
5
|
+
class="pa-0 ajouterPointeur barreMenu"
|
|
6
|
+
:border="false"
|
|
7
|
+
elevation="2"
|
|
8
|
+
>
|
|
9
|
+
<div
|
|
10
|
+
v-for="item in filtrerMenuItems"
|
|
11
|
+
:key="item.title"
|
|
12
|
+
class="pt-1"
|
|
13
|
+
>
|
|
14
|
+
<v-btn
|
|
15
|
+
variant="text"
|
|
16
|
+
v-if="doitAfficherItemMenu(item)"
|
|
17
|
+
:to="item.path"
|
|
18
|
+
:active="item.path === route"
|
|
19
|
+
:active-color="'white'"
|
|
20
|
+
>{{ item.title }}</v-btn
|
|
21
|
+
>
|
|
22
|
+
</div>
|
|
23
|
+
<v-spacer></v-spacer>
|
|
24
|
+
<!-- Sous Liste -->
|
|
25
|
+
<v-menu
|
|
26
|
+
open-on-hover
|
|
27
|
+
v-for="(item, index) in filtrerSousListe"
|
|
28
|
+
:key="index"
|
|
29
|
+
>
|
|
30
|
+
<template v-slot:activator="{ props }">
|
|
31
|
+
<v-btn
|
|
32
|
+
color="white"
|
|
33
|
+
v-bind="props"
|
|
34
|
+
:active="estActifSousliste"
|
|
35
|
+
>
|
|
36
|
+
{{ item.nom }}
|
|
37
|
+
</v-btn>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<v-list
|
|
41
|
+
style="background-color: #223654 !important"
|
|
42
|
+
min-width="230px"
|
|
43
|
+
>
|
|
44
|
+
<v-list-item
|
|
45
|
+
v-for="(sousitem, sousindex) in obtenirItemsSousListeSelonDroits(item.id)"
|
|
46
|
+
:key="sousindex"
|
|
47
|
+
>
|
|
48
|
+
<v-btn
|
|
49
|
+
:max-height="35"
|
|
50
|
+
width="100%"
|
|
51
|
+
class="params_item"
|
|
52
|
+
:to="sousitem.path"
|
|
53
|
+
variant="text"
|
|
54
|
+
>{{ sousitem.title }}</v-btn
|
|
55
|
+
>
|
|
56
|
+
</v-list-item>
|
|
57
|
+
</v-list>
|
|
58
|
+
</v-menu>
|
|
59
|
+
</v-toolbar>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<!-- mobile -->
|
|
63
|
+
<div v-else>
|
|
64
|
+
<v-toolbar class="pa-0 ajouterPointeur barreMenuMobile">
|
|
65
|
+
<v-app-bar-nav-icon
|
|
66
|
+
variant="text"
|
|
67
|
+
@click.stop="menu = !menu"
|
|
68
|
+
></v-app-bar-nav-icon>
|
|
69
|
+
<v-toolbar-title
|
|
70
|
+
><label
|
|
71
|
+
class="ajouterPointeur"
|
|
72
|
+
style="color: white !important"
|
|
73
|
+
>{{ $t('menu.menu') }}</label
|
|
74
|
+
>
|
|
75
|
+
</v-toolbar-title>
|
|
76
|
+
</v-toolbar>
|
|
77
|
+
|
|
78
|
+
<v-navigation-drawer v-model="menu">
|
|
79
|
+
<v-list>
|
|
80
|
+
<div
|
|
81
|
+
v-for="item in filtrerMenuItems"
|
|
82
|
+
:key="item.title"
|
|
83
|
+
>
|
|
84
|
+
<v-list-item
|
|
85
|
+
:to="item.path"
|
|
86
|
+
:active="item.path === route"
|
|
87
|
+
:title="item.title"
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
<div
|
|
91
|
+
v-for="item in filtrerSousListe"
|
|
92
|
+
:key="item.id"
|
|
93
|
+
>
|
|
94
|
+
<v-list-group :value="item.nom">
|
|
95
|
+
<template v-slot:activator="{ props }">
|
|
96
|
+
<v-list-item
|
|
97
|
+
v-bind="props"
|
|
98
|
+
:title="item.nom"
|
|
99
|
+
/>
|
|
100
|
+
</template>
|
|
101
|
+
<div
|
|
102
|
+
v-for="(sousitem, index) in obtenirItemsSousListeSelonDroits(item.id)"
|
|
103
|
+
:key="index"
|
|
104
|
+
>
|
|
105
|
+
<v-list-item
|
|
106
|
+
:title="sousitem.title"
|
|
107
|
+
:value="sousitem.title"
|
|
108
|
+
:to="sousitem.path"
|
|
109
|
+
/>
|
|
110
|
+
</div>
|
|
111
|
+
</v-list-group>
|
|
112
|
+
</div>
|
|
113
|
+
</v-list>
|
|
114
|
+
</v-navigation-drawer>
|
|
115
|
+
</div>
|
|
116
|
+
</template>
|
|
117
|
+
|
|
118
|
+
<script setup lang="ts">
|
|
119
|
+
import type { MenuItem, SousListe, SousListeItems } from '../../modeles/composants/csqcMenuModele'
|
|
120
|
+
import { ref, computed } from 'vue'
|
|
121
|
+
const props = defineProps({
|
|
122
|
+
estMobile: {
|
|
123
|
+
type: Boolean,
|
|
124
|
+
required: true,
|
|
125
|
+
},
|
|
126
|
+
route: {
|
|
127
|
+
type: String,
|
|
128
|
+
required: true,
|
|
129
|
+
},
|
|
130
|
+
menuItems: {
|
|
131
|
+
type: Array as () => MenuItem[],
|
|
132
|
+
required: true,
|
|
133
|
+
},
|
|
134
|
+
sousliste: {
|
|
135
|
+
type: Array as () => SousListe[],
|
|
136
|
+
required: false,
|
|
137
|
+
default: () => [],
|
|
138
|
+
},
|
|
139
|
+
souslisteItems: {
|
|
140
|
+
type: Array as () => SousListeItems[],
|
|
141
|
+
required: false,
|
|
142
|
+
default: () => [],
|
|
143
|
+
},
|
|
144
|
+
droitsMap: {
|
|
145
|
+
type: Object as () => Record<string, boolean>,
|
|
146
|
+
required: true,
|
|
147
|
+
default: () => ({}),
|
|
148
|
+
},
|
|
149
|
+
})
|
|
150
|
+
const menu = ref<boolean>(false)
|
|
151
|
+
|
|
152
|
+
/*const verifierDroits = (monelement: string) => {
|
|
153
|
+
return props.droitsMap[monelement] || false
|
|
154
|
+
}*/
|
|
155
|
+
|
|
156
|
+
const doitAfficherItemMenu = (item: MenuItem) => {
|
|
157
|
+
return props.droitsMap[item.droit] || false
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const filtrerMenuItems = computed(() => {
|
|
161
|
+
return props.menuItems.filter(item => props.droitsMap[item.droit])
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
const filtrerSousListe = computed(() => {
|
|
165
|
+
return props.sousliste.filter(item => props.droitsMap[item.droit])
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
const obtenirItemsSousListeSelonDroits = (monitemId: number) => {
|
|
169
|
+
return props.souslisteItems.filter(item => item.parentId === monitemId && props.droitsMap[item.droit])
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Vérifie si un item de la sous-liste est actif (route correspond à un item)
|
|
173
|
+
const estActifSousliste = computed(() => {
|
|
174
|
+
return props.souslisteItems.some(item => props.route === item.path)
|
|
175
|
+
})
|
|
176
|
+
</script>
|
|
177
|
+
<style lang="css" scoped>
|
|
178
|
+
/* desktop background de la barre de menu et hauteur */
|
|
179
|
+
.v-toolbar {
|
|
180
|
+
background-color: #223654;
|
|
181
|
+
height: 66px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* desktop couleur du texte de la barre, marge du haut, padding */
|
|
185
|
+
.barreMenu {
|
|
186
|
+
color: white !important;
|
|
187
|
+
padding: 0 10px 0 10px !important;
|
|
188
|
+
}
|
|
189
|
+
/* desktop */
|
|
190
|
+
.v-btn {
|
|
191
|
+
font-weight: 400;
|
|
192
|
+
height: 72px !important;
|
|
193
|
+
}
|
|
194
|
+
/* desktop */
|
|
195
|
+
.v-btn--active {
|
|
196
|
+
font-weight: 600 !important;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* desktop empeche le texte parametre detre trop bas */
|
|
200
|
+
.params {
|
|
201
|
+
padding-top: 5px !important;
|
|
202
|
+
}
|
|
203
|
+
/* desktop */
|
|
204
|
+
.params_item {
|
|
205
|
+
font-weight: 400;
|
|
206
|
+
color: white !important;
|
|
207
|
+
background-color: #223654 !important;
|
|
208
|
+
}
|
|
209
|
+
/* desktop */
|
|
210
|
+
.params_item.v-btn--active {
|
|
211
|
+
color: white !important;
|
|
212
|
+
font-weight: 600 !important;
|
|
213
|
+
}
|
|
214
|
+
/* desktop */
|
|
215
|
+
.params_item.v-btn--active:hover {
|
|
216
|
+
color: white !important;
|
|
217
|
+
background-color: #223654 !important;
|
|
218
|
+
}
|
|
219
|
+
/* desktop */
|
|
220
|
+
.params_item.v-btn--active:hover::before {
|
|
221
|
+
color: #ffffff80 !important;
|
|
222
|
+
}
|
|
223
|
+
/* desktop */
|
|
224
|
+
.params_item.v-btn--active::before {
|
|
225
|
+
opacity: 0.24;
|
|
226
|
+
border-radius: 0;
|
|
227
|
+
color: #ffffff80 !important;
|
|
228
|
+
margin-top: 1px !important;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* mobile couleur du texte de la barre, marge du haut, padding */
|
|
232
|
+
.barreMenuMobile {
|
|
233
|
+
color: white !important;
|
|
234
|
+
padding: 0 10px 0 10px !important;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* mobile drawer apparait sous les app bar */
|
|
238
|
+
.v-navigation-drawer {
|
|
239
|
+
top: 132px !important;
|
|
240
|
+
}
|
|
241
|
+
</style>
|