Compare commits

...

1 Commits

Author SHA1 Message Date
Dan Ribbens
986156462d fix: hidden collections showing in lexical and slate relationships 2023-12-05 11:24:57 -05:00
2 changed files with 30 additions and 8 deletions

View File

@@ -1,16 +1,26 @@
import type { User } from 'payload/auth'
import type { SanitizedCollectionConfig } from 'payload/types'
import { useConfig } from 'payload/components/utilities'
import { useAuth, useConfig } from 'payload/components/utilities'
import * as React from 'react'
type options = { uploads: boolean }
type options = {
uploads: boolean
user: User
}
type FilteredCollectionsT = (
collections: SanitizedCollectionConfig[],
options?: options,
) => SanitizedCollectionConfig[]
const filterRichTextCollections: FilteredCollectionsT = (collections, options) => {
return collections.filter(({ admin: { enableRichTextRelationship }, upload }) => {
return collections.filter(({ admin: { enableRichTextRelationship, hidden }, upload }) => {
if (hidden) {
return false
}
if (typeof hidden === 'function' && hidden({ user: options.user })) {
return false
}
if (options?.uploads) {
return enableRichTextRelationship && Boolean(upload) === true
}
@@ -22,8 +32,9 @@ const filterRichTextCollections: FilteredCollectionsT = (collections, options) =
export const EnabledRelationshipsCondition: React.FC<any> = (props) => {
const { children, uploads = false, ...rest } = props
const { collections } = useConfig()
const { user } = useAuth()
const [enabledCollectionSlugs] = React.useState(() =>
filterRichTextCollections(collections, { uploads }).map(({ slug }) => slug),
filterRichTextCollections(collections, { uploads, user }).map(({ slug }) => slug),
)
if (!enabledCollectionSlugs.length) {

View File

@@ -1,18 +1,28 @@
'use client'
import type { User } from 'payload/auth'
import type { SanitizedCollectionConfig } from 'payload/types'
import { useConfig } from 'payload/components/utilities'
import { useAuth, useConfig } from 'payload/components/utilities'
import * as React from 'react'
type options = { uploads: boolean }
type options = {
uploads: boolean
user: User
}
type FilteredCollectionsT = (
collections: SanitizedCollectionConfig[],
options?: options,
) => SanitizedCollectionConfig[]
const filterRichTextCollections: FilteredCollectionsT = (collections, options) => {
return collections.filter(({ admin: { enableRichTextRelationship }, upload }) => {
return collections.filter(({ admin: { enableRichTextRelationship, hidden }, upload }) => {
if (hidden) {
return false
}
if (typeof hidden === 'function' && hidden({ user: options.user })) {
return false
}
if (options?.uploads) {
return enableRichTextRelationship && Boolean(upload) === true
}
@@ -24,8 +34,9 @@ const filterRichTextCollections: FilteredCollectionsT = (collections, options) =
export const EnabledRelationshipsCondition: React.FC<any> = (props) => {
const { children, uploads = false, ...rest } = props
const { collections } = useConfig()
const { user } = useAuth()
const [enabledCollectionSlugs] = React.useState(() =>
filterRichTextCollections(collections, { uploads }).map(({ slug }) => slug),
filterRichTextCollections(collections, { uploads, user }).map(({ slug }) => slug),
)
if (!enabledCollectionSlugs.length) {