@7365admin1/layer-common 3.2.1-staging.72 → 3.2.2

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/components/EntryPassInformation.vue +4 -4
  3. package/components/FeedbackMain.vue +7 -7
  4. package/components/HidAccessLogDashboard.vue +44 -119
  5. package/components/HidIdentityMapping.vue +975 -0
  6. package/components/HidIntercomManagement.vue +201 -808
  7. package/components/HidQrCodeConfiguration.vue +95 -907
  8. package/components/HidServiceSettingsPanel.vue +1 -20
  9. package/components/HidUserEnrollment.vue +81 -392
  10. package/components/Layout/NavigationDrawer.vue +2 -43
  11. package/components/NavigationItem.vue +0 -9
  12. package/components/Nfc/NFCPatrolRouteMain.vue +7 -52
  13. package/components/OnlineFormConfigurationForm.vue +224 -620
  14. package/components/OnlineFormFill.vue +8 -36
  15. package/components/OnlineFormsConfiguration.vue +2 -6
  16. package/components/QrTemplate/CreditCardLandscape.vue +12 -19
  17. package/components/QrTemplate/PrintDialog.vue +196 -209
  18. package/components/SiteSettings.vue +2 -4
  19. package/components/VisitorForm.vue +78 -201
  20. package/components/VisitorManagement.vue +2 -1
  21. package/composables/useComment.ts +3 -3
  22. package/composables/useHidAmico.ts +0 -127
  23. package/composables/useHidNavigation.ts +7 -0
  24. package/composables/useOnlineFormPages.ts +0 -2
  25. package/composables/useSiteSettings.ts +0 -50
  26. package/composables/useWebUsb.ts +37 -127
  27. package/middleware/member.ts +4 -0
  28. package/package.json +1 -2
  29. package/pages/[org]/[site]/access-mgmt/identity-mapping/index.vue +23 -0
  30. package/pages/[org]/[site]/access-mgmt/intercom/index.vue +1 -1
  31. package/plugins/secure-member.client.ts +56 -21
  32. package/plugins/vuetify.ts +9 -37
  33. package/types/site.d.ts +0 -71
  34. package/.changeset/camera-wall-gated-endpoint.md +0 -47
  35. package/.changeset/camera-wall-plain-english.md +0 -60
  36. package/.changeset/camera-wall-selection-and-guidance.md +0 -65
  37. package/.changeset/dark-primary-contrast.md +0 -39
  38. package/components/CameraWall.vue +0 -1034
  39. package/components/CameraWallTile.vue +0 -818
  40. package/components/HidCameraCaptureDialog.vue +0 -199
  41. package/composables/useSipWebPhone.ts +0 -311
  42. package/utils/camera-wall.test.ts +0 -571
  43. package/utils/camera-wall.ts +0 -926
  44. package/utils/theme.test.ts +0 -201
  45. package/utils/theme.ts +0 -136
@@ -1,41 +1,9 @@
1
1
  <!-- LayoutNavigationDrawer.vue -->
2
2
  <template>
3
- <!--
4
- `bg-brand-surface`, not `bg-primary`: `primary` is a foreground colour on a
5
- dark page (it has to carry `class="text-primary"` sentences at 4.5:1), and a
6
- fill that carries a label cannot also be that. `brand-surface` is a real
7
- surface in each theme - see `utils/theme.ts` - so the drawer belongs to the
8
- application it is in rather than being the one panel the theme switch never
9
- reached. Its label reads 15.43:1 light, 13.21:1 dark.
10
-
11
- NO HARDCODED LABEL COLOUR ANYWHERE IN HERE. Vuetify paints the drawer with
12
- `on-brand-surface` and the list inside it inherits that through
13
- `bg-transparent`, which the drawer supplies to every `v-list` it contains.
14
- A `text-white` in here (or in an app's `#action` / `#services` slot) is
15
- white on a light rail at 1.13:1.
16
-
17
- `floating` dropped so the drawer draws its own edge, and the three
18
- opacities below are raised on this element only:
19
-
20
- - `border-opacity` 0.45. A surface is a low-contrast panel by design
21
- (1.13:1 light, 1.19:1 dark against the page), so the edge is what carries
22
- the boundary: 3.27:1 light, 4.33:1 dark. The theme-wide value stays where
23
- it is; raising that would redraw every table and card edge in eleven
24
- applications.
25
- - `hover-opacity` 0.08. Material's 0.04 is 1.11:1 on this rail, which is
26
- not feedback. 0.08 is 1.17:1 light, 1.24:1 dark.
27
- - `activated-opacity` 0.18. The active item is `primary` text on a
28
- primary-tinted fill (see `NavigationItem.vue`); 0.12 left the fill at
29
- 1.15:1, 0.18 is 1.44:1 light, 1.33:1 dark.
30
- -->
31
- <v-navigation-drawer
32
- v-model="drawer"
33
- permanent
34
- class="bg-brand-surface brand-drawer"
35
- >
3
+ <v-navigation-drawer v-model="drawer" permanent floating class="bg-primary">
36
4
  <v-list>
37
5
  <v-list-item>
38
- <v-list-item-title class="text-h6">
6
+ <v-list-item-title class="text-h6 text-white">
39
7
  {{ props.title || APP_NAME }}
40
8
  </v-list-item-title>
41
9
  </v-list-item>
@@ -123,12 +91,3 @@ const handleClick = (item: any) => {
123
91
  emit("navigate", item);
124
92
  };
125
93
  </script>
126
-
127
- <style scoped>
128
- /* Scoped to the drawer: none of these reach the rest of the application. */
129
- .brand-drawer {
130
- --v-border-opacity: 0.45;
131
- --v-hover-opacity: 0.08;
132
- --v-activated-opacity: 0.18;
133
- }
134
- </style>
@@ -1,16 +1,9 @@
1
- <!--
2
- `color="primary"` is applied by Vuetify only while the item is active, so the
3
- page you are on is named by colour and not just by a 1.15:1 tint you cannot
4
- see. `primary` reads 14.56:1 on the light rail and 5.38:1 on the dark one,
5
- and it is the one brand colour that is a foreground in both themes.
6
- -->
7
1
  <template>
8
2
  <v-list-group v-if="children && children.length">
9
3
  <template #activator="{ props: groupProps }">
10
4
  <v-list-item
11
5
  v-bind="groupProps"
12
6
  :prepend-icon="icon"
13
- color="primary"
14
7
  class="text-subtitle-2"
15
8
  @click.stop="onParentClick"
16
9
  >
@@ -32,7 +25,6 @@
32
25
  v-else-if="routeTo"
33
26
  :prepend-icon="icon"
34
27
  :to="routeTo"
35
- color="primary"
36
28
  class="text-subtitle-2"
37
29
  >
38
30
  {{ title }}
@@ -42,7 +34,6 @@
42
34
  v-else-if="props.link"
43
35
  :prepend-icon="icon"
44
36
  :href="props.link"
45
- color="primary"
46
37
  class="text-subtitle-2"
47
38
  >
48
39
  {{ title }}
@@ -4,7 +4,6 @@
4
4
  <v-row no-gutters class="mb-4" align="center">
5
5
  <v-col cols="12" md="6">
6
6
  <v-btn
7
- v-if="props.canCreateNfcPatrol"
8
7
  rounded="pill"
9
8
  variant="outlined"
10
9
 
@@ -83,12 +82,7 @@
83
82
  </v-col>
84
83
 
85
84
  <!-- Add Dialog -->
86
- <v-dialog
87
- v-if="props.canCreateNfcPatrol"
88
- v-model="dialogAdd"
89
- persistent
90
- max-width="900"
91
- >
85
+ <v-dialog v-model="dialogAdd" persistent max-width="900">
92
86
  <NFCPatrolRouteForm
93
87
  title="Add Route"
94
88
  :site="props.site"
@@ -100,12 +94,7 @@
100
94
  </v-dialog>
101
95
 
102
96
  <!-- Edit Dialog -->
103
- <v-dialog
104
- v-if="props.canUpdateNfcPatrol"
105
- v-model="dialogEdit"
106
- persistent
107
- max-width="900"
108
- >
97
+ <v-dialog v-model="dialogEdit" persistent max-width="900">
109
98
  <NFCPatrolRouteForm
110
99
  title="Edit Route"
111
100
  :site="props.site"
@@ -201,10 +190,7 @@
201
190
 
202
191
  <v-toolbar class="pa-0" density="compact">
203
192
  <v-row no-gutters>
204
- <v-col
205
- :cols="props.canUpdateNfcPatrol || props.canDeleteNfcPatrol ? 6 : 12"
206
- class="pa-0"
207
- >
193
+ <v-col cols="6" class="pa-0">
208
194
  <v-btn
209
195
  block
210
196
  variant="text"
@@ -217,11 +203,7 @@
217
203
  </v-btn>
218
204
  </v-col>
219
205
 
220
- <v-col
221
- v-if="props.canUpdateNfcPatrol || props.canDeleteNfcPatrol"
222
- cols="6"
223
- class="pa-0"
224
- >
206
+ <v-col cols="6" class="pa-0">
225
207
  <v-menu>
226
208
  <template #activator="{ props }">
227
209
  <v-btn
@@ -238,17 +220,13 @@
238
220
  </template>
239
221
 
240
222
  <v-list class="pa-0">
241
- <v-list-item v-if="props.canUpdateNfcPatrol" @click="openDialogEdit()">
223
+ <v-list-item @click="openDialogEdit()">
242
224
  <v-list-item-title class="text-subtitle-2">
243
225
  Edit Route
244
226
  </v-list-item-title>
245
227
  </v-list-item>
246
228
 
247
- <v-list-item
248
- v-if="props.canDeleteNfcPatrol"
249
- @click="openDialogDelete()"
250
- class="text-red"
251
- >
229
+ <v-list-item @click="openDialogDelete()" class="text-red">
252
230
  <v-list-item-title class="text-subtitle-2">
253
231
  Delete Route
254
232
  </v-list-item-title>
@@ -262,12 +240,7 @@
262
240
  </v-dialog>
263
241
 
264
242
  <!-- Delete Dialog -->
265
- <v-dialog
266
- v-if="props.canDeleteNfcPatrol"
267
- v-model="dialogDelete"
268
- persistent
269
- width="540"
270
- >
243
+ <v-dialog v-model="dialogDelete" persistent width="540">
271
244
  <v-card width="100%">
272
245
  <v-card-text
273
246
  style="max-height: 100vh; overflow-y: auto"
@@ -331,18 +304,6 @@ const props = defineProps({
331
304
  type: String,
332
305
  required: true,
333
306
  },
334
- canCreateNfcPatrol: {
335
- type: Boolean,
336
- default: false,
337
- },
338
- canUpdateNfcPatrol: {
339
- type: Boolean,
340
- default: false,
341
- },
342
- canDeleteNfcPatrol: {
343
- type: Boolean,
344
- default: false,
345
- },
346
307
  headers: {
347
308
  type: Array as PropType<Array<any>>,
348
309
  default: () => [
@@ -445,8 +406,6 @@ const messageSnackbar = ref(false);
445
406
  const messageColor = ref("");
446
407
 
447
408
  async function openDialogEdit() {
448
- if (!props.canUpdateNfcPatrol) return;
449
-
450
409
  try {
451
410
  // Fetch the full route details from the API
452
411
  const response = await getRouteById(selectedRoute.value._id);
@@ -472,8 +431,6 @@ async function openDialogEdit() {
472
431
  }
473
432
 
474
433
  function openDialogDelete() {
475
- if (!props.canDeleteNfcPatrol) return;
476
-
477
434
  dialogDelete.value = true;
478
435
 
479
436
  if (dialogPreview.value) dialogPreview.value = false;
@@ -545,8 +502,6 @@ function handleRowClick(_: any, data: any) {
545
502
  }
546
503
 
547
504
  async function submitDelete() {
548
- if (!props.canDeleteNfcPatrol) return;
549
-
550
505
  try {
551
506
  await deleteRouteById(selectedRoute.value._id ?? "");
552
507
  await getRoutesRefresh();