@7365admin1/layer-common 3.2.2-staging.128 → 3.2.2-staging.130
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/components/AreaChecklistHistoryMain.vue +9 -6
- package/components/AreaMain.vue +64 -90
- package/components/Carousel.vue +56 -36
- package/components/Chat/Bubbles.vue +43 -14
- package/components/Chat/Information.vue +49 -32
- package/components/Chat/ListCard.vue +38 -9
- package/components/Chat/Message.vue +41 -15
- package/components/Chat/Navigation.vue +27 -15
- package/components/CleaningScheduleMain.vue +15 -3
- package/components/DrawImage.vue +29 -21
- package/components/EquipmentItemMain.vue +80 -91
- package/components/EquipmentManagementMain.vue +72 -96
- package/components/Input/Date.vue +3 -0
- package/components/Input/File.vue +55 -10
- package/components/Input/ListGroupSelection.vue +56 -8
- 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/components/WorkOrder/Create.vue +26 -17
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card class="mb-2 pa-2
|
|
2
|
+
<v-card class="chat-listcard screen-card mb-2 pa-2" elevation="0">
|
|
3
3
|
<v-row no-gutters align="center">
|
|
4
4
|
<v-col cols="12" sm="4" class="d-flex justify-center align-center">
|
|
5
5
|
<v-img
|
|
@@ -15,30 +15,30 @@
|
|
|
15
15
|
<v-col cols="12" sm="8" class="py-2 pe-1">
|
|
16
16
|
<v-row dense>
|
|
17
17
|
<v-col cols="12" class="d-flex align-center flex-wrap">
|
|
18
|
-
<span class="
|
|
18
|
+
<span class="chat-listcard__label me-1">Created by</span>
|
|
19
19
|
|
|
20
|
-
<v-avatar
|
|
20
|
+
<v-avatar class="chat-listcard__avatar me-1" size="20">
|
|
21
21
|
<v-img
|
|
22
22
|
v-if="userProfile"
|
|
23
23
|
:src="userProfile"
|
|
24
24
|
width="20"
|
|
25
25
|
height="20"
|
|
26
26
|
/>
|
|
27
|
-
<span v-else class="
|
|
27
|
+
<span v-else class="chat-listcard__initials">
|
|
28
28
|
{{ getNameInitials }}
|
|
29
29
|
</span>
|
|
30
30
|
</v-avatar>
|
|
31
31
|
|
|
32
|
-
<span class="
|
|
32
|
+
<span class="chat-listcard__cell">{{ createdByName || "Unknown" }}</span>
|
|
33
33
|
</v-col>
|
|
34
34
|
|
|
35
|
-
<v-col cols="12" class="
|
|
35
|
+
<v-col cols="12" class="chat-listcard__cell">Subject: {{ subject }}</v-col>
|
|
36
36
|
|
|
37
|
-
<v-col cols="12" class="
|
|
38
|
-
Status: <
|
|
37
|
+
<v-col cols="12" class="chat-listcard__cell d-flex align-center ga-1">
|
|
38
|
+
Status: <StatusChip :status="status" />
|
|
39
39
|
</v-col>
|
|
40
40
|
|
|
41
|
-
<v-col cols="12" class="
|
|
41
|
+
<v-col cols="12" class="chat-listcard__cell">
|
|
42
42
|
Date Created: {{ createdAt }}
|
|
43
43
|
</v-col>
|
|
44
44
|
</v-row>
|
|
@@ -60,3 +60,32 @@ defineProps({
|
|
|
60
60
|
getNameInitials: Function,
|
|
61
61
|
});
|
|
62
62
|
</script>
|
|
63
|
+
|
|
64
|
+
<style scoped>
|
|
65
|
+
.chat-listcard {
|
|
66
|
+
font-family: var(--font-sans);
|
|
67
|
+
color: var(--text);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.chat-listcard__cell,
|
|
71
|
+
.chat-listcard__label {
|
|
72
|
+
font-size: var(--fs-cell-dense);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.chat-listcard__label {
|
|
76
|
+
font-weight: 600;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Was `color="surface-variant"` with `text-overline` initials - 10px letters
|
|
80
|
+
with 1.6px tracking inside a 20px circle, which drew as one clipped glyph. */
|
|
81
|
+
.chat-listcard__avatar {
|
|
82
|
+
background: var(--hover);
|
|
83
|
+
color: var(--text2);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.chat-listcard__initials {
|
|
87
|
+
font-size: 9px;
|
|
88
|
+
font-weight: 700;
|
|
89
|
+
letter-spacing: 0;
|
|
90
|
+
}
|
|
91
|
+
</style>
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-sheet
|
|
3
|
-
elevation="
|
|
3
|
+
elevation="0"
|
|
4
4
|
rounded="0"
|
|
5
|
-
class="fill-height d-flex flex-column"
|
|
6
|
-
style="border-right: 1px solid #e0e0e0; border-top: 1px solid #e0e0e0"
|
|
5
|
+
class="chat-panel fill-height d-flex flex-column"
|
|
7
6
|
>
|
|
8
|
-
<div
|
|
9
|
-
<h3 class="
|
|
7
|
+
<div class="chat-panel__head px-4 pt-4 pb-2 mb-2">
|
|
8
|
+
<h3 class="screen-card-title">
|
|
10
9
|
{{ type === "workOrder" ? "Work Order" : "Feedback" }} Chat
|
|
11
10
|
</h3>
|
|
12
11
|
</div>
|
|
13
12
|
|
|
14
13
|
<v-sheet
|
|
15
|
-
class="overflow-y-auto flex-grow-1 pa-3"
|
|
14
|
+
class="chat-panel__thread overflow-y-auto flex-grow-1 pa-3"
|
|
16
15
|
:style="{ height: 'calc(100vh - 300px)', overflowX: 'hidden' }"
|
|
17
16
|
>
|
|
18
17
|
<v-row
|
|
@@ -35,10 +34,11 @@
|
|
|
35
34
|
</v-row>
|
|
36
35
|
</v-sheet>
|
|
37
36
|
|
|
38
|
-
<v-card class="mx-4 mb-4 mt-2 pa-3
|
|
37
|
+
<v-card class="screen-card mx-4 mb-4 mt-2 pa-3" elevation="0">
|
|
39
38
|
<v-row no-gutters align="end">
|
|
40
39
|
<v-col cols="10">
|
|
41
40
|
<v-textarea
|
|
41
|
+
class="filter-field"
|
|
42
42
|
label="Message"
|
|
43
43
|
auto-grow
|
|
44
44
|
hide-details
|
|
@@ -47,9 +47,7 @@
|
|
|
47
47
|
/>
|
|
48
48
|
</v-col>
|
|
49
49
|
<v-col cols="2" class="pl-2">
|
|
50
|
-
<v-btn
|
|
51
|
-
>Send</v-btn
|
|
52
|
-
>
|
|
50
|
+
<v-btn class="screen-btn-primary" variant="flat" block>Send</v-btn>
|
|
53
51
|
</v-col>
|
|
54
52
|
</v-row>
|
|
55
53
|
|
|
@@ -57,23 +55,27 @@
|
|
|
57
55
|
|
|
58
56
|
<v-row justify="start" no-gutters align="center">
|
|
59
57
|
<v-col cols="auto">
|
|
60
|
-
<v-icon size="20" class="mr-3">mdi-paperclip</v-icon>
|
|
58
|
+
<v-icon size="20" class="chat-panel__tool mr-3">mdi-paperclip</v-icon>
|
|
61
59
|
</v-col>
|
|
62
60
|
|
|
63
61
|
<v-col cols="auto">
|
|
64
|
-
<v-icon size="20" class="mr-3"
|
|
62
|
+
<v-icon size="20" class="chat-panel__tool mr-3"
|
|
63
|
+
>mdi-emoticon-happy-outline</v-icon
|
|
64
|
+
>
|
|
65
65
|
</v-col>
|
|
66
66
|
|
|
67
67
|
<v-col cols="auto">
|
|
68
68
|
<v-menu location="top" offset="10">
|
|
69
69
|
<template #activator="{ props }">
|
|
70
70
|
<v-btn icon v-bind="props" density="compact" variant="text">
|
|
71
|
-
<v-icon size="20"
|
|
71
|
+
<v-icon size="20" class="chat-panel__tool"
|
|
72
|
+
>mdi-message-outline</v-icon
|
|
73
|
+
>
|
|
72
74
|
</v-btn>
|
|
73
75
|
</template>
|
|
74
76
|
|
|
75
|
-
<v-card min-width="350" class="
|
|
76
|
-
<v-card-title class="
|
|
77
|
+
<v-card min-width="350" class="screen-card">
|
|
78
|
+
<v-card-title class="screen-card-title pb-1"
|
|
77
79
|
>Quick Chat</v-card-title
|
|
78
80
|
>
|
|
79
81
|
<v-divider class="mb-1" />
|
|
@@ -156,3 +158,27 @@ const selectQuickChat = (msg: string) => {
|
|
|
156
158
|
console.log("Quick Chat Selected:", msg);
|
|
157
159
|
};
|
|
158
160
|
</script>
|
|
161
|
+
|
|
162
|
+
<style scoped>
|
|
163
|
+
/* The panel's two rules were hard-coded `1px solid #e0e0e0`, which is a light-
|
|
164
|
+
theme hairline drawn on the dark theme as well. Same lines, on `--border`. */
|
|
165
|
+
.chat-panel {
|
|
166
|
+
background: var(--card);
|
|
167
|
+
border-right: 1px solid var(--border);
|
|
168
|
+
border-top: 1px solid var(--border);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.chat-panel__head {
|
|
172
|
+
border-bottom: 1px solid var(--border);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.chat-panel__thread {
|
|
176
|
+
background: var(--bg);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Was a bare icon and one `color="gray"` - not a token, and not the same tone
|
|
180
|
+
as the icon beside it. */
|
|
181
|
+
.chat-panel__tool {
|
|
182
|
+
color: var(--muted);
|
|
183
|
+
}
|
|
184
|
+
</style>
|
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-sheet
|
|
3
|
-
|
|
4
|
-
rounded="0"
|
|
5
|
-
class="pa-4 fill-height"
|
|
6
|
-
style="border-right: 1px solid #e0e0e0; border-top: 1px solid #e0e0e0"
|
|
7
|
-
>
|
|
8
|
-
<h3 class="text-h6 mb-4">{{ title }}</h3>
|
|
2
|
+
<v-sheet elevation="0" rounded="0" class="chat-nav pa-4 fill-height">
|
|
3
|
+
<h3 class="screen-card-title mb-4">{{ title }}</h3>
|
|
9
4
|
|
|
10
5
|
<v-text-field
|
|
11
6
|
v-model="search"
|
|
12
7
|
@input="_search"
|
|
13
8
|
label="Search"
|
|
14
9
|
prepend-inner-icon="mdi-magnify"
|
|
15
|
-
density="compact"
|
|
16
10
|
hide-details
|
|
17
11
|
variant="outlined"
|
|
18
|
-
class="mb-4"
|
|
12
|
+
class="filter-field mb-4"
|
|
19
13
|
/>
|
|
20
14
|
|
|
21
15
|
<v-select
|
|
22
16
|
label="Filter by Status"
|
|
23
17
|
:items="['All', 'In Progress', 'To Do', 'Done']"
|
|
24
18
|
v-model="selectedStatus"
|
|
25
|
-
density="compact"
|
|
26
19
|
hide-details
|
|
27
20
|
variant="outlined"
|
|
28
|
-
class="mb-4"
|
|
21
|
+
class="filter-field mb-4"
|
|
29
22
|
/>
|
|
30
23
|
|
|
31
24
|
<v-row dense class="mb-4" align="center">
|
|
@@ -43,7 +36,7 @@
|
|
|
43
36
|
v-bind="props"
|
|
44
37
|
v-model="startDate"
|
|
45
38
|
label="Start Date"
|
|
46
|
-
|
|
39
|
+
class="filter-field"
|
|
47
40
|
variant="outlined"
|
|
48
41
|
readonly
|
|
49
42
|
hide-details
|
|
@@ -63,7 +56,7 @@
|
|
|
63
56
|
</v-col>
|
|
64
57
|
|
|
65
58
|
<v-col cols="2" class="d-flex align-center justify-center">
|
|
66
|
-
<span class="
|
|
59
|
+
<span class="chat-nav__to">to</span>
|
|
67
60
|
</v-col>
|
|
68
61
|
|
|
69
62
|
<v-col cols="5">
|
|
@@ -80,7 +73,7 @@
|
|
|
80
73
|
v-bind="props"
|
|
81
74
|
v-model="endDate"
|
|
82
75
|
label="End Date"
|
|
83
|
-
|
|
76
|
+
class="filter-field"
|
|
84
77
|
variant="outlined"
|
|
85
78
|
readonly
|
|
86
79
|
hide-details
|
|
@@ -101,7 +94,7 @@
|
|
|
101
94
|
</v-row>
|
|
102
95
|
|
|
103
96
|
<v-sheet
|
|
104
|
-
class="overflow-y-auto flex-grow-1 pa-3"
|
|
97
|
+
class="chat-nav__list overflow-y-auto flex-grow-1 pa-3"
|
|
105
98
|
:style="{ height: 'calc(100vh - 320px)', overflowX: 'hidden' }"
|
|
106
99
|
>
|
|
107
100
|
<v-row dense>
|
|
@@ -148,3 +141,22 @@ function _search() {
|
|
|
148
141
|
emit("search", search.value);
|
|
149
142
|
}
|
|
150
143
|
</script>
|
|
144
|
+
|
|
145
|
+
<style scoped>
|
|
146
|
+
/* Same two hard-coded #e0e0e0 hairlines the chat panel carried, on --border. */
|
|
147
|
+
.chat-nav {
|
|
148
|
+
background: var(--card);
|
|
149
|
+
border-right: 1px solid var(--border);
|
|
150
|
+
border-top: 1px solid var(--border);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.chat-nav__list {
|
|
154
|
+
background: var(--bg);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.chat-nav__to {
|
|
158
|
+
font-family: var(--font-sans);
|
|
159
|
+
font-size: var(--fs-cell);
|
|
160
|
+
color: var(--muted);
|
|
161
|
+
}
|
|
162
|
+
</style>
|
|
@@ -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>
|
package/components/DrawImage.vue
CHANGED
|
@@ -4,32 +4,25 @@
|
|
|
4
4
|
transition="dialog-top-transition"
|
|
5
5
|
max-width="1000"
|
|
6
6
|
>
|
|
7
|
-
<v-card class="
|
|
8
|
-
<
|
|
9
|
-
<v-spacer></v-spacer>
|
|
10
|
-
<v-btn icon="mdi-close" @click="emit('onCloseDialog')" />
|
|
11
|
-
</v-toolbar>
|
|
12
|
-
<canvas id="imageCanvas" />
|
|
13
|
-
<v-card-title class="text-end">
|
|
7
|
+
<v-card class="screen-modal">
|
|
8
|
+
<div class="draw-image__head">
|
|
14
9
|
<v-btn
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@click="
|
|
20
|
-
|
|
10
|
+
class="screen-modal__close"
|
|
11
|
+
variant="text"
|
|
12
|
+
icon="mdi-close"
|
|
13
|
+
aria-label="Close"
|
|
14
|
+
@click="emit('onCloseDialog')"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
<canvas id="imageCanvas" />
|
|
18
|
+
<div class="screen-modal__footer">
|
|
19
|
+
<v-btn class="screen-btn-ghost" variant="outlined" @click="onClearDrawing()">
|
|
21
20
|
Clear Drawing
|
|
22
21
|
</v-btn>
|
|
23
|
-
<v-btn
|
|
24
|
-
color="blue-darken-3"
|
|
25
|
-
size="small"
|
|
26
|
-
variant="flat"
|
|
27
|
-
style="height: 40px"
|
|
28
|
-
@click="submit"
|
|
29
|
-
>
|
|
22
|
+
<v-btn class="screen-btn-primary" variant="flat" @click="submit">
|
|
30
23
|
Submit
|
|
31
24
|
</v-btn>
|
|
32
|
-
</
|
|
25
|
+
</div>
|
|
33
26
|
</v-card>
|
|
34
27
|
</v-dialog>
|
|
35
28
|
</template>
|
|
@@ -170,3 +163,18 @@ async function onClearDrawing() {
|
|
|
170
163
|
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
171
164
|
}
|
|
172
165
|
</script>
|
|
166
|
+
|
|
167
|
+
<style scoped>
|
|
168
|
+
/* The design's modal has a title row; this dialog has never had a title, only
|
|
169
|
+
a close - so the row keeps that and just moves the close onto the design's
|
|
170
|
+
borderless 32px square. No copy invented. */
|
|
171
|
+
.draw-image__head {
|
|
172
|
+
display: flex;
|
|
173
|
+
justify-content: flex-end;
|
|
174
|
+
padding: 12px 12px 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* The canvas itself is untouched: its width/height are computed in script from
|
|
178
|
+
its own bounding box, so a layout rule here would quietly move the drawing
|
|
179
|
+
coordinates - a behaviour change no render can prove. */
|
|
180
|
+
</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>
|