Add category field

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-05-27 11:57:33 -07:00
parent 5e138b7d8e
commit 1254487eb4
17 changed files with 915 additions and 237 deletions

View File

@@ -18,7 +18,7 @@ import Fuse from "fuse.js";
import { useToast } from "@/hooks/use-toast";
import { PageTemplate } from "@/components/PageTemplate";
import { ListVendorViewSkeleton } from "./ListVendorPage";
import { ListVendorViewCreateVendorMutation } from "./__generated__/ListVendorViewCreateVendorMutation.graphql";
import { ListVendorViewCreateVendorMutation, VendorCategory } from "./__generated__/ListVendorViewCreateVendorMutation.graphql";
import { ListVendorViewPaginationQuery } from "./__generated__/ListVendorViewPaginationQuery.graphql";
import { ListVendorView_vendors$key } from "./__generated__/ListVendorView_vendors.graphql";
import { ListVendorViewQuery } from "./__generated__/ListVendorViewQuery.graphql";
@@ -385,7 +385,7 @@ function ListVendorContent({
headquarterAddress: vendor.headquarterAddress,
legalName: vendor.legalName,
websiteUrl: vendor.websiteUrl,
category: vendor.category,
category: vendor.category as VendorCategory || null,
privacyPolicyUrl: vendor.privacyPolicyUrl,
serviceLevelAgreementUrl:
vendor.serviceLevelAgreementUrl,

View File

@@ -18,7 +18,7 @@ import { Suspense, useEffect, useState, useCallback, useRef } from "react";
import type { VendorViewQuery as VendorViewQueryType } from "./__generated__/VendorViewQuery.graphql";
import type { VendorViewDeleteComplianceReportMutation as DeleteComplianceReportMutationType } from "./__generated__/VendorViewDeleteComplianceReportMutation.graphql";
import type { VendorViewUploadComplianceReportMutation as UploadComplianceReportMutationType } from "./__generated__/VendorViewUploadComplianceReportMutation.graphql";
import type { VendorViewUpdateVendorMutation } from "./__generated__/VendorViewUpdateVendorMutation.graphql";
import type { VendorViewUpdateVendorMutation, VendorCategory } from "./__generated__/VendorViewUpdateVendorMutation.graphql";
import type { VendorViewCreateRiskAssessmentMutation } from "./__generated__/VendorViewCreateRiskAssessmentMutation.graphql";
import type { VendorViewAssessVendorMutation } from "./__generated__/VendorViewAssessVendorMutation.graphql";
import type {
@@ -34,6 +34,36 @@ import PeopleSelector from "@/components/PeopleSelector";
import { formatDistanceToNow, format, isPast } from "date-fns";
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
interface VendorCategoryOption {
value: VendorCategory;
label: string;
}
const VENDOR_CATEGORIES: VendorCategoryOption[] = [
{ value: "ANALYTICS", label: "Analytics" },
{ value: "CLOUD_MONITORING", label: "Cloud Monitoring" },
{ value: "CLOUD_PROVIDER", label: "Cloud Provider" },
{ value: "COLLABORATION", label: "Collaboration" },
{ value: "CUSTOMER_SUPPORT", label: "Customer Support" },
{ value: "DATA_STORAGE_AND_PROCESSING", label: "Data Storage and Processing" },
{ value: "DOCUMENT_MANAGEMENT", label: "Document Management" },
{ value: "EMPLOYEE_MANAGEMENT", label: "Employee Management" },
{ value: "ENGINEERING", label: "Engineering" },
{ value: "FINANCE", label: "Finance" },
{ value: "IDENTITY_PROVIDER", label: "Identity Provider" },
{ value: "IT", label: "IT" },
{ value: "MARKETING", label: "Marketing" },
{ value: "OFFICE_OPERATIONS", label: "Office Operations" },
{ value: "OTHER", label: "Other" },
{ value: "PASSWORD_MANAGEMENT", label: "Password Management" },
{ value: "PRODUCT_AND_DESIGN", label: "Product and Design" },
{ value: "PROFESSIONAL_SERVICES", label: "Professional Services" },
{ value: "RECRUITING", label: "Recruiting" },
{ value: "SALES", label: "Sales" },
{ value: "SECURITY", label: "Security" },
{ value: "VERSION_CONTROL", label: "Version Control" }
];
const vendorViewQuery = graphql`
query VendorViewQuery($vendorId: ID!, $organizationId: ID!) {
node(id: $vendorId) {
@@ -52,6 +82,7 @@ const vendorViewQuery = graphql`
headquarterAddress
legalName
websiteUrl
category
businessOwner {
id
fullName
@@ -127,6 +158,7 @@ const updateVendorMutation = graphql`
headquarterAddress
legalName
websiteUrl
category
businessOwner {
id
fullName
@@ -216,6 +248,7 @@ const assessVendorMutation = graphql`
headquarterAddress
legalName
websiteUrl
category
businessOwner {
id
fullName
@@ -1415,6 +1448,7 @@ function VendorViewContent({
websiteUrl: data.node.websiteUrl || "",
businessOwnerId: data.node.businessOwner?.id || null,
securityOwnerId: data.node.securityOwner?.id || null,
category: data.node.category || null,
});
const [updateVendor] =
useMutation<VendorViewUpdateVendorMutation>(updateVendorMutation);
@@ -1447,6 +1481,7 @@ function VendorViewContent({
...formData,
businessOwnerId: formData.businessOwnerId || undefined,
securityOwnerId: formData.securityOwnerId || undefined,
category: formData.category as VendorCategory | null,
};
updateVendor({
@@ -1556,6 +1591,7 @@ function VendorViewContent({
websiteUrl: data.node.websiteUrl || "",
businessOwnerId: data.node.businessOwner?.id || null,
securityOwnerId: data.node.securityOwner?.id || null,
category: data.node.category || null,
});
setEditedFields(new Set());
};
@@ -1817,7 +1853,25 @@ function VendorViewContent({
/>
</div>
</div>
<div className="space-y-1">
<p className="text-sm font-medium text-[#6B716A]">Category</p>
<div className="rounded-lg bg-[rgba(5,77,5,0.03)] px-2 py-1.5">
<select
value={formData.category || ""}
onChange={(e) => {
const value = e.target.value;
handleFieldChange("category", value ? (value as VendorCategory) : null);
}}
className="w-full font-geist font-medium text-[16px] leading-[1.5em] text-[#141E12] bg-transparent border-0 outline-none focus:ring-0 focus-visible:ring-0 p-0"
>
{VENDOR_CATEGORIES.map(({ value, label }) => (
<option key={value} value={value}>
{label}
</option>
))}
</select>
</div>
</div>
<div className="space-y-1">
<p className="text-sm font-medium text-[#6B716A]">
Legal name
@@ -2386,6 +2440,7 @@ function VendorViewContent({
headquarterAddress: newData.headquarterAddress || prevData.headquarterAddress,
legalName: newData.legalName || prevData.legalName,
websiteUrl: newData.websiteUrl || prevData.websiteUrl,
category: newData.category || prevData.category,
};
return newFormData;
});

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<c911b01b560dfe4143e7ffd06650ff58>>
* @generated SignedSource<<a8dc580c053c9091819cb2d348c0b3e0>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,9 +9,10 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type CreateVendorInput = {
businessOwnerId?: string | null | undefined;
category?: string | null | undefined;
category?: VendorCategory | null | undefined;
certifications?: ReadonlyArray<string> | null | undefined;
dataProcessingAgreementUrl?: string | null | undefined;
description?: string | null | undefined;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<71c7ed1be8cf0477074d6cf130143626>>
* @generated SignedSource<<f0c7d1514ae65ab5cef017af474f5825>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,6 +9,7 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type AssessVendorInput = {
id: string;
websiteUrl: string;
@@ -23,6 +24,7 @@ export type VendorViewAssessVendorMutation$data = {
readonly fullName: string;
readonly id: string;
} | null | undefined;
readonly category: VendorCategory;
readonly certifications: ReadonlyArray<string>;
readonly dataProcessingAgreementUrl: string | null | undefined;
readonly description: string | null | undefined;
@@ -190,6 +192,13 @@ v3 = [
"name": "websiteUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -242,16 +251,16 @@ return {
"selections": (v3/*: any*/)
},
"params": {
"cacheID": "ccc16b2de8f7f3936458cd4823a14992",
"cacheID": "592ee741d52ee98a1e10330e97a14707",
"id": null,
"metadata": {},
"name": "VendorViewAssessVendorMutation",
"operationKind": "mutation",
"text": "mutation VendorViewAssessVendorMutation(\n $input: AssessVendorInput!\n) {\n assessVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
"text": "mutation VendorViewAssessVendorMutation(\n $input: AssessVendorInput!\n) {\n assessVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "ed23d00ce5a44aa6bfd43a072552ed1c";
(node as any).hash = "8dddda77f031533f207ac903d883a902";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<2a33eeb4651f6afe0a8f06f44c0f2711>>
* @generated SignedSource<<a24deac1363fef61e3bc8f1a5b3d1848>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -12,6 +12,7 @@ import { ConcreteRequest } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type BusinessImpact = "CRITICAL" | "HIGH" | "LOW" | "MEDIUM";
export type DataSensitivity = "CRITICAL" | "HIGH" | "LOW" | "MEDIUM" | "NONE";
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type VendorViewQuery$variables = {
organizationId: string;
vendorId: string;
@@ -22,6 +23,7 @@ export type VendorViewQuery$data = {
readonly fullName: string;
readonly id: string;
} | null | undefined;
readonly category?: VendorCategory;
readonly certifications?: ReadonlyArray<string>;
readonly complianceReports?: {
readonly edges: ReadonlyArray<{
@@ -206,65 +208,72 @@ v16 = {
"storageKey": null
},
v17 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"storageKey": null
},
v18 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
v18 = [
v19 = [
(v3/*: any*/),
(v17/*: any*/)
(v18/*: any*/)
],
v19 = {
v20 = {
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
"selections": (v18/*: any*/),
"selections": (v19/*: any*/),
"storageKey": null
},
v20 = {
v21 = {
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,
"selections": (v18/*: any*/),
"storageKey": null
},
v21 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"selections": (v19/*: any*/),
"storageKey": null
},
v22 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "updatedAt",
"name": "createdAt",
"storageKey": null
},
v23 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "__typename",
"name": "updatedAt",
"storageKey": null
},
v24 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "cursor",
"name": "__typename",
"storageKey": null
},
v25 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "cursor",
"storageKey": null
},
v26 = {
"alias": null,
"args": null,
"concreteType": "PageInfo",
@@ -289,7 +298,7 @@ v25 = {
],
"storageKey": null
},
v26 = [
v27 = [
{
"alias": null,
"args": null,
@@ -342,18 +351,18 @@ v26 = [
"name": "fileSize",
"storageKey": null
},
(v21/*: any*/),
(v23/*: any*/)
(v22/*: any*/),
(v24/*: any*/)
],
"storageKey": null
},
(v24/*: any*/)
(v25/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v26/*: any*/)
],
v27 = [
v28 = [
{
"alias": null,
"args": null,
@@ -413,28 +422,28 @@ v27 = [
"kind": "LinkedField",
"name": "assessedBy",
"plural": false,
"selections": (v18/*: any*/),
"selections": (v19/*: any*/),
"storageKey": null
},
(v21/*: any*/),
(v23/*: any*/)
(v22/*: any*/),
(v24/*: any*/)
],
"storageKey": null
},
(v24/*: any*/)
(v25/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v26/*: any*/)
],
v28 = [
v29 = [
{
"kind": "Variable",
"name": "id",
"variableName": "organizationId"
}
],
v29 = {
v30 = {
"alias": null,
"args": [
{
@@ -452,16 +461,16 @@ v29 = {
],
"storageKey": null
},
v30 = {
v31 = {
"kind": "Literal",
"name": "first",
"value": 100
},
v31 = [
(v30/*: any*/)
],
v32 = [
(v30/*: any*/),
(v31/*: any*/)
],
v33 = [
(v31/*: any*/),
{
"kind": "Literal",
"name": "orderBy",
@@ -506,10 +515,11 @@ return {
(v14/*: any*/),
(v15/*: any*/),
(v16/*: any*/),
(v19/*: any*/),
(v17/*: any*/),
(v20/*: any*/),
(v21/*: any*/),
(v22/*: any*/),
(v23/*: any*/),
{
"alias": "complianceReports",
"args": null,
@@ -517,7 +527,7 @@ return {
"kind": "LinkedField",
"name": "__VendorView_complianceReports_connection",
"plural": false,
"selections": (v26/*: any*/),
"selections": (v27/*: any*/),
"storageKey": null
},
{
@@ -527,7 +537,7 @@ return {
"kind": "LinkedField",
"name": "__VendorView_riskAssessments_connection",
"plural": false,
"selections": (v27/*: any*/),
"selections": (v28/*: any*/),
"storageKey": null
}
],
@@ -539,7 +549,7 @@ return {
},
{
"alias": "organization",
"args": (v28/*: any*/),
"args": (v29/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -569,7 +579,7 @@ return {
"name": "user",
"plural": false,
"selections": [
(v29/*: any*/)
(v30/*: any*/)
],
"storageKey": null
}
@@ -597,7 +607,7 @@ return {
"name": "node",
"plural": false,
"selections": [
(v23/*: any*/),
(v24/*: any*/),
(v3/*: any*/),
{
"kind": "InlineFragment",
@@ -615,23 +625,24 @@ return {
(v14/*: any*/),
(v15/*: any*/),
(v16/*: any*/),
(v19/*: any*/),
(v17/*: any*/),
(v20/*: any*/),
(v21/*: any*/),
(v22/*: any*/),
(v23/*: any*/),
{
"alias": null,
"args": (v31/*: any*/),
"args": (v32/*: any*/),
"concreteType": "VendorComplianceReportConnection",
"kind": "LinkedField",
"name": "complianceReports",
"plural": false,
"selections": (v26/*: any*/),
"selections": (v27/*: any*/),
"storageKey": "complianceReports(first:100)"
},
{
"alias": null,
"args": (v31/*: any*/),
"args": (v32/*: any*/),
"filters": null,
"handle": "connection",
"key": "VendorView_complianceReports",
@@ -640,17 +651,17 @@ return {
},
{
"alias": null,
"args": (v31/*: any*/),
"args": (v32/*: any*/),
"concreteType": "VendorRiskAssessmentConnection",
"kind": "LinkedField",
"name": "riskAssessments",
"plural": false,
"selections": (v27/*: any*/),
"selections": (v28/*: any*/),
"storageKey": "riskAssessments(first:100)"
},
{
"alias": null,
"args": (v31/*: any*/),
"args": (v32/*: any*/),
"filters": null,
"handle": "connection",
"key": "VendorView_riskAssessments",
@@ -666,20 +677,20 @@ return {
},
{
"alias": "organization",
"args": (v28/*: any*/),
"args": (v29/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v23/*: any*/),
(v24/*: any*/),
(v3/*: any*/),
{
"kind": "InlineFragment",
"selections": [
{
"alias": null,
"args": (v32/*: any*/),
"args": (v33/*: any*/),
"concreteType": "PeopleConnection",
"kind": "LinkedField",
"name": "peoples",
@@ -702,7 +713,7 @@ return {
"plural": false,
"selections": [
(v3/*: any*/),
(v17/*: any*/),
(v18/*: any*/),
{
"alias": null,
"args": null,
@@ -710,21 +721,21 @@ return {
"name": "primaryEmailAddress",
"storageKey": null
},
(v23/*: any*/)
(v24/*: any*/)
],
"storageKey": null
},
(v24/*: any*/)
(v25/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v26/*: any*/)
],
"storageKey": "peoples(first:100,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
},
{
"alias": null,
"args": (v32/*: any*/),
"args": (v33/*: any*/),
"filters": [
"orderBy"
],
@@ -756,7 +767,7 @@ return {
"name": "user",
"plural": false,
"selections": [
(v29/*: any*/),
(v30/*: any*/),
(v3/*: any*/)
],
"storageKey": null
@@ -768,7 +779,7 @@ return {
]
},
"params": {
"cacheID": "d80a66271806001a76348db9398ae760",
"cacheID": "83601f58c499976a22f7dec4312d147b",
"id": null,
"metadata": {
"connection": [
@@ -794,11 +805,11 @@ return {
},
"name": "VendorViewQuery",
"operationKind": "query",
"text": "query VendorViewQuery(\n $vendorId: ID!\n $organizationId: ID!\n) {\n node(id: $vendorId) {\n __typename\n ... on Vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n createdAt\n updatedAt\n complianceReports(first: 100) {\n edges {\n node {\n id\n reportName\n reportDate\n validUntil\n fileUrl\n fileSize\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n riskAssessments(first: 100) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n notes\n assessedBy {\n id\n fullName\n }\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n id\n }\n organization: node(id: $organizationId) {\n __typename\n ...PeopleSelector_organization\n id\n }\n viewer {\n user {\n people(organizationId: $organizationId) {\n id\n }\n id\n }\n id\n }\n}\n\nfragment PeopleSelector_organization on Organization {\n id\n peoples(first: 100, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n"
"text": "query VendorViewQuery(\n $vendorId: ID!\n $organizationId: ID!\n) {\n node(id: $vendorId) {\n __typename\n ... on Vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n createdAt\n updatedAt\n complianceReports(first: 100) {\n edges {\n node {\n id\n reportName\n reportDate\n validUntil\n fileUrl\n fileSize\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n riskAssessments(first: 100) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n notes\n assessedBy {\n id\n fullName\n }\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n id\n }\n organization: node(id: $organizationId) {\n __typename\n ...PeopleSelector_organization\n id\n }\n viewer {\n user {\n people(organizationId: $organizationId) {\n id\n }\n id\n }\n id\n }\n}\n\nfragment PeopleSelector_organization on Organization {\n id\n peoples(first: 100, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n"
}
};
})();
(node as any).hash = "97cacb4f4410588114fc82abc78d9140";
(node as any).hash = "812a334dc26fb2961aae24862496ff0c";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<9089536ddf16d713cfc68bd20f8f8caf>>
* @generated SignedSource<<687421f6528edb3fe7623b14cda888d7>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,9 +9,10 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type UpdateVendorInput = {
businessOwnerId?: string | null | undefined;
category?: string | null | undefined;
category?: VendorCategory | null | undefined;
certifications?: ReadonlyArray<string> | null | undefined;
dataProcessingAgreementUrl?: string | null | undefined;
description?: string | null | undefined;
@@ -38,6 +39,7 @@ export type VendorViewUpdateVendorMutation$data = {
readonly fullName: string;
readonly id: string;
} | null | undefined;
readonly category: VendorCategory;
readonly certifications: ReadonlyArray<string>;
readonly dataProcessingAgreementUrl: string | null | undefined;
readonly description: string | null | undefined;
@@ -205,6 +207,13 @@ v3 = [
"name": "websiteUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -257,16 +266,16 @@ return {
"selections": (v3/*: any*/)
},
"params": {
"cacheID": "c539b8cd35be693bea445fa86c473bfd",
"cacheID": "8ead09e0003d808fcf2d2bc8ca19c8b2",
"id": null,
"metadata": {},
"name": "VendorViewUpdateVendorMutation",
"operationKind": "mutation",
"text": "mutation VendorViewUpdateVendorMutation(\n $input: UpdateVendorInput!\n) {\n updateVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
"text": "mutation VendorViewUpdateVendorMutation(\n $input: UpdateVendorInput!\n) {\n updateVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "478f755b8d9a6b7f7deec1b3a1c71d07";
(node as any).hash = "90aa0b06cde30ea8a7deb711d5ba0c69";
export default node;