Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
11 KiB
Plaintext
1 line
11 KiB
Plaintext
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useMemo","useState","useIntersect","useConfig","useTranslation","canUseDOM","formatDocTitle","useListRelationships","FileCell","baseClass","totalToShow","RelationshipCell","t0","$","cellData","cellDataFromProps","customCellProps","customCellContext","field","t1","label","relationTo","collection","docs","config","getEntityConfig","collections","intersectionRef","entry","t2","Symbol","for","values","setValues","documents","getRelationships","hasRequested","setHasRequested","i18n","t","isAboveViewport","boundingClientRect","top","window","innerHeight","t3","formattedValues","arrayCellData","Array","isArray","slice","length","forEach","cell","push","value","t4","t5","t6","t7","admin","t8","t9","i","relationTo_0","document","relatedCollection","collectionSlug","label_0","collectionConfig","data","dateFormat","fallback","fileField","type","fieldPreviewAllowed","displayPreview","undefined","previewAllowed","upload","slug","rowData","_jsxs","Fragment","children","className","ref","map","count","items"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n DefaultCellComponentProps,\n JoinFieldClient,\n RelationshipFieldClient,\n UploadFieldClient,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { useIntersect } from '../../../../../hooks/useIntersect.js'\nimport { useConfig } from '../../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport { canUseDOM } from '../../../../../utilities/canUseDOM.js'\nimport { formatDocTitle } from '../../../../../utilities/formatDocTitle/index.js'\nimport { useListRelationships } from '../../../RelationshipProvider/index.js'\nimport { FileCell } from '../File/index.js'\nimport './index.scss'\n\ntype Value = { relationTo: string; value: number | string }\nconst baseClass = 'relationship-cell'\nconst totalToShow = 3\n\nexport type RelationshipCellProps = DefaultCellComponentProps<\n JoinFieldClient | RelationshipFieldClient | UploadFieldClient\n>\n\nexport const RelationshipCell: React.FC<RelationshipCellProps> = ({\n cellData: cellDataFromProps,\n customCellProps: customCellContext,\n field,\n field: { label },\n}) => {\n // conditionally extract relationTo both both relationship and join fields\n const relationTo =\n ('relationTo' in field && field.relationTo) || ('collection' in field && field.collection)\n\n // conditionally extract docs from join fields\n const cellData = useMemo(() => {\n return 'collection' in field ? cellDataFromProps?.docs : cellDataFromProps\n }, [cellDataFromProps, field])\n\n const { config, getEntityConfig } = useConfig()\n const { collections } = config\n const [intersectionRef, entry] = useIntersect()\n const [values, setValues] = useState<Value[]>([])\n const { documents, getRelationships } = useListRelationships()\n const [hasRequested, setHasRequested] = useState(false)\n const { i18n, t } = useTranslation()\n\n const isAboveViewport = canUseDOM ? entry?.boundingClientRect?.top < window.innerHeight : false\n\n useEffect(() => {\n if ((cellData || typeof cellData === 'number') && isAboveViewport && !hasRequested) {\n const formattedValues: Value[] = []\n const arrayCellData = Array.isArray(cellData) ? cellData : [cellData]\n arrayCellData\n .slice(0, arrayCellData.length < totalToShow ? arrayCellData.length : totalToShow)\n .forEach((cell) => {\n if (typeof cell === 'object' && 'relationTo' in cell && 'value' in cell) {\n formattedValues.push(cell)\n }\n if (\n (typeof cell === 'number' || typeof cell === 'string') &&\n typeof relationTo === 'string'\n ) {\n formattedValues.push({\n relationTo,\n value: cell,\n })\n }\n })\n getRelationships(formattedValues)\n setHasRequested(true)\n setValues(formattedValues)\n }\n }, [cellData, relationTo, collections, isAboveViewport, hasRequested, getRelationships])\n\n useEffect(() => {\n if (hasRequested) {\n setHasRequested(false)\n }\n }, [cellData])\n\n return (\n <div className={baseClass} ref={intersectionRef}>\n {values.map(({ relationTo, value }, i) => {\n const document = documents[relationTo][value]\n const relatedCollection = getEntityConfig({\n collectionSlug: relationTo,\n })\n\n const label = formatDocTitle({\n collectionConfig: relatedCollection,\n data: document || null,\n dateFormat: config.admin.dateFormat,\n fallback: `${t('general:untitled')} - ID: ${value}`,\n i18n,\n })\n\n let fileField = null\n\n if (field.type === 'upload') {\n const fieldPreviewAllowed = 'displayPreview' in field ? field.displayPreview : undefined\n const previewAllowed =\n fieldPreviewAllowed ?? relatedCollection.upload?.displayPreview ?? true\n\n if (previewAllowed && document) {\n fileField = (\n <FileCell\n cellData={label}\n collectionConfig={relatedCollection}\n collectionSlug={relatedCollection.slug}\n customCellProps={customCellContext}\n field={field}\n rowData={document}\n />\n )\n }\n }\n\n return (\n <React.Fragment key={i}>\n {document === false && `${t('general:untitled')} - ID: ${value}`}\n {document === null && `${t('general:loading')}...`}\n {document ? fileField || label : null}\n {values.length > i + 1 && ', '}\n </React.Fragment>\n )\n })}\n {Array.isArray(cellData) &&\n cellData.length > totalToShow &&\n t('fields:itemsAndMore', { count: cellData.length - totalToShow, items: '' })}\n {values.length === 0 && t('general:noLabel', { label: getTranslation(label || '', i18n) })}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]} |