0.0.12 • Published 9 years ago

react-mask-mixin v0.0.12

Weekly downloads
4
License
MIT
Repository
-
Last release
9 years ago

react-mask-mixin

gif

Input mask for text input.

Example

Install with npm

npm install react-mask-mixin

Usage

The goal I wanted to reach in the very beginning was to make basic <input/> element understand custom property mask which would define strict format for user input (for example date or phone number). Somewhat, I thought that LinkedStateMixin, from React.addons, made input elements understand valueLink property (that looks like custom at the first glance) and I naively believed that it was possible to write similar solution. After several minutes of digging into React source code it turned out that valueLink was a part of <input/> and <textarea/> implementation and LinkedStateMixin just utilized it. Now I wander if there is a case when valueLink can be used without LinkedStateMixin.

Solution:

  1. Wrap <input/> with custom component
  2. Add react-mask-mixin into mixins array
  3. Spread this.mask.props over the <input/>

Mixin polutes your component scope with mask object where It keeps eveithing needed. mask.props consists of several event handlers and value prop that you should necessarily spread over the <input/> element in order to enable masking.

As a code it would look like this:

var React = require('react')
var ReactDOM = require('react-dom')
var ReactMaskMixin = require('react-mask-mixin')

var Input = React.createClass({
  mixins: [ReactMaskMixin],
  render() {
    return <input {...this.props} {...this.mask.props}/>
  }
})

var Component = React.createElement({
  render(): {
    return <Input mask="99/99/99"/>
  }
})

ReactDOM.render(<Component/>, document.body)

Masking definitions

  • 9 - numeric
  • A - alphabetical
  • * - alphanumeric

Tests

react-mask-mixin is covered by Mocha tests. To run tests just open test/test.html in a browser.

License

react-mask-mixin may be freely distributed under the MIT license.

Copyright (c) 2015 Serge Borbit <serge.borbit@gmail.com>

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago