mirror of
https://github.com/hanzo-apps/cms.git
synced 2026-10-30 14:47:33 +00:00
- payload -> @hanzo/cms (core), bin payload -> hanzo-cms - create-payload-app -> @hanzo/create-cms-app - @payloadcms/<x> -> @hanzo/cms-<x> across the whole dependency graph - 3545 files, 72 package.json, 4419 scoped refs, 3852 core import specifiers, 82 scss imports - MIT attribution to Payload CMS Inc. preserved (LICENSE.md, author emails) Upstream: github.com/payloadcms/payload @ v3.85.2 (MIT)
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
'use client'
|
|
import { useField } from '@hanzo/cms-ui'
|
|
import * as React from 'react'
|
|
|
|
import { collection1Slug } from '../slugs.js'
|
|
|
|
export const PopulateFieldButton: React.FC<{
|
|
hasMany?: boolean
|
|
hasMultipleRelations?: boolean
|
|
path?: string
|
|
targetFieldPath: string
|
|
}> = ({ hasMany = true, hasMultipleRelations = false, targetFieldPath }) => {
|
|
const { setValue } = useField({ path: targetFieldPath })
|
|
|
|
const addDefaults = React.useCallback(() => {
|
|
const fetchRelationDocs = async () => {
|
|
const res = await fetch(
|
|
`/api/${collection1Slug}?limit=20&where[name][contains]=relationship-test`,
|
|
)
|
|
const json = await res.json()
|
|
if (hasMany) {
|
|
const docIDs = json.docs.map((doc) => {
|
|
if (hasMultipleRelations) {
|
|
return {
|
|
relationTo: collection1Slug,
|
|
value: doc.id,
|
|
}
|
|
}
|
|
|
|
return doc.id
|
|
})
|
|
setValue(docIDs)
|
|
} else {
|
|
// value that does not appear in first 10 docs fetch
|
|
setValue(json.docs[6].id)
|
|
}
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
fetchRelationDocs()
|
|
}, [setValue, hasMultipleRelations, hasMany])
|
|
|
|
return (
|
|
<div
|
|
className="pre-populate-field-ui"
|
|
style={{
|
|
alignItems: 'center',
|
|
display: 'flex',
|
|
justifyContent: 'center',
|
|
}}
|
|
>
|
|
<button onClick={addDefaults} style={{}} type="button">
|
|
Add default items
|
|
</button>
|
|
</div>
|
|
)
|
|
}
|