Skip to content

useFileDialog ​

Hook to handle file input

browser
test coverage
Last changed: last month

Installation ​

Library
CLI
Manual
typescript
import { useFileDialog } from '@siberiacancode/reactuse';

Usage ​

typescript
const { values, open, reset } = useFileDialog((value) => console.log(value));
// or
const { values, open, reset } = useFileDialog({ accept: 'image/*' });

Demo ​

Api ​

Parameters

NameTypeDefaultNote
callback(value: FileList | null) => void-The callback to execute when a file is selected
options.multiple?booleantrueWhether multiple files can be selected
options.accept?string'*'The accepted file types
options.reset?booleanfalseWhether the input should be reset when the callback is called
options.capture?string-The capture value

Returns

UseFileDialogReturn

Parameters

NameTypeDefaultNote
options.multiple?booleantrueWhether multiple files can be selected
options.accept?string'*'The accepted file types
options.reset?booleanfalseWhether the input should be reset when the callback is called
options.capture?string-The capture value

Returns

UseFileDialogReturn

Type declaration ​

typescript
import type { ComponentProps } from 'react';

export interface UseFileDialogOptions extends Pick<ComponentProps<'input'>, 'accept' | 'multiple'> {
  /** The capture value */
  capture?: string;
  /** The reset value */
  reset?: boolean;
}

export interface UseFileDialogReturn {
  /** The selected files */
  value: FileList | null;
  /** The open function */
  open: (openParams?: UseFileDialogOptions) => void;
  /** The reset function */
  reset: () => void;
}

export interface UseFileDialog {
  (
    callback?: (value: FileList | null) => void,
    options?: UseFileDialogOptions
  ): UseFileDialogReturn;

  (options?: UseFileDialogOptions, callback?: never): UseFileDialogReturn;
}

Source ​

Source • Demo

Contributors ​

D
debabin
debabin

Released under the MIT License.