# pixi-textinput **Repository Path**: jjhoc/pixi-textinput ## Basic Information - **Project Name**: pixi-textinput - **Description**: A compatible text input for pixi v5, webpack, typescript, npm modules - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TextInput - Plugin for pixi.js v5.0.2 [![npm version](http://img.shields.io/npm/v/REPO.svg?style=flat)](https://npmjs.org/package/pixi-textinput-v5 "View this project on npm") # About This plugin for pixi.js provides a convenient way of adding text inputs to the pixijs-stage. The input itself is a HTML `` element, which is positioned above the stage according to the transformation given by the PIXI-DisplayObject. The box is drawn on the PIXI-stage. Additionally, you can choose whether the plugin should substitute the `` with a native pixi-Text when the textfield has no focus. # Installing Include the `dist/PIXI.TextInput.js` or `dist/PIXI.TextInput.min.js` in your html document after pixi.js. ![](https://user-images.githubusercontent.com/629338/60394403-77264400-9b56-11e9-8497-4859464e263e.png) A [npm package](https://www.npmjs.com/package/pixi-textinput-v5) is available as well: `npm i pixi-textinput-v5` # Documentation The TextInput behaves just like any other PIXI-DisplayObject. It inherits from `PIXI.Container` and has all the associated properties like `width`, `height`, `rotation`, `scale` ,`alpha`, [etc.](http://pixijs.download/dev/docs/PIXI.Container.html) ## Creating an instance babel usage: `import TextInput from "pixi-textinput-v5"` ![](http://manuelotto.com/opensource/PIXI.TextInput/img/components.png) new PIXI.TextInput( { input: {...}, box: {...} } ) **input** : object >The css style attributes for the HTML input tag. **box** : object | function >Either an object describing the style of the box using the default box generator, or a function which returns your own custom generated box. ![](http://manuelotto.com/opensource/PIXI.TextInput/img/preview.png) # Demos [Demo with default box generator](http://manuelotto.com/opensource/PIXI.TextInput/demos/demo_default.html) [Demo with custom box generator](http://manuelotto.com/opensource/PIXI.TextInput/demos/demo_custom.html) ## Styling the input You can apply any CSS styles. You have to use the camcelCase property names, though. ``` new PIXI.TextInput({ input: { fontSize: '25pt', padding: '14px', width: '500px', color: '#26272E' }, box: {...} }) ``` If you plan to use more advanced properties like `text-shadow`, you will have to disable `substituteText`, as their translation to the pixi-Text style is not supported, yet. ## Box styling using the default box generator The input can have 3 different states: `DEFAULT`, `FOCUSED` and `DISABLED`. For each state you can apply a different style to the input-box. When passing the following object to the second parameter of the constructor... ``` new PIXI.TextInput({ input: {...}, box: { default: {fill: 0xE8E9F3, rounded: 16, stroke: {color: 0xCBCEE0, width: 4}}, focused: {fill: 0xE1E3EE, rounded: 16, stroke: {color: 0xABAFC6, width: 4}}, disabled: {fill: 0xDBDBDB, rounded: 16} } }) ``` ...you will get a box-style as shown in [this demo.](http://manuelotto.com/opensource/PIXI.TextInput/demos/demo_default.html) If you don't want a different style for each state, you can just pass: ``` new PIXI.TextInput({ input: {...}, box: {fill: 0xE8E9F3, rounded: 16, stroke: {color: 0xCBCEE0, width: 4}} }) ``` and have the same style for all 3 states. | Possible attributes | | |--|--| | `fill` | The fill color of the box | | `rounded` | The border-radius | | `stroke.color` | the color of the stroke | | `stroke.width` | the width of the stroke | | `stroke.alpha` | the alpha of the stroke | ## Box styling using a custom generator Write your own function to generate the box. function generateCustomBox(width, height, state){ var box = new PIXI.Graphics() // draw the box based on width, height and the state (DEFAULT, FOCUSED or DISABLED) return box } then use it as follows new PIXI.TextInput({ input: {...}, box: generateCustomBox }) See [this demo](http://manuelotto.com/opensource/PIXI.TextInput/demos/demo_custom.html). # Reference All described members & methods are accessible through an instance of the TextInput. ``` var input = new PIXI.TextInput({ input: {fontSize: '25px'}, box: {fill: 0xEEEEEE} }) input.x = 100 input.y = 100 input.placeholder = 'Enter your Text...' stage.addChild(input) input.focus() ``` ## Members **substituteText** : boolean >Whether the plugin should substitute the html input tag with a pixi-Text DisplayObject when there's no focus. > >The plugin tries its best to mimic the exact look of the html input element, however with certain fonts/styles there might be some discrepancies. > >Set this to false in order to have the html input element visible at all times. >Drawback: You cannot have overlays over the input field. **placeholder** : string >The placeholder text applied to the html input element or the substituted pixi-Text. **placeholderColor** : int >The color of the placeholder (has no effect when `substituteText` is set to false; Use CSS to set the placeholder color). **text** : string >The text (value) of the html input element. **maxLength** : int >The maximum length of the text. **restrict** : RegExp \| string >Restricts the text input to a specified character set. Either pass a string containing all possible characters or a regular expression, which will be matched against the whole input string. **htmlInput** : HTMLInputElement >Direct access to the native HTML input. Who knows what you're planning to do. **disabled** : boolean >Set to true to disable the input. ## Methods **focus()** : void >Focus the input. **select()** : void >Focus the input and have the text in selection. **blur()** : void >Remove the focus of the input. **setInputStyle( key** : string, **value** : string **)** : void >Change a css style attribute of the input element. >For example, to change the font size, use: >`input.setInputStyle('fontSize', '21px')` ## Events All events are dispatched via the default pixi EventEmitter. ``` input.on('keydown', keycode => { console.log('key pressed:', keycode) }) ``` **keydown** -> keycode : int >Dispatched when a key is pressed along with its [keycode](http://keycode.info/). **keyup** -> keycode : int >Dispatched when a key is released along with its [keycode](http://keycode.info/). **input** -> text : string >Dispatched when the input's text has been changed along with the current text of the input. **focus** >Dispatched when the input has been focused. **blur** >Dispatched when the focus to the input has been lost. # Contribute Feel free to add features or suggest improvements.