2024-07-13 19:03:21 +02:00

72 lines
2.3 KiB
TypeScript

import { attributesField } from "../../fields/attributesField/attributesField";
import { creditsField } from "../../fields/creditsField/creditsField";
import { imageField } from "../../fields/imageField/imageField";
import { rowField } from "../../fields/rowField/rowField";
import { translatedFields } from "../../fields/translatedFields/translatedFields";
import { CollectionGroups, Collections } from "../../shared/payload/constants";
import { buildCollectionConfig } from "../../utils/collectionConfig";
import { createEditor } from "../../utils/editor";
import { getByID } from "./endpoints/getByID";
const fields = {
filename: "filename",
mimeType: "mimeType",
filesize: "filesize",
updatedAt: "updatedAt",
translations: "translations",
translationsPretitle: "pretitle",
translationsTitle: "title",
translationsSubtitle: "subtitle",
translationsDescription: "description",
thumbnail: "thumbnail",
attributes: "attributes",
credits: "credits",
};
export const Files = buildCollectionConfig({
slug: Collections.Files,
labels: { singular: "File", plural: "Files" },
defaultSort: fields.filename,
admin: {
group: CollectionGroups.Media,
preview: ({ id }) => `${process.env.PAYLOAD_PUBLIC_FRONTEND_BASE_URL}/en/files/${id}`,
description: "For any file that isn't a video, an image, or an audio file.",
defaultColumns: [
fields.filename,
fields.thumbnail,
fields.mimeType,
fields.filesize,
fields.translations,
fields.updatedAt,
],
},
upload: {
disableLocalStorage: true,
},
endpoints: [getByID],
fields: [
imageField({
name: fields.thumbnail,
relationTo: Collections.MediaThumbnails,
}),
translatedFields({
name: fields.translations,
admin: { useAsTitle: fields.translationsTitle },
fields: [
rowField([
{ name: fields.translationsPretitle, type: "text" },
{ name: fields.translationsTitle, type: "text", required: true },
{ name: fields.translationsSubtitle, type: "text" },
]),
{
name: fields.translationsDescription,
type: "richText",
editor: createEditor({ inlines: true, lists: true, links: true }),
},
],
}),
attributesField({ name: fields.attributes }),
creditsField({ name: fields.credits }),
],
});