Skip to content

Commit 3963f72

Browse files
authored
refactor: simplify code (react-bootstrap#5676)
* refactor: simplify code Use optional chaining with function calls Avoid destructuring params if not needed Shorten TabContent to use createWithBsPrefix * Fix nested classNames
1 parent aafbdbf commit 3963f72

30 files changed

+71
-248
lines changed

src/AbstractNav.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const AbstractNav: BsPrefixRefForwardingComponent<
7777

7878
const listNode = useRef<HTMLElement>(null);
7979

80-
const getNextActiveChild = (offset) => {
80+
const getNextActiveChild = (offset: number) => {
8181
const currentListNode = listNode.current;
8282
if (!currentListNode) return null;
8383

@@ -96,12 +96,12 @@ const AbstractNav: BsPrefixRefForwardingComponent<
9696

9797
const handleSelect = (key, event) => {
9898
if (key == null) return;
99-
if (onSelect) onSelect(key, event);
100-
if (parentOnSelect) parentOnSelect(key, event);
99+
onSelect?.(key, event);
100+
parentOnSelect?.(key, event);
101101
};
102102

103103
const handleKeyDown = (event) => {
104-
if (onKeyDown) onKeyDown(event);
104+
onKeyDown?.(event);
105105

106106
let nextActiveChild;
107107
switch (event.key) {
@@ -130,7 +130,7 @@ const AbstractNav: BsPrefixRefForwardingComponent<
130130
'[data-rb-event-key].active',
131131
);
132132

133-
if (activeChild) activeChild.focus();
133+
activeChild?.focus();
134134
}
135135

136136
needsRefocusRef.current = false;

src/AbstractNavItem.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ const AbstractNavItem: BsPrefixRefForwardingComponent<
8888
}
8989

9090
const handleOnclick = useEventCallback((e) => {
91-
if (onClick) onClick(e);
91+
onClick?.(e);
9292
if (navKey == null) return;
93-
if (onSelect) onSelect(navKey, e);
94-
if (parentOnSelect) parentOnSelect(navKey, e);
93+
onSelect?.(navKey, e);
94+
parentOnSelect?.(navKey, e);
9595
});
9696

9797
return (

src/Accordion.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ const Accordion: BsPrefixRefForwardingComponent<
5050
as: Component = 'div',
5151
activeKey,
5252
bsPrefix,
53-
children,
5453
className,
5554
onSelect,
5655
flush,
@@ -74,9 +73,7 @@ const Accordion: BsPrefixRefForwardingComponent<
7473
ref={ref}
7574
{...controlledProps}
7675
className={classNames(className, prefix, flush && `${prefix}-flush`)}
77-
>
78-
{children}
79-
</Component>
76+
/>
8077
</AccordionContext.Provider>
8178
);
8279
});

src/AccordionButton.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ const AccordionButton: BsPrefixRefForwardingComponent<
5454
as: Component = 'button',
5555
bsPrefix,
5656
className,
57-
children,
5857
onClick,
5958
...props
6059
},
@@ -80,9 +79,7 @@ const AccordionButton: BsPrefixRefForwardingComponent<
8079
bsPrefix,
8180
eventKey !== activeEventKey && 'collapsed',
8281
)}
83-
>
84-
{children}
85-
</Component>
82+
/>
8683
);
8784
},
8885
);

src/Carousel.tsx

Lines changed: 13 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,7 @@ const Carousel: BsPrefixRefForwardingComponent<
305305
}
306306

307307
nextDirectionRef.current = 'prev';
308-
309-
if (onSelect) {
310-
onSelect(nextActiveIndex, event);
311-
}
308+
onSelect?.(nextActiveIndex, event);
312309
},
313310
[isSliding, renderedActiveIndex, onSelect, wrap, numChildren],
314311
);
@@ -330,9 +327,7 @@ const Carousel: BsPrefixRefForwardingComponent<
330327

331328
nextDirectionRef.current = 'next';
332329

333-
if (onSelect) {
334-
onSelect(nextActiveIndex, event);
335-
}
330+
onSelect?.(nextActiveIndex, event);
336331
});
337332

338333
const elementRef = useRef<HTMLElement>();
@@ -358,12 +353,8 @@ const Carousel: BsPrefixRefForwardingComponent<
358353
return;
359354
}
360355

361-
if (onSlide) {
362-
onSlide(renderedActiveIndex, slideDirection);
363-
}
364-
if (onSlid) {
365-
onSlid(renderedActiveIndex, slideDirection);
366-
}
356+
onSlide?.(renderedActiveIndex, slideDirection);
357+
onSlid?.(renderedActiveIndex, slideDirection);
367358
}, [renderedActiveIndex]);
368359

369360
const orderClassName = `${prefix}-item-${direction}`;
@@ -373,19 +364,15 @@ const Carousel: BsPrefixRefForwardingComponent<
373364
(node) => {
374365
triggerBrowserReflow(node);
375366

376-
if (onSlide) {
377-
onSlide(renderedActiveIndex, slideDirection);
378-
}
367+
onSlide?.(renderedActiveIndex, slideDirection);
379368
},
380369
[onSlide, renderedActiveIndex, slideDirection],
381370
);
382371

383372
const handleEntered = useCallback(() => {
384373
setIsSliding(false);
385374

386-
if (onSlid) {
387-
onSlid(renderedActiveIndex, slideDirection);
388-
}
375+
onSlid?.(renderedActiveIndex, slideDirection);
389376
}, [onSlid, renderedActiveIndex, slideDirection]);
390377

391378
const handleKeyDown = useCallback(
@@ -404,9 +391,7 @@ const Carousel: BsPrefixRefForwardingComponent<
404391
}
405392
}
406393

407-
if (onKeyDown) {
408-
onKeyDown(event);
409-
}
394+
onKeyDown?.(event);
410395
},
411396
[keyboard, onKeyDown, prev, next],
412397
);
@@ -417,9 +402,7 @@ const Carousel: BsPrefixRefForwardingComponent<
417402
setPaused(true);
418403
}
419404

420-
if (onMouseOver) {
421-
onMouseOver(event);
422-
}
405+
onMouseOver?.(event);
423406
},
424407
[pause, onMouseOver],
425408
);
@@ -428,9 +411,7 @@ const Carousel: BsPrefixRefForwardingComponent<
428411
(event) => {
429412
setPaused(false);
430413

431-
if (onMouseOut) {
432-
onMouseOut(event);
433-
}
414+
onMouseOut?.(event);
434415
},
435416
[onMouseOut],
436417
);
@@ -448,9 +429,7 @@ const Carousel: BsPrefixRefForwardingComponent<
448429
setPaused(true);
449430
}
450431

451-
if (onTouchStart) {
452-
onTouchStart(event);
453-
}
432+
onTouchStart?.(event);
454433
},
455434
[pause, onTouchStart],
456435
);
@@ -464,9 +443,7 @@ const Carousel: BsPrefixRefForwardingComponent<
464443
event.touches[0].clientX - touchStartXRef.current;
465444
}
466445

467-
if (onTouchMove) {
468-
onTouchMove(event);
469-
}
446+
onTouchMove?.(event);
470447
},
471448
[onTouchMove],
472449
);
@@ -491,9 +468,7 @@ const Carousel: BsPrefixRefForwardingComponent<
491468
}, interval || undefined);
492469
}
493470

494-
if (onTouchEnd) {
495-
onTouchEnd(event);
496-
}
471+
onTouchEnd?.(event);
497472
},
498473
[touch, pause, prev, next, touchUnpauseTimeout, interval, onTouchEnd],
499474
);
@@ -523,9 +498,7 @@ const Carousel: BsPrefixRefForwardingComponent<
523498
() =>
524499
indicators &&
525500
Array.from({ length: numChildren }, (_, index) => (event) => {
526-
if (onSelect) {
527-
onSelect(index, event);
528-
}
501+
onSelect?.(index, event);
529502
}),
530503
[indicators, numChildren, onSelect],
531504
);

src/Dropdown.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,13 @@ const Dropdown: BsPrefixRefForwardingComponent<
144144
const handleToggle = useEventCallback(
145145
(nextShow, event, source = event.type) => {
146146
if (event.currentTarget === document) source = 'rootClose';
147-
if (onToggle) {
148-
onToggle(nextShow, event, { source });
149-
}
147+
onToggle?.(nextShow, event, { source });
150148
},
151149
);
152150

153151
const handleSelect = useEventCallback((key, event) => {
154-
if (onSelectCtx) onSelectCtx(key, event);
155-
if (onSelect) onSelect(key, event);
152+
onSelectCtx?.(key, event);
153+
onSelect?.(key, event);
156154
handleToggle(false, event, 'select');
157155
});
158156

src/DropdownItem.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ const DropdownItem: BsPrefixRefForwardingComponent<
7777
{
7878
bsPrefix,
7979
className,
80-
children,
8180
eventKey,
8281
disabled,
8382
href,
@@ -106,9 +105,9 @@ const DropdownItem: BsPrefixRefForwardingComponent<
106105
// SafeAnchor handles the disabled case, but we handle it here
107106
// for other components
108107
if (disabled) return;
109-
if (onClick) onClick(event);
110-
if (onSelectCtx) onSelectCtx(key, event);
111-
if (onSelect) onSelect(key, event);
108+
onClick?.(event);
109+
onSelectCtx?.(key, event);
110+
onSelect?.(key, event);
112111
});
113112

114113
return (
@@ -126,9 +125,7 @@ const DropdownItem: BsPrefixRefForwardingComponent<
126125
disabled && 'disabled',
127126
)}
128127
onClick={handleClick}
129-
>
130-
{children}
131-
</Component>
128+
/>
132129
);
133130
},
134131
);

src/DropdownMenu.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,11 @@ const DropdownMenu: BsPrefixRefForwardingComponent<
218218
(menuProps as any).alignRight = alignEnd;
219219
}
220220

221-
let style = (props as any).style;
221+
let style = props.style;
222222
if (placement) {
223223
// we don't need the default popper style,
224224
// menus are display: none when not shown.
225-
style = { ...(props as any).style, ...menuProps.style };
225+
style = { ...props.style, ...menuProps.style };
226226
props['x-placement'] = placement;
227227
}
228228

src/Feedback.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const Feedback: BsPrefixRefForwardingComponent<
3939
type = 'valid',
4040
tooltip = false,
4141
...props
42-
}: FeedbackProps,
42+
},
4343
ref,
4444
) => (
4545
<Component

src/FormContext.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ import React from 'react';
22

33
// TODO
44
interface FormContextType {
5-
controlId: any;
6-
custom?: boolean; // TODO delete
5+
controlId?: any;
76
}
87

9-
const FormContext = React.createContext<FormContextType>({
10-
controlId: undefined,
11-
});
8+
const FormContext = React.createContext<FormContextType>({});
129

1310
export default FormContext;

0 commit comments

Comments
 (0)