-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathUserRelationshipField.tsx
More file actions
39 lines (33 loc) · 961 Bytes
/
UserRelationshipField.tsx
File metadata and controls
39 lines (33 loc) · 961 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use client';
import * as React from 'react';
import { RelationshipInput, useField } from '@payloadcms/ui';
import type { CollectionSlug, JSONFieldClientComponent } from 'payload';
interface UserData {
collection: CollectionSlug;
id: string;
}
export const UserRelationshipField: JSONFieldClientComponent = ({ path }) => {
const { value, setValue } = useField({ path }) as {
value: UserData | null;
setValue: (val: unknown) => void;
};
const handleChange = React.useCallback(
(val: unknown) => {
setValue(val);
},
[setValue],
);
if (!value?.collection || !value?.id) {
return <RelationshipInput path={path} relationTo={[]} onChange={handleChange} hasMany={false} />;
}
return (
<RelationshipInput
path={path}
relationTo={[value.collection]}
onChange={handleChange}
hasMany={false}
value={{ relationTo: value.collection, value: value.id }}
Label="User"
/>
);
};