From 004f80aed187cf31b851eb4ff15d18fa42a09f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E6=9E=AB?= <645381995@qq.com> Date: Tue, 2 Jan 2024 11:38:10 +0800 Subject: [PATCH] feat: string number boolean --- src/MotionThumb.tsx | 3 ++- src/index.tsx | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/MotionThumb.tsx b/src/MotionThumb.tsx index faea6f9..32584f5 100644 --- a/src/MotionThumb.tsx +++ b/src/MotionThumb.tsx @@ -3,6 +3,7 @@ import CSSMotion from 'rc-motion'; import useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect'; import { composeRef } from 'rc-util/lib/ref'; import * as React from 'react'; +import type { SegmentedValue } from '.'; type ThumbReact = { left: number; @@ -10,7 +11,7 @@ type ThumbReact = { width: number; } | null; -export interface MotionThumbInterface { +export interface MotionThumbInterface { containerRef: React.RefObject; value: Value; getValueIndex: (value: Value) => number; diff --git a/src/index.tsx b/src/index.tsx index 8eb00fc..76e3e75 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -6,7 +6,9 @@ import * as React from 'react'; import MotionThumb from './MotionThumb'; -export interface SegmentedLabeledOption { +export type SegmentedValue = string | number | boolean; + +export interface SegmentedLabeledOption { className?: string; disabled?: boolean; label: React.ReactNode; @@ -17,9 +19,12 @@ export interface SegmentedLabeledOption { title?: string; } -type SegmentedOptions = (Value | SegmentedLabeledOption)[]; +type SegmentedOptions = ( + | Value + | SegmentedLabeledOption +)[]; -export interface SegmentedProps +export interface SegmentedProps extends Omit< React.HTMLProps, 'value' | 'defaultValue' | 'onChange' @@ -192,7 +197,7 @@ const InternalSegmented: React.ForwardRefRenderFunction< {segmentedOptions.map((segmentedOption) => ( ( InternalSegmented, -) as (( +) as (( props: SegmentedProps & { ref?: React.Ref }, ) => React.ReactElement) & { displayName?: string };