@@ -14,23 +14,11 @@ import { Button } from "@/components/ui/button";
|
||||
import { Card } from "@/components/ui/card";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
import type { CreatePeoplePageQuery as CreatePeoplePageQueryType } from "./__generated__/CreatePeoplePageQuery.graphql";
|
||||
import { useToast } from "@/hooks/use-toast";
|
||||
import { HelpCircle } from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { CreatePeoplePageCreatePeopleMutation } from "./__generated__/CreatePeoplePageCreatePeopleMutation.graphql";
|
||||
|
||||
const createPeoplePageQuery = graphql`
|
||||
query CreatePeoplePageQuery {
|
||||
viewer {
|
||||
id
|
||||
organizations {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
import { useOrganization } from "@/contexts/OrganizationContext";
|
||||
|
||||
const createPeopleMutation = graphql`
|
||||
mutation CreatePeoplePageCreatePeopleMutation(
|
||||
@@ -85,13 +73,10 @@ function EditableField({
|
||||
);
|
||||
}
|
||||
|
||||
function CreatePeoplePageContent({
|
||||
queryRef,
|
||||
}: {
|
||||
queryRef: PreloadedQuery<CreatePeoplePageQueryType>;
|
||||
}) {
|
||||
function CreatePeoplePageContent() {
|
||||
const navigate = useNavigate();
|
||||
const data = usePreloadedQuery(createPeoplePageQuery, queryRef);
|
||||
const { currentOrganization } = useOrganization();
|
||||
|
||||
const [createPeople] =
|
||||
useMutation<CreatePeoplePageCreatePeopleMutation>(createPeopleMutation);
|
||||
const { toast } = useToast();
|
||||
@@ -112,15 +97,15 @@ function CreatePeoplePageContent({
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
const peopleConnectionId = ConnectionHandler.getConnectionID(
|
||||
data.viewer.organization.id,
|
||||
"PeopleListPage_peoples",
|
||||
currentOrganization!.id,
|
||||
"PeopleListPage_peoples"
|
||||
);
|
||||
|
||||
createPeople({
|
||||
variables: {
|
||||
connections: [peopleConnectionId],
|
||||
input: {
|
||||
organizationId: data.viewer.organization.id,
|
||||
organizationId: currentOrganization!.id,
|
||||
fullName: formData.fullName,
|
||||
primaryEmailAddress: formData.primaryEmailAddress,
|
||||
additionalEmailAddresses: formData.additionalEmailAddresses,
|
||||
@@ -189,7 +174,7 @@ function CreatePeoplePageContent({
|
||||
newEmails[index] = e.target.value;
|
||||
handleFieldChange(
|
||||
"additionalEmailAddresses",
|
||||
newEmails,
|
||||
newEmails
|
||||
);
|
||||
}}
|
||||
/>
|
||||
@@ -199,11 +184,11 @@ function CreatePeoplePageContent({
|
||||
onClick={() => {
|
||||
const newEmails =
|
||||
formData.additionalEmailAddresses.filter(
|
||||
(_, i) => i !== index,
|
||||
(_, i) => i !== index
|
||||
);
|
||||
handleFieldChange(
|
||||
"additionalEmailAddresses",
|
||||
newEmails,
|
||||
newEmails
|
||||
);
|
||||
}}
|
||||
>
|
||||
@@ -251,7 +236,7 @@ function CreatePeoplePageContent({
|
||||
"rounded-full px-4 py-1 text-sm transition-colors",
|
||||
formData.kind === "EMPLOYEE"
|
||||
? "bg-blue-100 text-blue-900 ring-2 ring-blue-600 ring-offset-2"
|
||||
: "bg-gray-100 text-gray-900 hover:bg-gray-200",
|
||||
: "bg-gray-100 text-gray-900 hover:bg-gray-200"
|
||||
)}
|
||||
>
|
||||
Employee
|
||||
@@ -263,7 +248,7 @@ function CreatePeoplePageContent({
|
||||
"rounded-full px-4 py-1 text-sm transition-colors",
|
||||
formData.kind === "CONTRACTOR"
|
||||
? "bg-purple-100 text-purple-900 ring-2 ring-purple-600 ring-offset-2"
|
||||
: "bg-gray-100 text-gray-900 hover:bg-gray-200",
|
||||
: "bg-gray-100 text-gray-900 hover:bg-gray-200"
|
||||
)}
|
||||
>
|
||||
Contractor
|
||||
@@ -292,21 +277,9 @@ function CreatePeoplePageContent({
|
||||
}
|
||||
|
||||
export default function CreatePeoplePage() {
|
||||
const [queryRef, loadQuery] = useQueryLoader<CreatePeoplePageQueryType>(
|
||||
createPeoplePageQuery,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
loadQuery({});
|
||||
}, [loadQuery]);
|
||||
|
||||
if (!queryRef) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Suspense fallback={null}>
|
||||
<CreatePeoplePageContent queryRef={queryRef} />
|
||||
<CreatePeoplePageContent />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import type { VendorListPageQuery as VendorListPageQueryType } from "./__generat
|
||||
import { Helmet } from "react-helmet-async";
|
||||
import { VendorListPageCreateVendorMutation } from "./__generated__/VendorListPageCreateVendorMutation.graphql";
|
||||
import { VendorListPageDeleteVendorMutation } from "./__generated__/VendorListPageDeleteVendorMutation.graphql";
|
||||
import { toast } from "@/hooks/use-toast";
|
||||
import { VendorListPagePaginationQuery } from "./__generated__/VendorListPagePaginationQuery.graphql";
|
||||
import { VendorListPage_vendors$key } from "./__generated__/VendorListPage_vendors.graphql";
|
||||
import { useToast } from "@/hooks/use-toast";
|
||||
@@ -36,6 +35,8 @@ const vendorListPageQuery = graphql`
|
||||
$before: CursorKey
|
||||
) {
|
||||
organization: node(id: $organizationId) {
|
||||
id
|
||||
|
||||
...VendorListPage_vendors
|
||||
@arguments(first: $first, after: $after, last: $last, before: $before)
|
||||
}
|
||||
@@ -51,7 +52,6 @@ const vendorListFragment = graphql`
|
||||
last: { type: "Int" }
|
||||
before: { type: "CursorKey" }
|
||||
) {
|
||||
id
|
||||
vendors(first: $first, after: $after, last: $last, before: $before)
|
||||
@connection(key: "VendorListPage_vendors") {
|
||||
__id
|
||||
@@ -189,7 +189,7 @@ function VendorListContent({
|
||||
const { toast } = useToast();
|
||||
const data = usePreloadedQuery<VendorListPageQueryType>(
|
||||
vendorListPageQuery,
|
||||
queryRef,
|
||||
queryRef
|
||||
);
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
const [isPending, startTransition] = useTransition();
|
||||
@@ -269,7 +269,7 @@ function VendorListContent({
|
||||
variables: {
|
||||
connections: [vendorsConnection.vendors.__id],
|
||||
input: {
|
||||
organizationId: organization.id,
|
||||
organizationId: data.organization.id,
|
||||
name: vendor.name,
|
||||
description: "",
|
||||
serviceStartAt: new Date().toISOString(),
|
||||
@@ -335,7 +335,7 @@ function VendorListContent({
|
||||
e.preventDefault(); // Prevent navigation
|
||||
if (
|
||||
window.confirm(
|
||||
"Are you sure you want to delete this vendor?",
|
||||
"Are you sure you want to delete this vendor?"
|
||||
)
|
||||
) {
|
||||
deleteVendor({
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
/**
|
||||
* @generated SignedSource<<9453bfb4e947c003e812ae63a4f1ed0a>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck
|
||||
|
||||
import { ConcreteRequest } from 'relay-runtime';
|
||||
export type CreatePeoplePageQuery$variables = Record<PropertyKey, never>;
|
||||
export type CreatePeoplePageQuery$data = {
|
||||
readonly viewer: {
|
||||
readonly id: string;
|
||||
readonly organizations: ReadonlyArray<{
|
||||
readonly id: string;
|
||||
readonly name: string;
|
||||
}>;
|
||||
};
|
||||
};
|
||||
export type CreatePeoplePageQuery = {
|
||||
response: CreatePeoplePageQuery$data;
|
||||
variables: CreatePeoplePageQuery$variables;
|
||||
};
|
||||
|
||||
const node: ConcreteRequest = (function(){
|
||||
var v0 = {
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "id",
|
||||
"storageKey": null
|
||||
},
|
||||
v1 = [
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"concreteType": "User",
|
||||
"kind": "LinkedField",
|
||||
"name": "viewer",
|
||||
"plural": false,
|
||||
"selections": [
|
||||
(v0/*: any*/),
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"concreteType": "Organization",
|
||||
"kind": "LinkedField",
|
||||
"name": "organizations",
|
||||
"plural": true,
|
||||
"selections": [
|
||||
(v0/*: any*/),
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "name",
|
||||
"storageKey": null
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
}
|
||||
];
|
||||
return {
|
||||
"fragment": {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Fragment",
|
||||
"metadata": null,
|
||||
"name": "CreatePeoplePageQuery",
|
||||
"selections": (v1/*: any*/),
|
||||
"type": "Query",
|
||||
"abstractKey": null
|
||||
},
|
||||
"kind": "Request",
|
||||
"operation": {
|
||||
"argumentDefinitions": [],
|
||||
"kind": "Operation",
|
||||
"name": "CreatePeoplePageQuery",
|
||||
"selections": (v1/*: any*/)
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "74b036184be646c06a001772776c445b",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "CreatePeoplePageQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query CreatePeoplePageQuery {\n viewer {\n id\n organizations {\n id\n name\n }\n }\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "751fa313df4e5ed06f8100d1e7e2d4ea";
|
||||
|
||||
export default node;
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<8a3c352a16aeb823ac25ee61446cc573>>
|
||||
* @generated SignedSource<<4088732e27ad0219fc1d7a47b156bc6e>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -294,16 +294,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "8fa8530a89995a836fec656b1d141b89",
|
||||
"cacheID": "3ebbf3bc033c96f10ad0e06f53ef3551",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "VendorListPagePaginationQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query VendorListPagePaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...VendorListPage_vendors_pbnwq\n id\n }\n}\n\nfragment VendorListPage_vendors_pbnwq on Organization {\n id\n vendors(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n"
|
||||
"text": "query VendorListPagePaginationQuery(\n $after: CursorKey\n $before: CursorKey\n $first: Int\n $last: Int\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...VendorListPage_vendors_pbnwq\n id\n }\n}\n\nfragment VendorListPage_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7ab226392b5cd58f332515753f1099ae";
|
||||
(node as any).hash = "3e2b7b3ee9248d288c34bcd156a0604d";
|
||||
|
||||
export default node;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<15bedd2878042e53e79e430f79d767cb>>
|
||||
* @generated SignedSource<<116a0717d13f9b7f35da0cfb4f01de44>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -19,6 +19,7 @@ export type VendorListPageQuery$variables = {
|
||||
};
|
||||
export type VendorListPageQuery$data = {
|
||||
readonly organization: {
|
||||
readonly id: string;
|
||||
readonly " $fragmentSpreads": FragmentRefs<"VendorListPage_vendors">;
|
||||
};
|
||||
};
|
||||
@@ -60,7 +61,14 @@ v5 = [
|
||||
"variableName": "organizationId"
|
||||
}
|
||||
],
|
||||
v6 = [
|
||||
v6 = {
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "id",
|
||||
"storageKey": null
|
||||
},
|
||||
v7 = [
|
||||
{
|
||||
"kind": "Variable",
|
||||
"name": "after",
|
||||
@@ -82,18 +90,11 @@ v6 = [
|
||||
"variableName": "last"
|
||||
}
|
||||
],
|
||||
v7 = {
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "__typename",
|
||||
"storageKey": null
|
||||
},
|
||||
v8 = {
|
||||
"alias": null,
|
||||
"args": null,
|
||||
"kind": "ScalarField",
|
||||
"name": "id",
|
||||
"name": "__typename",
|
||||
"storageKey": null
|
||||
};
|
||||
return {
|
||||
@@ -117,8 +118,9 @@ return {
|
||||
"name": "node",
|
||||
"plural": false,
|
||||
"selections": [
|
||||
(v6/*: any*/),
|
||||
{
|
||||
"args": (v6/*: any*/),
|
||||
"args": (v7/*: any*/),
|
||||
"kind": "FragmentSpread",
|
||||
"name": "VendorListPage_vendors"
|
||||
}
|
||||
@@ -149,14 +151,14 @@ return {
|
||||
"name": "node",
|
||||
"plural": false,
|
||||
"selections": [
|
||||
(v7/*: any*/),
|
||||
(v8/*: any*/),
|
||||
(v6/*: any*/),
|
||||
{
|
||||
"kind": "InlineFragment",
|
||||
"selections": [
|
||||
{
|
||||
"alias": null,
|
||||
"args": (v6/*: any*/),
|
||||
"args": (v7/*: any*/),
|
||||
"concreteType": "VendorConnection",
|
||||
"kind": "LinkedField",
|
||||
"name": "vendors",
|
||||
@@ -178,7 +180,7 @@ return {
|
||||
"name": "node",
|
||||
"plural": false,
|
||||
"selections": [
|
||||
(v8/*: any*/),
|
||||
(v6/*: any*/),
|
||||
{
|
||||
"alias": null,
|
||||
"args": null,
|
||||
@@ -207,7 +209,7 @@ return {
|
||||
"name": "updatedAt",
|
||||
"storageKey": null
|
||||
},
|
||||
(v7/*: any*/)
|
||||
(v8/*: any*/)
|
||||
],
|
||||
"storageKey": null
|
||||
},
|
||||
@@ -277,7 +279,7 @@ return {
|
||||
},
|
||||
{
|
||||
"alias": null,
|
||||
"args": (v6/*: any*/),
|
||||
"args": (v7/*: any*/),
|
||||
"filters": null,
|
||||
"handle": "connection",
|
||||
"key": "VendorListPage_vendors",
|
||||
@@ -294,16 +296,16 @@ return {
|
||||
]
|
||||
},
|
||||
"params": {
|
||||
"cacheID": "4f036b643119ac6840eede9bc148c6ac",
|
||||
"cacheID": "7aa223f9a0e9a5f57269b5dbdd339625",
|
||||
"id": null,
|
||||
"metadata": {},
|
||||
"name": "VendorListPageQuery",
|
||||
"operationKind": "query",
|
||||
"text": "query VendorListPageQuery(\n $organizationId: ID!\n $first: Int\n $after: CursorKey\n $last: Int\n $before: CursorKey\n) {\n organization: node(id: $organizationId) {\n __typename\n ...VendorListPage_vendors_pbnwq\n id\n }\n}\n\nfragment VendorListPage_vendors_pbnwq on Organization {\n id\n vendors(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n"
|
||||
"text": "query VendorListPageQuery(\n $organizationId: ID!\n $first: Int\n $after: CursorKey\n $last: Int\n $before: CursorKey\n) {\n organization: node(id: $organizationId) {\n __typename\n id\n ...VendorListPage_vendors_pbnwq\n }\n}\n\nfragment VendorListPage_vendors_pbnwq on Organization {\n vendors(first: $first, after: $after, last: $last, before: $before) {\n edges {\n node {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n id\n}\n"
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "a0a4881ec7e60051fa196830f5c62f45";
|
||||
(node as any).hash = "1dc54deae9707bee0ab9beba6d844df3";
|
||||
|
||||
export default node;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @generated SignedSource<<d8da23ca67cc47188e916e129dac0be0>>
|
||||
* @generated SignedSource<<193d632d808f2238377dab9c47d89f49>>
|
||||
* @lightSyntaxTransform
|
||||
* @nogrep
|
||||
*/
|
||||
@@ -105,7 +105,6 @@ return {
|
||||
},
|
||||
"name": "VendorListPage_vendors",
|
||||
"selections": [
|
||||
(v1/*: any*/),
|
||||
{
|
||||
"alias": "vendors",
|
||||
"args": null,
|
||||
@@ -232,13 +231,14 @@ return {
|
||||
}
|
||||
],
|
||||
"storageKey": null
|
||||
}
|
||||
},
|
||||
(v1/*: any*/)
|
||||
],
|
||||
"type": "Organization",
|
||||
"abstractKey": null
|
||||
};
|
||||
})();
|
||||
|
||||
(node as any).hash = "7ab226392b5cd58f332515753f1099ae";
|
||||
(node as any).hash = "3e2b7b3ee9248d288c34bcd156a0604d";
|
||||
|
||||
export default node;
|
||||
|
||||
Reference in New Issue
Block a user