Files
twenty/packages/twenty-front-component-renderer/src/index.ts
T
Raphaël Bosi c8b9dace72 Fix focus in front components inputs (#20961)
Fixes https://github.com/twentyhq/twenty/issues/20714

Fixes keyboard hotkey conflicts when typing inside `<input>` /
`<textarea>` elements rendered by Front Components. Editable fields
rendered through the component renderer now properly push/pop a focus
item onto Twenty's focus stack, disabling global keyboard hotkeys while
the user is typing.

## Before


https://github.com/user-attachments/assets/2003c2cb-2698-480f-aedf-bb2f30396572


## After


https://github.com/user-attachments/assets/2c7c6cb0-ecd7-4557-a77b-4d1f264345f0
2026-05-27 16:30:49 +00:00

142 lines
3.5 KiB
TypeScript

export { FrontComponentRenderer } from './host/components/FrontComponentRenderer';
export {
FrontComponentInputFocusContext,
type SetEditableFocused,
} from './host/contexts/FrontComponentInputFocusContext';
export { componentRegistry } from './host/generated/host-component-registry';
export { FrontComponentErrorEffect } from './remote/components/FrontComponentErrorEffect';
export { FrontComponentInitializeHostCommunicationApiEffect } from './remote/components/FrontComponentInitializeHostCommunicationApiEffect';
export { FrontComponentUpdateContextEffect } from './remote/components/FrontComponentUpdateContextEffect';
export { FrontComponentUpdateHostCommunicationApiEffect } from './remote/components/FrontComponentUpdateHostCommunicationApiEffect';
export { FrontComponentWorkerEffect } from './remote/components/FrontComponentWorkerEffect';
export {
HtmlA,
HtmlArticle,
HtmlAside,
HtmlBlockquote,
HtmlBr,
HtmlButton,
HtmlCode,
HtmlDiv,
HtmlEm,
HtmlFooter,
HtmlForm,
HtmlH1,
HtmlH2,
HtmlH3,
HtmlH4,
HtmlH5,
HtmlH6,
HtmlHeader,
HtmlHr,
HtmlIframe,
HtmlAudio,
HtmlImg,
HtmlSource,
HtmlVideo,
HtmlInput,
HtmlLabel,
HtmlLi,
HtmlMain,
HtmlNav,
HtmlOl,
HtmlOption,
HtmlP,
HtmlPre,
HtmlSection,
HtmlSelect,
HtmlSmall,
HtmlSpan,
HtmlStrong,
HtmlTable,
HtmlTbody,
HtmlTd,
HtmlTextarea,
HtmlTfoot,
HtmlTh,
HtmlThead,
HtmlTr,
HtmlUl,
} from './remote/generated/remote-components';
export {
HtmlAElement,
HtmlArticleElement,
HtmlAsideElement,
HtmlBlockquoteElement,
HtmlBrElement,
HtmlButtonElement,
HtmlCodeElement,
HtmlDivElement,
HtmlEmElement,
HtmlFooterElement,
HtmlFormElement,
HtmlH1Element,
HtmlH2Element,
HtmlH3Element,
HtmlH4Element,
HtmlH5Element,
HtmlH6Element,
HtmlHeaderElement,
HtmlHrElement,
HtmlIframeElement,
HtmlAudioElement,
HtmlImgElement,
HtmlSourceElement,
HtmlVideoElement,
HtmlInputElement,
HtmlLabelElement,
HtmlLiElement,
HtmlMainElement,
HtmlNavElement,
HtmlOlElement,
HtmlOptionElement,
HtmlPElement,
HtmlPreElement,
HtmlSectionElement,
HtmlSelectElement,
HtmlSmallElement,
HtmlSpanElement,
HtmlStrongElement,
HtmlTableElement,
HtmlTbodyElement,
HtmlTdElement,
HtmlTextareaElement,
HtmlTfootElement,
HtmlTheadElement,
HtmlThElement,
HtmlTrElement,
HtmlUlElement,
RemoteFragmentElement,
RemoteRootElement,
} from './remote/generated/remote-elements';
export type {
HtmlAProperties,
HtmlButtonProperties,
HtmlCommonEvents,
HtmlCommonProperties,
HtmlFormProperties,
HtmlIframeProperties,
HtmlAudioProperties,
HtmlImgProperties,
HtmlSourceProperties,
HtmlVideoProperties,
HtmlInputProperties,
HtmlLabelProperties,
HtmlOptionProperties,
HtmlSelectProperties,
HtmlTdProperties,
HtmlTextareaProperties,
HtmlThProperties,
} from './remote/generated/remote-elements';
export { createRemoteWorker } from './remote/worker/utils/createRemoteWorker';
export { installStyleBridge } from './polyfills/installStyleBridge';
export { exposeGlobals } from './remote/utils/exposeGlobals';
export type { FrontComponentExecutionContext } from 'twenty-sdk/front-component';
export type { FrontComponentHostCommunicationApi } from './types/FrontComponentHostCommunicationApi';
export type {
HostToWorkerRenderContext,
SdkClientUrls,
} from './types/HostToWorkerRenderContext';
export type { PropertySchema } from './constants/PropertySchema';
export type { WorkerExports } from './types/WorkerExports';