@7365admin1/layer-common 3.2.2-staging.133 → 3.2.2-staging.134
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/screens.css +19 -1
- package/components/ManageChecklistMain.vue +96 -64
- package/package.json +1 -1
package/assets/css/screens.css
CHANGED
|
@@ -294,11 +294,29 @@
|
|
|
294
294
|
*
|
|
295
295
|
* Borderless and 32px square - NOT `.screen-icon-btn`, which is the bordered
|
|
296
296
|
* 40px square the design draws in a toolbar. The glyph is 19px.
|
|
297
|
+
*
|
|
298
|
+
* MEASURED, 2026-08-15: the size never reached the glass. Vuetify's own
|
|
299
|
+
*
|
|
300
|
+
* .v-btn--size-default.v-btn--icon { width: calc(var(--v-btn-height) + 12px);
|
|
301
|
+
* height: same }
|
|
302
|
+
*
|
|
303
|
+
* is TWO classes against this one, so every `.screen-modal__close` in the
|
|
304
|
+
* package drew at 36 + 12 = **48px**, with Vuetify's `padding: 0 16px` on top -
|
|
305
|
+
* half again the design's square, on all thirteen components that use it
|
|
306
|
+
* (`AreaFormDialog`, `Carousel`, `ConfirmDialog`, `DocumentViewer`, `DrawImage`,
|
|
307
|
+
* `EntryPass/QrTemplatePreview`, `EquipmentItemMain`, `EquipmentManagementMain`,
|
|
308
|
+
* `FileInput`, `ManageChecklistMain`, `PhotoUpload`, `ServiceProviderMain`,
|
|
309
|
+
* `Signature`). The `border-radius: 8px` DID win, which is what hid it: the
|
|
310
|
+
* control looked right and simply sat in a box a third too big.
|
|
311
|
+
*
|
|
312
|
+
* Naming `.v-btn` alongside it makes this (0,2,0) and the later sheet wins -
|
|
313
|
+
* the same specificity fix `.v-btn.screen-btn-primary` needed, no `!important`.
|
|
297
314
|
*/
|
|
298
|
-
.screen-modal__close {
|
|
315
|
+
.v-btn.screen-modal__close {
|
|
299
316
|
width: 32px;
|
|
300
317
|
height: 32px;
|
|
301
318
|
min-width: 32px;
|
|
319
|
+
padding: 0;
|
|
302
320
|
border-radius: 8px;
|
|
303
321
|
background: transparent;
|
|
304
322
|
color: var(--muted);
|
|
@@ -31,14 +31,23 @@
|
|
|
31
31
|
>
|
|
32
32
|
<!-- Status icon driven by local activeActions state -->
|
|
33
33
|
<template #item-prepend="{ item, group }">
|
|
34
|
+
<!--
|
|
35
|
+
`success` and `error` ARE this theme's tokens (`utils/theme.ts` maps
|
|
36
|
+
them to `p.ok` / `p.err`), so they stay. `grey-lighten-2` was not -
|
|
37
|
+
it is Vuetify's raw grey, and it drew the idle circle at 1.32:1
|
|
38
|
+
against the card where a non-text indicator needs 3:1. The design's
|
|
39
|
+
de-emphasis token is `--muted`, applied by class because `color`
|
|
40
|
+
takes a theme name, not a custom property.
|
|
41
|
+
-->
|
|
34
42
|
<v-icon
|
|
35
43
|
size="20"
|
|
44
|
+
:class="{ 'checklist-icon--idle': !activeActions[getKey(item, group.set)] }"
|
|
36
45
|
:color="
|
|
37
46
|
activeActions[getKey(item, group.set)] === 'approve'
|
|
38
47
|
? 'success'
|
|
39
48
|
: activeActions[getKey(item, group.set)] === 'reject'
|
|
40
49
|
? 'error'
|
|
41
|
-
:
|
|
50
|
+
: undefined
|
|
42
51
|
"
|
|
43
52
|
>
|
|
44
53
|
{{
|
|
@@ -194,11 +203,13 @@
|
|
|
194
203
|
v-if="group.attachments && group.attachments.length > 0"
|
|
195
204
|
cols="auto"
|
|
196
205
|
>
|
|
206
|
+
<!-- `variant="tonal"` was Vuetify's own tinted slab in the row -
|
|
207
|
+
the same off-design control `EquipmentManagementMain` had.
|
|
208
|
+
The design's ghost button. -->
|
|
197
209
|
<v-btn
|
|
198
|
-
size="
|
|
199
|
-
variant="
|
|
200
|
-
|
|
201
|
-
class="text-none"
|
|
210
|
+
size="small"
|
|
211
|
+
variant="outlined"
|
|
212
|
+
class="screen-btn-ghost"
|
|
202
213
|
prepend-icon="mdi-paperclip"
|
|
203
214
|
@click.stop="openAttachmentDialog(group.set, group.attachments)"
|
|
204
215
|
>
|
|
@@ -213,9 +224,16 @@
|
|
|
213
224
|
</v-col>
|
|
214
225
|
</v-row>
|
|
215
226
|
|
|
227
|
+
<!--
|
|
228
|
+
Was a bare `v-card` (Vuetify's own `surface`, a shade off the design's card)
|
|
229
|
+
with a `text-h5` title, and a `v-card-actions` footer whose Cancel sat on
|
|
230
|
+
`color="grey"` - not a token, so it drew the same grey on both themes and
|
|
231
|
+
the two buttons were right-aligned rather than the design's two equal
|
|
232
|
+
halves. It is the shared `.screen-modal` shape now.
|
|
233
|
+
-->
|
|
216
234
|
<v-dialog v-model="showCompletionModal" max-width="600" persistent>
|
|
217
|
-
<v-card>
|
|
218
|
-
<v-card-title
|
|
235
|
+
<v-card class="screen-modal">
|
|
236
|
+
<v-card-title>
|
|
219
237
|
{{
|
|
220
238
|
modalData.currentSet !== undefined
|
|
221
239
|
? `Set ${modalData.currentSet} Completed`
|
|
@@ -225,15 +243,17 @@
|
|
|
225
243
|
|
|
226
244
|
<v-divider />
|
|
227
245
|
|
|
228
|
-
<v-card-text class="pa-4">
|
|
246
|
+
<v-card-text class="screen-modal__body pa-4">
|
|
229
247
|
<v-row>
|
|
230
248
|
<v-col cols="12">
|
|
231
249
|
<InputLabel title="Remarks" :required="false" class="mb-2" />
|
|
250
|
+
<!-- `.filter-field` is the design's field on a `v-textarea`: the
|
|
251
|
+
10px corner and 13.5px type, without taking the binding away. -->
|
|
232
252
|
<v-textarea
|
|
233
253
|
v-model="modalData.remark"
|
|
254
|
+
class="filter-field"
|
|
234
255
|
placeholder="Enter your remarks here"
|
|
235
256
|
rows="4"
|
|
236
|
-
variant="outlined"
|
|
237
257
|
density="comfortable"
|
|
238
258
|
hide-details
|
|
239
259
|
/>
|
|
@@ -252,38 +272,47 @@
|
|
|
252
272
|
</v-row>
|
|
253
273
|
</v-card-text>
|
|
254
274
|
|
|
255
|
-
<
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
275
|
+
<div class="screen-modal__footer">
|
|
276
|
+
<v-btn
|
|
277
|
+
class="screen-btn-ghost"
|
|
278
|
+
variant="outlined"
|
|
279
|
+
@click="closeModal"
|
|
280
|
+
>
|
|
281
|
+
Cancel
|
|
282
|
+
</v-btn>
|
|
260
283
|
<v-btn
|
|
261
|
-
|
|
284
|
+
class="screen-btn-primary"
|
|
262
285
|
variant="flat"
|
|
263
286
|
@click="submitModal"
|
|
264
287
|
:disabled="!isModalValid"
|
|
265
288
|
>
|
|
266
289
|
Submit
|
|
267
290
|
</v-btn>
|
|
268
|
-
</
|
|
291
|
+
</div>
|
|
269
292
|
</v-card>
|
|
270
293
|
</v-dialog>
|
|
271
294
|
|
|
295
|
+
<!--
|
|
296
|
+
Same shape, and this one carried BOTH of the defects that repeated across
|
|
297
|
+
this claim: a `v-toolbar` as the footer bar (Vuetify's `surface`, a grey
|
|
298
|
+
slab that stays grey on dark) and `color="black"` on the confirm button -
|
|
299
|
+
not a token, so a black slab painted on the dark theme too.
|
|
300
|
+
-->
|
|
272
301
|
<v-dialog v-model="showRejectModal" max-width="600" persistent>
|
|
273
|
-
<v-card>
|
|
274
|
-
<v-card-title
|
|
302
|
+
<v-card class="screen-modal">
|
|
303
|
+
<v-card-title>Reject Checklist Item</v-card-title>
|
|
275
304
|
|
|
276
305
|
<v-divider />
|
|
277
306
|
|
|
278
|
-
<v-card-text class="pa-4">
|
|
307
|
+
<v-card-text class="screen-modal__body pa-4">
|
|
279
308
|
<v-row>
|
|
280
309
|
<v-col cols="12">
|
|
281
310
|
<InputLabel title="Remarks" :required="true" class="mb-2" />
|
|
282
311
|
<v-textarea
|
|
283
312
|
v-model="rejectModal.remarks"
|
|
313
|
+
class="filter-field"
|
|
284
314
|
placeholder="Enter remarks"
|
|
285
315
|
rows="4"
|
|
286
|
-
variant="outlined"
|
|
287
316
|
density="comfortable"
|
|
288
317
|
hide-details
|
|
289
318
|
/>
|
|
@@ -302,61 +331,50 @@
|
|
|
302
331
|
</v-row>
|
|
303
332
|
</v-card-text>
|
|
304
333
|
|
|
305
|
-
<
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
<v-btn
|
|
325
|
-
block
|
|
326
|
-
variant="flat"
|
|
327
|
-
color="black"
|
|
328
|
-
class="text-none font-weight-bold rounded-0"
|
|
329
|
-
height="48"
|
|
330
|
-
:loading="rejectModal.submitting"
|
|
331
|
-
:disabled="!isRejectModalValid || rejectModal.submitting"
|
|
332
|
-
@click="submitRejectDialog"
|
|
333
|
-
>
|
|
334
|
-
Confirm
|
|
335
|
-
</v-btn>
|
|
336
|
-
</v-col>
|
|
337
|
-
</v-row>
|
|
338
|
-
</v-toolbar>
|
|
334
|
+
<div class="screen-modal__footer">
|
|
335
|
+
<v-btn
|
|
336
|
+
class="screen-btn-ghost"
|
|
337
|
+
variant="outlined"
|
|
338
|
+
:disabled="rejectModal.submitting"
|
|
339
|
+
@click="closeRejectDialog"
|
|
340
|
+
>
|
|
341
|
+
Cancel
|
|
342
|
+
</v-btn>
|
|
343
|
+
<v-btn
|
|
344
|
+
class="screen-btn-primary"
|
|
345
|
+
variant="flat"
|
|
346
|
+
:loading="rejectModal.submitting"
|
|
347
|
+
:disabled="!isRejectModalValid || rejectModal.submitting"
|
|
348
|
+
@click="submitRejectDialog"
|
|
349
|
+
>
|
|
350
|
+
Confirm
|
|
351
|
+
</v-btn>
|
|
352
|
+
</div>
|
|
339
353
|
</v-card>
|
|
340
354
|
</v-dialog>
|
|
341
355
|
|
|
356
|
+
<!--
|
|
357
|
+
The design's modal close control is the borderless 32px square
|
|
358
|
+
`.screen-modal__close`, not the bordered toolbar icon button. The title was
|
|
359
|
+
a hand-set `text-h6 font-weight-bold`; `.screen-modal .v-card-title` is the
|
|
360
|
+
design's card-title size and weight, so the local pair goes.
|
|
361
|
+
-->
|
|
342
362
|
<v-dialog v-model="showAttachmentDialog" max-width="700" scrollable>
|
|
343
|
-
<v-card>
|
|
344
|
-
<v-card-title class="d-flex align-center
|
|
345
|
-
<span
|
|
346
|
-
Set {{ attachmentDialogSetNum }} — Attachments
|
|
347
|
-
</span>
|
|
363
|
+
<v-card class="screen-modal">
|
|
364
|
+
<v-card-title class="d-flex align-center">
|
|
365
|
+
<span>Set {{ attachmentDialogSetNum }} — Attachments</span>
|
|
348
366
|
<v-spacer />
|
|
349
367
|
<v-btn
|
|
350
368
|
icon="mdi-close"
|
|
351
369
|
variant="text"
|
|
352
|
-
|
|
370
|
+
class="screen-modal__close"
|
|
353
371
|
@click="showAttachmentDialog = false"
|
|
354
372
|
/>
|
|
355
373
|
</v-card-title>
|
|
356
374
|
|
|
357
375
|
<v-divider />
|
|
358
376
|
|
|
359
|
-
<v-card-text class="pa-4">
|
|
377
|
+
<v-card-text class="screen-modal__body pa-4">
|
|
360
378
|
<v-row>
|
|
361
379
|
<v-col
|
|
362
380
|
v-for="(id, index) in attachmentDialogIds"
|
|
@@ -404,11 +422,16 @@
|
|
|
404
422
|
</v-dialog>
|
|
405
423
|
|
|
406
424
|
<v-dialog v-model="showLightbox" max-width="900">
|
|
407
|
-
<v-card>
|
|
425
|
+
<v-card class="screen-modal">
|
|
408
426
|
<v-card-actions class="pa-2 justify-end">
|
|
409
|
-
<v-btn
|
|
427
|
+
<v-btn
|
|
428
|
+
icon="mdi-close"
|
|
429
|
+
variant="text"
|
|
430
|
+
class="screen-modal__close"
|
|
431
|
+
@click="showLightbox = false"
|
|
432
|
+
/>
|
|
410
433
|
</v-card-actions>
|
|
411
|
-
<v-card-text class="pa-2 pt-0">
|
|
434
|
+
<v-card-text class="screen-modal__body pa-2 pt-0">
|
|
412
435
|
<v-img :src="lightboxSrc" contain max-height="80vh" />
|
|
413
436
|
</v-card-text>
|
|
414
437
|
</v-card>
|
|
@@ -1006,3 +1029,12 @@ async function _updateUnitChecklist({
|
|
|
1006
1029
|
}
|
|
1007
1030
|
}
|
|
1008
1031
|
</script>
|
|
1032
|
+
|
|
1033
|
+
<style scoped>
|
|
1034
|
+
/* The idle checklist circle. `--muted` is the design's de-emphasis token and
|
|
1035
|
+
clears the 3:1 bar a non-text indicator needs; Vuetify's `grey-lighten-2`
|
|
1036
|
+
read 1.32:1. */
|
|
1037
|
+
.checklist-icon--idle {
|
|
1038
|
+
color: var(--muted);
|
|
1039
|
+
}
|
|
1040
|
+
</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.134",
|
|
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.",
|