From f2f8e2b3b3480fb17c07e42bbf0d965491ab7e18 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Mon, 4 May 2026 20:35:59 +0200 Subject: [PATCH] feat(core-shared): add slugField helper --- .../src/payload/fields/slug-field.test.ts | 18 ++++++++++++++++++ .../src/payload/fields/slug-field.ts | 11 +++++++++++ 2 files changed, 29 insertions(+) create mode 100644 packages/core-shared/src/payload/fields/slug-field.test.ts create mode 100644 packages/core-shared/src/payload/fields/slug-field.ts diff --git a/packages/core-shared/src/payload/fields/slug-field.test.ts b/packages/core-shared/src/payload/fields/slug-field.test.ts new file mode 100644 index 0000000..32e4ab1 --- /dev/null +++ b/packages/core-shared/src/payload/fields/slug-field.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from "vitest"; +import { slugField } from "./slug-field"; + +describe("slugField", () => { + it("returns a Payload Field with default name 'slug'", () => { + const field = slugField(); + expect(field.name).toBe("slug"); + expect(field.type).toBe("text"); + expect(field.required).toBe(true); + expect(field.unique).toBe(true); + expect(field.index).toBe(true); + }); + + it("accepts a custom field name", () => { + const field = slugField("permalink"); + expect(field.name).toBe("permalink"); + }); +}); diff --git a/packages/core-shared/src/payload/fields/slug-field.ts b/packages/core-shared/src/payload/fields/slug-field.ts new file mode 100644 index 0000000..213d6f4 --- /dev/null +++ b/packages/core-shared/src/payload/fields/slug-field.ts @@ -0,0 +1,11 @@ +import type { Field } from "payload"; + +export function slugField(name = "slug"): Field { + return { + name, + type: "text", + required: true, + unique: true, + index: true, + }; +}