An open API service indexing awesome lists of open source software.

https://github.com/michal-wrzosek/xfor-text-field

XFor Text Field React Component
https://github.com/michal-wrzosek/xfor-text-field

Last synced: 9 months ago
JSON representation

XFor Text Field React Component

Awesome Lists containing this project

README

          

# xfor-text-field

**XForTextField React Component**

[![NPM](https://img.shields.io/npm/v/xfor-text-field.svg)](https://www.npmjs.com/package/xfor-text-field)

[Demo app with implemented component](https://michal-wrzosek.github.io/xfor-text-field/)

Demo screenshot

## Install

```bash
npm install --save xfor-text-field
```

Peer dependencies:

- react: ^16.8.6"
- react-dom: ^16.8.6"
- styled-components: ^4.3.2

## Usage

XFor TextField component is designed for projects using styled-components.

Styles of this component expect `box-sizing: border-box;` set globally for all nodes and base font size set to 10px:

```css
html {
font-size: 10px;
box-sizing: border-box;
}

*,
*::before,
*::after {
box-sizing: inherit;
}

body {
font-size: 100%;
}
```

You can style this component by specifing some props in your theme (props shown here are the default ones):

```js
const theme = {
// ...your other theme definitions

xfor: {
// namespace for XFor components
textField: {
// styles for TextField component
height: 40, // in pixels
fontColor: '#000000',
borderColor: '#d8d8d8',
borderErroredColor: 'red',
bgColor: '#FFFFFF',
bgDisabledColor: '#ececec',
bgErroredColor: '#ffd9d9',
fontDisabledColor: '#9a9a9a',
labelColor: '#9c9c9c',
},
},
};
```

XFor TextField component `dumb` as much as possible, though, you need to wrap it in a class to manage its state. Check the example app [here](example/src/TextFieldContainer.jsx).

List of props you can pass to the component:

```ts
type TextFieldProps = {
/*
* Value of the input
*/
value: string;

/*
* Is input focused
*/
isFocused: boolean;

/*
* Error messages to be shown (isTouch has to be set to true to display errors)
*/
errorMessage: string;

/*
* Did input was touched by user (useful for displaying error messages). You don't want to show errors to the field that was not yet touched by user.
*/
isTouched: boolean;

/*
* Field label
*/
label: string;

/*
* Name of the input
*/
name: string;

/*
* Type of the imput: [text, password, email]
*/
type: TextFieldType;

/*
* Is input disabled
*/
disabled: boolean;

/*
* Callback func that will be called on input change
*/
onChange: (event: React.ChangeEvent) => void;

/*
* Callback func that will be called on input focus
*/
onFocus: (event: React.FocusEvent) => void;

/*
* Callback func that will be called on input blur
*/
onBlur: (event: React.FocusEvent) => void;
};
```

## License

MIT © [Michał Wrzosek](https://github.com/michal-wrzosek)

michal@wrzosek.pl

https://michal.wrzosek.pl

---

This package was bootstrapped with [react-component-lib](https://github.com/michal-wrzosek/react-component-lib)