/* global window */ import React from 'react'; import ReactDOM from 'react-dom'; import { loadComponent } from 'lib/Injector'; window.jQuery.entwine('ss', ($) => { $('.js-injector-boot .ss-tag-field.entwine').entwine({ onmatch() { const cmsContent = this.closest('.cms-content').attr('id'); const context = (cmsContent) ? { context: cmsContent } : {}; const TagField = loadComponent('TagField', context); const dataSchema = { ...this.data('schema'), onBlur: () => { this.parents('.cms-edit-form:first').trigger('change'); } }; ReactDOM.render( , this[0] ); }, onunmatch() { ReactDOM.unmountComponentAtNode(this[0]); } }); $('.cms-edit-form').entwine({ getChangeTrackerOptions() { // Figure out if we're still returning the default value const isDefault = (this.entwineData('ChangeTrackerOptions') === undefined); // Get the current options let opts = this._super(); if (isDefault) { // If it is the default then... // clone the object (so we don't modify the original), opts = $.extend({}, opts); // modify it, opts.ignoreFieldSelector += ', .ss-tag-field .Select :input'; // then set the clone as the value on this element // (so next call to this method gets this same clone) this.setChangeTrackerOptions(opts); } return opts; } }); });