deepsea-components 5.16.15 → 5.17.0
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/dist/components/AutoFit.cjs +9 -9
- package/dist/components/AutoFit.js +9 -9
- package/dist/components/AutoScroll.cjs +4 -4
- package/dist/components/AutoScroll.js +4 -4
- package/dist/components/AutoSizeTextarea.cjs +23 -81
- package/dist/components/AutoSizeTextarea.js +23 -81
- package/dist/components/CircleText.cjs +24 -120
- package/dist/components/CircleText.js +24 -120
- package/dist/components/CopyButton.cjs +2 -2
- package/dist/components/CopyButton.js +2 -2
- package/dist/components/DraggableGrid.cjs +98 -149
- package/dist/components/DraggableGrid.js +98 -149
- package/dist/components/Echart.cjs +24 -94
- package/dist/components/Echart.js +24 -94
- package/dist/components/Flow.cjs +8 -8
- package/dist/components/Flow.js +8 -8
- package/dist/components/FormLabel.cjs +27 -92
- package/dist/components/FormLabel.js +27 -92
- package/dist/components/HlsPlayer.cjs +24 -65
- package/dist/components/HlsPlayer.js +24 -65
- package/dist/components/IconFileType.cjs +4 -14
- package/dist/components/IconFileType.js +4 -14
- package/dist/components/InfiniteScroll.cjs +4 -4
- package/dist/components/InfiniteScroll.js +4 -4
- package/dist/components/InputFile.cjs +11 -2
- package/dist/components/InputFile.d.ts +8 -0
- package/dist/components/InputFile.js +11 -2
- package/dist/components/InputFileButton.cjs +18 -9
- package/dist/components/InputFileButton.js +18 -9
- package/dist/components/ReadSheet.cjs +7 -32
- package/dist/components/ReadSheet.js +7 -32
- package/dist/components/Ring.cjs +10 -48
- package/dist/components/Ring.js +10 -48
- package/dist/components/ScrollMask.cjs +11 -97
- package/dist/components/ScrollMask.js +11 -97
- package/dist/components/SectionRing.cjs +15 -60
- package/dist/components/SectionRing.js +15 -60
- package/dist/components/TransitionBox.cjs +28 -118
- package/dist/components/TransitionBox.js +28 -118
- package/dist/components/TransitionNum.cjs +8 -8
- package/dist/components/TransitionNum.js +8 -8
- package/dist/components/Trapezium.cjs +9 -68
- package/dist/components/Trapezium.js +9 -68
- package/dist/components/Unify.cjs +19 -79
- package/dist/components/Unify.js +19 -79
- package/package.json +3 -3
- package/src/components/InputFile.tsx +23 -2
- package/src/components/InputFileButton.tsx +16 -2
|
@@ -44,11 +44,19 @@ export type ValueType<Multiple extends boolean, Type extends InputFileDataType>
|
|
|
44
44
|
? InputFileDataTypeMap[Type][]
|
|
45
45
|
: InputFileDataTypeMap[Type]
|
|
46
46
|
|
|
47
|
+
export type DataType<Multiple extends boolean, Type extends InputFileDataType> = Multiple extends true
|
|
48
|
+
? { file: File; value: InputFileDataTypeMap[Type] }[]
|
|
49
|
+
: {
|
|
50
|
+
file: File
|
|
51
|
+
value: InputFileDataTypeMap[Type]
|
|
52
|
+
}
|
|
53
|
+
|
|
47
54
|
export interface InputFileExtraProps<Multiple extends boolean = false, Type extends InputFileDataType = "file"> {
|
|
48
55
|
multiple?: Multiple
|
|
49
56
|
type?: Type
|
|
50
57
|
onValueChange?: (data: ValueType<Multiple, Type>) => void
|
|
51
58
|
onFileChange?: (data: FileType<Multiple>) => void
|
|
59
|
+
onDataChange?: (data: DataType<Multiple, Type>) => void
|
|
52
60
|
/** 是否在捕获文件后清除 input 上的文件,默认为 false,主要区别在于如果不清除,连续两次选择同样的文件不会触发 onChange 事件,如果用于 form 表单,请设置为 flase */
|
|
53
61
|
clearAfterChange?: boolean
|
|
54
62
|
}
|
|
@@ -59,7 +67,17 @@ export interface InputFileProps<Multiple extends boolean = false, Type extends I
|
|
|
59
67
|
|
|
60
68
|
/** 专用于读取文件的组件 */
|
|
61
69
|
export function InputFile<Multiple extends boolean = false, Type extends InputFileDataType = "file">(props: InputFileProps<Multiple, Type>): ReactNode {
|
|
62
|
-
const {
|
|
70
|
+
const {
|
|
71
|
+
multiple = false,
|
|
72
|
+
type = "file",
|
|
73
|
+
onChange: _onChange,
|
|
74
|
+
disabled: _disabled,
|
|
75
|
+
clearAfterChange,
|
|
76
|
+
onValueChange,
|
|
77
|
+
onFileChange,
|
|
78
|
+
onDataChange,
|
|
79
|
+
...rest
|
|
80
|
+
} = props
|
|
63
81
|
const [disabled, setDisabled] = useState(false)
|
|
64
82
|
|
|
65
83
|
async function onChange(e: ChangeEvent<HTMLInputElement>) {
|
|
@@ -78,10 +96,13 @@ export function InputFile<Multiple extends boolean = false, Type extends InputFi
|
|
|
78
96
|
}
|
|
79
97
|
onFileChange?.(files2 as FileType<Multiple>)
|
|
80
98
|
onValueChange?.(values as ValueType<Multiple, Type>)
|
|
99
|
+
onDataChange?.(files2.map((file, index) => ({ file, value: values[index] })) as DataType<Multiple, Type>)
|
|
81
100
|
} else {
|
|
82
101
|
const file = files[0]
|
|
83
102
|
onFileChange?.(file as FileType<Multiple>)
|
|
84
|
-
|
|
103
|
+
const value = (await getFileData(file, type)) as InputFileDataTypeMap[Type]
|
|
104
|
+
onValueChange?.(value as ValueType<Multiple, Type>)
|
|
105
|
+
onDataChange?.({ file, value } as DataType<Multiple, Type>)
|
|
85
106
|
}
|
|
86
107
|
} finally {
|
|
87
108
|
if (clearAfterChange) input.value = ""
|
|
@@ -14,7 +14,17 @@ import {
|
|
|
14
14
|
useState,
|
|
15
15
|
} from "react"
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
DataType,
|
|
19
|
+
FileType,
|
|
20
|
+
InputFile,
|
|
21
|
+
InputFileBaseProps,
|
|
22
|
+
InputFileDataType,
|
|
23
|
+
InputFileDataTypeMap,
|
|
24
|
+
InputFileExtraProps,
|
|
25
|
+
ValueType,
|
|
26
|
+
getFileData,
|
|
27
|
+
} from "./InputFile"
|
|
18
28
|
|
|
19
29
|
export type InputFileButtonProps<
|
|
20
30
|
Multiple extends boolean = false,
|
|
@@ -48,6 +58,7 @@ export function InputFileButton<
|
|
|
48
58
|
multiple,
|
|
49
59
|
onValueChange,
|
|
50
60
|
onFileChange,
|
|
61
|
+
onDataChange,
|
|
51
62
|
clearAfterChange,
|
|
52
63
|
...rest
|
|
53
64
|
} = props
|
|
@@ -80,10 +91,13 @@ export function InputFileButton<
|
|
|
80
91
|
}
|
|
81
92
|
onFileChange?.(files2 as FileType<Multiple>)
|
|
82
93
|
onValueChange?.(values as ValueType<Multiple, Type>)
|
|
94
|
+
onDataChange?.(files2.map((file, index) => ({ file, value: values[index] })) as DataType<Multiple, Type>)
|
|
83
95
|
} else {
|
|
84
96
|
const file = files[0]
|
|
85
97
|
onFileChange?.(file as FileType<Multiple>)
|
|
86
|
-
|
|
98
|
+
const value = (await getFileData(file, type)) as InputFileDataTypeMap[Type]
|
|
99
|
+
onValueChange?.(value as ValueType<Multiple, Type>)
|
|
100
|
+
onDataChange?.({ file, value } as DataType<Multiple, Type>)
|
|
87
101
|
}
|
|
88
102
|
} finally {
|
|
89
103
|
setDisabled(false)
|