MCPcopy Index your code
hub / github.com/react-bootstrap/react-bootstrap / OverlayTrigger

Function OverlayTrigger

src/OverlayTrigger.tsx:177–320  ·  view source on GitHub ↗
({
  trigger = ['hover', 'focus'],
  overlay,
  children,
  popperConfig = {},

  show: propsShow,
  defaultShow = false,
  onToggle,

  delay: propsDelay,
  placement,
  flip = placement && placement.indexOf('auto') !== -1,
  ...props
}: OverlayTriggerProps)

Source from the content-addressed store, hash-verified

175};
176
177const OverlayTrigger: React.FC<OverlayTriggerProps> = ({
178 trigger = ['hover', 'focus'],
179 overlay,
180 children,
181 popperConfig = {},
182
183 show: propsShow,
184 defaultShow = false,
185 onToggle,
186
187 delay: propsDelay,
188 placement,
189 flip = placement && placement.indexOf('auto') !== -1,
190 ...props
191}: OverlayTriggerProps) => {
192 const triggerNodeRef = useRef(null);
193 const mergedRef = useMergedRefs<unknown>(
194 triggerNodeRef,
195 getChildRef(children),
196 );
197 const timeout = useTimeout();
198 const hoverStateRef = useRef<string>('');
199
200 const [show, setShow] = useUncontrolledProp(propsShow, defaultShow, onToggle);
201
202 const delay = normalizeDelay(propsDelay);
203
204 const { onFocus, onBlur, onClick } =
205 typeof children !== 'function'
206 ? React.Children.only(children).props
207 : ({} as any);
208
209 const attachRef = (r: React.Component | Element | null | undefined) => {
210 mergedRef(safeFindDOMNode(r));
211 };
212
213 const handleShow = useCallback(() => {
214 timeout.clear();
215 hoverStateRef.current = 'show';
216
217 if (!delay.show) {
218 setShow(true);
219 return;
220 }
221
222 timeout.set(() => {
223 if (hoverStateRef.current === 'show') setShow(true);
224 }, delay.show);
225 }, [delay.show, setShow, timeout]);
226
227 const handleHide = useCallback(() => {
228 timeout.clear();
229 hoverStateRef.current = 'hide';
230
231 if (!delay.hide) {
232 setShow(false);
233 return;
234 }

Callers

nothing calls this directly

Calls 3

normalizeDelayFunction · 0.85
handleMouseOverOutFunction · 0.85
handleShowFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…