57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
/* 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(
|
|
<TagField
|
|
noHolder
|
|
{...dataSchema}
|
|
/>,
|
|
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;
|
|
}
|
|
});
|
|
});
|