@7365admin1/layer-common 4.35.1-staging.432 → 4.35.1-staging.433
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.
|
@@ -106,6 +106,10 @@
|
|
|
106
106
|
:class="{ 'sp-muted': item.companyKnown === false }"
|
|
107
107
|
>{{ item.companyName }}</span>
|
|
108
108
|
<div v-if="item.contactPhone" class="sp-sub">{{ item.contactPhone }}</div>
|
|
109
|
+
<!-- A subcontractor another provider brought onto this site. -->
|
|
110
|
+
<div v-if="item.invitedVia" class="sp-sub" data-test="sp-invited-via">
|
|
111
|
+
Invited by {{ item.invitedVia }}
|
|
112
|
+
</div>
|
|
109
113
|
</template>
|
|
110
114
|
<template #item.invited="{ item }">
|
|
111
115
|
<span class="d-block text-truncate">{{ item.invitedLine || "-" }}</span>
|
|
@@ -631,7 +635,7 @@
|
|
|
631
635
|
<template v-if="!existingAccount">
|
|
632
636
|
<v-col cols="12">
|
|
633
637
|
<v-row no-gutters>
|
|
634
|
-
<InputLabel class="text-capitalize" title="
|
|
638
|
+
<InputLabel class="text-capitalize" title="Service" required />
|
|
635
639
|
<v-col cols="12">
|
|
636
640
|
<v-select
|
|
637
641
|
v-model="serviceProviderInvite.app"
|
|
@@ -667,6 +671,12 @@
|
|
|
667
671
|
</v-col>
|
|
668
672
|
</template>
|
|
669
673
|
|
|
674
|
+
<v-col cols="12">
|
|
675
|
+
<div class="sp-sub" data-test="sp-invite-approval-note">
|
|
676
|
+
Seven365 approves every invitation before the provider receives it.
|
|
677
|
+
</div>
|
|
678
|
+
</v-col>
|
|
679
|
+
|
|
670
680
|
<!-- Error message -->
|
|
671
681
|
<v-col cols="12" class="my-2">
|
|
672
682
|
<v-row no-gutters>
|
|
@@ -752,6 +762,8 @@ type TableRow = {
|
|
|
752
762
|
/** shown under a "Not approved" row, in Seven365's own words */
|
|
753
763
|
rejectionReason?: string;
|
|
754
764
|
siteName?: string;
|
|
765
|
+
/** a subcontractor: the provider that brought it onto this site */
|
|
766
|
+
invitedVia?: string;
|
|
755
767
|
};
|
|
756
768
|
|
|
757
769
|
type ServiceProviderMemberRow = {
|
|
@@ -1259,6 +1271,7 @@ const providerLines = computed<Array<[string, string]>>(() => {
|
|
|
1259
1271
|
["Email", row.contactEmail || row.email],
|
|
1260
1272
|
];
|
|
1261
1273
|
if (row.contactPhone) lines.push(["Phone", row.contactPhone]);
|
|
1274
|
+
if (row.invitedVia) lines.push(["Invited by", row.invitedVia]);
|
|
1262
1275
|
if (row.source === "invite") {
|
|
1263
1276
|
lines.push(["Invited", row.invitedLine || "-"]);
|
|
1264
1277
|
if (row.answeredAt) lines.push(["Accepted", spDay(row.answeredAt)]);
|
|
@@ -1337,6 +1350,7 @@ function mapProviderRows(raw: Record<string, any>[]): TableRow[] {
|
|
|
1337
1350
|
members: formatMembersCell(row.members),
|
|
1338
1351
|
status: statusDisplay(row.status ?? "active", "provider"),
|
|
1339
1352
|
source: row.source === "engagement" ? "engagement" : "provider",
|
|
1353
|
+
invitedVia: String(row.invitedVia ?? ""),
|
|
1340
1354
|
}));
|
|
1341
1355
|
}
|
|
1342
1356
|
|
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.35.1-staging.
|
|
5
|
+
"version": "4.35.1-staging.433",
|
|
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.",
|
|
@@ -182,9 +182,8 @@ const SITE_PAGES: Record<string, TSitePage[]> = {
|
|
|
182
182
|
{ apps: ["security"], page: () => "virtual-patrol/cctv" },
|
|
183
183
|
{ apps: ["property-management"], page: () => "cctv" },
|
|
184
184
|
],
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
],
|
|
185
|
+
// hygiene has its Service Providers page too since 2026-09-28
|
|
186
|
+
serviceProviderInviteAnswer: [{ apps: SERVICE_APPS, page: () => "service-providers" }],
|
|
188
187
|
};
|
|
189
188
|
SITE_PAGES.myVisitors = SITE_PAGES.visitors;
|
|
190
189
|
|
|
@@ -196,6 +195,7 @@ export const WEB_TARGET_KINDS = [
|
|
|
196
195
|
"robot",
|
|
197
196
|
"client",
|
|
198
197
|
"clientInvitation",
|
|
198
|
+
"spApproval",
|
|
199
199
|
];
|
|
200
200
|
|
|
201
201
|
function sitePageTarget(
|
|
@@ -221,6 +221,10 @@ function sitePageTarget(
|
|
|
221
221
|
function staffTarget(kind: string, item: TTargetRow): TNotificationTarget | null {
|
|
222
222
|
const id = String(item.params?.id ?? "").trim();
|
|
223
223
|
if (kind === "robot") return { candidates: [{ app: "org", path: "/super-admin/robots" }] };
|
|
224
|
+
// A service-provider invitation waiting in SP Approvals.
|
|
225
|
+
if (kind === "spApproval") {
|
|
226
|
+
return { candidates: [{ app: "org", path: "/super-admin/sp-approvals" }] };
|
|
227
|
+
}
|
|
224
228
|
if (kind === "clientInvitation") {
|
|
225
229
|
return { candidates: [{ app: "org", path: "/super-admin/client-list" }] };
|
|
226
230
|
}
|