UNPKG

@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
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(); }