52 lines
1.6 KiB
TypeScript
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 }],
|
|
}),
|
|
],
|
|
});
|