@7365admin1/layer-common 4.147.1 → 4.147.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.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @iservice365/layer-common
|
|
2
2
|
|
|
3
|
+
## 4.147.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3a1e7ba: Stop the browser filling the saved sign-in password into the masked NRIC field on Add Visitor / Add Delivery. The field is now masked with CSS instead of being a password box.
|
|
8
|
+
|
|
3
9
|
## 4.147.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -3487,11 +3493,11 @@ Monthly report: a month that had patrols opens the list of that month's patrol r
|
|
|
3487
3493
|
`utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
|
|
3488
3494
|
own rule from two endpoints the console already calls, unprojected:
|
|
3489
3495
|
|
|
3490
|
-
|
|
3491
|
-
|
|
3496
|
+
GET /api/members/user/:user/app/admin the Seven365 staff membership
|
|
3497
|
+
GET /api/roles/id/:role that membership's role document
|
|
3492
3498
|
|
|
3493
|
-
|
|
3494
|
-
|
|
3499
|
+
owner = member.type === "admin" && role.type === "admin" && role.default === true
|
|
3500
|
+
staff = member.type === "admin" && role.type === "admin"
|
|
3495
3501
|
|
|
3496
3502
|
`role.default` is the marker because it is the only property of a platform
|
|
3497
3503
|
staff role no API caller can set - `role.controller.ts` validates create and
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-text-field
|
|
3
3
|
v-model.trim="model"
|
|
4
|
-
class="filter-field"
|
|
4
|
+
:class="['filter-field', { 'nric-field--masked': masked && !shown }]"
|
|
5
5
|
:rules="rules"
|
|
6
6
|
:maxlength="maxlength"
|
|
7
7
|
:placeholder="placeholder"
|
|
8
8
|
:counter="maxlength"
|
|
9
9
|
@input="onInput"
|
|
10
10
|
:loading="loading"
|
|
11
|
-
|
|
11
|
+
type="text"
|
|
12
12
|
:append-inner-icon="masked ? (shown ? 'mdi-eye-off' : 'mdi-eye') : undefined"
|
|
13
13
|
autocomplete="off"
|
|
14
|
+
data-lpignore="true"
|
|
15
|
+
data-1p-ignore
|
|
14
16
|
outlined
|
|
15
17
|
clearable
|
|
16
18
|
@click:append-inner="shown = !shown"
|
|
@@ -63,4 +65,14 @@ function onInput(event) {
|
|
|
63
65
|
watch(model, (newVal) => {
|
|
64
66
|
emit('update:modelValue', newVal)
|
|
65
67
|
})
|
|
66
|
-
</script>
|
|
68
|
+
</script>
|
|
69
|
+
|
|
70
|
+
<style scoped>
|
|
71
|
+
/* Masked by CSS, never type="password": a password box makes Chrome treat the
|
|
72
|
+
form as a login and fill the saved sign-in password into the NRIC field
|
|
73
|
+
(it ignores autocomplete="off" on password boxes). */
|
|
74
|
+
.nric-field--masked :deep(input) {
|
|
75
|
+
-webkit-text-security: disc;
|
|
76
|
+
text-security: disc;
|
|
77
|
+
}
|
|
78
|
+
</style>
|
|
@@ -1912,7 +1912,8 @@ ensureANPRSettings(true).catch(() => {
|
|
|
1912
1912
|
|
|
1913
1913
|
/*
|
|
1914
1914
|
* iSecure `useUnregisteredTab`: the Unregistered tab needs BOTH the site's
|
|
1915
|
-
* Unregistered switch AND an ANPR camera facing an entrance (entry / both
|
|
1915
|
+
* Unregistered switch AND an ANPR camera facing an entrance (entry / both /
|
|
1916
|
+
* visitors) -
|
|
1916
1917
|
* the same rule the plate notice (VisitorSocketPopUp) already applies.
|
|
1917
1918
|
*/
|
|
1918
1919
|
const { getAllSiteCameras } = useSiteSettings();
|
|
@@ -1928,7 +1929,7 @@ async function loadEntryFacingAnprCamera() {
|
|
|
1928
1929
|
? res.data.items
|
|
1929
1930
|
: [];
|
|
1930
1931
|
hasEntryFacingAnprCamera.value = cameras.some(
|
|
1931
|
-
(camera: any) =>
|
|
1932
|
+
(camera: any) => ["entry", "both", "visitors"].includes(camera?.direction)
|
|
1932
1933
|
);
|
|
1933
1934
|
} catch {
|
|
1934
1935
|
hasEntryFacingAnprCamera.value = false;
|
|
@@ -150,7 +150,7 @@ const { enableUnregistered, ensureANPRSettings } = useANPRSettings(
|
|
|
150
150
|
);
|
|
151
151
|
// The security mobile app's rule (isecure365 `useUnregisteredTab`): the
|
|
152
152
|
// site's Unregistered switch AND an ANPR camera facing an entrance (entry /
|
|
153
|
-
// both). With the switch alone the notice could appear for a site whose
|
|
153
|
+
// both / visitors). With the switch alone the notice could appear for a site whose
|
|
154
154
|
// cameras never register anyone arriving.
|
|
155
155
|
const { getAllSiteCameras } = useSiteSettings();
|
|
156
156
|
const hasEntryFacingAnprCamera = ref(false);
|
|
@@ -167,7 +167,7 @@ async function loadEntryFacingAnprCamera(siteId: string) {
|
|
|
167
167
|
? res.data.items
|
|
168
168
|
: [];
|
|
169
169
|
hasEntryFacingAnprCamera.value = items.some(
|
|
170
|
-
(camera: any) =>
|
|
170
|
+
(camera: any) => ["entry", "both", "visitors"].includes(camera?.direction)
|
|
171
171
|
);
|
|
172
172
|
} catch {
|
|
173
173
|
hasEntryFacingAnprCamera.value = false;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@7365admin1/layer-common",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "4.147.
|
|
5
|
+
"version": "4.147.2",
|
|
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.",
|