UNPKG

angular2-json-schema-form

Version:
104 lines 6.13 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var core_1 = require("@angular/core"); var json_schema_form_service_1 = require("../../library/json-schema-form.service"); var index_1 = require("../../library/utilities/index"); var MaterialNumberComponent = (function () { function MaterialNumberComponent(jsf) { this.jsf = jsf; this.controlDisabled = false; this.boundControl = false; this.allowNegative = true; this.allowDecimal = true; this.allowExponents = false; this.lastValidNumber = ''; } MaterialNumberComponent.prototype.ngOnInit = function () { this.options = this.layoutNode.options; this.jsf.initializeControl(this); if (this.layoutNode.dataType === 'integer') this.allowDecimal = false; }; MaterialNumberComponent.prototype.updateValue = function (event) { this.jsf.updateValue(this, event.target.value); }; MaterialNumberComponent.prototype.validateInput = function (event) { var val = event.target.value; if (/^Digit\d$/.test(event.code)) return true; if (/^Numpad\d$/.test(event.code)) return true; if (/^Arrow/.test(event.code)) return true; if (index_1.inArray(event.code, ['Backspace', 'Delete', 'Enter', 'Escape', 'NumpadEnter', 'PrintScreen', 'Tab'])) return true; if (event.ctrlKey || event.altKey || event.metaKey) return true; if (this.allowDecimal && event.key === '.' && val.indexOf('.') === -1) return true; if (this.allowExponents) { var hasExponent = /e/i.test(val); if (/^e$/i.test(event.key) && !hasExponent && val) return true; if (event.key === '-') { var minusCount = (val.match(/\-/g) || []).length; if ((this.allowNegative || hasExponent) && !minusCount) return true; if (this.allowNegative && hasExponent && minusCount === 1) return true; } } else if (this.allowNegative && event.key === '-' && val.indexOf('-') === -1) { return true; } return false; }; MaterialNumberComponent.prototype.validateNumber = function (event) { var val = event.target.value; if (!isNaN(val) || val === '' || val === '.' || val === '-' || val === '-.' || (val.length > 1 && val.slice(-1).toLowerCase() === 'e') || (val.length > 2 && val.slice(-2).toLowerCase() === 'e-')) { this.lastValidNumber = val; } else { this.jsf.getControl(this).setValue(this.lastValidNumber); } }; return MaterialNumberComponent; }()); __decorate([ core_1.Input(), __metadata("design:type", Number) ], MaterialNumberComponent.prototype, "formID", void 0); __decorate([ core_1.Input(), __metadata("design:type", Object) ], MaterialNumberComponent.prototype, "layoutNode", void 0); __decorate([ core_1.Input(), __metadata("design:type", Array) ], MaterialNumberComponent.prototype, "layoutIndex", void 0); __decorate([ core_1.Input(), __metadata("design:type", Array) ], MaterialNumberComponent.prototype, "dataIndex", void 0); MaterialNumberComponent = __decorate([ core_1.Component({ selector: 'material-number-widget', template: "\n <section [class]=\"options?.htmlClass\">\n <md-input #inputControl\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.placeholder]=\"options?.placeholder\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [class]=\"options?.fieldHtmlClass\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [placeholder]=\"options?.title\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [style.width]=\"'100%'\"\n [title]=\"lastValidNumber\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n (keydown)=\"validateInput($event)\"\n (keyup)=\"validateNumber($event)\">\n <span *ngIf=\"options?.fieldAddonLeft\"\n md-prefix>{{options?.fieldAddonLeft}}</span>\n <span *ngIf=\"options?.fieldAddonRight\"\n md-suffix>{{options?.fieldAddonRight}}</span>\n <md-hint *ngIf=\"options?.description && !(options?.placeholder && !formControl?.dirty)\"\n align=\"end\">{{options?.description}}</md-hint>\n <md-hint *ngIf=\"!options?.description && options?.placeholder && !formControl?.dirty\"\n align=\"end\">{{options?.placeholder}}</md-hint>\n </md-input>\n {{layoutNode?.type === 'range' ? controlValue : ''}}\n </section>", styles: ["md-input { margin-top: 6px; }"], }), __metadata("design:paramtypes", [json_schema_form_service_1.JsonSchemaFormService]) ], MaterialNumberComponent); exports.MaterialNumberComponent = MaterialNumberComponent; //# sourceMappingURL=material-number.component.js.map