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

View File

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