@tanglemedia/directus-collection-flex-editor
Version:
Creates the flex table and some basic related nodes like image, resource, embed, and section
148 lines (140 loc) • 3.33 kB
JavaScript
const COLLECTION_NAME = "tngl_flex_content";
const COLLECTION_INSERTS = [
{
accountability: "all",
archive_app_filter: true,
archive_field: null,
archive_value: null,
collapse: "open",
collection: COLLECTION_NAME,
color: null,
display_template: "{{content}}",
group: null,
hidden: true,
icon: "density_small",
item_duplication_fields: null,
note: null,
preview_url: null,
singleton: false,
sort: null,
sort_field: null,
translations: JSON.stringify([
{
language: "en-US",
translation: "Flexible Content",
},
{
language: "en-CA",
translation: "Flexible Content",
},
]),
unarchive_value: null,
versioning: false,
},
];
const FIELD_INSERTS = [
{
collection: COLLECTION_NAME,
field: "id",
special: "uuid",
interface: "input",
options: null,
display: null,
display_options: null,
readonly: true,
hidden: true,
sort: 1,
width: "full",
translations: null,
note: null,
conditions: null,
required: false,
group: null,
validation: null,
validation_message: null,
},
{
collection: COLLECTION_NAME,
field: "content",
special: "cast-json",
interface: "flexible-editor-interface",
options: JSON.stringify({
m2aField: "editor_nodes",
displayFormat: true,
}),
display: "flexible-editor-display",
display_options: null,
readonly: false,
hidden: false,
sort: 2,
width: "full",
translations: null,
note: null,
conditions: null,
required: false,
group: null,
validation: null,
validation_message: null,
},
{
collection: COLLECTION_NAME,
field: "plain",
special: null,
interface: "input-multiline",
options: null,
display: null,
display_options: null,
readonly: false,
hidden: true,
sort: 3,
width: "full",
translations: null,
note: null,
conditions: null,
required: false,
group: null,
validation: null,
validation_message: null,
},
{
collection: COLLECTION_NAME,
field: "editor_nodes",
special: "m2a",
interface: "list-m2a",
options: null,
display: null,
display_options: null,
readonly: false,
hidden: true,
sort: 4,
width: "full",
translations: null,
note: null,
conditions: null,
required: false,
group: null,
validation: null,
validation_message: null,
},
];
export async function up(knex) {
// if row exists in directus_collections table, do not proceed with migration
const collectionExists = await knex("directus_collections")
.select("collection")
.where("collection", COLLECTION_NAME)
.first();
// register table into `directus_collections` table
// for full list of directus_collections properties, refer to: https://docs.directus.io/reference/system/collections.html
if (!collectionExists) {
await knex("directus_collections").insert(COLLECTION_INSERTS);
}
// register fields into `directus_fields` table
// for full list of directus_fields properties, refer to: https://docs.directus.io/reference/system/fields.html
await knex("directus_fields").insert(FIELD_INSERTS);
}
export async function down(knex) {
// remove associated data from directus_fields table
await knex("directus_fields").where("collection", COLLECTION_NAME).del();
// remove associated data from directus_collections table
await knex("directus_collections").where("collection", COLLECTION_NAME).del();
}