Skip to content

Commit cfcd697

Browse files
fix: save render through optimized useSlot() (#7270)
* allow for initializing slot with a false state * save slot render in checkboxgroup * save slot render in radiogroup * save slot render in meter * save render in select * save render in timefield * save render in datefield * save render in hexcolorfield * save render in colorchannelfield * save render in progressbar * saver render in combobox * save render in searchfield * save render in numberfield * save render in taggroup * save render in textfield * save render in colorslider * save render in slider * save render in datepicker * Update packages/react-aria-components/src/utils.tsx --------- Co-authored-by: Robert Snow <[email protected]>
1 parent 4b641a7 commit cfcd697

16 files changed

+61
-22
lines changed

packages/react-aria-components/src/Checkbox.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@ export const CheckboxGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(functi
123123
...props,
124124
validationBehavior
125125
});
126-
let [labelRef, label] = useSlot();
126+
let [labelRef, label] = useSlot(
127+
!props['aria-label'] && !props['aria-labelledby']
128+
);
127129
let {groupProps, labelProps, descriptionProps, errorMessageProps, ...validation} = useCheckboxGroup({
128130
...props,
129131
label,

packages/react-aria-components/src/ColorField.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ function ColorChannelField(props: ColorChannelFieldProps) {
8686
});
8787

8888
let inputRef = useRef<HTMLInputElement>(null);
89-
let [labelRef, label] = useSlot();
89+
let [labelRef, label] = useSlot(
90+
!props['aria-label'] && !props['aria-labelledby']
91+
);
9092
let {
9193
labelProps,
9294
inputProps,
@@ -129,7 +131,9 @@ function HexColorField(props: HexColorFieldProps) {
129131
});
130132

131133
let inputRef = useRef<HTMLInputElement>(null);
132-
let [labelRef, label] = useSlot();
134+
let [labelRef, label] = useSlot(
135+
!props['aria-label'] && !props['aria-labelledby']
136+
);
133137
let {
134138
labelProps,
135139
inputProps,

packages/react-aria-components/src/ColorSlider.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ export const ColorSlider = forwardRef(function ColorSlider(props: ColorSliderPro
4141
let trackRef = React.useRef(null);
4242
let inputRef = React.useRef(null);
4343

44-
let [labelRef, label] = useSlot();
44+
let [labelRef, label] = useSlot(
45+
!props['aria-label'] && !props['aria-labelledby']
46+
);
4547
let {
4648
trackProps,
4749
thumbProps,

packages/react-aria-components/src/ComboBox.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ function ComboBoxInner<T extends object>({props, collection, comboBoxRef: ref}:
126126
let inputRef = useRef<HTMLInputElement>(null);
127127
let listBoxRef = useRef<HTMLDivElement>(null);
128128
let popoverRef = useRef<HTMLDivElement>(null);
129-
let [labelRef, label] = useSlot();
129+
let [labelRef, label] = useSlot(
130+
!props['aria-label'] && !props['aria-labelledby']
131+
);
130132
let {
131133
buttonProps,
132134
inputProps,

packages/react-aria-components/src/DateField.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ export const DateField = /*#__PURE__*/ (forwardRef as forwardRefType)(function D
6464
});
6565

6666
let fieldRef = useRef<HTMLDivElement>(null);
67-
let [labelRef, label] = useSlot();
67+
let [labelRef, label] = useSlot(
68+
!props['aria-label'] && !props['aria-labelledby']
69+
);
6870
let inputRef = useRef<HTMLInputElement>(null);
6971
let {labelProps, fieldProps, inputProps, descriptionProps, errorMessageProps, ...validation} = useDateField({
7072
...removeDataAttributes(props),
@@ -127,7 +129,9 @@ export const TimeField = /*#__PURE__*/ (forwardRef as forwardRefType)(function T
127129
});
128130

129131
let fieldRef = useRef<HTMLDivElement>(null);
130-
let [labelRef, label] = useSlot();
132+
let [labelRef, label] = useSlot(
133+
!props['aria-label'] && !props['aria-labelledby']
134+
);
131135
let inputRef = useRef<HTMLInputElement>(null);
132136
let {labelProps, fieldProps, inputProps, descriptionProps, errorMessageProps, ...validation} = useTimeField({
133137
...removeDataAttributes(props),

packages/react-aria-components/src/DatePicker.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ export const DatePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(function
8585
});
8686

8787
let groupRef = useRef<HTMLDivElement>(null);
88-
let [labelRef, label] = useSlot();
88+
let [labelRef, label] = useSlot(
89+
!props['aria-label'] && !props['aria-labelledby']
90+
);
8991
let {
9092
groupProps,
9193
labelProps,
@@ -186,7 +188,9 @@ export const DateRangePicker = /*#__PURE__*/ (forwardRef as forwardRefType)(func
186188
});
187189

188190
let groupRef = useRef<HTMLDivElement>(null);
189-
let [labelRef, label] = useSlot();
191+
let [labelRef, label] = useSlot(
192+
!props['aria-label'] && !props['aria-labelledby']
193+
);
190194
let {
191195
groupProps,
192196
labelProps,

packages/react-aria-components/src/Meter.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ export const Meter = /*#__PURE__*/ (forwardRef as forwardRefType)(function Meter
4545
} = props;
4646
value = clamp(value, minValue, maxValue);
4747

48-
let [labelRef, label] = useSlot();
48+
let [labelRef, label] = useSlot(
49+
!props['aria-label'] && !props['aria-labelledby']
50+
);
4951
let {
5052
meterProps,
5153
labelProps

packages/react-aria-components/src/NumberField.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ export const NumberField = /*#__PURE__*/ (forwardRef as forwardRefType)(function
6161
});
6262

6363
let inputRef = useRef<HTMLInputElement>(null);
64-
let [labelRef, label] = useSlot();
64+
let [labelRef, label] = useSlot(
65+
!props['aria-label'] && !props['aria-labelledby']
66+
);
6567
let {
6668
labelProps,
6769
groupProps,

packages/react-aria-components/src/ProgressBar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ export const ProgressBar = forwardRef(function ProgressBar(props: ProgressBarPro
5151
} = props;
5252
value = clamp(value, minValue, maxValue);
5353

54-
let [labelRef, label] = useSlot();
54+
let [labelRef, label] = useSlot(
55+
!props['aria-label'] && !props['aria-labelledby']
56+
);
5557
let {
5658
progressBarProps,
5759
labelProps

packages/react-aria-components/src/RadioGroup.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ export const RadioGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(function
125125
validationBehavior
126126
});
127127

128-
let [labelRef, label] = useSlot();
128+
let [labelRef, label] = useSlot(
129+
!props['aria-label'] && !props['aria-labelledby']
130+
);
129131
let {radioGroupProps, labelProps, descriptionProps, errorMessageProps, ...validation} = useRadioGroup({
130132
...props,
131133
label,

0 commit comments

Comments
 (0)