Skip to Content
⚠️Active Development Notice: TimeTiles is under active development. Information may be placeholder content or not up-to-date.

web


web / lib/collections/shared-fields

lib/collections/shared-fields

Provides shared, reusable components for defining Payload CMS collections.

This module contains helper functions and constant definitions to promote consistency and reduce boilerplate code across different collection configurations. It includes:

  • Access control helpers (e.g., isEditorOrAdmin).
  • Common field definitions (e.g., basicMetadataFields, metadataField).
  • A factory function (createSlugField) for generating URL-friendly slugs.
  • A factory function (createCommonConfig) to apply standard collection-level settings like timestamps, versioning, and drafts.

Interfaces

CommonCollectionOptions

Properties

versions?

optional versions: boolean

drafts?

optional drafts: boolean

maxPerDoc?

optional maxPerDoc: number

trash?

optional trash: boolean

timestamps?

optional timestamps: boolean

Variables

isAdmin

const isAdmin: Access


isEditorOrAdmin

const isEditorOrAdmin: Access


isAuthenticated

const isAuthenticated: Access


setCreatedByHook

const setCreatedByHook: CollectionBeforeChangeHook

Hook that sets the createdBy field to the current user on document creation. Use in beforeChange hooks for collections with a createdBy relationship field.


basicMetadataFields

const basicMetadataFields: Field[]


metadataField

const metadataField: Field

Functions

createOwnershipAccess()

createOwnershipAccess(_collection, ownerField?): Access

Factory for ownership-based access control. Returns true for editors/admins, or a WHERE clause filtering by ownership field. Uses zero-query approach (WHERE clause) instead of per-document DB lookup.

Parameters

_collection

string

ownerField?

"user" | "createdBy" | "ownedBy"

Returns

Access


createPublicOwnershipAccess()

createPublicOwnershipAccess(ownerField?): object

Access control bundle for collections with public visibility + ownership.

Provides all five access functions for collections where:

  • Documents have an isPublic field controlling anonymous visibility
  • Documents have an owner field (default: createdBy) for per-user access
  • Editors/admins have full access

Used by Sites and Views collections to eliminate duplicated access logic.

Parameters

ownerField?

"user" | "createdBy" | "ownedBy"

Returns

object

read

read: Access

create

create: Access

update

update: Access

deleteAccess

deleteAccess: Access

readVersions

readVersions: Access


createSlugField()

createSlugField<T>(collection, sourceField?): Field

Type Parameters

T

T extends "import-files" | "catalogs" | "data-exports" | "datasets" | "dataset-schemas" | "audit-log" | "import-jobs" | "scheduled-imports" | "events" | "users" | "user-usage" | "media" | "location-cache" | "geocoding-providers" | "pages" | "sites" | "themes" | "layout-templates" | "views" | "schema-detectors" | "payload-kv" | "payload-jobs" | "payload-locked-documents" | "payload-preferences" | "payload-migrations"

Parameters

collection

T

sourceField?

string = "name"

Returns

Field


createCreatedByField()

createCreatedByField(description, options?): Field

Create a createdBy relationship field pointing to users.

Parameters

description

string

options?
required?

boolean

Returns

Field


createIsPublicField()

createIsPublicField(options?): Field

Create an isPublic checkbox field with optional private visibility notice.

Parameters

options?
defaultValue?

boolean

description?

string

showPrivateNotice?

boolean

Returns

Field


editorOrAdminCondition()

editorOrAdminCondition(__namedParameters): boolean

Admin condition: only show field to editors and admins.

Parameters

__namedParameters
req?

{ user?: \{ role?: string; } | null; }

req.user?

{ role?: string; } | null

Returns

boolean


createCommonConfig()

createCommonConfig(options?): object

Parameters

options?

CommonCollectionOptions = {}

Returns

object

timestamps

timestamps: boolean

trash

trash: boolean

versions?

optional versions: object

versions.maxPerDoc

maxPerDoc: number

versions.drafts?

optional drafts: object

versions.drafts.autosave

autosave: boolean

Last updated on