52 lines
1.6 KiB
TypeScript

import { CollectionConfig } from "payload/types";
import { mustBeAdmin } from "src/accesses/fields/mustBeAdmin";
import { iconField } from "src/fields/iconField/iconField";
import { rowField } from "src/fields/rowField/rowField";
import { slugField } from "src/fields/slugField/slugField";
import { translatedFields } from "src/fields/translatedFields/translatedFields";
import { Collections, CollectionGroups, AttributeTypes } from "src/shared/payload/constants";
import { buildCollectionConfig } from "src/utils/collectionConfig";
const fields = {
slug: "slug",
translations: "translations",
translationsName: "name",
icon: "icon",
type: "type",
};
export const Attributes: CollectionConfig = buildCollectionConfig({
slug: Collections.Attributes,
labels: { singular: "Attribute", plural: "Attributes" },
admin: {
group: CollectionGroups.Meta,
useAsTitle: fields.slug,
defaultColumns: [fields.slug, fields.icon, fields.type, fields.translations],
},
fields: [
rowField([
slugField({ name: fields.slug }),
iconField({ name: fields.icon }),
{
name: fields.type,
type: "select",
access: {
update: mustBeAdmin,
},
required: true,
options: Object.values(AttributeTypes).map((value) => ({
label: value,
value: value,
})),
},
]),
translatedFields({
name: fields.translations,
admin: { useAsTitle: fields.translationsName },
required: true,
minRows: 1,
fields: [{ name: fields.translationsName, type: "text", required: true }],
}),
],
});