11import React , { useCallback , useState } from 'react' ;
2- import FileUploader , { type FileUploaderTypes } from 'devextreme-react/file-uploader' ;
3- import SelectBox , { type SelectBoxTypes } from 'devextreme-react/select-box' ;
4- import CheckBox , { type CheckBoxTypes } from 'devextreme-react/check-box' ;
2+ import FileUploader from 'devextreme-react/file-uploader' ;
3+ import type { FileUploaderTypes } from 'devextreme-react/file-uploader' ;
4+ import SelectBox from 'devextreme-react/select-box' ;
5+ import type { SelectBoxTypes } from 'devextreme-react/select-box' ;
6+ import CheckBox from 'devextreme-react/check-box' ;
7+ import type { CheckBoxTypes } from 'devextreme-react/check-box' ;
58
6- const uploadModes = [ 'instantly' , 'useButtons' ] ;
9+ const uploadModes : FileUploaderTypes . FileUploadMode [ ] = [ 'instantly' , 'useButtons' ] ;
710const fileTypeLabel = { 'aria-label' : 'File Type' } ;
811const uploadModeLabel = { 'aria-label' : 'Mode' } ;
9- const fileTypesSource = [
12+ const fileTypesSource : { name : string , value : string } [ ] = [
1013 { name : 'All types' , value : '*' } ,
1114 { name : 'Images' , value : 'image/*' } ,
1215 { name : 'Videos' , value : 'video/*' } ,
1316] ;
1417
1518export default function App ( ) {
16- const [ multiple , setMultiple ] = useState ( false ) ;
17- const [ uploadMode , setUploadMode ] = useState < FileUploaderTypes . Properties [ 'uploadMode' ] > ( 'instantly' ) ;
18- const [ accept , setAccept ] = useState ( '*' ) ;
19- const [ selectedFiles , setSelectedFiles ] = useState ( [ ] ) ;
19+ const [ multiple , setMultiple ] = useState < boolean > ( false ) ;
20+ const [ uploadMode , setUploadMode ] = useState < FileUploaderTypes . FileUploadMode > ( 'instantly' ) ;
21+ const [ accept , setAccept ] = useState < string > ( '*' ) ;
22+ const [ selectedFiles , setSelectedFiles ] = useState < File [ ] > ( [ ] ) ;
2023
21- const onSelectedFilesChanged = useCallback ( ( e : FileUploaderTypes . ValueChangedEvent ) => {
22- setSelectedFiles ( e . value ) ;
23- } , [ setSelectedFiles ] ) ;
24+ const onSelectedFilesChanged = useCallback ( ( { value } : FileUploaderTypes . ValueChangedEvent ) : void => {
25+ setSelectedFiles ( value ) ;
26+ } , [ ] ) ;
2427
25- const onAcceptChanged = useCallback ( ( e : SelectBoxTypes . ValueChangedEvent ) => {
26- setAccept ( e . value ) ;
27- } , [ setAccept ] ) ;
28+ const onAcceptChanged = useCallback ( ( { value } : SelectBoxTypes . ValueChangedEvent ) : void => {
29+ setAccept ( value ) ;
30+ } , [ ] ) ;
2831
29- const onUploadModeChanged = useCallback ( ( e : SelectBoxTypes . ValueChangedEvent ) => {
30- setUploadMode ( e . value ) ;
31- } , [ setUploadMode ] ) ;
32+ const onUploadModeChanged = useCallback ( ( { value } : SelectBoxTypes . ValueChangedEvent ) : void => {
33+ setUploadMode ( value ) ;
34+ } , [ ] ) ;
3235
33- const onMultipleChanged = useCallback ( ( e : CheckBoxTypes . ValueChangedEvent ) => {
34- setMultiple ( e . value ) ;
35- } , [ setMultiple ] ) ;
36+ const onMultipleChanged = useCallback ( ( { value } : CheckBoxTypes . ValueChangedEvent ) : void => {
37+ setMultiple ( value ) ;
38+ } , [ ] ) ;
3639
3740 return (
3841 < div >
@@ -47,12 +50,12 @@ export default function App() {
4750 < div className = "content" style = { { display : selectedFiles . length > 0 ? 'block' : 'none' } } >
4851 < div >
4952 < h4 > Selected Files</ h4 >
50- { selectedFiles . map ( ( file , i ) => (
51- < div className = "selected-item" key = { i } >
53+ { selectedFiles . map ( ( file : File , index : number ) => (
54+ < div className = "selected-item" key = { index } >
5255 < span > { `Name: ${ file . name } ` } < br /> </ span >
5356 < span > { `Size ${ file . size } ` } < br /> </ span >
5457 < span > { `Type ${ file . type } ` } < br /> </ span >
55- < span > { `Last Modified Date: ${ file . lastModifiedDate } ` } </ span >
58+ < span > { `Last Modified Date: ${ new Date ( file . lastModified ) . toDateString ( ) } ` } </ span >
5659 </ div >
5760 ) ) }
5861 </ div >
0 commit comments