next-cochise/src/utils/formatSlug.ts

25 lines
569 B
TypeScript

import { FieldHook } from "payload";
const format = (val: string): string =>
val
.replace(/ /g, "-")
.replace(/[^\w-/]+/g, "")
.toLowerCase();
const formatSlug =
(fallback: string): FieldHook =>
({ value, originalDoc, data }) => {
if (typeof value === "string") {
return format(value);
}
const fallbackData = (data && data[fallback]) || (originalDoc && originalDoc[fallback]);
if (fallbackData && typeof fallbackData === "string") {
return format(fallbackData);
}
return value;
};
export default formatSlug;