1.0.0 • Published 7 years ago

@team-griffin/react-file-input v1.0.0

Weekly downloads
57
License
MIT
Repository
github
Last release
7 years ago

react-file-input

npm i --save @team-griffin/react-file-input

yarn add @team-griffin/react-file-input

This package allows you to design fancy file inputs, whilst not having an opinion on how you want to handle your forms or design.

Usage

import FileInput from '@team-griffin/react-file-input';

return (
  <FileInput
    id="a-unique-id-for-this-this-field"
    value={theListOfFilesNormallyStoredInReduxForm}
    button={(
      <button type="button">
        The button displayed
      </button>
    )}
    onChange={(e) => howToHandleTheChange}
  />
);

Note: It is recommended that in your application you wrap this component so that you are not having to constantly recode it. I would suggest also calling your component FileInput and then importing this component as ReactFileInput.

Customization

By default the file input will automatically render the text and layout for you. But you are welcome to configure this as much as you desire.

On the <FileInput/> component there are 2 props layout and text. You can use these to augment how this component renders.

const MyText = ({
  multiple,
  value,
}) => {
  return (
    <span>
      How ever you'd like to diplay your values.
    </span>
  );
};

const MyLayout = ({
  input,
  button,
  text,
  multiple,
  value,
}) => {
  return (
    <div>
      Your structure.
    </div>
  );
};

return (
  <FileInput
    button={<button>My Button</button>}
    layout={(<MyLayout/>)}
    text={(<MyText/>)}
  />
);

API

FileInput

All other props are passed through to the input.

PropDescriptionTypeDefault
id*Field IdString
valueArray of valuesArray
multipleTo support multiple valuesBoolfalse
buttonThe button to renderElement
textThe text to renderElementText
layoutThe layout to renderElementLayout
onChangeThe callback for when the input changesFunc

Layout

The layout component is an internal component. But these are the props we pass to it or your custom one.

PropDescriptionTypeDefault
valueArray of valuesArray
multipleTo support multiple valuesBool
inputThe input renderElement
buttonThe button to renderElement
textThe text to renderElement

Text

The text component is an internal component. But these are the props we pass to it or your custom one.

PropDescriptionTypeDefault
valueArray of valuesArray
multipleTo support multiple valuesBool