@transferwise/components 0.0.0-experimental-322d55c → 0.0.0-experimental-cb4aafe
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +46 -43
- package/build/index.js.map +1 -1
- package/build/index.mjs +46 -43
- package/build/index.mjs.map +1 -1
- package/build/types/segmentedControl/SegmentedControl.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/segmentedControl/SegmentedControl.spec.tsx +27 -1
- package/src/segmentedControl/SegmentedControl.tsx +14 -13
package/build/index.js
CHANGED
|
@@ -10656,7 +10656,9 @@ const SegmentedControl = ({
|
|
|
10656
10656
|
}, [segmentsWithRefs, selectedValue]);
|
|
10657
10657
|
React.useEffect(() => {
|
|
10658
10658
|
onChange(selectedValue);
|
|
10659
|
-
|
|
10659
|
+
// only call onChange once when the component mounts, to maintain previous behavior
|
|
10660
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
10661
|
+
}, []);
|
|
10660
10662
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
10661
10663
|
ref: segmentsRef,
|
|
10662
10664
|
"data-testid": "segmented-control",
|
|
@@ -10668,50 +10670,51 @@ const SegmentedControl = ({
|
|
|
10668
10670
|
'segmented-control__segments--no-animate': !animate
|
|
10669
10671
|
}),
|
|
10670
10672
|
role: mode !== 'input' ? 'tablist' : undefined,
|
|
10671
|
-
children: segmentsWithRefs.map(segment =>
|
|
10672
|
-
|
|
10673
|
-
htmlFor: segment.id,
|
|
10674
|
-
className: classNames__default.default('segmented-control__segment', {
|
|
10675
|
-
'segmented-control__selected-segment': selectedValue === segment.value
|
|
10676
|
-
}),
|
|
10677
|
-
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
10678
|
-
type: "radio",
|
|
10679
|
-
className: "segmented-control__radio-input",
|
|
10680
|
-
id: segment.id,
|
|
10681
|
-
name: name,
|
|
10682
|
-
value: segment.value,
|
|
10683
|
-
checked: selectedValue === segment.value,
|
|
10684
|
-
onChange: () => {
|
|
10685
|
-
setAnimate(true);
|
|
10686
|
-
setSelectedValue(segment.value);
|
|
10687
|
-
}
|
|
10688
|
-
}), /*#__PURE__*/jsxRuntime.jsx(Body, {
|
|
10689
|
-
className: "segmented-control__text",
|
|
10690
|
-
as: "span",
|
|
10691
|
-
type: selectedValue === segment.value ? exports.Typography.BODY_DEFAULT_BOLD : exports.Typography.BODY_DEFAULT,
|
|
10692
|
-
children: segment.label
|
|
10693
|
-
})]
|
|
10694
|
-
}, segment.id) : /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
10695
|
-
ref: segment.ref,
|
|
10696
|
-
type: "button",
|
|
10697
|
-
role: "tab",
|
|
10698
|
-
id: segment.id,
|
|
10699
|
-
"aria-controls": segment.controls,
|
|
10700
|
-
"aria-selected": selectedValue === segment.value,
|
|
10701
|
-
className: classNames__default.default('segmented-control__segment', 'segmented-control__button', {
|
|
10702
|
-
'segmented-control__selected-segment': selectedValue === segment.value
|
|
10703
|
-
}),
|
|
10704
|
-
onClick: () => {
|
|
10673
|
+
children: segmentsWithRefs.map(segment => {
|
|
10674
|
+
const onSelect = () => {
|
|
10705
10675
|
setAnimate(true);
|
|
10706
10676
|
setSelectedValue(segment.value);
|
|
10707
|
-
|
|
10708
|
-
|
|
10709
|
-
|
|
10710
|
-
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
10714
|
-
|
|
10677
|
+
onChange(segment.value);
|
|
10678
|
+
};
|
|
10679
|
+
return mode === 'input' ? /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
10680
|
+
ref: segment.ref,
|
|
10681
|
+
htmlFor: segment.id,
|
|
10682
|
+
className: classNames__default.default('segmented-control__segment', {
|
|
10683
|
+
'segmented-control__selected-segment': selectedValue === segment.value
|
|
10684
|
+
}),
|
|
10685
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
10686
|
+
type: "radio",
|
|
10687
|
+
className: "segmented-control__radio-input",
|
|
10688
|
+
id: segment.id,
|
|
10689
|
+
name: name,
|
|
10690
|
+
value: segment.value,
|
|
10691
|
+
checked: selectedValue === segment.value,
|
|
10692
|
+
onChange: onSelect
|
|
10693
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Body, {
|
|
10694
|
+
className: "segmented-control__text",
|
|
10695
|
+
as: "span",
|
|
10696
|
+
type: selectedValue === segment.value ? exports.Typography.BODY_DEFAULT_BOLD : exports.Typography.BODY_DEFAULT,
|
|
10697
|
+
children: segment.label
|
|
10698
|
+
})]
|
|
10699
|
+
}, segment.id) : /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
10700
|
+
ref: segment.ref,
|
|
10701
|
+
type: "button",
|
|
10702
|
+
role: "tab",
|
|
10703
|
+
id: segment.id,
|
|
10704
|
+
"aria-controls": segment.controls,
|
|
10705
|
+
"aria-selected": selectedValue === segment.value,
|
|
10706
|
+
className: classNames__default.default('segmented-control__segment', 'segmented-control__button', {
|
|
10707
|
+
'segmented-control__selected-segment': selectedValue === segment.value
|
|
10708
|
+
}),
|
|
10709
|
+
onClick: onSelect,
|
|
10710
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Body, {
|
|
10711
|
+
as: "span",
|
|
10712
|
+
className: "segmented-control__text",
|
|
10713
|
+
type: selectedValue === segment.value ? exports.Typography.BODY_DEFAULT_BOLD : exports.Typography.BODY_DEFAULT,
|
|
10714
|
+
children: segment.label
|
|
10715
|
+
})
|
|
10716
|
+
}, segment.id);
|
|
10717
|
+
})
|
|
10715
10718
|
})
|
|
10716
10719
|
});
|
|
10717
10720
|
};
|