@7365admin1/layer-common 3.2.2-staging.154 → 3.2.2-staging.156
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.
|
@@ -357,6 +357,29 @@
|
|
|
357
357
|
</h2>
|
|
358
358
|
</div>
|
|
359
359
|
|
|
360
|
+
<!--
|
|
361
|
+
THE TWO SERIES COLOURS STAY LITERAL, AND HERE IS WHY.
|
|
362
|
+
|
|
363
|
+
Everything else in this chart already follows the theme - the gridlines,
|
|
364
|
+
the axis labels and the ring around each dot are all Vuetify theme vars.
|
|
365
|
+
The two series are not, and they are the only chart colours in the file
|
|
366
|
+
that are still hexes.
|
|
367
|
+
|
|
368
|
+
They are left that way deliberately. The handoff names no chart palette
|
|
369
|
+
at all (searched: no "chart", no "legend", no "graph", and neither hex
|
|
370
|
+
appears anywhere in it), so the fallback rule is "use the token the
|
|
371
|
+
literal was already imitating". `#e53935` is plainly `--err`. `#ff9b9b`
|
|
372
|
+
is a second, softer red, and the palette has no second red - the only
|
|
373
|
+
other red token is `--err-bg`, a 10%-alpha FILL that would be invisible
|
|
374
|
+
as a 3px line. Re-pointing just one of them would collapse the pair in
|
|
375
|
+
dark mode, where `--err` is `rgb(229,115,115)` and would sit almost on
|
|
376
|
+
top of `#ff9b9b`'s `rgb(255,155,155)` - two lines the reader could no
|
|
377
|
+
longer tell apart. That is the same "do not merge two series into one
|
|
378
|
+
colour" trap as the Work Order Status bars below.
|
|
379
|
+
|
|
380
|
+
So: a two-series chart palette is missing from the design system, and
|
|
381
|
+
that is a designer question, not something to invent here.
|
|
382
|
+
-->
|
|
360
383
|
<div v-if="hasChartData" class="mt-4" ref="chartContainerRef">
|
|
361
384
|
<svg
|
|
362
385
|
:viewBox="`0 0 ${chartWidth} 260`"
|
|
@@ -2473,6 +2496,29 @@ const todayAttentions = computed(() =>
|
|
|
2473
2496
|
normalizeListItems(["todayAttentions", "attentions"])
|
|
2474
2497
|
);
|
|
2475
2498
|
|
|
2499
|
+
/**
|
|
2500
|
+
* THE WORK ORDER STATUS BARS.
|
|
2501
|
+
*
|
|
2502
|
+
* Was three hand-picked hexes - `#2fb84d` green, `#f12d2d` red, `#ff8900`
|
|
2503
|
+
* orange - and blind to the theme: the SAME three bars in light and in dark,
|
|
2504
|
+
* because a literal cannot follow a theme. Each is re-pointed at the token
|
|
2505
|
+
* whose hue it was already imitating, which is the same treatment the KPI
|
|
2506
|
+
* tiles got, and which keeps all three bars distinguishable.
|
|
2507
|
+
*
|
|
2508
|
+
* ONE OF THEM DOES NOT AGREE WITH `utils/status.ts`, ON PURPOSE.
|
|
2509
|
+
* That file maps `completed -> ok` and `pending -> warn` (both honoured here),
|
|
2510
|
+
* but it also maps `in progress -> warn` - the SAME tone as `pending`. Applying
|
|
2511
|
+
* it literally would paint two of these three bars the same amber and make the
|
|
2512
|
+
* chart unreadable, which is a regression, not a fix. So "In Progress" keeps
|
|
2513
|
+
* the tone it is drawn in today (`--err`, the token `#f12d2d` was imitating)
|
|
2514
|
+
* and this stays a colour change with no behaviour change.
|
|
2515
|
+
*
|
|
2516
|
+
* That leaves a real inconsistency to settle: on this very page the "In
|
|
2517
|
+
* Progress" feedback CHIP is amber (`warn`) while this bar is red. Resolving it
|
|
2518
|
+
* means either giving `in progress` its own tone in `utils/status.ts` - which
|
|
2519
|
+
* is shared by every chip in the estate - or ruling that a chart series is not
|
|
2520
|
+
* a status chip. Both are design decisions, so neither is taken here.
|
|
2521
|
+
*/
|
|
2476
2522
|
const workOrderStatus = computed(() => {
|
|
2477
2523
|
const summary = finalDashboardData.value?.workOrderStatusSummary;
|
|
2478
2524
|
const metric = getMetric(["openWorkOrder", "workOrders", "workOrder"]);
|
|
@@ -2493,19 +2539,19 @@ const workOrderStatus = computed(() => {
|
|
|
2493
2539
|
label: "Completed",
|
|
2494
2540
|
value: completed,
|
|
2495
2541
|
percent: (completed / max) * 100,
|
|
2496
|
-
color: "
|
|
2542
|
+
color: "var(--ok)",
|
|
2497
2543
|
},
|
|
2498
2544
|
{
|
|
2499
2545
|
label: "In Progress",
|
|
2500
2546
|
value: inProgress,
|
|
2501
2547
|
percent: (inProgress / max) * 100,
|
|
2502
|
-
color: "
|
|
2548
|
+
color: "var(--err)",
|
|
2503
2549
|
},
|
|
2504
2550
|
{
|
|
2505
2551
|
label: "Pending",
|
|
2506
2552
|
value: pending,
|
|
2507
2553
|
percent: (pending / max) * 100,
|
|
2508
|
-
color: "
|
|
2554
|
+
color: "var(--warn)",
|
|
2509
2555
|
},
|
|
2510
2556
|
];
|
|
2511
2557
|
});
|
|
@@ -3945,32 +3991,53 @@ function formatDashboardTime(value?: string) {
|
|
|
3945
3991
|
text-transform: capitalize;
|
|
3946
3992
|
}
|
|
3947
3993
|
|
|
3948
|
-
/*
|
|
3949
|
-
|
|
3994
|
+
/* THESE FIVE ARE LITERAL ON PURPOSE - THE PRINT VIEW IS PAPER.
|
|
3995
|
+
*
|
|
3996
|
+
* `.print-dashboard-view` above pins its surface to `#ffffff` and its ink to
|
|
3997
|
+
* `#1e293b` in BOTH themes, because a printed page is white however the app is
|
|
3998
|
+
* themed. Putting the status tokens on these badges therefore did the opposite
|
|
3999
|
+
* of what tokenising usually does: it let the SCREEN theme reach a surface that
|
|
4000
|
+
* does not follow it. Measured on the print branch at 1440:
|
|
4001
|
+
*
|
|
4002
|
+
* light In Progress rgb(59,111,212) on rgb(235,241,251) 4.20:1
|
|
4003
|
+
* light Completed rgb(15,138,98) on rgb(231,243,239) 3.82:1
|
|
4004
|
+
* dark In Progress rgb(125,166,236) on rgb(239,244,253) 2.23:1
|
|
4005
|
+
* dark Completed rgb(65,199,149) on rgb(232,248,242) 1.93:1
|
|
4006
|
+
*
|
|
4007
|
+
* The dark rows are the defect: the dark-theme INK composited over the white
|
|
4008
|
+
* paper the print view forces, so anyone who exports the dashboard while the
|
|
4009
|
+
* app is in dark mode gets washed-out badges - 1.93:1, the lowest reading taken
|
|
4010
|
+
* on this component. So these go back to fixed pastels, and specifically to the
|
|
4011
|
+
* SAME five pairs the Word export writes into its own stylesheet further up, so
|
|
4012
|
+
* the on-page print view and the exported document finally match.
|
|
4013
|
+
*
|
|
4014
|
+
* Same rule as the signature pad: a surface that does not follow the theme must
|
|
4015
|
+
* not be painted with tokens that do.
|
|
4016
|
+
*/
|
|
3950
4017
|
.badge-success {
|
|
3951
|
-
background-color:
|
|
3952
|
-
color:
|
|
4018
|
+
background-color: #d1fae5;
|
|
4019
|
+
color: #065f46;
|
|
3953
4020
|
}
|
|
3954
4021
|
|
|
3955
4022
|
.badge-info {
|
|
3956
|
-
background-color:
|
|
3957
|
-
color:
|
|
4023
|
+
background-color: #e0f2fe;
|
|
4024
|
+
color: #075985;
|
|
3958
4025
|
}
|
|
3959
4026
|
|
|
3960
4027
|
.badge-danger,
|
|
3961
4028
|
.badge-error {
|
|
3962
|
-
background-color:
|
|
3963
|
-
color:
|
|
4029
|
+
background-color: #fee2e2;
|
|
4030
|
+
color: #991b1b;
|
|
3964
4031
|
}
|
|
3965
4032
|
|
|
3966
4033
|
.badge-warning {
|
|
3967
|
-
background-color:
|
|
3968
|
-
color:
|
|
4034
|
+
background-color: #fef3c7;
|
|
4035
|
+
color: #92400e;
|
|
3969
4036
|
}
|
|
3970
4037
|
|
|
3971
4038
|
.badge-neutral {
|
|
3972
|
-
background-color:
|
|
3973
|
-
color:
|
|
4039
|
+
background-color: #f1f5f9;
|
|
4040
|
+
color: #475569;
|
|
3974
4041
|
}
|
|
3975
4042
|
|
|
3976
4043
|
/* ------------------------------------------------------------------ */
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<p class="flex-grow-1">Booking Fee</p>
|
|
80
80
|
<v-switch
|
|
81
81
|
v-model="facility.isBookingFeeEnabled"
|
|
82
|
-
color="
|
|
82
|
+
color="accent"
|
|
83
83
|
hide-details
|
|
84
84
|
@update:modelValue="onChangeIsBookingFeeEnabled"
|
|
85
85
|
></v-switch>
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
/>
|
|
140
140
|
</v-col>
|
|
141
141
|
<v-col cols="12" class="mt-4">
|
|
142
|
-
<v-card class="mx-auto border-sm pa-2
|
|
142
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
143
143
|
<v-row no-gutters align="center">
|
|
144
144
|
<v-col cols="" class="text-caption"> Total Booking Fee </v-col>
|
|
145
145
|
<v-col cols="" class="text-right text-caption">
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
</v-card>
|
|
170
170
|
</v-col>
|
|
171
171
|
<v-col cols="12" class="mt-4">
|
|
172
|
-
<v-card class="mx-auto border-sm pa-2
|
|
172
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
173
173
|
<v-row no-gutters align="center">
|
|
174
174
|
<v-col class="text-caption"> Peak Total Booking Fee </v-col>
|
|
175
175
|
<v-col class="text-right text-caption">
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
<p class="flex-grow-1">Guest</p>
|
|
211
211
|
<v-switch
|
|
212
212
|
v-model="facility.isGuestEnabled"
|
|
213
|
-
color="
|
|
213
|
+
color="accent"
|
|
214
214
|
hide-details
|
|
215
215
|
:disabled="!facility.isBookingFeeEnabled"
|
|
216
216
|
/>
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
/>
|
|
257
257
|
</v-col>
|
|
258
258
|
<v-col cols="12" class="mt-4">
|
|
259
|
-
<v-card class="mx-auto border-sm pa-2
|
|
259
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
260
260
|
<v-row no-gutters align="center">
|
|
261
261
|
<v-col class="text-caption">
|
|
262
262
|
Total Booking Fee for Guest
|
|
@@ -288,7 +288,7 @@
|
|
|
288
288
|
</v-card>
|
|
289
289
|
</v-col>
|
|
290
290
|
<v-col cols="12" class="mt-4">
|
|
291
|
-
<v-card class="mx-auto border-sm pa-2
|
|
291
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
292
292
|
<v-row no-gutters align="center">
|
|
293
293
|
<v-col class="text-caption">
|
|
294
294
|
Peak Total Booking Fee for Guest
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
<p class="flex-grow-1">Deposit</p>
|
|
333
333
|
<v-switch
|
|
334
334
|
v-model="facility.isDepositEnabled"
|
|
335
|
-
color="
|
|
335
|
+
color="accent"
|
|
336
336
|
hide-details
|
|
337
337
|
@update:modelValue="onChangeIsDepositFeeEnabled"
|
|
338
338
|
></v-switch>
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
<p class="flex-grow-1">Booking Policy</p>
|
|
367
367
|
<v-switch
|
|
368
368
|
v-model="facility.isBookingPolicyEnabled"
|
|
369
|
-
color="
|
|
369
|
+
color="accent"
|
|
370
370
|
hide-details
|
|
371
371
|
/>
|
|
372
372
|
</div>
|
|
@@ -419,16 +419,14 @@
|
|
|
419
419
|
></v-number-input>
|
|
420
420
|
</v-col>
|
|
421
421
|
<v-col cols="12" md="2" class="pa-1">
|
|
422
|
-
<
|
|
422
|
+
<AppButton
|
|
423
423
|
:disabled="!sampleData.description && !sampleData.count"
|
|
424
424
|
type="submit"
|
|
425
|
-
|
|
425
|
+
class="w-100"
|
|
426
426
|
@click="upsertChecklist()"
|
|
427
|
-
block
|
|
428
|
-
size="large"
|
|
429
427
|
>
|
|
430
428
|
{{ !isEditing ? "Add" : "Edit" }}
|
|
431
|
-
</
|
|
429
|
+
</AppButton>
|
|
432
430
|
</v-col>
|
|
433
431
|
</v-row>
|
|
434
432
|
</section>
|
|
@@ -445,7 +443,7 @@
|
|
|
445
443
|
<v-icon
|
|
446
444
|
icon="mdi-drag"
|
|
447
445
|
class="drag-handle cursor-move mr-2"
|
|
448
|
-
color="
|
|
446
|
+
color="muted"
|
|
449
447
|
/>
|
|
450
448
|
</template>
|
|
451
449
|
|
|
@@ -465,7 +463,7 @@
|
|
|
465
463
|
? 'mdi-message'
|
|
466
464
|
: 'mdi-message-outline'
|
|
467
465
|
"
|
|
468
|
-
:color="item.permanentRemarks ? 'primary' : '
|
|
466
|
+
:color="item.permanentRemarks ? 'primary' : 'muted'"
|
|
469
467
|
variant="text"
|
|
470
468
|
density="comfortable"
|
|
471
469
|
@click="remarksDialog(true, item?.permanentRemarks, index)"
|
|
@@ -503,7 +501,7 @@
|
|
|
503
501
|
<v-switch
|
|
504
502
|
v-model="isBookingUnitLimitEnabled"
|
|
505
503
|
class="d-flex align-center"
|
|
506
|
-
color="
|
|
504
|
+
color="accent"
|
|
507
505
|
hide-details
|
|
508
506
|
@update:model-value="onToggleBookingUnitLimit"
|
|
509
507
|
/>
|
|
@@ -541,7 +539,7 @@
|
|
|
541
539
|
<v-switch
|
|
542
540
|
v-model="isMaxNumberGuestLimitEnabled"
|
|
543
541
|
class="d-flex align-center"
|
|
544
|
-
color="
|
|
542
|
+
color="accent"
|
|
545
543
|
hide-details
|
|
546
544
|
@update:model-value="onToggleMaxNumberGuestLimit"
|
|
547
545
|
/>
|
|
@@ -578,7 +576,7 @@
|
|
|
578
576
|
<v-switch
|
|
579
577
|
v-model="isCancelAllowedLimitEnabled"
|
|
580
578
|
class="d-flex align-center"
|
|
581
|
-
color="
|
|
579
|
+
color="accent"
|
|
582
580
|
hide-details
|
|
583
581
|
@update:model-value="onToggleCancelAllowedLimit"
|
|
584
582
|
/>
|
|
@@ -607,17 +605,14 @@
|
|
|
607
605
|
width="300"
|
|
608
606
|
persistent
|
|
609
607
|
>
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
@click="remarksDialog(false)"
|
|
619
|
-
/>
|
|
620
|
-
</v-toolbar>
|
|
608
|
+
<!-- Was a `v-card` with a bare `v-toolbar` heading, which Vuetify paints
|
|
609
|
+
from its own `surface` - a slab visibly lighter than the card on the
|
|
610
|
+
dark theme. The design's modal heading is the card's own title row. -->
|
|
611
|
+
<v-card class="screen-modal">
|
|
612
|
+
<v-card-title class="d-flex align-center">
|
|
613
|
+
<span class="flex-grow-1">Permanent Remarks</span>
|
|
614
|
+
<v-icon icon="mdi-close" size="30" @click="remarksDialog(false)" />
|
|
615
|
+
</v-card-title>
|
|
621
616
|
|
|
622
617
|
<v-row no-gutters class="pa-4">
|
|
623
618
|
<!-- remarks -->
|
|
@@ -635,13 +630,9 @@
|
|
|
635
630
|
<!-- clear/confirm buttons-->
|
|
636
631
|
<v-col cols="12" class="mt-4">
|
|
637
632
|
<v-row no-gutters>
|
|
638
|
-
<
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
color="primary"
|
|
642
|
-
flat
|
|
643
|
-
@click="confirmRemarks()"
|
|
644
|
-
/>
|
|
633
|
+
<AppButton class="w-100" @click="confirmRemarks()">
|
|
634
|
+
Confirm
|
|
635
|
+
</AppButton>
|
|
645
636
|
</v-row>
|
|
646
637
|
</v-col>
|
|
647
638
|
</v-row>
|
|
@@ -650,18 +641,18 @@
|
|
|
650
641
|
|
|
651
642
|
<!-- delete -->
|
|
652
643
|
<v-dialog v-model="isDeleteItem" width="500" persistent class="text-center">
|
|
653
|
-
<v-card class="
|
|
654
|
-
<!-- HEADER
|
|
655
|
-
|
|
656
|
-
|
|
644
|
+
<v-card class="screen-modal">
|
|
645
|
+
<!-- HEADER - the close cross sat in a `v-toolbar`, a second grey slab
|
|
646
|
+
above the card on the dark theme. It is the title row's own end. -->
|
|
647
|
+
<v-card-title class="d-flex justify-end">
|
|
657
648
|
<v-icon
|
|
658
649
|
icon="mdi-close"
|
|
659
650
|
size="x-large"
|
|
660
651
|
@click="isDeleteItem = false"
|
|
661
652
|
/>
|
|
662
|
-
</v-
|
|
653
|
+
</v-card-title>
|
|
663
654
|
|
|
664
|
-
<v-card-text class="d-flex flex-column align-center">
|
|
655
|
+
<v-card-text class="screen-modal__body d-flex flex-column align-center">
|
|
665
656
|
<img
|
|
666
657
|
src="/icons/delete-dialog-icon.svg"
|
|
667
658
|
alt="delete-dialog-icon"
|
|
@@ -671,15 +662,8 @@
|
|
|
671
662
|
/>
|
|
672
663
|
Are you sure you want to delete this?
|
|
673
664
|
</v-card-text>
|
|
674
|
-
<v-col>
|
|
675
|
-
<
|
|
676
|
-
text="yes"
|
|
677
|
-
type="submit"
|
|
678
|
-
color="primary"
|
|
679
|
-
@click="confirmDelete()"
|
|
680
|
-
width="50%"
|
|
681
|
-
elevation="0"
|
|
682
|
-
/>
|
|
665
|
+
<v-col class="d-flex justify-center pb-4">
|
|
666
|
+
<AppButton type="submit" @click="confirmDelete()">Yes</AppButton>
|
|
683
667
|
</v-col>
|
|
684
668
|
</v-card>
|
|
685
669
|
</v-dialog>
|
|
@@ -1080,10 +1064,17 @@ function onToggleCancelAllowedLimit(val: any) {
|
|
|
1080
1064
|
}
|
|
1081
1065
|
|
|
1082
1066
|
.list-feature-toggle {
|
|
1083
|
-
border: 1px solid
|
|
1067
|
+
border: 1px solid var(--border);
|
|
1084
1068
|
height: 50px;
|
|
1085
1069
|
}
|
|
1086
1070
|
|
|
1071
|
+
/* The four fee-summary panels asked Vuetify for `grey-lighten-4` - #f5f5f5 in
|
|
1072
|
+
BOTH themes, so a white slab inside a dark card. `--bg` is the design's
|
|
1073
|
+
recessed surface and follows the theme. */
|
|
1074
|
+
.fee-summary {
|
|
1075
|
+
background: var(--bg);
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1087
1078
|
.drag-area {
|
|
1088
1079
|
cursor: grab;
|
|
1089
1080
|
}
|
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
fullscreen
|
|
6
6
|
>
|
|
7
7
|
<v-card>
|
|
8
|
-
|
|
8
|
+
<!-- The inline `background-color: white` painted this bar white in BOTH
|
|
9
|
+
themes - a white slab across the top of the dialog on the dark one.
|
|
10
|
+
Removed, so Vuetify paints it from the theme's `surface` as every
|
|
11
|
+
other converted bar in the estate does. -->
|
|
12
|
+
<v-toolbar>
|
|
9
13
|
<v-btn icon="mdi-arrow-left" @click="closeDialog"></v-btn>
|
|
10
14
|
|
|
11
15
|
<v-toolbar-title>Pass & Keys</v-toolbar-title>
|
|
@@ -14,7 +18,7 @@
|
|
|
14
18
|
</v-toolbar>
|
|
15
19
|
<v-row no-gutters class="pa-15">
|
|
16
20
|
<v-col cols="12">
|
|
17
|
-
<
|
|
21
|
+
<AppCard class="pa-6">
|
|
18
22
|
<v-row no-gutters>
|
|
19
23
|
<v-col
|
|
20
24
|
cols="12"
|
|
@@ -67,7 +71,9 @@
|
|
|
67
71
|
>
|
|
68
72
|
<template v-slot:label>
|
|
69
73
|
Select template
|
|
70
|
-
|
|
74
|
+
<!-- `text-red` is Vuetify's own palette red, a literal that
|
|
75
|
+
ignores the theme. `text-error` is the design's. -->
|
|
76
|
+
<span class="text-error font-weight-bold">*</span>
|
|
71
77
|
</template>
|
|
72
78
|
<!-- <template v-slot:append-item>
|
|
73
79
|
<div v-intersect="endIntersectTemplateList" />
|
|
@@ -112,7 +118,7 @@
|
|
|
112
118
|
@click="selectedChoicePaperSizeOrientation = 'A4'"
|
|
113
119
|
:color="
|
|
114
120
|
selectedChoicePaperSizeOrientation === 'A4'
|
|
115
|
-
? '
|
|
121
|
+
? 'success'
|
|
116
122
|
: ''
|
|
117
123
|
"
|
|
118
124
|
>
|
|
@@ -156,7 +162,7 @@
|
|
|
156
162
|
@click="selectedChoicePaperSizeOrientation = 'CCP'"
|
|
157
163
|
:color="
|
|
158
164
|
selectedChoicePaperSizeOrientation === 'CCP'
|
|
159
|
-
? '
|
|
165
|
+
? 'success'
|
|
160
166
|
: ''
|
|
161
167
|
"
|
|
162
168
|
>
|
|
@@ -199,7 +205,7 @@
|
|
|
199
205
|
@click="selectedChoicePaperSizeOrientation = 'CCL'"
|
|
200
206
|
:color="
|
|
201
207
|
selectedChoicePaperSizeOrientation === 'CCL'
|
|
202
|
-
? '
|
|
208
|
+
? 'success'
|
|
203
209
|
: ''
|
|
204
210
|
"
|
|
205
211
|
>
|
|
@@ -310,7 +316,7 @@
|
|
|
310
316
|
<template v-slot:loader="{ isActive }">
|
|
311
317
|
<v-progress-linear
|
|
312
318
|
:active="isActive"
|
|
313
|
-
color="
|
|
319
|
+
color="primary-button"
|
|
314
320
|
height="4"
|
|
315
321
|
indeterminate
|
|
316
322
|
></v-progress-linear>
|
|
@@ -436,7 +442,7 @@
|
|
|
436
442
|
cols="12"
|
|
437
443
|
sm="7"
|
|
438
444
|
md="1"
|
|
439
|
-
:class="`text-capitalize text-body-2
|
|
445
|
+
:class="`text-capitalize text-body-2 ${
|
|
440
446
|
$vuetify.display.xs && 'mb-1'
|
|
441
447
|
}`"
|
|
442
448
|
>
|
|
@@ -483,7 +489,7 @@
|
|
|
483
489
|
cols="12"
|
|
484
490
|
sm="7"
|
|
485
491
|
md="3"
|
|
486
|
-
:class="`text-capitalize text-body-2
|
|
492
|
+
:class="`text-capitalize text-body-2 ${
|
|
487
493
|
$vuetify.display.xs && 'mb-1'
|
|
488
494
|
}`"
|
|
489
495
|
>
|
|
@@ -524,7 +530,7 @@
|
|
|
524
530
|
cols="12"
|
|
525
531
|
sm="7"
|
|
526
532
|
md="1"
|
|
527
|
-
:class="`text-capitalize text-body-2
|
|
533
|
+
:class="`text-capitalize text-body-2 ${
|
|
528
534
|
$vuetify.display.xs && 'mb-1'
|
|
529
535
|
}`"
|
|
530
536
|
>
|
|
@@ -569,7 +575,7 @@
|
|
|
569
575
|
cols="12"
|
|
570
576
|
sm="7"
|
|
571
577
|
md="4"
|
|
572
|
-
:class="`text-capitalize text-body-2
|
|
578
|
+
:class="`text-capitalize text-body-2 ${
|
|
573
579
|
$vuetify.display.xs && 'mb-1'
|
|
574
580
|
}`"
|
|
575
581
|
>
|
|
@@ -610,7 +616,7 @@
|
|
|
610
616
|
cols="12"
|
|
611
617
|
sm="7"
|
|
612
618
|
md="2"
|
|
613
|
-
:class="`text-capitalize text-body-2
|
|
619
|
+
:class="`text-capitalize text-body-2 ${
|
|
614
620
|
$vuetify.display.xs && 'mb-1'
|
|
615
621
|
}`"
|
|
616
622
|
>
|
|
@@ -728,16 +734,15 @@
|
|
|
728
734
|
|
|
729
735
|
<v-row no-gutters class="pt-2">
|
|
730
736
|
<v-col cols="12" class="d-flex justify-end">
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
>
|
|
737
|
+
<!-- `color="primary"` on a v-btn asked Vuetify to FILL with the
|
|
738
|
+
foreground token. The design's filled action is AppButton,
|
|
739
|
+
which paints from `primary-button`. -->
|
|
740
|
+
<AppButton @click="printContent" :disabled="isPrintDisabled">
|
|
736
741
|
Print
|
|
737
|
-
</
|
|
742
|
+
</AppButton>
|
|
738
743
|
</v-col>
|
|
739
744
|
</v-row>
|
|
740
|
-
</
|
|
745
|
+
</AppCard>
|
|
741
746
|
</v-col>
|
|
742
747
|
</v-row>
|
|
743
748
|
</v-card>
|
|
@@ -746,7 +751,8 @@
|
|
|
746
751
|
<!-- start range dialog -->
|
|
747
752
|
<v-snackbar
|
|
748
753
|
v-model="snackbarStartRange"
|
|
749
|
-
|
|
754
|
+
class="app-toast"
|
|
755
|
+
color="error"
|
|
750
756
|
:timeout="5000"
|
|
751
757
|
multi-line
|
|
752
758
|
>
|
|
@@ -761,8 +767,11 @@
|
|
|
761
767
|
generate
|
|
762
768
|
</v-btn>
|
|
763
769
|
<template v-slot:actions>
|
|
770
|
+
<!-- Was `color="white"`. The dark theme's `error` fill is a LIGHT colour
|
|
771
|
+
carrying dark ink (`on-error`), so a hardcoded white cross measured
|
|
772
|
+
~2:1 on it. Dropping the colour lets the button inherit `on-error`
|
|
773
|
+
and read correctly in both themes. -->
|
|
764
774
|
<v-btn
|
|
765
|
-
color="white"
|
|
766
775
|
variant="text"
|
|
767
776
|
@click="snackbarStartRange = false"
|
|
768
777
|
icon="mdi-close"
|
|
@@ -1226,23 +1235,20 @@ async function nextPage() {
|
|
|
1226
1235
|
</script>
|
|
1227
1236
|
|
|
1228
1237
|
<style scoped>
|
|
1229
|
-
|
|
1230
|
-
color
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
color: red !important;
|
|
1242
|
-
}
|
|
1243
|
-
|
|
1238
|
+
/*
|
|
1239
|
+
`.custom-placeholer-color` and `.custom-label-color` were declared here and
|
|
1240
|
+
applied to NOTHING - neither class appears anywhere in the template. Deleted
|
|
1241
|
+
rather than left as three blocks of red-text styling waiting to be pasted
|
|
1242
|
+
onto a field by mistake.
|
|
1243
|
+
|
|
1244
|
+
`.placeHolderDarken` IS applied (the three paper-size fields). Its
|
|
1245
|
+
`color: primary` was not a colour - `primary` is a Vuetify theme NAME, not a
|
|
1246
|
+
CSS keyword, so the browser dropped that one declaration as invalid and the
|
|
1247
|
+
placeholder has never been darkened. The `opacity: 1` beside it did apply.
|
|
1248
|
+
Now points at the design's muted ink, which is what "darken" meant.
|
|
1249
|
+
*/
|
|
1244
1250
|
.placeHolderDarken ::placeholder {
|
|
1245
|
-
color:
|
|
1251
|
+
color: var(--muted) !important;
|
|
1246
1252
|
opacity: 1;
|
|
1247
1253
|
}
|
|
1248
1254
|
</style>
|
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.156",
|
|
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.",
|