@7365admin1/layer-common 3.2.2-staging.129 → 3.2.2-staging.131
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/css/primitives.css +19 -2
- package/components/AreaChecklistHistoryMain.vue +9 -6
- package/components/AreaMain.vue +64 -90
- package/components/CleaningScheduleMain.vue +15 -3
- package/components/EquipmentItemMain.vue +80 -91
- package/components/EquipmentManagementMain.vue +72 -96
- package/components/MemberMain.vue +34 -33
- package/components/RolePermissionMain.vue +33 -44
- package/components/ScheduleAreaMain.vue +20 -11
- package/components/ScheduleTaskMain.vue +33 -43
- package/components/UnitMain.vue +31 -43
- package/package.json +1 -1
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
[class*="text-overline"],
|
|
78
78
|
.v-badge__badge,
|
|
79
79
|
.v-kbd
|
|
80
|
-
),
|
|
80
|
+
):not(.material-symbols-outlined),
|
|
81
81
|
.v-overlay-container
|
|
82
82
|
:is(
|
|
83
83
|
[class*="text-h"],
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
[class*="text-overline"],
|
|
89
89
|
.v-badge__badge,
|
|
90
90
|
.v-kbd
|
|
91
|
-
) {
|
|
91
|
+
):not(.material-symbols-outlined) {
|
|
92
92
|
font-family: var(--font-sans, Roboto, sans-serif);
|
|
93
93
|
}
|
|
94
94
|
|
|
@@ -124,6 +124,23 @@
|
|
|
124
124
|
-webkit-font-smoothing: antialiased;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* The icon face, re-asserted at (0,3,0).
|
|
129
|
+
*
|
|
130
|
+
* A `<v-icon class="text-h6">` carries BOTH the icon class and a typography
|
|
131
|
+
* utility, so the re-point above (a descendant of `.v-application`, (0,2,0))
|
|
132
|
+
* would otherwise beat the single-class rule (0,1,0) and the ligature would
|
|
133
|
+
* fall back to Manrope - drawing the literal word "local_shipping" instead of
|
|
134
|
+
* a truck. The `:not()` guard above stops that here; this block stops it
|
|
135
|
+
* anywhere an app ships its own copy of the re-point, whatever the stylesheet
|
|
136
|
+
* order. Repeating the class is how the weight is raised - no `!important`,
|
|
137
|
+
* same precedent as the re-point itself, so a screen can still override.
|
|
138
|
+
*/
|
|
139
|
+
.v-application .material-symbols-outlined.material-symbols-outlined,
|
|
140
|
+
.v-overlay-container .material-symbols-outlined.material-symbols-outlined {
|
|
141
|
+
font-family: "Material Symbols Outlined";
|
|
142
|
+
}
|
|
143
|
+
|
|
127
144
|
/* mdi's spin modifier, kept working now the glyph is not a `:before`.
|
|
128
145
|
`@keyframes mdi-spin` still comes from `@mdi/font`, which stays loaded so
|
|
129
146
|
that any icon name without a mapping keeps drawing its old glyph. */
|
|
@@ -32,11 +32,12 @@
|
|
|
32
32
|
|
|
33
33
|
<template #extension>
|
|
34
34
|
<v-row no-gutters class="w-100 d-flex flex-column">
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
<!--
|
|
36
|
+
A bare `v-card` here paints Vuetify's own `surface`, a shade off
|
|
37
|
+
the table card it sits inside. A plain row on the card's own
|
|
38
|
+
background, with both filters on the design's field.
|
|
39
|
+
-->
|
|
40
|
+
<div class="w-100 filter-bar d-flex align-center ga-5">
|
|
40
41
|
<v-text-field
|
|
41
42
|
v-model="searchInput"
|
|
42
43
|
density="compact"
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
max-width="300"
|
|
46
47
|
append-inner-icon="mdi-magnify"
|
|
47
48
|
hide-details
|
|
49
|
+
class="filter-field"
|
|
48
50
|
/>
|
|
49
51
|
<v-select
|
|
50
52
|
v-model="status"
|
|
@@ -55,8 +57,9 @@
|
|
|
55
57
|
clearable
|
|
56
58
|
hide-details
|
|
57
59
|
max-width="200"
|
|
60
|
+
class="filter-field"
|
|
58
61
|
/>
|
|
59
|
-
</
|
|
62
|
+
</div>
|
|
60
63
|
</v-row>
|
|
61
64
|
</template>
|
|
62
65
|
|
package/components/AreaMain.vue
CHANGED
|
@@ -19,23 +19,24 @@
|
|
|
19
19
|
>
|
|
20
20
|
<template #extension>
|
|
21
21
|
<v-row no-gutters class="w-100 d-flex flex-column">
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
<!--
|
|
23
|
+
A bare `v-card` here paints Vuetify's own `surface`, a slab a
|
|
24
|
+
shade off the table card it sits inside. A plain row on the
|
|
25
|
+
card's own background, with the filter on the design's field.
|
|
26
|
+
-->
|
|
27
|
+
<div class="w-100 px-3 d-flex align-center ga-5 py-2">
|
|
27
28
|
<v-select
|
|
28
29
|
v-model="areaTypeFilter"
|
|
29
30
|
:items="typeOptions"
|
|
30
31
|
density="compact"
|
|
31
32
|
hide-details
|
|
32
|
-
class="mx-2"
|
|
33
|
+
class="mx-2 filter-field"
|
|
33
34
|
style="max-width: 160px"
|
|
34
35
|
item-title="title"
|
|
35
36
|
item-value="value"
|
|
36
37
|
label="Type"
|
|
37
38
|
/>
|
|
38
|
-
</
|
|
39
|
+
</div>
|
|
39
40
|
</v-row>
|
|
40
41
|
</template>
|
|
41
42
|
|
|
@@ -213,64 +214,50 @@
|
|
|
213
214
|
</HygieneUpdateMoreAction>
|
|
214
215
|
</v-dialog>
|
|
215
216
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
<v-card-text>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
217
|
+
<!--
|
|
218
|
+
Both dialogs were `v-toolbar` title bars over toolbar footers of two block
|
|
219
|
+
buttons, the confirm one on `color="black"` - not a token, so it painted a
|
|
220
|
+
light-theme fill on the dark theme, and the toolbar surface sat visibly
|
|
221
|
+
lighter than the card. The shared `.screen-modal` shape now, same copy,
|
|
222
|
+
same labels, same handlers, same busy states.
|
|
223
|
+
-->
|
|
224
|
+
<v-dialog v-model="dialogDeleteItem" max-width="520">
|
|
225
|
+
<v-card class="screen-modal">
|
|
226
|
+
<v-card-title class="text-capitalize">
|
|
227
|
+
Delete {{ selectedItem?.name || entityTypeLabel }}
|
|
228
|
+
</v-card-title>
|
|
229
|
+
|
|
230
|
+
<v-card-text class="screen-modal__body">
|
|
231
|
+
Are you sure you want to delete this {{ entityTypeLabel }}?
|
|
229
232
|
</v-card-text>
|
|
230
233
|
|
|
231
|
-
<
|
|
232
|
-
<v-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
variant="flat"
|
|
250
|
-
color="black"
|
|
251
|
-
class="text-none font-weight-bold rounded-0"
|
|
252
|
-
height="48"
|
|
253
|
-
:loading="submitting"
|
|
254
|
-
@click="_deleteItem"
|
|
255
|
-
>
|
|
256
|
-
Delete
|
|
257
|
-
</v-btn>
|
|
258
|
-
</v-col>
|
|
259
|
-
</v-row>
|
|
260
|
-
</v-toolbar>
|
|
234
|
+
<div class="screen-modal__footer">
|
|
235
|
+
<v-btn
|
|
236
|
+
class="screen-btn-ghost"
|
|
237
|
+
variant="outlined"
|
|
238
|
+
:disabled="submitting"
|
|
239
|
+
@click="dialogDeleteItem = false"
|
|
240
|
+
>
|
|
241
|
+
Cancel
|
|
242
|
+
</v-btn>
|
|
243
|
+
<v-btn
|
|
244
|
+
class="screen-btn-primary"
|
|
245
|
+
variant="flat"
|
|
246
|
+
:loading="submitting"
|
|
247
|
+
@click="_deleteItem"
|
|
248
|
+
>
|
|
249
|
+
Delete
|
|
250
|
+
</v-btn>
|
|
251
|
+
</div>
|
|
261
252
|
</v-card>
|
|
262
253
|
</v-dialog>
|
|
263
254
|
|
|
264
|
-
<v-dialog v-if="isToiletLocation" v-model="dialogShowQR" max-width="
|
|
265
|
-
<v-card>
|
|
266
|
-
<v-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
</span>
|
|
271
|
-
</v-row>
|
|
272
|
-
</v-toolbar>
|
|
273
|
-
<v-card-text class="d-flex justify-center pa-6">
|
|
255
|
+
<v-dialog v-if="isToiletLocation" v-model="dialogShowQR" max-width="520">
|
|
256
|
+
<v-card class="screen-modal">
|
|
257
|
+
<v-card-title class="text-capitalize">
|
|
258
|
+
QR Code for {{ selectedItem?.name || "Toilet Location" }}
|
|
259
|
+
</v-card-title>
|
|
260
|
+
<v-card-text class="screen-modal__body d-flex justify-center">
|
|
274
261
|
<v-row no-gutters class="d-flex justify-center">
|
|
275
262
|
<v-col cols="12" class="text-center">
|
|
276
263
|
<div v-if="qrLoading" class="d-flex flex-column align-center">
|
|
@@ -301,36 +288,23 @@
|
|
|
301
288
|
</v-row>
|
|
302
289
|
</v-card-text>
|
|
303
290
|
|
|
304
|
-
<
|
|
305
|
-
<v-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
block
|
|
322
|
-
variant="flat"
|
|
323
|
-
color="black"
|
|
324
|
-
class="text-none font-weight-bold rounded-0"
|
|
325
|
-
height="48"
|
|
326
|
-
:loading="qrLoading"
|
|
327
|
-
@click="onDownloadQrCode"
|
|
328
|
-
>
|
|
329
|
-
Download
|
|
330
|
-
</v-btn>
|
|
331
|
-
</v-col>
|
|
332
|
-
</v-row>
|
|
333
|
-
</v-toolbar>
|
|
291
|
+
<div class="screen-modal__footer">
|
|
292
|
+
<v-btn
|
|
293
|
+
class="screen-btn-ghost"
|
|
294
|
+
variant="outlined"
|
|
295
|
+
@click="dialogShowQR = false"
|
|
296
|
+
>
|
|
297
|
+
Cancel
|
|
298
|
+
</v-btn>
|
|
299
|
+
<v-btn
|
|
300
|
+
class="screen-btn-primary"
|
|
301
|
+
variant="flat"
|
|
302
|
+
:loading="qrLoading"
|
|
303
|
+
@click="onDownloadQrCode"
|
|
304
|
+
>
|
|
305
|
+
Download
|
|
306
|
+
</v-btn>
|
|
307
|
+
</div>
|
|
334
308
|
</v-card>
|
|
335
309
|
</v-dialog>
|
|
336
310
|
|
|
@@ -98,11 +98,15 @@
|
|
|
98
98
|
</template>
|
|
99
99
|
</TableMain>
|
|
100
100
|
<div v-else class="pa-4">
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
<!--
|
|
102
|
+
Was an outlined `v-card` painted from Vuetify's own `surface`. The
|
|
103
|
+
design's card, and the notice at the design's cell size.
|
|
104
|
+
-->
|
|
105
|
+
<AppCard class="pa-4">
|
|
106
|
+
<div class="cs-no-permission">
|
|
103
107
|
You do not have permission to view cleaning schedules.
|
|
104
108
|
</div>
|
|
105
|
-
</
|
|
109
|
+
</AppCard>
|
|
106
110
|
</div>
|
|
107
111
|
</v-col>
|
|
108
112
|
</v-row>
|
|
@@ -327,3 +331,11 @@ function showMessage(msg: string, color: string = "error") {
|
|
|
327
331
|
}
|
|
328
332
|
}
|
|
329
333
|
</script>
|
|
334
|
+
|
|
335
|
+
<style scoped>
|
|
336
|
+
.cs-no-permission {
|
|
337
|
+
font-family: var(--font-sans);
|
|
338
|
+
font-size: var(--fs-cell);
|
|
339
|
+
color: var(--muted);
|
|
340
|
+
}
|
|
341
|
+
</style>
|
|
@@ -198,22 +198,28 @@
|
|
|
198
198
|
</v-dialog>
|
|
199
199
|
|
|
200
200
|
<!-- Main Equipment Item Dialog -->
|
|
201
|
+
<!--
|
|
202
|
+
All three dialogs were hand-drawn: a 20px/700 title bar, a divider, and a
|
|
203
|
+
`v-card-actions` footer of two 56px block buttons with square corners, the
|
|
204
|
+
confirm one on `color="black"` - not a token, so it painted a light-theme
|
|
205
|
+
fill on the dark theme. The shared `.screen-modal` shape now. Same fields,
|
|
206
|
+
same labels, same handlers, same busy states.
|
|
207
|
+
-->
|
|
201
208
|
<v-dialog v-model="dialogEquipmentItem" max-width="540" persistent>
|
|
202
|
-
<v-card>
|
|
203
|
-
<v-card-title class="d-flex align-center
|
|
204
|
-
|
|
209
|
+
<v-card class="screen-modal">
|
|
210
|
+
<v-card-title class="d-flex align-center">
|
|
211
|
+
Equipment Item
|
|
205
212
|
<v-spacer />
|
|
206
213
|
<v-btn
|
|
207
214
|
icon="mdi-close"
|
|
208
215
|
variant="text"
|
|
209
|
-
|
|
216
|
+
class="screen-modal__close"
|
|
217
|
+
aria-label="Close"
|
|
210
218
|
@click="dialogEquipmentItem = false"
|
|
211
219
|
/>
|
|
212
220
|
</v-card-title>
|
|
213
221
|
|
|
214
|
-
<v-
|
|
215
|
-
|
|
216
|
-
<v-card-text class="pa-6">
|
|
222
|
+
<v-card-text class="screen-modal__body">
|
|
217
223
|
<v-form ref="equipmentItemFormRef">
|
|
218
224
|
<!-- Add Equipment Section -->
|
|
219
225
|
<v-row no-gutters class="mb-4">
|
|
@@ -374,49 +380,40 @@
|
|
|
374
380
|
</v-form>
|
|
375
381
|
</v-card-text>
|
|
376
382
|
|
|
377
|
-
<
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
block
|
|
396
|
-
variant="flat"
|
|
397
|
-
color="black"
|
|
398
|
-
size="large"
|
|
399
|
-
height="56"
|
|
400
|
-
class="text-none font-weight-bold rounded-0"
|
|
401
|
-
:loading="submitting"
|
|
402
|
-
@click="_equipmentItem()"
|
|
403
|
-
>
|
|
404
|
-
Checkout Item
|
|
405
|
-
</v-btn>
|
|
406
|
-
</v-col>
|
|
407
|
-
</v-row>
|
|
408
|
-
</v-card-actions>
|
|
383
|
+
<div class="screen-modal__footer">
|
|
384
|
+
<v-btn
|
|
385
|
+
class="screen-btn-ghost"
|
|
386
|
+
variant="outlined"
|
|
387
|
+
:disabled="submitting"
|
|
388
|
+
@click="dialogEquipmentItem = false"
|
|
389
|
+
>
|
|
390
|
+
Cancel
|
|
391
|
+
</v-btn>
|
|
392
|
+
<v-btn
|
|
393
|
+
class="screen-btn-primary"
|
|
394
|
+
variant="flat"
|
|
395
|
+
:loading="submitting"
|
|
396
|
+
@click="_equipmentItem()"
|
|
397
|
+
>
|
|
398
|
+
Checkout Item
|
|
399
|
+
</v-btn>
|
|
400
|
+
</div>
|
|
409
401
|
</v-card>
|
|
410
402
|
</v-dialog>
|
|
411
403
|
|
|
412
404
|
<Snackbar v-model="messageSnackbar" :text="message" :color="messageColor" />
|
|
413
405
|
|
|
414
406
|
<v-dialog v-model="dialogPhotoForItem" max-width="720" persistent>
|
|
415
|
-
<v-card
|
|
416
|
-
<v-card-title class="d-flex align-center
|
|
407
|
+
<v-card class="screen-modal">
|
|
408
|
+
<v-card-title class="d-flex align-center">
|
|
417
409
|
<div>
|
|
418
|
-
|
|
419
|
-
|
|
410
|
+
Item Photos
|
|
411
|
+
<!--
|
|
412
|
+
The handoff draws no sub-line under a modal title. `--muted` at
|
|
413
|
+
12px, the figure batch I's `AttachmentsViewer` settled on, rather
|
|
414
|
+
than a third number.
|
|
415
|
+
-->
|
|
416
|
+
<div class="eqi-modal-sub">
|
|
420
417
|
{{ equipmentItems[activePhotoIndex ?? 0]?.supplyName || "Item" }}
|
|
421
418
|
</div>
|
|
422
419
|
</div>
|
|
@@ -426,15 +423,14 @@
|
|
|
426
423
|
<v-btn
|
|
427
424
|
icon="mdi-close"
|
|
428
425
|
variant="text"
|
|
429
|
-
|
|
426
|
+
class="screen-modal__close"
|
|
427
|
+
aria-label="Close"
|
|
430
428
|
@click="dialogPhotoForItem = false"
|
|
431
429
|
/>
|
|
432
430
|
</v-card-title>
|
|
433
431
|
|
|
434
|
-
<v-divider />
|
|
435
|
-
|
|
436
432
|
<!-- Body -->
|
|
437
|
-
<v-card-text class="
|
|
433
|
+
<v-card-text class="screen-modal__body" v-if="activePhotoIndex !== null">
|
|
438
434
|
<PhotoUpload
|
|
439
435
|
title="Add / Take Photos"
|
|
440
436
|
v-model="currentPhotos"
|
|
@@ -443,63 +439,42 @@
|
|
|
443
439
|
/>
|
|
444
440
|
</v-card-text>
|
|
445
441
|
|
|
446
|
-
<v-divider />
|
|
447
|
-
|
|
448
442
|
<!-- Footer -->
|
|
449
|
-
<
|
|
450
|
-
<v-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
<v-btn
|
|
466
|
-
block
|
|
467
|
-
variant="flat"
|
|
468
|
-
color="black"
|
|
469
|
-
size="large"
|
|
470
|
-
height="56"
|
|
471
|
-
class="text-none font-weight-bold rounded-0"
|
|
472
|
-
@click="dialogPhotoForItem = false"
|
|
473
|
-
>
|
|
474
|
-
Done
|
|
475
|
-
</v-btn>
|
|
476
|
-
</v-col>
|
|
477
|
-
</v-row>
|
|
478
|
-
</v-card-actions>
|
|
443
|
+
<div class="screen-modal__footer">
|
|
444
|
+
<v-btn
|
|
445
|
+
class="screen-btn-ghost"
|
|
446
|
+
variant="outlined"
|
|
447
|
+
@click="dialogPhotoForItem = false"
|
|
448
|
+
>
|
|
449
|
+
Cancel
|
|
450
|
+
</v-btn>
|
|
451
|
+
<v-btn
|
|
452
|
+
class="screen-btn-primary"
|
|
453
|
+
variant="flat"
|
|
454
|
+
@click="dialogPhotoForItem = false"
|
|
455
|
+
>
|
|
456
|
+
Done
|
|
457
|
+
</v-btn>
|
|
458
|
+
</div>
|
|
479
459
|
</v-card>
|
|
480
460
|
</v-dialog>
|
|
481
461
|
|
|
482
462
|
<v-dialog v-model="showAttachmentDialog" max-width="720" persistent>
|
|
483
|
-
<v-card
|
|
484
|
-
<v-card-title class="d-flex align-center
|
|
485
|
-
|
|
486
|
-
<div class="text-h6 font-weight-bold">Attachment</div>
|
|
487
|
-
</div>
|
|
488
|
-
|
|
463
|
+
<v-card class="screen-modal">
|
|
464
|
+
<v-card-title class="d-flex align-center">
|
|
465
|
+
Attachment
|
|
489
466
|
<v-spacer />
|
|
490
|
-
|
|
491
467
|
<v-btn
|
|
492
468
|
icon="mdi-close"
|
|
493
469
|
variant="text"
|
|
494
|
-
|
|
470
|
+
class="screen-modal__close"
|
|
471
|
+
aria-label="Close"
|
|
495
472
|
@click="(showAttachmentDialog = false), (attachmentUrl = '')"
|
|
496
473
|
/>
|
|
497
474
|
</v-card-title>
|
|
498
475
|
|
|
499
|
-
<v-divider />
|
|
500
|
-
|
|
501
476
|
<!-- Body -->
|
|
502
|
-
<v-card-text class="
|
|
477
|
+
<v-card-text class="screen-modal__body">
|
|
503
478
|
<v-img :src="attachmentUrl" contain />
|
|
504
479
|
</v-card-text>
|
|
505
480
|
</v-card>
|
|
@@ -817,4 +792,18 @@ const currentPhotoIds = computed({
|
|
|
817
792
|
});
|
|
818
793
|
</script>
|
|
819
794
|
|
|
820
|
-
<style scoped
|
|
795
|
+
<style scoped>
|
|
796
|
+
/*
|
|
797
|
+
The sub-line under the "Item Photos" title. The handoff draws no such line,
|
|
798
|
+
so it takes the figure already settled on for one: `--muted` at 12px.
|
|
799
|
+
Scoped to `.v-card-title` because Vuetify's own title rule would otherwise
|
|
800
|
+
hand it the 20px it gives everything inside.
|
|
801
|
+
*/
|
|
802
|
+
.screen-modal .v-card-title .eqi-modal-sub {
|
|
803
|
+
font-family: var(--font-sans);
|
|
804
|
+
font-size: 12px;
|
|
805
|
+
font-weight: 400;
|
|
806
|
+
line-height: 1.4;
|
|
807
|
+
color: var(--muted);
|
|
808
|
+
}
|
|
809
|
+
</style>
|
|
@@ -45,11 +45,15 @@
|
|
|
45
45
|
</template>
|
|
46
46
|
|
|
47
47
|
<template #item.attachment="{ value }">
|
|
48
|
+
<!--
|
|
49
|
+
`variant="tonal"` drew Vuetify's own grey slab in the cell, the one
|
|
50
|
+
off-design control left on the row. The design's ghost button.
|
|
51
|
+
-->
|
|
48
52
|
<v-btn
|
|
49
53
|
v-if="value"
|
|
50
54
|
size="small"
|
|
51
|
-
variant="
|
|
52
|
-
class="
|
|
55
|
+
variant="outlined"
|
|
56
|
+
class="screen-btn-ghost"
|
|
53
57
|
@click.stop="viewAttachment(value)"
|
|
54
58
|
>
|
|
55
59
|
View Image
|
|
@@ -143,67 +147,54 @@
|
|
|
143
147
|
</HygieneUpdateMoreAction>
|
|
144
148
|
</v-dialog>
|
|
145
149
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<v-card-text>
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
>
|
|
159
|
-
</v-card-text>
|
|
150
|
+
<!--
|
|
151
|
+
All three dialogs were `v-toolbar` title bars over toolbar footers carrying
|
|
152
|
+
two block buttons, the confirm one on `color="black"` - not a token, so it
|
|
153
|
+
painted a light-theme fill on the dark theme, and the toolbar surface sat
|
|
154
|
+
visibly lighter than the card it was on. They are the shared `.screen-modal`
|
|
155
|
+
shape now. Same fields, same labels, same handlers, same busy states.
|
|
156
|
+
-->
|
|
157
|
+
<v-dialog v-model="dialogDeleteEquipment" max-width="520">
|
|
158
|
+
<v-card class="screen-modal">
|
|
159
|
+
<v-card-title class="text-capitalize">
|
|
160
|
+
Delete {{ selectedEquipment?.name || "Unit" }}
|
|
161
|
+
</v-card-title>
|
|
160
162
|
|
|
161
|
-
<v-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
<v-btn
|
|
165
|
-
block
|
|
166
|
-
variant="text"
|
|
167
|
-
class="text-none"
|
|
168
|
-
size="large"
|
|
169
|
-
@click="dialogDeleteEquipment = false"
|
|
170
|
-
height="48"
|
|
171
|
-
>
|
|
172
|
-
Cancel
|
|
173
|
-
</v-btn>
|
|
174
|
-
</v-col>
|
|
163
|
+
<v-card-text class="screen-modal__body">
|
|
164
|
+
Are you sure you want to delete this equipment?
|
|
165
|
+
</v-card-text>
|
|
175
166
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
167
|
+
<div class="screen-modal__footer">
|
|
168
|
+
<v-btn
|
|
169
|
+
class="screen-btn-ghost"
|
|
170
|
+
variant="outlined"
|
|
171
|
+
:disabled="submitting"
|
|
172
|
+
@click="dialogDeleteEquipment = false"
|
|
173
|
+
>
|
|
174
|
+
Cancel
|
|
175
|
+
</v-btn>
|
|
176
|
+
<v-btn
|
|
177
|
+
class="screen-btn-primary"
|
|
178
|
+
variant="flat"
|
|
179
|
+
:loading="submitting"
|
|
180
|
+
@click="_deleteEquipment"
|
|
181
|
+
>
|
|
182
|
+
Delete
|
|
183
|
+
</v-btn>
|
|
184
|
+
</div>
|
|
191
185
|
</v-card>
|
|
192
186
|
</v-dialog>
|
|
193
187
|
|
|
194
|
-
<v-dialog v-model="dialogStockAction" max-width="
|
|
195
|
-
<v-card>
|
|
196
|
-
<v-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
</v-row>
|
|
202
|
-
</v-toolbar>
|
|
203
|
-
<v-card-text class="pa-4">
|
|
188
|
+
<v-dialog v-model="dialogStockAction" max-width="520">
|
|
189
|
+
<v-card class="screen-modal">
|
|
190
|
+
<v-card-title class="text-capitalize">
|
|
191
|
+
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
192
|
+
</v-card-title>
|
|
193
|
+
|
|
194
|
+
<v-card-text class="screen-modal__body">
|
|
204
195
|
<v-form ref="stockActionFormRef" v-model="stockActionValid">
|
|
205
196
|
<v-row no-gutters>
|
|
206
|
-
<v-col cols="12"
|
|
197
|
+
<v-col cols="12">
|
|
207
198
|
<InputLabel
|
|
208
199
|
for="stockActionQty"
|
|
209
200
|
title="Quantity"
|
|
@@ -214,68 +205,53 @@
|
|
|
214
205
|
v-model.number="stockActionQuantity"
|
|
215
206
|
:rules="[requiredRule]"
|
|
216
207
|
density="comfortable"
|
|
217
|
-
variant="outlined"
|
|
218
208
|
type="number"
|
|
219
209
|
min="1"
|
|
220
210
|
placeholder="Enter quantity"
|
|
221
211
|
hide-details="auto"
|
|
212
|
+
class="filter-field"
|
|
222
213
|
/>
|
|
223
214
|
</v-col>
|
|
224
215
|
</v-row>
|
|
225
216
|
</v-form>
|
|
226
217
|
</v-card-text>
|
|
227
218
|
|
|
228
|
-
<
|
|
229
|
-
<v-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
variant="flat"
|
|
247
|
-
color="black"
|
|
248
|
-
class="text-none font-weight-bold rounded-0"
|
|
249
|
-
height="48"
|
|
250
|
-
:loading="submitting"
|
|
251
|
-
@click="stockActionMode === 'add' ? _addStock() : _requestItem()"
|
|
252
|
-
>
|
|
253
|
-
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
254
|
-
</v-btn>
|
|
255
|
-
</v-col>
|
|
256
|
-
</v-row>
|
|
257
|
-
</v-toolbar>
|
|
219
|
+
<div class="screen-modal__footer">
|
|
220
|
+
<v-btn
|
|
221
|
+
class="screen-btn-ghost"
|
|
222
|
+
variant="outlined"
|
|
223
|
+
:disabled="submitting"
|
|
224
|
+
@click="dialogStockAction = false"
|
|
225
|
+
>
|
|
226
|
+
Cancel
|
|
227
|
+
</v-btn>
|
|
228
|
+
<v-btn
|
|
229
|
+
class="screen-btn-primary"
|
|
230
|
+
variant="flat"
|
|
231
|
+
:loading="submitting"
|
|
232
|
+
@click="stockActionMode === 'add' ? _addStock() : _requestItem()"
|
|
233
|
+
>
|
|
234
|
+
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
235
|
+
</v-btn>
|
|
236
|
+
</div>
|
|
258
237
|
</v-card>
|
|
259
238
|
</v-dialog>
|
|
260
239
|
|
|
261
240
|
<v-dialog v-model="showAttachmentDialog" max-width="720" persistent>
|
|
262
|
-
<v-card
|
|
263
|
-
<v-card-title class="d-flex align-center
|
|
264
|
-
|
|
265
|
-
|
|
241
|
+
<v-card class="screen-modal">
|
|
242
|
+
<v-card-title class="d-flex align-center">
|
|
243
|
+
Attachment
|
|
266
244
|
<v-spacer />
|
|
267
|
-
|
|
268
245
|
<v-btn
|
|
269
246
|
icon="mdi-close"
|
|
270
247
|
variant="text"
|
|
271
|
-
|
|
248
|
+
class="screen-modal__close"
|
|
249
|
+
aria-label="Close"
|
|
272
250
|
@click="(showAttachmentDialog = false), (attachmentUrl = '')"
|
|
273
251
|
/>
|
|
274
252
|
</v-card-title>
|
|
275
253
|
|
|
276
|
-
<v-
|
|
277
|
-
|
|
278
|
-
<v-card-text class="pa-6">
|
|
254
|
+
<v-card-text class="screen-modal__body">
|
|
279
255
|
<v-img :src="attachmentUrl" contain />
|
|
280
256
|
</v-card-text>
|
|
281
257
|
</v-card>
|
|
@@ -184,13 +184,20 @@
|
|
|
184
184
|
|
|
185
185
|
<Snackbar v-model="messageSnackbar" :text="message" :color="messageColor" />
|
|
186
186
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
187
|
+
<!--
|
|
188
|
+
Was a `text-h5` title, an untokenised select, and two block buttons - the
|
|
189
|
+
submit one on `color="black"`, not a token, so it drew a light-theme fill
|
|
190
|
+
on the dark theme. The shared `.screen-modal` shape now. The footer stays
|
|
191
|
+
INSIDE the `v-form` because Submit is a `type="submit"` and moving it out
|
|
192
|
+
would break the form's own submit.
|
|
193
|
+
-->
|
|
194
|
+
<v-dialog v-model="assignRoleDialog" max-width="520">
|
|
195
|
+
<v-card class="screen-modal">
|
|
196
|
+
<v-card-title>Assign Role</v-card-title>
|
|
197
|
+
<v-form v-model="memberRoleForm" @submit.prevent="updateMemberRole()">
|
|
198
|
+
<v-card-text class="screen-modal__body">
|
|
192
199
|
<v-row no-gutters>
|
|
193
|
-
<v-col cols="12"
|
|
200
|
+
<v-col cols="12">
|
|
194
201
|
<v-row no-gutters>
|
|
195
202
|
<InputLabel class="text-capitalize" title="Name" required />
|
|
196
203
|
<v-col cols="12">
|
|
@@ -207,6 +214,7 @@
|
|
|
207
214
|
: ''
|
|
208
215
|
"
|
|
209
216
|
persistent-hint
|
|
217
|
+
class="filter-field"
|
|
210
218
|
></v-select>
|
|
211
219
|
</v-col>
|
|
212
220
|
|
|
@@ -215,34 +223,27 @@
|
|
|
215
223
|
</v-col>
|
|
216
224
|
</v-row>
|
|
217
225
|
</v-col>
|
|
218
|
-
|
|
219
|
-
<v-col cols="12">
|
|
220
|
-
<v-row>
|
|
221
|
-
<v-col cols="6">
|
|
222
|
-
<v-btn
|
|
223
|
-
block
|
|
224
|
-
variant="text"
|
|
225
|
-
@click="setMember({ mode: 'assign-role' })"
|
|
226
|
-
>
|
|
227
|
-
Cancel
|
|
228
|
-
</v-btn>
|
|
229
|
-
</v-col>
|
|
230
|
-
<v-col cols="6">
|
|
231
|
-
<v-btn
|
|
232
|
-
block
|
|
233
|
-
variant="flat"
|
|
234
|
-
color="black"
|
|
235
|
-
:disabled="!memberRoleForm"
|
|
236
|
-
type="submit"
|
|
237
|
-
>
|
|
238
|
-
Submit
|
|
239
|
-
</v-btn>
|
|
240
|
-
</v-col>
|
|
241
|
-
</v-row>
|
|
242
|
-
</v-col>
|
|
243
226
|
</v-row>
|
|
244
|
-
</v-
|
|
245
|
-
|
|
227
|
+
</v-card-text>
|
|
228
|
+
|
|
229
|
+
<div class="screen-modal__footer">
|
|
230
|
+
<v-btn
|
|
231
|
+
class="screen-btn-ghost"
|
|
232
|
+
variant="outlined"
|
|
233
|
+
@click="setMember({ mode: 'assign-role' })"
|
|
234
|
+
>
|
|
235
|
+
Cancel
|
|
236
|
+
</v-btn>
|
|
237
|
+
<v-btn
|
|
238
|
+
class="screen-btn-primary"
|
|
239
|
+
variant="flat"
|
|
240
|
+
:disabled="!memberRoleForm"
|
|
241
|
+
type="submit"
|
|
242
|
+
>
|
|
243
|
+
Submit
|
|
244
|
+
</v-btn>
|
|
245
|
+
</div>
|
|
246
|
+
</v-form>
|
|
246
247
|
</v-card>
|
|
247
248
|
</v-dialog>
|
|
248
249
|
</div>
|
|
@@ -105,23 +105,23 @@
|
|
|
105
105
|
/>
|
|
106
106
|
</v-dialog>
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
</v-
|
|
108
|
+
<!--
|
|
109
|
+
Was a `v-toolbar` title bar over a toolbar footer of two block buttons,
|
|
110
|
+
the confirm one on `color="black"` - not a token, so it drew a
|
|
111
|
+
light-theme fill on the dark theme. The shared confirmation shape now.
|
|
112
|
+
Same question, same reassignment rows, same disabled rule.
|
|
113
|
+
-->
|
|
114
|
+
<v-dialog v-model="confirmDialog" max-width="520">
|
|
115
|
+
<v-card class="screen-modal">
|
|
116
|
+
<v-card-title>Delete Role</v-card-title>
|
|
117
117
|
|
|
118
|
-
<v-card-text>
|
|
119
|
-
<span v-if="!hasAssignedMembers"
|
|
118
|
+
<v-card-text class="screen-modal__body">
|
|
119
|
+
<span v-if="!hasAssignedMembers">
|
|
120
120
|
Are you sure you want to delete this role? This action cannot be
|
|
121
121
|
undone.
|
|
122
122
|
</span>
|
|
123
123
|
<template v-else>
|
|
124
|
-
<p class="
|
|
124
|
+
<p class="mb-4">
|
|
125
125
|
There are currently
|
|
126
126
|
<span class="text-error font-weight-bold">
|
|
127
127
|
{{ deletionPreview.members.length }}
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
class="mb-3 pa-3 border rounded-lg"
|
|
139
139
|
align="center"
|
|
140
140
|
>
|
|
141
|
-
<v-col cols="12" sm="5" class="
|
|
141
|
+
<v-col cols="12" sm="5" class="mb-2 mb-sm-0">
|
|
142
142
|
{{ member.name || member.user }}
|
|
143
143
|
</v-col>
|
|
144
144
|
<v-col cols="12" sm="7">
|
|
@@ -150,43 +150,32 @@
|
|
|
150
150
|
label="Reassign role"
|
|
151
151
|
density="comfortable"
|
|
152
152
|
hide-details
|
|
153
|
+
class="filter-field"
|
|
153
154
|
/>
|
|
154
155
|
</v-col>
|
|
155
156
|
</v-row>
|
|
156
157
|
</template>
|
|
157
158
|
</v-card-text>
|
|
158
159
|
|
|
159
|
-
<
|
|
160
|
-
<v-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
color="black"
|
|
179
|
-
class="text-none font-weight-bold rounded-0"
|
|
180
|
-
height="48"
|
|
181
|
-
@click="handleDeleteRole"
|
|
182
|
-
:loading="deleteLoading"
|
|
183
|
-
:disabled="hasAssignedMembers && !canConfirmDeletion"
|
|
184
|
-
>
|
|
185
|
-
{{ hasAssignedMembers ? "Confirm" : "Delete" }}
|
|
186
|
-
</v-btn>
|
|
187
|
-
</v-col>
|
|
188
|
-
</v-row>
|
|
189
|
-
</v-toolbar>
|
|
160
|
+
<div class="screen-modal__footer">
|
|
161
|
+
<v-btn
|
|
162
|
+
class="screen-btn-ghost"
|
|
163
|
+
variant="outlined"
|
|
164
|
+
:disabled="deleteLoading"
|
|
165
|
+
@click="closeDeleteDialog"
|
|
166
|
+
>
|
|
167
|
+
Cancel
|
|
168
|
+
</v-btn>
|
|
169
|
+
<v-btn
|
|
170
|
+
class="screen-btn-primary"
|
|
171
|
+
variant="flat"
|
|
172
|
+
:loading="deleteLoading"
|
|
173
|
+
:disabled="hasAssignedMembers && !canConfirmDeletion"
|
|
174
|
+
@click="handleDeleteRole"
|
|
175
|
+
>
|
|
176
|
+
{{ hasAssignedMembers ? "Confirm" : "Delete" }}
|
|
177
|
+
</v-btn>
|
|
178
|
+
</div>
|
|
190
179
|
</v-card>
|
|
191
180
|
</v-dialog>
|
|
192
181
|
|
|
@@ -20,17 +20,18 @@
|
|
|
20
20
|
|
|
21
21
|
<template #extension>
|
|
22
22
|
<v-row no-gutters class="w-100 d-flex flex-column">
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
<!--
|
|
24
|
+
A bare `v-card` here paints Vuetify's own `surface`, a shade off
|
|
25
|
+
the table card it sits inside. A plain row on the card's own
|
|
26
|
+
background, with both filters on the design's field.
|
|
27
|
+
-->
|
|
28
|
+
<div class="w-100 filter-bar d-flex align-center ga-5">
|
|
28
29
|
<v-select
|
|
29
30
|
v-model="statusFilter"
|
|
30
31
|
:items="statusOptions"
|
|
31
32
|
density="compact"
|
|
32
33
|
hide-details
|
|
33
|
-
class="mx-2"
|
|
34
|
+
class="mx-2 filter-field"
|
|
34
35
|
style="max-width: 160px"
|
|
35
36
|
item-title="title"
|
|
36
37
|
item-value="value"
|
|
@@ -42,13 +43,13 @@
|
|
|
42
43
|
:items="typeOptions"
|
|
43
44
|
density="compact"
|
|
44
45
|
hide-details
|
|
45
|
-
class="mx-2"
|
|
46
|
+
class="mx-2 filter-field"
|
|
46
47
|
style="max-width: 160px"
|
|
47
48
|
item-title="title"
|
|
48
49
|
item-value="value"
|
|
49
50
|
label="Type"
|
|
50
51
|
/>
|
|
51
|
-
</
|
|
52
|
+
</div>
|
|
52
53
|
</v-row>
|
|
53
54
|
</template>
|
|
54
55
|
<template #actions>
|
|
@@ -106,9 +107,17 @@
|
|
|
106
107
|
(item.status && String(item.status).toLowerCase() === 'accepted')
|
|
107
108
|
"
|
|
108
109
|
>
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
<!--
|
|
111
|
+
`color`/`variant` on a plain `<span>` do nothing - Vuetify only
|
|
112
|
+
reads them on its own components, so this drew as bare cell text
|
|
113
|
+
while reading as a tonal green chip. It is the accepted chip the
|
|
114
|
+
sibling branches already use.
|
|
115
|
+
-->
|
|
116
|
+
<StatusChip
|
|
117
|
+
status="Accepted"
|
|
118
|
+
class="text-capitalize"
|
|
119
|
+
:label="item.acceptedByName || item.acceptedBy || 'Accepted'"
|
|
120
|
+
/>
|
|
112
121
|
</div>
|
|
113
122
|
<div v-else-if="isScheduleClosed">
|
|
114
123
|
<StatusChip status="Closed" class="text-capitalize" />
|
|
@@ -297,51 +297,41 @@
|
|
|
297
297
|
</HygieneUpdateMoreAction>
|
|
298
298
|
</v-dialog>
|
|
299
299
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
<v-card-text>
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
300
|
+
<!--
|
|
301
|
+
Was a `v-toolbar` title bar (Vuetify paints that from its own `surface`,
|
|
302
|
+
a grey slab visibly lighter than the card on dark) over a second toolbar
|
|
303
|
+
carrying two block buttons, the confirm one on `color="black"` - not a
|
|
304
|
+
token, so it drew a light-theme fill on the dark theme. It is the shared
|
|
305
|
+
confirmation shape now, the same one every converted screen uses.
|
|
306
|
+
-->
|
|
307
|
+
<v-dialog v-model="dialogDeleteTask" max-width="520">
|
|
308
|
+
<v-card class="screen-modal">
|
|
309
|
+
<v-card-title class="text-capitalize">
|
|
310
|
+
Delete {{ selectedTask?.title || "Schedule Task" }}
|
|
311
|
+
</v-card-title>
|
|
312
|
+
|
|
313
|
+
<v-card-text class="screen-modal__body">
|
|
314
|
+
Are you sure you want to delete this schedule task?
|
|
313
315
|
</v-card-text>
|
|
314
316
|
|
|
315
|
-
<
|
|
316
|
-
<v-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
variant="flat"
|
|
334
|
-
color="black"
|
|
335
|
-
class="text-none font-weight-bold"
|
|
336
|
-
height="48"
|
|
337
|
-
:loading="submitting"
|
|
338
|
-
@click="_deleteScheduleTask"
|
|
339
|
-
>
|
|
340
|
-
Delete
|
|
341
|
-
</v-btn>
|
|
342
|
-
</v-col>
|
|
343
|
-
</v-row>
|
|
344
|
-
</v-toolbar>
|
|
317
|
+
<div class="screen-modal__footer">
|
|
318
|
+
<v-btn
|
|
319
|
+
class="screen-btn-ghost"
|
|
320
|
+
variant="outlined"
|
|
321
|
+
:disabled="submitting"
|
|
322
|
+
@click="dialogDeleteTask = false"
|
|
323
|
+
>
|
|
324
|
+
Cancel
|
|
325
|
+
</v-btn>
|
|
326
|
+
<v-btn
|
|
327
|
+
class="screen-btn-primary"
|
|
328
|
+
variant="flat"
|
|
329
|
+
:loading="submitting"
|
|
330
|
+
@click="_deleteScheduleTask"
|
|
331
|
+
>
|
|
332
|
+
Delete
|
|
333
|
+
</v-btn>
|
|
334
|
+
</div>
|
|
345
335
|
</v-card>
|
|
346
336
|
</v-dialog>
|
|
347
337
|
|
package/components/UnitMain.vue
CHANGED
|
@@ -141,51 +141,39 @@
|
|
|
141
141
|
</HygieneUpdateMoreAction>
|
|
142
142
|
</v-dialog>
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
144
|
+
<!--
|
|
145
|
+
Was a `v-toolbar` title bar over a toolbar footer of two block buttons, the
|
|
146
|
+
confirm one on `color="black"` - not a token, so it drew a light-theme fill
|
|
147
|
+
on the dark theme. The shared confirmation shape now.
|
|
148
|
+
-->
|
|
149
|
+
<v-dialog v-model="dialogDeleteUnit" max-width="520">
|
|
150
|
+
<v-card class="screen-modal">
|
|
151
|
+
<v-card-title class="text-capitalize">
|
|
152
|
+
Delete {{ selectedUnit?.name || "Unit" }}
|
|
153
|
+
</v-card-title>
|
|
154
|
+
|
|
155
|
+
<v-card-text class="screen-modal__body">
|
|
156
|
+
Are you sure you want to delete this unit?
|
|
157
157
|
</v-card-text>
|
|
158
158
|
|
|
159
|
-
<
|
|
160
|
-
<v-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
variant="flat"
|
|
178
|
-
color="black"
|
|
179
|
-
class="text-none font-weight-bold"
|
|
180
|
-
height="48"
|
|
181
|
-
:loading="submitting"
|
|
182
|
-
@click="_deleteUnit"
|
|
183
|
-
>
|
|
184
|
-
Delete
|
|
185
|
-
</v-btn>
|
|
186
|
-
</v-col>
|
|
187
|
-
</v-row>
|
|
188
|
-
</v-toolbar>
|
|
159
|
+
<div class="screen-modal__footer">
|
|
160
|
+
<v-btn
|
|
161
|
+
class="screen-btn-ghost"
|
|
162
|
+
variant="outlined"
|
|
163
|
+
:disabled="submitting"
|
|
164
|
+
@click="dialogDeleteUnit = false"
|
|
165
|
+
>
|
|
166
|
+
Cancel
|
|
167
|
+
</v-btn>
|
|
168
|
+
<v-btn
|
|
169
|
+
class="screen-btn-primary"
|
|
170
|
+
variant="flat"
|
|
171
|
+
:loading="submitting"
|
|
172
|
+
@click="_deleteUnit"
|
|
173
|
+
>
|
|
174
|
+
Delete
|
|
175
|
+
</v-btn>
|
|
176
|
+
</div>
|
|
189
177
|
</v-card>
|
|
190
178
|
</v-dialog>
|
|
191
179
|
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@7365admin1/layer-common",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "3.2.2-staging.
|
|
5
|
+
"version": "3.2.2-staging.131",
|
|
6
6
|
"author": "7365admin1",
|
|
7
7
|
"main": "./nuxt.config.ts",
|
|
8
8
|
"//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",
|