yd
This commit is contained in:
@@ -131,27 +131,12 @@
|
|||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const ReferenceModel = defaultType.model.extend({
|
const ReferenceModel = defaultType.model.extend({
|
||||||
defaults: {
|
|
||||||
...defaultType.model.prototype.defaults,
|
|
||||||
components: [],
|
|
||||||
editable: false,
|
|
||||||
removable: true,
|
|
||||||
draggable: true,
|
|
||||||
copyable: true,
|
|
||||||
droppable: false,
|
|
||||||
traits: [
|
|
||||||
{ type: 'text', name: 'lib-id', label: 'Library ID', changeProp: true },
|
|
||||||
{ type: 'text', name: 'lib-kind', label: 'Library Kind', changeProp: true },
|
|
||||||
],
|
|
||||||
'lib-id': '',
|
|
||||||
'lib-kind': '',
|
|
||||||
startContent: '',
|
|
||||||
rawHtml: '',
|
|
||||||
},
|
|
||||||
|
|
||||||
initialize(props = {}, opts = {}) {
|
initialize(props = {}, opts = {}) {
|
||||||
defaultType.model.prototype.initialize.apply(this, [props, opts]);
|
defaultType.model.prototype.initialize.apply(this, [props, opts]);
|
||||||
|
|
||||||
|
this.applyReferenceDefaults();
|
||||||
|
|
||||||
this.on('change:lib-kind change:lib-id', () => {
|
this.on('change:lib-kind change:lib-id', () => {
|
||||||
this.ensureReferenceMetadata();
|
this.ensureReferenceMetadata();
|
||||||
this.reloadComponentContent();
|
this.reloadComponentContent();
|
||||||
@@ -172,6 +157,39 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
applyReferenceDefaults() {
|
||||||
|
const enforced = {
|
||||||
|
editable: false,
|
||||||
|
removable: true,
|
||||||
|
draggable: true,
|
||||||
|
copyable: true,
|
||||||
|
droppable: false,
|
||||||
|
'lib-id': this.get('lib-id') || '',
|
||||||
|
'lib-kind': this.get('lib-kind') || '',
|
||||||
|
rawHtml: this.get('rawHtml') || '',
|
||||||
|
};
|
||||||
|
|
||||||
|
Object.entries(enforced).forEach(([key, value]) => {
|
||||||
|
if (typeof this.get(key) === 'undefined') {
|
||||||
|
this.set(key, value, { silent: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const traits = this.get('traits');
|
||||||
|
const hasLibTraits = Array.isArray(traits) && traits.some(t => t?.name === 'lib-id' || t?.name === 'lib-kind');
|
||||||
|
if (!hasLibTraits) {
|
||||||
|
this.set('traits', [
|
||||||
|
{ type: 'text', name: 'lib-id', label: 'Library ID', changeProp: true },
|
||||||
|
{ type: 'text', name: 'lib-kind', label: 'Library Kind', changeProp: true },
|
||||||
|
], { silent: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const comps = this.components?.();
|
||||||
|
if (comps && typeof comps.reset === 'function' && comps.length) {
|
||||||
|
comps.reset([]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
ensureReferenceMetadata() {
|
ensureReferenceMetadata() {
|
||||||
const attrsCurrent = this.get('attributes') || {};
|
const attrsCurrent = this.get('attributes') || {};
|
||||||
let attrs = Array.isArray(attrsCurrent) ? {} : { ...attrsCurrent };
|
let attrs = Array.isArray(attrsCurrent) ? {} : { ...attrsCurrent };
|
||||||
|
|||||||
Reference in New Issue
Block a user