UNPKG

ovuse

Version:

WPF-inspired Web UI framework

117 lines (116 loc) 5.4 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; }; Object.defineProperty(exports, "__esModule", { value: true }); const _1 = require("."); const _2 = require("../."); let TextBox = TextBox_1 = class TextBox extends _1.FrameworkElement { constructor() { super(...arguments); this._pElement = null; this._measuredSize = null; } attachVisualOverride(elementContainer) { this._visual = this._pElement = document.createElement("input"); this._pElement.value = this.text; this._pElement.type = this.type; this._pElement.readOnly = this.isReadonly; this._pElement.placeholder = this.placeholder; this._pElement.oninput = (ev) => this.onTextChanged(); this._pElement.onchange = (ev) => this.onTextChanged(); this._pElement.onkeypress = (ev) => this.onTextChanged(); this._pElement.onpaste = (ev) => this.onTextChanged(); super.attachVisualOverride(elementContainer); } onTextChanged() { if (this._pElement != null) this.text = this._pElement.value; } measureOverride(constraint) { var pElement = this._pElement; if (this._measuredSize == null && pElement != null) { pElement.style.width = ""; pElement.style.height = ""; this._measuredSize = new _1.Size(pElement.offsetWidth, pElement.offsetHeight); } if (this._measuredSize != null) return new _1.Size(Math.min(constraint.width, this._measuredSize.width), Math.min(constraint.height, this._measuredSize.height)); return constraint; } layoutOverride() { super.layoutOverride(); //layoutOverride above set style.width and styl.height //at that point browser compute new offsetWidth and offetHeight //we need to reset style.width/height so that textbox don't exceed space //that out parent has reserved for this control var pElement = this._pElement; if (this.renderSize != null && pElement != null) { pElement.style.width = (this.renderSize.width - (pElement.offsetWidth - this.renderSize.width)) + "px"; pElement.style.height = (this.renderSize.height - (pElement.offsetHeight - this.renderSize.height)) + "px"; } } onDependencyPropertyChanged(property, value, oldValue) { if (property == TextBox_1.textProperty) { var pElement = this._pElement; if (pElement != null) { pElement.value = value; } } else if (property == TextBox_1.placeholderProperty) { var pElement = this._pElement; if (pElement != null) { pElement.placeholder = value; } } else if (property == TextBox_1.typeProperty) { var pElement = this._pElement; if (pElement != null) { pElement.type = value; } } else if (property == TextBox_1.isReadonlyProperty) { var pElement = this._pElement; if (pElement != null) { pElement.readOnly = value; } } super.onDependencyPropertyChanged(property, value, oldValue); } get text() { return this.getValue(TextBox_1.textProperty); } set text(value) { this.setValue(TextBox_1.textProperty, value); } get placeholder() { return this.getValue(TextBox_1.placeholderProperty); } set placeholder(value) { this.setValue(TextBox_1.placeholderProperty, value); } get type() { return this.getValue(TextBox_1.typeProperty); } set type(value) { this.setValue(TextBox_1.typeProperty, value); } get isReadonly() { return this.getValue(TextBox_1.isReadonlyProperty); } set isReadonly(value) { this.setValue(TextBox_1.isReadonlyProperty, value); } }; TextBox.textProperty = _2.DependencyObject.registerProperty(TextBox_1, "Text", null, _1.FrameworkPropertyMetadataOptions.AffectsMeasure | _1.FrameworkPropertyMetadataOptions.AffectsRender); TextBox.placeholderProperty = _2.DependencyObject.registerProperty(TextBox_1, "Placeholder", "", _1.FrameworkPropertyMetadataOptions.AffectsMeasure | _1.FrameworkPropertyMetadataOptions.AffectsRender); TextBox.typeProperty = _2.DependencyObject.registerProperty(TextBox_1, "Type", "text", _1.FrameworkPropertyMetadataOptions.AffectsMeasure | _1.FrameworkPropertyMetadataOptions.AffectsRender); TextBox.isReadonlyProperty = _2.DependencyObject.registerProperty(TextBox_1, "IsReadonly", false); TextBox = TextBox_1 = __decorate([ _2.TypeId("ovuse.controls.TextBox") ], TextBox); exports.TextBox = TextBox; var TextBox_1;