@grapecity/inputman.angular
Version:
このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。
139 lines • 16 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { GC } from '../inputman';
import { Property } from '../common';
import { provideParent } from './GcComponents';
import { GcInputManBaseComponent } from './GcInputManBase';
import * as i0 from "@angular/core";
export class GcTextBoxComponent extends GcInputManBaseComponent {
constructor(ref) {
super(ref);
this.onChange = () => { };
this.onTouched = () => { };
this.onIMEReadingStringOutput = new EventEmitter();
// For V2.1 Compatibility, we have to keep this property or event
this.imeReadingStringChange = new EventEmitter();
}
writeValue(value) {
this.text = value;
if (this._imCtrl) {
this._imCtrl.text = this.text;
}
}
registerOnChange(onChange) {
this.onChange = onChange;
}
registerOnTouched(onTouched) {
this.onTouched = onTouched;
}
setDisabledState(isDisabled) {
this.enabled = !isDisabled;
if (this._imCtrl) {
this._imCtrl.enabled = this.enabled;
}
}
initGcComponent() {
var input = document.createElement("input");
this.createTemplate(input);
this["IMEReadingStringAppend"] = this.imeReadingStringAppend;
this["IMEReadingStringKanaMode"] = this.imeReadingStringKanaMode;
this["IMEReadingStringEnableAlphabetReadingMapping"] = this.imeReadingStringEnableAlphabetReadingMapping;
this._imCtrl = new GC.InputMan.GcTextBox(input, this);
}
bindEvent() {
if (!this._imCtrl) {
return;
}
super.bindEvent();
this._imCtrl.onTextChanged((s) => {
this.onTouched();
this.onChange(s.getText());
});
this._imCtrl.onIMEReadingStringOutput((s, e) => {
this.onIMEReadingStringOutput.emit({ sender: s, eArgs: e });
this.imeReadingStringChange.emit(s.getIMEReadingString());
});
}
}
GcTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcTextBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
GcTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcTextBoxComponent, selector: "gc-text-box", inputs: { acceptsCrlf: "acceptsCrlf", acceptsTabChar: "acceptsTabChar", autoConvert: "autoConvert", ellipsisString: "ellipsisString", ellipsis: "ellipsis", format: "format", lengthAsByte: "lengthAsByte", maxLength: "maxLength", passwordChar: "passwordChar", text: "text", useSystemPasswordChar: "useSystemPasswordChar", imeReadingStringAppend: "imeReadingStringAppend", imeReadingStringKanaMode: "imeReadingStringKanaMode", imeReadingStringEnableAlphabetReadingMapping: "imeReadingStringEnableAlphabetReadingMapping", exitOnLastChar: "exitOnLastChar", highlightText: "highlightText", imeReadingString: "imeReadingString", passwordRevelationMode: "passwordRevelationMode", useStandardPasswordInput: "useStandardPasswordInput", trimMode: "trimMode" }, outputs: { onIMEReadingStringOutput: "onIMEReadingStringOutput", imeReadingStringChange: "imeReadingStringChange" }, providers: [
provideParent(GcTextBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcTextBoxComponent),
}
], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
__decorate([
Property("setIMEReadingStringAppend"),
__metadata("design:type", Boolean)
], GcTextBoxComponent.prototype, "imeReadingStringAppend", void 0);
__decorate([
Property("setIMEReadingStringKanaMode"),
__metadata("design:type", String)
], GcTextBoxComponent.prototype, "imeReadingStringKanaMode", void 0);
__decorate([
Property("setIMEReadingStringEnableAlphabetReadingMapping"),
__metadata("design:type", Boolean)
], GcTextBoxComponent.prototype, "imeReadingStringEnableAlphabetReadingMapping", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcTextBoxComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-text-box',
template: ``,
providers: [
provideParent(GcTextBoxComponent),
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => GcTextBoxComponent),
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { acceptsCrlf: [{
type: Input
}], acceptsTabChar: [{
type: Input
}], autoConvert: [{
type: Input
}], ellipsisString: [{
type: Input
}], ellipsis: [{
type: Input
}], format: [{
type: Input
}], lengthAsByte: [{
type: Input
}], maxLength: [{
type: Input
}], passwordChar: [{
type: Input
}], text: [{
type: Input
}], useSystemPasswordChar: [{
type: Input
}], imeReadingStringAppend: [{
type: Input
}], imeReadingStringKanaMode: [{
type: Input
}], imeReadingStringEnableAlphabetReadingMapping: [{
type: Input
}], exitOnLastChar: [{
type: Input
}], highlightText: [{
type: Input
}], imeReadingString: [{
type: Input
}], passwordRevelationMode: [{
type: Input
}], useStandardPasswordInput: [{
type: Input
}], trimMode: [{
type: Input
}], onIMEReadingStringOutput: [{
type: Output
}], imeReadingStringChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NUZXh0Qm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9HY1RleHRCb3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFjM0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHVCQUE4QztJQUVsRixZQUFZLEdBQWU7UUFDdkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR1AsYUFBUSxHQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixjQUFTLEdBQWEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBa0VqQyw2QkFBd0IsR0FBZ0UsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsSCxpRUFBaUU7UUFFMUQsMkJBQXNCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUF4RXpFLENBQUM7SUFLRCxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUNELGdCQUFnQixDQUFDLFFBQWE7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FB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TUFBTTtzQkFEWixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFJQyxzQkFBc0I7c0JBRjVCLEtBQUs7Z0JBS0Msd0JBQXdCO3NCQUY5QixLQUFLO2dCQUtDLDRDQUE0QztzQkFGbEQsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUdDLHNCQUFzQjtzQkFENUIsS0FBSztnQkFHQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLHdCQUF3QjtzQkFEOUIsTUFBTTtnQkFJQSxzQkFBc0I7c0JBRDVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgR0MgfSBmcm9tICcuLi9pbnB1dG1hbic7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBwcm92aWRlUGFyZW50IH0gZnJvbSAnLi9HY0NvbXBvbmVudHMnO1xuaW1wb3J0IHsgR2NJbnB1dE1hbkJhc2VDb21wb25lbnQgfSBmcm9tICcuL0djSW5wdXRNYW5CYXNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy10ZXh0LWJveCcsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlUGFyZW50KEdjVGV4dEJveENvbXBvbmVudCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHY1RleHRCb3hDb21wb25lbnQpLFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBHY1RleHRCb3hDb21wb25lbnQgZXh0ZW5kcyBHY0lucHV0TWFuQmFzZUNvbXBvbmVudDxHQy5JbnB1dE1hbi5HY1RleHRCb3g+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgY29uc3RydWN0b3IocmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKHJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICB0aGlzLl9pbUN0cmwudGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgIH1cbiAgICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5hYmxlZCA9ICFpc0Rpc2FibGVkO1xuICAgICAgICBpZiAodGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICB0aGlzLl9pbUN0cmwuZW5hYmxlZCA9IHRoaXMuZW5hYmxlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHRzQ3JsZjogR0MuSW5wdXRNYW4uQ3JMZk1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0c1RhYkNoYXI6IEdDLklucHV0TWFuLlRhYkNoYXJNb2RlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9Db252ZXJ0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVsbGlwc2lzU3RyaW5nOiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVsbGlwc2lzOiBHQy5JbnB1dE1hbi5FbGxpcHNpc01vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybWF0OiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlbmd0aEFzQnl0ZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXNzd29yZENoYXI6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGV4dDogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB1c2VTeXN0ZW1QYXNzd29yZENoYXI6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJzZXRJTUVSZWFkaW5nU3RyaW5nQXBwZW5kXCIpXG4gICAgcHVibGljIGltZVJlYWRpbmdTdHJpbmdBcHBlbmQ6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJzZXRJTUVSZWFkaW5nU3RyaW5nS2FuYU1vZGVcIilcbiAgICBwdWJsaWMgaW1lUmVhZGluZ1N0cmluZ0thbmFNb2RlOiBHQy5JbnB1dE1hbi5LYW5hTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIEBQcm9wZXJ0eShcInNldElNRVJlYWRpbmdTdHJpbmdFbmFibGVBbHBoYWJldFJlYWRpbmdNYXBwaW5nXCIpXG4gICAgcHVibGljIGltZVJlYWRpbmdTdHJpbmdFbmFibGVBbHBoYWJldFJlYWRpbmdNYXBwaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4aXRPbkxhc3RDaGFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZ2hsaWdodFRleHQ6IGJvb2xlYW47XG4gICAgLy8gRm9yIFYyLjEgQ29tcGF0aWJpbGl0eSwgd2UgaGF2ZSB0byBrZWVwIHRoaXMgcHJvcGVydHkgb3IgZXZlbnRcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbWVSZWFkaW5nU3RyaW5nOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFzc3dvcmRSZXZlbGF0aW9uTW9kZTogR0MuSW5wdXRNYW4uUGFzc3dvcmRSZXZlbGF0aW9uTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB1c2VTdGFuZGFyZFBhc3N3b3JkSW5wdXQ6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHJpbU1vZGU6IEdDLklucHV0TWFuLlRyaW1Nb2RlO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbklNRVJlYWRpbmdTdHJpbmdPdXRwdXQ6IEV2ZW50RW1pdHRlcjx7IHNlbmRlcjogR0MuSW5wdXRNYW4uR2NUZXh0Qm94LCBlQXJnczogYW55IH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIEZvciBWMi4xIENvbXBhdGliaWxpdHksIHdlIGhhdmUgdG8ga2VlcCB0aGlzIHByb3BlcnR5IG9yIGV2ZW50XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGltZVJlYWRpbmdTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJvdGVjdGVkIGluaXRHY0NvbXBvbmVudCgpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKGlucHV0KTtcbiAgICAgICAgdGhpc1tcIklNRVJlYWRpbmdTdHJpbmdBcHBlbmRcIl0gPSB0aGlzLmltZVJlYWRpbmdTdHJpbmdBcHBlbmQ7XG4gICAgICAgIHRoaXNbXCJJTUVSZWFkaW5nU3RyaW5nS2FuYU1vZGVcIl0gPSB0aGlzLmltZVJlYWRpbmdTdHJpbmdLYW5hTW9kZTtcbiAgICAgICAgdGhpc1tcIklNRVJlYWRpbmdTdHJpbmdFbmFibGVBbHBoYWJldFJlYWRpbmdNYXBwaW5nXCJdID0gdGhpcy5pbWVSZWFkaW5nU3RyaW5nRW5hYmxlQWxwaGFiZXRSZWFkaW5nTWFwcGluZztcblxuICAgICAgICB0aGlzLl9pbUN0cmwgPSBuZXcgR0MuSW5wdXRNYW4uR2NUZXh0Qm94KGlucHV0LCB0aGlzIGFzIGFueSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJpbmRFdmVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLmJpbmRFdmVudCgpO1xuXG4gICAgICAgIHRoaXMuX2ltQ3RybC5vblRleHRDaGFuZ2VkKChzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShzLmdldFRleHQoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2ltQ3RybC5vbklNRVJlYWRpbmdTdHJpbmdPdXRwdXQoKHMsIGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25JTUVSZWFkaW5nU3RyaW5nT3V0cHV0LmVtaXQoeyBzZW5kZXI6IHMsIGVBcmdzOiBlIH0pO1xuICAgICAgICAgICAgdGhpcy5pbWVSZWFkaW5nU3RyaW5nQ2hhbmdlLmVtaXQocy5nZXRJTUVSZWFkaW5nU3RyaW5nKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59Il19