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.
Files changed (48) hide show
  1. package/dist/components/AutoFit.cjs +9 -9
  2. package/dist/components/AutoFit.js +9 -9
  3. package/dist/components/AutoScroll.cjs +4 -4
  4. package/dist/components/AutoScroll.js +4 -4
  5. package/dist/components/AutoSizeTextarea.cjs +23 -81
  6. package/dist/components/AutoSizeTextarea.js +23 -81
  7. package/dist/components/CircleText.cjs +24 -120
  8. package/dist/components/CircleText.js +24 -120
  9. package/dist/components/CopyButton.cjs +2 -2
  10. package/dist/components/CopyButton.js +2 -2
  11. package/dist/components/DraggableGrid.cjs +98 -149
  12. package/dist/components/DraggableGrid.js +98 -149
  13. package/dist/components/Echart.cjs +24 -94
  14. package/dist/components/Echart.js +24 -94
  15. package/dist/components/Flow.cjs +8 -8
  16. package/dist/components/Flow.js +8 -8
  17. package/dist/components/FormLabel.cjs +27 -92
  18. package/dist/components/FormLabel.js +27 -92
  19. package/dist/components/HlsPlayer.cjs +24 -65
  20. package/dist/components/HlsPlayer.js +24 -65
  21. package/dist/components/IconFileType.cjs +4 -14
  22. package/dist/components/IconFileType.js +4 -14
  23. package/dist/components/InfiniteScroll.cjs +4 -4
  24. package/dist/components/InfiniteScroll.js +4 -4
  25. package/dist/components/InputFile.cjs +11 -2
  26. package/dist/components/InputFile.d.ts +8 -0
  27. package/dist/components/InputFile.js +11 -2
  28. package/dist/components/InputFileButton.cjs +18 -9
  29. package/dist/components/InputFileButton.js +18 -9
  30. package/dist/components/ReadSheet.cjs +7 -32
  31. package/dist/components/ReadSheet.js +7 -32
  32. package/dist/components/Ring.cjs +10 -48
  33. package/dist/components/Ring.js +10 -48
  34. package/dist/components/ScrollMask.cjs +11 -97
  35. package/dist/components/ScrollMask.js +11 -97
  36. package/dist/components/SectionRing.cjs +15 -60
  37. package/dist/components/SectionRing.js +15 -60
  38. package/dist/components/TransitionBox.cjs +28 -118
  39. package/dist/components/TransitionBox.js +28 -118
  40. package/dist/components/TransitionNum.cjs +8 -8
  41. package/dist/components/TransitionNum.js +8 -8
  42. package/dist/components/Trapezium.cjs +9 -68
  43. package/dist/components/Trapezium.js +9 -68
  44. package/dist/components/Unify.cjs +19 -79
  45. package/dist/components/Unify.js +19 -79
  46. package/package.json +3 -3
  47. package/src/components/InputFile.tsx +23 -2
  48. 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 { multiple = false, type = "file", onChange: _onChange, disabled: _disabled, clearAfterChange, onValueChange, onFileChange, ...rest } = props
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
- onValueChange?.((await getFileData(file, type)) as ValueType<Multiple, Type>)
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 { FileType, InputFile, InputFileBaseProps, InputFileDataType, InputFileDataTypeMap, InputFileExtraProps, ValueType, getFileData } from "./InputFile"
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
- onValueChange?.((await getFileData(file, type)) as ValueType<Multiple, Type>)
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)