next.js/examples/cms-payload/payload/utilities/formatSlug.ts
formatSlug.ts29 lines642 B
import { FieldHook } from "payload/types";

const format = (val: string): string =>
  val
    .replace(/ /g, "-")
    .replace(/[^\w-]+/g, "")
    .toLowerCase();

const formatSlug =
  (fallback: string): FieldHook =>
  ({ operation, value, originalDoc, data }) => {
    if (typeof value === "string") {
      return format(value);
    }

    if (operation === "create") {
      const fallbackData =
        (data && data[fallback]) || (originalDoc && originalDoc[fallback]);

      if (fallbackData && typeof fallbackData === "string") {
        return format(fallbackData);
      }
    }

    return value;
  };

export default formatSlug;
Quest for Codev2.0.0
/
SIGN IN