@becklyn/contentful-adapter
Version:
[](https://github.com/Becklyn-Studios/contentful-adapter/actions/workflows/ci.yml)
127 lines (126 loc) • 5.07 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBlockSocialProofMigration = void 0;
const block_1 = require("./block");
const rte_1 = require("../rte");
const blockVariant_1 = require("../constants/blockVariant");
const translations = {
en: {
blockSocialProof: {
name: "🧩 Block > Social Proof",
fields: {
headline: "Headline",
entries: "Entries",
variant: "Variant",
},
},
blockSocialProofEntry: {
name: "🧩 Block > Social Proof > Entry",
fields: {
name: "Internal Name",
image: "Image",
labeledLink: "Link",
},
},
},
de: {
blockSocialProof: {
name: "🧩 Block > Social Proof",
fields: {
headline: "Überschrift",
entries: "Einträge",
variant: "Variante",
},
},
blockSocialProofEntry: {
name: "🧩 Block > Social Proof > Eintrag",
fields: {
name: "Interner Name",
image: "Bild",
labeledLink: "Link",
},
},
},
};
const getBlockSocialProofMigration = (language) => {
const t = translations[language];
return {
component: "blockSocialProof",
migrations: {
1: migration => {
const t = translations[language];
const blockSocialProofEntry = migration.createContentType("blockSocialProofEntry", {
name: t.blockSocialProofEntry.name,
});
blockSocialProofEntry.createField("name", {
type: "Symbol",
name: t.blockSocialProofEntry.fields.name,
required: true,
});
blockSocialProofEntry.createField("image", {
type: "Link",
name: t.blockSocialProofEntry.fields.image,
linkType: "Asset",
validations: [{ linkMimetypeGroup: ["image"] }],
required: true,
});
blockSocialProofEntry.createField("labeledLink", {
type: "Link",
name: t.blockSocialProofEntry.fields.labeledLink,
linkType: "Entry",
validations: [{ linkContentType: ["labeledLink"] }],
});
blockSocialProofEntry.displayField("name");
const blockSocialProof = migration.createContentType("blockSocialProof", {
name: t.blockSocialProof.name,
});
blockSocialProof.createField("headline", {
type: "Symbol",
name: t.blockSocialProof.fields.headline,
});
blockSocialProof.createField("entries", {
type: "Array",
name: t.blockSocialProof.fields.entries,
items: {
type: "Link",
linkType: "Entry",
validations: [{ linkContentType: ["blockSocialProofEntry"] }],
},
required: true,
});
(0, block_1.migrateBaseBlockFields)(blockSocialProof, language);
},
2: migration => {
const blockSocialProof = migration.editContentType("blockSocialProof");
blockSocialProof.deleteField("headline");
blockSocialProof.createField("headline", {
type: "RichText",
name: t.blockSocialProof.fields.headline,
validations: (0, rte_1.getRteValidation)(rte_1.RTE_TYPE_HEADLINE),
});
blockSocialProof.moveField("headline").afterField("name");
},
3: migration => {
const blockSocialProof = migration.editContentType("blockSocialProof");
blockSocialProof.createField("variant", {
type: "Symbol",
name: t.blockSocialProof.fields.variant,
validations: [
{
in: [
blockVariant_1.BLOCK_VARIANT_BRAND,
blockVariant_1.BLOCK_VARIANT_PRIMARY,
blockVariant_1.BLOCK_VARIANT_SECONDARY,
blockVariant_1.BLOCK_VARIANT_WHITE,
blockVariant_1.BLOCK_VARIANT_BLACK,
blockVariant_1.BLOCK_VARIANT_GRAY,
],
},
],
});
blockSocialProof.changeFieldControl("variant", "builtin", "dropdown");
},
},
};
};
exports.getBlockSocialProofMigration = getBlockSocialProofMigration;