From 09d1f05b9d657361098b776ddd70297e4760597e Mon Sep 17 00:00:00 2001 From: sagar davara Date: Mon, 16 Sep 2024 17:00:43 +0530 Subject: [PATCH] fix: improve dropdown panel performance --- .changeset/strange-impalas-act.md | 5 ++++ .../runtime/src/widgets/Form/Dropdown.tsx | 24 ++++++++++--------- 2 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 .changeset/strange-impalas-act.md diff --git a/.changeset/strange-impalas-act.md b/.changeset/strange-impalas-act.md new file mode 100644 index 000000000..48b9df9fd --- /dev/null +++ b/.changeset/strange-impalas-act.md @@ -0,0 +1,5 @@ +--- +"@ensembleui/react-runtime": patch +--- + +improve dropdown panel performance diff --git a/packages/runtime/src/widgets/Form/Dropdown.tsx b/packages/runtime/src/widgets/Form/Dropdown.tsx index aae679b8f..b9f8dc3b7 100644 --- a/packages/runtime/src/widgets/Form/Dropdown.tsx +++ b/packages/runtime/src/widgets/Form/Dropdown.tsx @@ -64,20 +64,22 @@ const DropdownRenderer = ( menu: React.ReactElement, panel?: { [key: string]: unknown }, ): React.ReactElement => { + const panelOption = useMemo(() => { + return panel ? EnsembleRuntime.render([unwrapWidget(panel)]) : null; + }, []); + return ( <> {menu} - {panel ? ( - // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -
{ - e.preventDefault(); - e.stopPropagation(); - }} - > - {EnsembleRuntime.render([unwrapWidget(panel)])} -
- ) : null} + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */} +
{ + e.preventDefault(); + e.stopPropagation(); + }} + > + {panelOption} +
); };