From 81384caac2c92cf6fbc7f9d0366ce79a18f1deca Mon Sep 17 00:00:00 2001 From: GrigorM Date: Mon, 1 Aug 2022 16:39:41 +0200 Subject: [PATCH 1/2] use optional 'forceRender' prop to pre-render the listbox --- src/BaseSelect.tsx | 2 ++ src/SelectTrigger.tsx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/BaseSelect.tsx b/src/BaseSelect.tsx index c2501bfe0..f271d14a5 100644 --- a/src/BaseSelect.tsx +++ b/src/BaseSelect.tsx @@ -263,6 +263,7 @@ const BaseSelect = React.forwardRef((props: BaseSelectProps, ref: React.Ref selectorDomRef.current} onPopupVisibleChange={onTriggerVisibleChange} onPopupMouseEnter={onPopupMouseEnter} + forceRender={forceRender} > {customizeRawInputElement ? ( React.cloneElement(customizeRawInputElement, { diff --git a/src/SelectTrigger.tsx b/src/SelectTrigger.tsx index 530be5ec0..ce18c6a96 100644 --- a/src/SelectTrigger.tsx +++ b/src/SelectTrigger.tsx @@ -71,6 +71,8 @@ export interface SelectTriggerProps { onPopupVisibleChange?: (visible: boolean) => void; onPopupMouseEnter: () => void; + + forceRender?: boolean; } const SelectTrigger: React.RefForwardingComponent = ( From 3fae5f2b284d263507b4fc66246edd5251131a12 Mon Sep 17 00:00:00 2001 From: GrigorM Date: Mon, 1 Aug 2022 18:39:11 +0200 Subject: [PATCH 2/2] rename prop, make it explicit in Select component --- src/BaseSelect.tsx | 5 +++-- src/Select.tsx | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/BaseSelect.tsx b/src/BaseSelect.tsx index f271d14a5..24cf16cb7 100644 --- a/src/BaseSelect.tsx +++ b/src/BaseSelect.tsx @@ -181,6 +181,7 @@ export interface BaseSelectProps extends BaseSelectPrivateProps, React.AriaAttri dropdownAlign?: AlignType; placement?: Placement; getPopupContainer?: RenderDOMFunc; + preRenderOptionList?: boolean; // >>> Focus showAction?: ('focus' | 'click')[]; @@ -263,7 +264,7 @@ const BaseSelect = React.forwardRef((props: BaseSelectProps, ref: React.Ref selectorDomRef.current} onPopupVisibleChange={onTriggerVisibleChange} onPopupMouseEnter={onPopupMouseEnter} - forceRender={forceRender} + forceRender={preRenderOptionList} > {customizeRawInputElement ? ( React.cloneElement(customizeRawInputElement, { diff --git a/src/Select.tsx b/src/Select.tsx index 46fbaf51e..09edec8c8 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -139,6 +139,7 @@ export interface SelectProps>> Icon menuItemSelectedIcon?: RenderNode; @@ -186,6 +187,7 @@ const Select = React.forwardRef( virtual, listHeight = 200, listItemHeight = 20, + preRenderOptionList = false, // Value value, @@ -627,6 +629,7 @@ const Select = React.forwardRef( // >>> OptionList OptionList={OptionList} emptyOptions={!displayOptions.length} + preRenderOptionList={preRenderOptionList} // >>> Accessibility activeValue={activeValue} activeDescendantId={`${mergedId}_list_${accessibilityIndex}`}