UNPKG

focus-components-v3

Version:

Focus web components to build applications (based on Material Design)

170 lines (129 loc) 16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _dec, _class; //dependencies var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _identity = require('lodash/identity'); var _identity2 = _interopRequireDefault(_identity); var _i18next = require('i18next'); var _i18next2 = _interopRequireDefault(_i18next); var _material = require('../behaviours/material'); var _material2 = _interopRequireDefault(_material); var _inputComponent = require('../behaviours/input-component'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } var MODE = { isEdit: true }; /** * Component standing for an HTML input. */ var InputText = (_dec = (0, _material2.default)('inputText'), _dec(_class = (0, _inputComponent.InputBehaviour)(_class = function (_PureComponent) { _inherits(InputText, _PureComponent); function InputText() { var _temp, _this, _ret; _classCallCheck(this, InputText); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, _PureComponent.call.apply(_PureComponent, [this].concat(args))), _this), _this.getValue = function () { var domEl = _reactDom2.default.findDOMNode(_this.refs.htmlInput); return domEl.value; }, _this._handleonChange = function (evt) { var onChange = _this.props.onChange; var value = evt.target.value; return onChange(value); }, _temp), _possibleConstructorReturn(_this, _ret); } /** * Get the dom value of the component. * @return {object} - The unformated dom value. */ InputText.prototype.componentDidUpdate = function componentDidUpdate() { var valid = this.props.valid; if (valid) { // Make sure that the main div does not hold a is-invalid class when there's no error // MDL keeps the class even if React removes it this.refs.inputText.classList.remove('is-invalid'); } }; /** * Handle the change on the input text, it only propagate the value. * @param {object} evt - The react DOM event. * @return {object} - The function onChannge from the props, called. */ /** * @inheritdoc * @override */ InputText.prototype.render = function render() { var managedProps = this._checkProps(this.props); var validInputProps = managedProps; var _props = this.props, name = _props.name, placeholder = _props.placeholder, style = _props.style, rawInputValue = _props.rawInputValue, validator = _props.metadata.validator, error = _props.error, metadata = _props.metadata, valid = _props.valid; _objectDestructuringEmpty(this.props); var _ref = validator || {}, validatorsOptions = _ref.options; var pattern = valid ? null : 'hasError'; //add pattern to overide mdl error style when displaying an focus error. var inputProps = _extends({}, validInputProps, { pattern: pattern }, validatorsOptions); inputProps.value = rawInputValue === undefined || rawInputValue === null ? '' : this.props.formatter(rawInputValue, MODE); var cssClass = 'mdl-textfield mdl-js-textfield' + (!valid ? ' is-invalid' : ''); return _react2.default.createElement( 'div', { className: cssClass, 'data-focus': 'input-text', ref: 'inputText', style: style }, _react2.default.createElement('input', _extends({ className: 'mdl-textfield__input', ref: 'htmlInput' }, inputProps)), _react2.default.createElement( 'label', { className: 'mdl-textfield__label', htmlFor: name }, _i18next2.default.t(placeholder) ), !valid && _react2.default.createElement( 'span', { className: 'mdl-textfield__error' }, _i18next2.default.t(error) ) ); }; return InputText; }(_react.PureComponent)) || _class) || _class); //Static props. InputText.displayName = 'InputText'; InputText.propTypes = { disabled: _react.PropTypes.bool, error: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.bool]), name: _react.PropTypes.string.isRequired, onBlur: _react.PropTypes.func, onChange: _react.PropTypes.func.isRequired, onKeyPress: _react.PropTypes.func, metadata: _react.PropTypes.object, placeholder: _react.PropTypes.string, formatter: _react.PropTypes.func, type: _react.PropTypes.string, rawInputValue: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]), valid: _react.PropTypes.bool }; InputText.defaultProps = { disabled: false, metadata: {}, error: 'input.text.error.default', formatter: _identity2.default, type: 'text', valid: true }; exports.default = InputText; module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyLUZSLmpzIl0sIm5hbWVzIjpbIk1PREUiLCJpc0VkaXQiLCJJbnB1dFRleHQiLCJnZXRWYWx1ZSIsImRvbUVsIiwiZmluZERPTU5vZGUiLCJyZWZzIiwiaHRtbElucHV0IiwidmFsdWUiLCJfaGFuZGxlb25DaGFuZ2UiLCJldnQiLCJvbkNoYW5nZSIsInByb3BzIiwidGFyZ2V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwidmFsaWQiLCJpbnB1dFRleHQiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJyZW5kZXIiLCJtYW5hZ2VkUHJvcHMiLCJfY2hlY2tQcm9wcyIsInZhbGlkSW5wdXRQcm9wcyIsIm5hbWUiLCJwbGFjZWhvbGRlciIsInN0eWxlIiwicmF3SW5wdXRWYWx1ZSIsInZhbGlkYXRvciIsIm1ldGFkYXRhIiwiZXJyb3IiLCJ2YWxpZGF0b3JzT3B0aW9ucyIsIm9wdGlvbnMiLCJwYXR0ZXJuIiwiaW5wdXRQcm9wcyIsInVuZGVmaW5lZCIsImZvcm1hdHRlciIsImNzc0NsYXNzIiwidCIsImRpc3BsYXlOYW1lIiwicHJvcFR5cGVzIiwiZGlzYWJsZWQiLCJib29sIiwib25lT2ZUeXBlIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9uQmx1ciIsImZ1bmMiLCJvbktleVByZXNzIiwib2JqZWN0IiwidHlwZSIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7a0JBQUE7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNQSxPQUFPLEVBQUNDLFFBQVEsSUFBVCxFQUFiOztBQUVBOzs7SUFLTUMsUyxXQUZMLHdCQUFZLFdBQVosQztjQUVLQSxTOzthQUFBQSxTOzs7OEJBQUFBLFM7Ozs7Ozt3SkFNRkMsUSxHQUFXLFlBQU07QUFDYixnQkFBTUMsUUFBUSxtQkFBU0MsV0FBVCxDQUFxQixNQUFLQyxJQUFMLENBQVVDLFNBQS9CLENBQWQ7QUFDQSxtQkFB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QmxCLGNBQVUsaUJBQVVvQixNQVZGO0FBV2xCeEIsaUJBQWEsaUJBQVVtQixNQVhMO0FBWWxCUixlQUFXLGlCQUFVVyxJQVpIO0FBYWxCRyxVQUFNLGlCQUFVTixNQWJFO0FBY2xCakIsbUJBQWUsaUJBQVVnQixTQUFWLENBQW9CLENBQy9CLGlCQUFVQyxNQURxQixFQUUvQixpQkFBVU8sTUFGcUIsQ0FBcEIsQ0FkRztBQWtCbEJuQyxXQUFPLGlCQUFVMEI7QUFsQkMsQ0FBdEI7QUFvQkF2QyxVQUFVaUQsWUFBVixHQUF5QjtBQUNyQlgsY0FBVSxLQURXO0FBRXJCWixjQUFVLEVBRlc7QUFHckJDLFdBQU8sMEJBSGM7QUFJckJNLGlDQUpxQjtBQUtyQmMsVUFBTSxNQUxlO0FBTXJCbEMsV0FBTztBQU5jLENBQXpCO2tCQVFlYixTIiwiZmlsZSI6ImZyLUZSLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9kZXBlbmRlbmNpZXNcclxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzLCBQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xyXG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnbG9kYXNoL2lkZW50aXR5JztcclxuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XHJcbmltcG9ydCBNREJlaGF2aW91ciBmcm9tICcuLi9iZWhhdmlvdXJzL21hdGVyaWFsJztcclxuaW1wb3J0IHtJbnB1dEJlaGF2aW91cn0gZnJvbSAnLi4vYmVoYXZpb3Vycy9pbnB1dC1jb21wb25lbnQnO1xyXG5jb25zdCBNT0RFID0ge2lzRWRpdDogdHJ1ZX07XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHN0YW5kaW5nIGZvciBhbiBIVE1MIGlucHV0LlxyXG4gKi9cclxuQE1EQmVoYXZpb3VyKCdpbnB1dFRleHQnKVxyXG5ASW5wdXRCZWhhdmlvdXJcclxuY2xhc3MgSW5wdXRUZXh0IGV4dGVuZHMgUHVyZUNvbXBvbmVudCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGRvbSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICogQHJldHVybiB7b2JqZWN0fSAtIFRoZSB1bmZvcm1hdGVkIGRvbSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgZ2V0VmFsdWUgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZG9tRWwgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzLnJlZnMuaHRtbElucHV0KTtcclxuICAgICAgICByZXR1cm4gZG9tRWwudmFsdWU7XHJcbiAgICB9O1xyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHt2YWxpZH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGlmICh2YWxpZCkge1xyXG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgbWFpbiBkaXYgZG9lcyBub3QgaG9sZCBhIGlzLWludmFsaWQgY2xhc3Mgd2hlbiB0aGVyZSdzIG5vIGVycm9yXHJcbiAgICAgICAgICAgIC8vIE1ETCBrZWVwcyB0aGUgY2xhc3MgZXZlbiBpZiBSZWFjdCByZW1vdmVzIGl0XHJcbiAgICAgICAgICAgIHRoaXMucmVmcy5pbnB1dFRleHQuY2xhc3NMaXN0LnJlbW92ZSgnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlIHRoZSBjaGFuZ2Ugb24gdGhlIGlucHV0IHRleHQsIGl0IG9ubHkgcHJvcGFnYXRlIHRoZSB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSAge29iamVjdH0gZXZ0IC0gVGhlIHJlYWN0IERPTSBldmVudC5cclxuICAgICAqIEByZXR1cm4ge29iamVjdH0gLSBUaGUgZnVuY3Rpb24gb25DaGFubmdlIGZyb20gdGhlIHByb3BzLCBjYWxsZWQuXHJcbiAgICAgKi9cclxuICAgIF9oYW5kbGVvbkNoYW5nZSA9IChldnQpID0+IHtcclxuICAgICAgICBjb25zdCB7b25DaGFuZ2V9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCB7dmFsdWV9ID0gZXZ0LnRhcmdldDtcclxuICAgICAgICByZXR1cm4gb25DaGFuZ2UodmFsdWUpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQGluaGVyaXRkb2NcclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgKi9cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBtYW5hZ2VkUHJvcHMgPSB0aGlzLl9jaGVja1Byb3BzKHRoaXMucHJvcHMpO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkSW5wdXRQcm9wcyA9IG1hbmFnZWRQcm9wc1xyXG5cclxuICAgICAgICBjb25zdCB7IG5hbWUsIHBsYWNlaG9sZGVyLCBzdHlsZSxyYXdJbnB1dFZhbHVlLCBtZXRhZGF0YSA6IHt2YWxpZGF0b3J9LCBlcnJvciwgbWV0YWRhdGEsIHZhbGlkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IHt9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICAgICAgY29uc3Qge29wdGlvbnM6IHZhbGlkYXRvcnNPcHRpb25zfSA9IHZhbGlkYXRvciB8fCB7fTtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID0gdmFsaWQgPyBudWxsIDogJ2hhc0Vycm9yJzsgLy9hZGQgcGF0dGVybiB0byBvdmVyaWRlIG1kbCBlcnJvciBzdHlsZSB3aGVuIGRpc3BsYXlpbmcgYW4gZm9jdXMgZXJyb3IuXHJcbiAgICAgICAgY29uc3QgaW5wdXRQcm9wcyA9IHsuLi52YWxpZElucHV0UHJvcHMsIHBhdHRlcm4sIC4uLnZhbGlkYXRvcnNPcHRpb25zfTtcclxuICAgICAgICBpbnB1dFByb3BzLnZhbHVlID0gcmF3SW5wdXRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJhd0lucHV0VmFsdWUgPT09IG51bGwgPyAnJyA6IHRoaXMucHJvcHMuZm9ybWF0dGVyKHJhd0lucHV0VmFsdWUsIE1PREUpXHJcbiAgICAgICAgY29uc3QgY3NzQ2xhc3MgPSBgbWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkJHshdmFsaWQgPyAnIGlzLWludmFsaWQnIDogJyd9YDtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3NzQ2xhc3N9IGRhdGEtZm9jdXM9J2lucHV0LXRleHQnIHJlZj0naW5wdXRUZXh0JyBzdHlsZT17c3R5bGV9PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT0nbWRsLXRleHRmaWVsZF9faW5wdXQnIHJlZj0naHRtbElucHV0JyB7Li4uaW5wdXRQcm9wc30gLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9J21kbC10ZXh0ZmllbGRfX2xhYmVsJyBodG1sRm9yPXtuYW1lfT57aTE4bmV4dC50KHBsYWNlaG9sZGVyKX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgeyF2YWxpZCAmJiA8c3BhbiBjbGFzc05hbWU9J21kbC10ZXh0ZmllbGRfX2Vycm9yJz57aTE4bmV4dC50KGVycm9yKX08L3NwYW4+fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG4vL1N0YXRpYyBwcm9wcy5cclxuSW5wdXRUZXh0LmRpc3BsYXlOYW1lID0gJ0lucHV0VGV4dCc7XHJcbklucHV0VGV4dC5wcm9wVHlwZXMgPSB7XHJcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXHJcbiAgICBlcnJvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXHJcbiAgICAgICAgUHJvcFR5cGVzLnN0cmluZyxcclxuICAgICAgICBQcm9wVHlwZXMuYm9vbFxyXG4gICAgXSksXHJcbiAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXHJcbiAgICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIG1ldGFkYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxyXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICBmb3JtYXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxyXG4gICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcclxuICAgIHJhd0lucHV0VmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xyXG4gICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICAgICAgUHJvcFR5cGVzLm51bWJlclxyXG4gICAgXSksXHJcbiAgICB2YWxpZDogUHJvcFR5cGVzLmJvb2xcclxufTtcclxuSW5wdXRUZXh0LmRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIG1ldGFkYXRhOiB7fSxcclxuICAgIGVycm9yOiAnaW5wdXQudGV4dC5lcnJvci5kZWZhdWx0JyxcclxuICAgIGZvcm1hdHRlcjogaWRlbnRpdHksXHJcbiAgICB0eXBlOiAndGV4dCcsXHJcbiAgICB2YWxpZDogdHJ1ZVxyXG59O1xyXG5leHBvcnQgZGVmYXVsdCBJbnB1dFRleHQ7XHJcbiJdfQ==