From 9a80bb5a6aee64de3a8d9f658a741ea528100b1f Mon Sep 17 00:00:00 2001 From: madocto Date: Sat, 20 Jan 2024 22:46:06 +0800 Subject: [PATCH 1/3] feat(type): value support generics --- src/index.tsx | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index efb923c..9069645 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -10,25 +10,31 @@ export type SegmentedValue = string | number; export type SegmentedRawOption = SegmentedValue; -export interface SegmentedLabeledOption { +export interface SegmentedLabeledOption { className?: string; disabled?: boolean; label: React.ReactNode; - value: SegmentedRawOption; + value: ValueType; /** * html `title` property for label */ title?: string; } -type SegmentedOptions = (SegmentedRawOption | SegmentedLabeledOption)[]; - -export interface SegmentedProps - extends Omit, 'onChange'> { - options: SegmentedOptions; - defaultValue?: SegmentedValue; - value?: SegmentedValue; - onChange?: (value: SegmentedValue) => void; +type SegmentedOptions = ( + | T + | SegmentedLabeledOption +)[]; + +export interface SegmentedProps + extends Omit< + React.HTMLProps, + 'defaultValue' | 'value' | 'onChange' + > { + options: SegmentedOptions; + defaultValue?: ValueType; + value?: ValueType; + onChange?: (value: ValueType) => void; disabled?: boolean; prefixCls?: string; direction?: 'ltr' | 'rtl'; @@ -219,6 +225,14 @@ const Segmented = React.forwardRef( }, ); -Segmented.displayName = 'Segmented'; +if (process.env.NODE_ENV !== 'production') { + Segmented.displayName = 'Segmented'; +} + +const TypedSegmented = Segmented as ( + props: SegmentedProps & { + ref?: React.ForwardedRef; + }, +) => ReturnType; -export default Segmented; +export default TypedSegmented; From 92f03e155bc154e387502422ca9d67670fd28162 Mon Sep 17 00:00:00 2001 From: madocto Date: Sat, 20 Jan 2024 23:40:11 +0800 Subject: [PATCH 2/3] chore: pins types-ramda@0.29.6 --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index b0a639a..e840f97 100644 --- a/package.json +++ b/package.json @@ -89,5 +89,8 @@ }, "tnpm": { "mode": "npm" + }, + "resolutions": { + "types-ramda": "0.29.6" } } From efa7fc69438019322c72533560e79463eafb92b4 Mon Sep 17 00:00:00 2001 From: madocto Date: Mon, 22 Jan 2024 10:51:52 +0800 Subject: [PATCH 3/3] chore: bump typescript from 4.9.4 to 5.3.0 --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index e840f97..c2424f9 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "react": "^18.0.0", "react-dom": "^18.0.0", "ts-node": "^10.9.1", - "typescript": "^4.9.4" + "typescript": "^5.3.0" }, "peerDependencies": { "react": ">=16.0.0", @@ -89,8 +89,5 @@ }, "tnpm": { "mode": "npm" - }, - "resolutions": { - "types-ramda": "0.29.6" } }