82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import { GlobalConfig } from "payload/types";
|
|
import { mustBeAdmin } from "../../accesses/collections/mustBeAdmin";
|
|
import { CollectionGroups, Collections } from "../../constants";
|
|
import { imageField } from "../../fields/imageField/imageField";
|
|
import { rowField } from "../../fields/rowField/rowField";
|
|
import { afterChangeWebhook } from "../../hooks/afterChangeWebhook";
|
|
import { getConfigEndpoint } from "./endpoints/getConfigEndpoint";
|
|
|
|
const fields = {
|
|
homeFolders: "homeFolders",
|
|
homeFoldersDarkThumbnail: "darkThumbnail",
|
|
homeFoldersLightThumbnail: "lightThumbnail",
|
|
homeFoldersFolder: "folder",
|
|
eras: "eras",
|
|
name: "name",
|
|
timeline: "timeline",
|
|
erasStartingYear: "startingYear",
|
|
erasEndingYear: "endingYear",
|
|
erasWording: "name",
|
|
timelineBreaks: "breaks",
|
|
} as const satisfies Record<string, string>;
|
|
|
|
export const WebsiteConfig: GlobalConfig = {
|
|
slug: Collections.WebsiteConfig,
|
|
typescript: { interface: "WebsiteConfig" },
|
|
admin: {
|
|
group: CollectionGroups.Meta,
|
|
},
|
|
access: { update: mustBeAdmin, read: mustBeAdmin },
|
|
endpoints: [getConfigEndpoint],
|
|
hooks: {
|
|
afterChange: [afterChangeWebhook],
|
|
},
|
|
fields: [
|
|
{
|
|
name: fields.homeFolders,
|
|
admin: {
|
|
description:
|
|
"These will be the folders displayed on the home page, under the Library section.",
|
|
},
|
|
type: "array",
|
|
fields: [
|
|
rowField([
|
|
imageField({ name: fields.homeFoldersLightThumbnail, relationTo: Collections.Images }),
|
|
imageField({ name: fields.homeFoldersDarkThumbnail, relationTo: Collections.Images }),
|
|
{
|
|
name: fields.homeFoldersFolder,
|
|
type: "relationship",
|
|
relationTo: Collections.Folders,
|
|
required: true,
|
|
},
|
|
]),
|
|
],
|
|
},
|
|
{
|
|
name: fields.timeline,
|
|
type: "group",
|
|
fields: [
|
|
{
|
|
name: fields.timelineBreaks,
|
|
type: "number",
|
|
hasMany: true,
|
|
},
|
|
{
|
|
name: fields.eras,
|
|
type: "array",
|
|
fields: [
|
|
{
|
|
name: fields.erasWording,
|
|
type: "relationship",
|
|
relationTo: Collections.Wordings,
|
|
required: true,
|
|
},
|
|
{ name: fields.erasStartingYear, type: "number", required: true, min: 0 },
|
|
{ name: fields.erasEndingYear, type: "number", required: true, min: 0 },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
};
|