fix live-editing

This commit is contained in:
kangwei 2020-05-15 13:29:58 +08:00
parent 293b7603a5
commit 1fc9894959
2 changed files with 21 additions and 7 deletions

View File

@ -98,6 +98,7 @@ export class LiveEditing {
const onSaveContent = matched?.onSaveContent || saveHandlers.find(item => item.condition(prop))?.onSaveContent || defaultSaveContent; const onSaveContent = matched?.onSaveContent || saveHandlers.find(item => item.condition(prop))?.onSaveContent || defaultSaveContent;
setterPropElement.setAttribute('contenteditable', matched?.mode && matched.mode !== 'plaintext' ? 'true' : 'plaintext-only'); setterPropElement.setAttribute('contenteditable', matched?.mode && matched.mode !== 'plaintext' ? 'true' : 'plaintext-only');
setterPropElement.removeAttribute('for');
setterPropElement.classList.add('engine-live-editing'); setterPropElement.classList.add('engine-live-editing');
// be sure // be sure
setterPropElement.focus(); setterPropElement.focus();
@ -107,14 +108,24 @@ export class LiveEditing {
onSaveContent(setterPropElement!.innerText, prop); onSaveContent(setterPropElement!.innerText, prop);
}; };
this._dispose = () => { const keydown = (e: KeyboardEvent) {
setterPropElement!.removeAttribute('contenteditable'); console.info(e.code);
setterPropElement!.classList.remove('engine-live-editing'); // esc
// enter
// tab
}; };
const focusout = (e: FocusEvent) => {
setterPropElement.addEventListener('focusout', (e) => {
this.saveAndDispose(); this.saveAndDispose();
}); };
setterPropElement.addEventListener('focusout', focusout);
setterPropElement.addEventListener('keydown', keydown, true);
this._dispose = () => {
setterPropElement!.classList.remove('engine-live-editing');
setterPropElement!.removeAttribute('contenteditable');
setterPropElement!.removeEventListener('focusout', focusout);
setterPropElement!.removeEventListener('keydown', keydown, true);
};
this._editing = prop; this._editing = prop;
} }

View File

@ -46,7 +46,10 @@ export class Transducer {
setter = setter.componentName; setter = setter.componentName;
} }
if (typeof setter === 'string') { if (typeof setter === 'string') {
setter = getSetter(setter).component; setter = getSetter(setter)?.component;
if (!setter) {
debugger;
}
} }
this.setterTransducer = combineTransducer( this.setterTransducer = combineTransducer(