@7365admin1/layer-common 4.97.1-staging.581 → 4.97.1-staging.583
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 +54 -11
- package/assets/css/screens.css +3 -3
- package/assets/css/tokens.css +17 -12
- package/components/AnprCameraBadge.vue +1 -1
- package/components/AreaMain.vue +11 -5
- package/components/BillingMain.vue +12 -53
- package/components/BulletinBoardManagement.vue +9 -13
- package/components/CameraWall.vue +7 -7
- package/components/CameraWallTile.vue +8 -8
- package/components/Chat/ListCard.vue +1 -1
- package/components/CleaningScheduleMain.vue +56 -20
- package/components/ClientMain.vue +1 -1
- package/components/ClientSubscriptionForm.vue +1 -1
- package/components/DashboardMain.vue +13 -13
- package/components/HidAccessLogDashboard.vue +3 -3
- package/components/HidIntercomManagement.vue +14 -14
- package/components/HidQrCodeConfiguration.vue +3 -3
- package/components/HidReaderManagement.vue +1 -1
- package/components/InventoryPhotoThumbs.vue +1 -1
- package/components/InvitationMain.vue +8 -0
- package/components/Layout/Header.vue +2 -2
- package/components/Layout/NavigationDrawer.vue +1 -1
- package/components/MemberMain.vue +8 -0
- package/components/Nfc/NFCRouteScheduleTimes.vue +1 -1
- package/components/PlateNumberDisplay.vue +1 -1
- package/components/RolePermissionMain.vue +13 -0
- package/components/ScheduleAreaMain.vue +6 -9
- package/components/ScheduleGuide.vue +101 -0
- package/components/ScheduleTaskForm.vue +88 -7
- package/components/ScheduleTaskMain.vue +163 -56
- package/components/SiteSettings.vue +5 -5
- package/components/StatusChip.vue +1 -1
- package/components/VisitorsReportPreview.vue +2 -2
- package/composables/useKey.ts +20 -16
- package/package.json +1 -1
- package/pages/unauthorized.vue +4 -3
- package/utils/breadcrumb.ts +7 -0
- package/utils/nav-sections.ts +2 -0
- package/utils/schedule-task.ts +106 -23
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
:y="label.y"
|
|
70
70
|
text-anchor="end"
|
|
71
71
|
alignment-baseline="middle"
|
|
72
|
-
style="fill: #64748b; font-size:
|
|
72
|
+
style="fill: #64748b; font-size: 12px; font-weight: 500"
|
|
73
73
|
>
|
|
74
74
|
{{ label.text }}
|
|
75
75
|
</text>
|
|
@@ -471,7 +471,7 @@
|
|
|
471
471
|
:y="label.y"
|
|
472
472
|
text-anchor="end"
|
|
473
473
|
alignment-baseline="middle"
|
|
474
|
-
style="fill: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)); font-size:
|
|
474
|
+
style="fill: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)); font-size: 12px; font-weight: 500"
|
|
475
475
|
>
|
|
476
476
|
{{ label.text }}
|
|
477
477
|
</text>
|
|
@@ -4283,7 +4283,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4283
4283
|
|
|
4284
4284
|
.print-kpi-title {
|
|
4285
4285
|
color: #64748b;
|
|
4286
|
-
font-size:
|
|
4286
|
+
font-size: 12px;
|
|
4287
4287
|
font-weight: 700;
|
|
4288
4288
|
text-transform: uppercase;
|
|
4289
4289
|
margin-bottom: 8px;
|
|
@@ -4299,7 +4299,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4299
4299
|
|
|
4300
4300
|
.print-kpi-meta {
|
|
4301
4301
|
color: #64748b;
|
|
4302
|
-
font-size:
|
|
4302
|
+
font-size: 12px;
|
|
4303
4303
|
margin-top: 6px;
|
|
4304
4304
|
}
|
|
4305
4305
|
|
|
@@ -4349,7 +4349,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4349
4349
|
|
|
4350
4350
|
.print-status-badge {
|
|
4351
4351
|
display: inline-block;
|
|
4352
|
-
font-size:
|
|
4352
|
+
font-size: 12px;
|
|
4353
4353
|
font-weight: 600;
|
|
4354
4354
|
padding: 2px 8px;
|
|
4355
4355
|
border-radius: 4px;
|
|
@@ -4636,7 +4636,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4636
4636
|
|
|
4637
4637
|
.figma-list-main p {
|
|
4638
4638
|
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
4639
|
-
font-size:
|
|
4639
|
+
font-size: 12px;
|
|
4640
4640
|
font-weight: 700;
|
|
4641
4641
|
line-height: 1.3;
|
|
4642
4642
|
margin: 3px 0 0;
|
|
@@ -4662,7 +4662,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4662
4662
|
color: var(--muted);
|
|
4663
4663
|
display: flex;
|
|
4664
4664
|
font-family: var(--font-sans);
|
|
4665
|
-
font-size:
|
|
4665
|
+
font-size: 12px;
|
|
4666
4666
|
font-weight: 700;
|
|
4667
4667
|
gap: 8px;
|
|
4668
4668
|
min-width: 0;
|
|
@@ -4766,7 +4766,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4766
4766
|
.active-patrol-main span {
|
|
4767
4767
|
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
4768
4768
|
display: block;
|
|
4769
|
-
font-size:
|
|
4769
|
+
font-size: 12px;
|
|
4770
4770
|
line-height: 1.25;
|
|
4771
4771
|
overflow-wrap: anywhere;
|
|
4772
4772
|
}
|
|
@@ -4811,7 +4811,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4811
4811
|
|
|
4812
4812
|
.active-patrol-assignee span {
|
|
4813
4813
|
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
4814
|
-
font-size:
|
|
4814
|
+
font-size: 12px;
|
|
4815
4815
|
font-weight: 600;
|
|
4816
4816
|
line-height: 1.2;
|
|
4817
4817
|
min-width: 0;
|
|
@@ -4830,7 +4830,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4830
4830
|
|
|
4831
4831
|
.active-patrol-status-pill {
|
|
4832
4832
|
border-radius: 20px;
|
|
4833
|
-
font-size:
|
|
4833
|
+
font-size: 12px;
|
|
4834
4834
|
font-weight: 600;
|
|
4835
4835
|
line-height: 1.2;
|
|
4836
4836
|
padding: 5px 10px;
|
|
@@ -4846,7 +4846,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4846
4846
|
color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
|
|
4847
4847
|
display: inline-flex;
|
|
4848
4848
|
flex: 0 0 auto;
|
|
4849
|
-
font-size:
|
|
4849
|
+
font-size: 12px;
|
|
4850
4850
|
font-weight: 800;
|
|
4851
4851
|
height: 24px;
|
|
4852
4852
|
justify-content: center;
|
|
@@ -4869,7 +4869,7 @@ function formatDashboardTime(value?: string) {
|
|
|
4869
4869
|
box-shadow: var(--shadow-menu);
|
|
4870
4870
|
color: var(--card);
|
|
4871
4871
|
content: attr(data-tooltip);
|
|
4872
|
-
font-size:
|
|
4872
|
+
font-size: 12px;
|
|
4873
4873
|
font-weight: 600;
|
|
4874
4874
|
left: 50%;
|
|
4875
4875
|
line-height: 1.35;
|
|
@@ -5099,7 +5099,7 @@ function formatDashboardTime(value?: string) {
|
|
|
5099
5099
|
color: var(--accent-text);
|
|
5100
5100
|
display: inline-flex;
|
|
5101
5101
|
flex-shrink: 0;
|
|
5102
|
-
font-size:
|
|
5102
|
+
font-size: 12px;
|
|
5103
5103
|
font-weight: 800;
|
|
5104
5104
|
height: 30px;
|
|
5105
5105
|
justify-content: center;
|
|
@@ -1447,7 +1447,7 @@ function buildPdfHtml() {
|
|
|
1447
1447
|
background: #ffffff;
|
|
1448
1448
|
color: #0a2638;
|
|
1449
1449
|
font-family: Arial, Helvetica, sans-serif;
|
|
1450
|
-
font-size:
|
|
1450
|
+
font-size: 12px;
|
|
1451
1451
|
}
|
|
1452
1452
|
|
|
1453
1453
|
.pdf-summary {
|
|
@@ -1482,7 +1482,7 @@ function buildPdfHtml() {
|
|
|
1482
1482
|
}
|
|
1483
1483
|
|
|
1484
1484
|
.pdf-value {
|
|
1485
|
-
font-size:
|
|
1485
|
+
font-size: 12px;
|
|
1486
1486
|
line-height: 1.35;
|
|
1487
1487
|
}
|
|
1488
1488
|
|
|
@@ -1693,7 +1693,7 @@ watch(selectedReaderId, (value) => {
|
|
|
1693
1693
|
.history-table-card :deep(th) {
|
|
1694
1694
|
background: var(--thead);
|
|
1695
1695
|
color: var(--muted);
|
|
1696
|
-
font-size:
|
|
1696
|
+
font-size: 12px;
|
|
1697
1697
|
font-weight: 800;
|
|
1698
1698
|
text-transform: uppercase;
|
|
1699
1699
|
letter-spacing: 0.04em;
|
|
@@ -2259,7 +2259,7 @@ export default {
|
|
|
2259
2259
|
.field-label {
|
|
2260
2260
|
margin: 12px 0 7px;
|
|
2261
2261
|
color: var(--text2);
|
|
2262
|
-
font-size:
|
|
2262
|
+
font-size: 12px;
|
|
2263
2263
|
font-weight: 500;
|
|
2264
2264
|
}
|
|
2265
2265
|
|
|
@@ -2270,7 +2270,7 @@ export default {
|
|
|
2270
2270
|
.field-hint {
|
|
2271
2271
|
margin: 6px 0 0;
|
|
2272
2272
|
color: var(--text2);
|
|
2273
|
-
font-size:
|
|
2273
|
+
font-size: 12px;
|
|
2274
2274
|
line-height: 1.4;
|
|
2275
2275
|
}
|
|
2276
2276
|
|
|
@@ -2295,7 +2295,7 @@ export default {
|
|
|
2295
2295
|
.sip-label {
|
|
2296
2296
|
margin: 12px 0 6px;
|
|
2297
2297
|
color: var(--text);
|
|
2298
|
-
font-size:
|
|
2298
|
+
font-size: 12px;
|
|
2299
2299
|
font-weight: 500;
|
|
2300
2300
|
line-height: 1.2;
|
|
2301
2301
|
}
|
|
@@ -2333,7 +2333,7 @@ export default {
|
|
|
2333
2333
|
|
|
2334
2334
|
.sip-section-switch small {
|
|
2335
2335
|
color: var(--muted);
|
|
2336
|
-
font-size:
|
|
2336
|
+
font-size: 12px;
|
|
2337
2337
|
line-height: 1.4;
|
|
2338
2338
|
}
|
|
2339
2339
|
|
|
@@ -2475,7 +2475,7 @@ export default {
|
|
|
2475
2475
|
.call-label {
|
|
2476
2476
|
margin: 8px 0 6px;
|
|
2477
2477
|
color: var(--text);
|
|
2478
|
-
font-size:
|
|
2478
|
+
font-size: 12px;
|
|
2479
2479
|
font-weight: 500;
|
|
2480
2480
|
letter-spacing: 0;
|
|
2481
2481
|
}
|
|
@@ -2498,7 +2498,7 @@ export default {
|
|
|
2498
2498
|
|
|
2499
2499
|
.call-radio-list :deep(.v-label) {
|
|
2500
2500
|
color: var(--text2);
|
|
2501
|
-
font-size:
|
|
2501
|
+
font-size: 12px;
|
|
2502
2502
|
letter-spacing: 0;
|
|
2503
2503
|
opacity: 1;
|
|
2504
2504
|
}
|
|
@@ -2514,7 +2514,7 @@ export default {
|
|
|
2514
2514
|
border-radius: 3px;
|
|
2515
2515
|
background: var(--card);
|
|
2516
2516
|
color: var(--text);
|
|
2517
|
-
font-size:
|
|
2517
|
+
font-size: 12px;
|
|
2518
2518
|
letter-spacing: 0;
|
|
2519
2519
|
}
|
|
2520
2520
|
|
|
@@ -2670,7 +2670,7 @@ export default {
|
|
|
2670
2670
|
.web-phone-status {
|
|
2671
2671
|
min-width: 92px;
|
|
2672
2672
|
justify-content: center;
|
|
2673
|
-
font-size:
|
|
2673
|
+
font-size: 12px;
|
|
2674
2674
|
}
|
|
2675
2675
|
|
|
2676
2676
|
.web-phone-status.ready {
|
|
@@ -2762,7 +2762,7 @@ export default {
|
|
|
2762
2762
|
|
|
2763
2763
|
.sip-account-label {
|
|
2764
2764
|
color: var(--muted);
|
|
2765
|
-
font-size:
|
|
2765
|
+
font-size: 12px;
|
|
2766
2766
|
}
|
|
2767
2767
|
|
|
2768
2768
|
.sip-account-extension {
|
|
@@ -2775,7 +2775,7 @@ export default {
|
|
|
2775
2775
|
max-width: 170px;
|
|
2776
2776
|
overflow: hidden;
|
|
2777
2777
|
color: var(--text2);
|
|
2778
|
-
font-size:
|
|
2778
|
+
font-size: 12px;
|
|
2779
2779
|
text-align: right;
|
|
2780
2780
|
text-overflow: ellipsis;
|
|
2781
2781
|
white-space: nowrap;
|
|
@@ -2851,7 +2851,7 @@ export default {
|
|
|
2851
2851
|
max-width: 100%;
|
|
2852
2852
|
overflow: hidden;
|
|
2853
2853
|
color: var(--border);
|
|
2854
|
-
font-size:
|
|
2854
|
+
font-size: 12px;
|
|
2855
2855
|
text-overflow: ellipsis;
|
|
2856
2856
|
white-space: nowrap;
|
|
2857
2857
|
}
|
|
@@ -2908,7 +2908,7 @@ export default {
|
|
|
2908
2908
|
|
|
2909
2909
|
.web-phone-error {
|
|
2910
2910
|
margin-top: 14px;
|
|
2911
|
-
font-size:
|
|
2911
|
+
font-size: 12px;
|
|
2912
2912
|
}
|
|
2913
2913
|
|
|
2914
2914
|
.call-two-col {
|
|
@@ -2935,7 +2935,7 @@ export default {
|
|
|
2935
2935
|
min-height: 38px;
|
|
2936
2936
|
border: 1px dashed var(--border);
|
|
2937
2937
|
color: var(--text2);
|
|
2938
|
-
font-size:
|
|
2938
|
+
font-size: 12px;
|
|
2939
2939
|
letter-spacing: 0;
|
|
2940
2940
|
}
|
|
2941
2941
|
|
|
@@ -2965,7 +2965,7 @@ export default {
|
|
|
2965
2965
|
min-height: 32px;
|
|
2966
2966
|
margin: 0 0 10px;
|
|
2967
2967
|
color: var(--text2);
|
|
2968
|
-
font-size:
|
|
2968
|
+
font-size: 12px;
|
|
2969
2969
|
}
|
|
2970
2970
|
|
|
2971
2971
|
.call-file-name {
|
|
@@ -644,7 +644,7 @@ function showMessage(text: string, color: string) {
|
|
|
644
644
|
.pass-subtext {
|
|
645
645
|
min-height: 18px;
|
|
646
646
|
color: #6b7280;
|
|
647
|
-
font-size:
|
|
647
|
+
font-size: 12px;
|
|
648
648
|
}
|
|
649
649
|
|
|
650
650
|
.qr-grid {
|
|
@@ -667,7 +667,7 @@ function showMessage(text: string, color: string) {
|
|
|
667
667
|
background-size: 10px 10px;
|
|
668
668
|
background-position: 0 0, 0 5px, 5px -5px, -5px 0;
|
|
669
669
|
color: #6b7280;
|
|
670
|
-
font-size:
|
|
670
|
+
font-size: 12px;
|
|
671
671
|
}
|
|
672
672
|
|
|
673
673
|
.qr-placeholder.small {
|
|
@@ -685,7 +685,7 @@ function showMessage(text: string, color: string) {
|
|
|
685
685
|
display: grid;
|
|
686
686
|
gap: 4px;
|
|
687
687
|
color: #4b5563;
|
|
688
|
-
font-size:
|
|
688
|
+
font-size: 12px;
|
|
689
689
|
}
|
|
690
690
|
|
|
691
691
|
.pass-footer strong {
|
|
@@ -307,7 +307,7 @@ const { getNameInitials } = useUtils();
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
.app-profile-menu__name {
|
|
310
|
-
font-size:
|
|
310
|
+
font-size: 14.5px;
|
|
311
311
|
font-weight: 800;
|
|
312
312
|
line-height: 1.3;
|
|
313
313
|
color: var(--text);
|
|
@@ -317,7 +317,7 @@ const { getNameInitials } = useUtils();
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
.app-profile-menu__site {
|
|
320
|
-
font-size:
|
|
320
|
+
font-size: 13px;
|
|
321
321
|
font-weight: 600;
|
|
322
322
|
line-height: 1.3;
|
|
323
323
|
color: var(--muted);
|
|
@@ -32,6 +32,14 @@
|
|
|
32
32
|
</template>
|
|
33
33
|
|
|
34
34
|
<template #right>
|
|
35
|
+
<AppField
|
|
36
|
+
v-model="headerSearch"
|
|
37
|
+
search
|
|
38
|
+
compact
|
|
39
|
+
placeholder="Search"
|
|
40
|
+
aria-label="Search"
|
|
41
|
+
klass="app-toolbar__search"
|
|
42
|
+
/>
|
|
35
43
|
<local-pagination
|
|
36
44
|
v-model="page"
|
|
37
45
|
:length="pages"
|
|
@@ -446,6 +454,11 @@ const {
|
|
|
446
454
|
}
|
|
447
455
|
);
|
|
448
456
|
|
|
457
|
+
// A new search starts from the first page.
|
|
458
|
+
watch(headerSearch, () => {
|
|
459
|
+
page.value = 1;
|
|
460
|
+
});
|
|
461
|
+
|
|
449
462
|
const loading = computed(() => getRoleReqStatus.value === "pending");
|
|
450
463
|
|
|
451
464
|
watchEffect(() => {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
:site="site"
|
|
7
7
|
:service-type="serviceType"
|
|
8
8
|
:schedule-route="scheduleRoute"
|
|
9
|
-
text="These are the areas on this day's checklist.
|
|
9
|
+
text="These are the areas on this day's checklist. Click an area to see each unit, tick it as done, or send it back to be redone."
|
|
10
10
|
/>
|
|
11
11
|
<TableMain
|
|
12
12
|
:title="pageTitle"
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
|
|
143
143
|
<script setup lang="ts">
|
|
144
144
|
import useCleaningSchedules from "../composables/useCleaningSchedules";
|
|
145
|
-
import {
|
|
145
|
+
import { dailyChecklistTitle, dailyStatusLabel } from "../utils/schedule-task";
|
|
146
146
|
import useUtils from "../composables/useUtils";
|
|
147
147
|
|
|
148
148
|
const props = defineProps({
|
|
@@ -157,11 +157,8 @@ const props = defineProps({
|
|
|
157
157
|
canManageScheduleTasks: { type: Boolean, default: false },
|
|
158
158
|
});
|
|
159
159
|
|
|
160
|
-
// "Daily
|
|
161
|
-
const pageTitle =
|
|
162
|
-
/ Schedule$/,
|
|
163
|
-
"",
|
|
164
|
-
)}`;
|
|
160
|
+
// "Daily Checklist – Cleaning" / "– Landscape" / ... (same title as the day list)
|
|
161
|
+
const pageTitle = dailyChecklistTitle(props.serviceType);
|
|
165
162
|
|
|
166
163
|
const submitting = ref(false);
|
|
167
164
|
const message = ref("");
|
|
@@ -198,9 +195,9 @@ const items = ref<Array<Record<string, any>>>([]);
|
|
|
198
195
|
const statusFilter = ref<TScheduleAreaStatus>("all");
|
|
199
196
|
const statusOptions = [
|
|
200
197
|
{ title: "All", value: "all" },
|
|
201
|
-
{ title: "
|
|
198
|
+
{ title: "Not started", value: "open" },
|
|
202
199
|
{ title: "In progress", value: "ongoing" },
|
|
203
|
-
{ title: "
|
|
200
|
+
{ title: "Done", value: "completed" },
|
|
204
201
|
];
|
|
205
202
|
const areaTypeFilter = ref<TAreaType>("all");
|
|
206
203
|
const typeOptions = [
|
|
@@ -9,6 +9,29 @@
|
|
|
9
9
|
<template>
|
|
10
10
|
<div class="schedule-guide">
|
|
11
11
|
<p v-if="text" class="schedule-guide__text">{{ text }}</p>
|
|
12
|
+
<!--
|
|
13
|
+
"How it works": the page's own short manual (owner 21 Oct - a supervisor
|
|
14
|
+
who was never trained must understand the screen from the screen). Open
|
|
15
|
+
by default until the viewer closes it; the choice is remembered on this
|
|
16
|
+
browser only.
|
|
17
|
+
-->
|
|
18
|
+
<v-expansion-panels
|
|
19
|
+
v-if="$slots.default && howTitle"
|
|
20
|
+
v-model="howPanel"
|
|
21
|
+
class="schedule-guide__how"
|
|
22
|
+
variant="accordion"
|
|
23
|
+
flat
|
|
24
|
+
>
|
|
25
|
+
<v-expansion-panel value="how">
|
|
26
|
+
<v-expansion-panel-title class="schedule-guide__how-title">
|
|
27
|
+
<v-icon size="20" class="mr-2">mdi-help-circle-outline</v-icon>
|
|
28
|
+
{{ howTitle }}
|
|
29
|
+
</v-expansion-panel-title>
|
|
30
|
+
<v-expansion-panel-text class="schedule-guide__how-body">
|
|
31
|
+
<slot />
|
|
32
|
+
</v-expansion-panel-text>
|
|
33
|
+
</v-expansion-panel>
|
|
34
|
+
</v-expansion-panels>
|
|
12
35
|
<v-alert
|
|
13
36
|
v-if="problems.length"
|
|
14
37
|
type="warning"
|
|
@@ -44,6 +67,27 @@ const props = defineProps({
|
|
|
44
67
|
serviceType: { type: String, default: "" },
|
|
45
68
|
scheduleRoute: { type: String, default: "" },
|
|
46
69
|
text: { type: String, default: "" },
|
|
70
|
+
/** Heading of the "How it works" panel; the panel shows only with this and a default slot. */
|
|
71
|
+
howTitle: { type: String, default: "" },
|
|
72
|
+
/** Remembers open/closed per panel on this browser. */
|
|
73
|
+
howKey: { type: String, default: "" },
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const HOW_STORE = () => `schedule-guide-how:${props.howKey || props.howTitle}`;
|
|
77
|
+
const howPanel = ref<string | undefined>("how");
|
|
78
|
+
onMounted(() => {
|
|
79
|
+
try {
|
|
80
|
+
if (localStorage.getItem(HOW_STORE()) === "closed") howPanel.value = undefined;
|
|
81
|
+
} catch {
|
|
82
|
+
// storage blocked: stay open
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
watch(howPanel, (v) => {
|
|
86
|
+
try {
|
|
87
|
+
localStorage.setItem(HOW_STORE(), v ? "open" : "closed");
|
|
88
|
+
} catch {
|
|
89
|
+
// storage blocked: nothing to remember
|
|
90
|
+
}
|
|
47
91
|
});
|
|
48
92
|
|
|
49
93
|
const { getAreas, getAreaById } = useAreas();
|
|
@@ -125,8 +169,65 @@ watch(() => [props.site, props.serviceType], check);
|
|
|
125
169
|
font-size: var(--fs-cell);
|
|
126
170
|
color: var(--text2);
|
|
127
171
|
}
|
|
172
|
+
.schedule-guide__how {
|
|
173
|
+
margin-bottom: 12px;
|
|
174
|
+
border: 1px solid var(--border);
|
|
175
|
+
border-radius: var(--r-inner);
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
}
|
|
178
|
+
.schedule-guide__how-title {
|
|
179
|
+
font-family: var(--font-sans);
|
|
180
|
+
font-size: var(--fs-card-title);
|
|
181
|
+
font-weight: 700;
|
|
182
|
+
}
|
|
183
|
+
.schedule-guide__how-body {
|
|
184
|
+
font-family: var(--font-sans);
|
|
185
|
+
font-size: var(--fs-cell);
|
|
186
|
+
line-height: 1.55;
|
|
187
|
+
}
|
|
128
188
|
.schedule-guide__list {
|
|
129
189
|
margin: 0;
|
|
130
190
|
padding-left: 18px;
|
|
131
191
|
}
|
|
132
192
|
</style>
|
|
193
|
+
|
|
194
|
+
<!-- Shared by the "How it works" content the schedule screens put in the slot. -->
|
|
195
|
+
<style>
|
|
196
|
+
.sg-steps {
|
|
197
|
+
margin: 0 0 12px;
|
|
198
|
+
padding-left: 22px;
|
|
199
|
+
}
|
|
200
|
+
.sg-steps li {
|
|
201
|
+
margin-bottom: 6px;
|
|
202
|
+
}
|
|
203
|
+
.sg-example {
|
|
204
|
+
margin: 0 0 12px;
|
|
205
|
+
padding: 12px 14px;
|
|
206
|
+
border-left: 3px solid rgb(var(--v-theme-primary));
|
|
207
|
+
border-radius: var(--r-inner-sm);
|
|
208
|
+
background: var(--hover);
|
|
209
|
+
}
|
|
210
|
+
.sg-legend {
|
|
211
|
+
display: grid;
|
|
212
|
+
grid-template-columns: max-content 1fr;
|
|
213
|
+
gap: 8px 12px;
|
|
214
|
+
align-items: center;
|
|
215
|
+
margin: 0;
|
|
216
|
+
}
|
|
217
|
+
.sg-legend dd {
|
|
218
|
+
margin: 0;
|
|
219
|
+
}
|
|
220
|
+
.sg-h {
|
|
221
|
+
margin: 4px 0 8px;
|
|
222
|
+
font-weight: 700;
|
|
223
|
+
}
|
|
224
|
+
@media (max-width: 599.98px) {
|
|
225
|
+
.sg-legend {
|
|
226
|
+
grid-template-columns: 1fr;
|
|
227
|
+
gap: 2px 0;
|
|
228
|
+
}
|
|
229
|
+
.sg-legend dd {
|
|
230
|
+
margin-bottom: 8px;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
</style>
|