UNPKG

@grapecity/inputman.angular

Version:

このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。

135 lines 15.9 kB
import { Component, ElementRef, Input, Output, EventEmitter, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { GC } from '../inputman'; import { provideParent } from './GcComponents'; import { GcInputManBaseComponent } from './GcInputManBase'; import * as i0 from "@angular/core"; export class GcMaskComponent extends GcInputManBaseComponent { constructor(ref) { super(ref); this.onChange = () => { }; this.onTouched = () => { }; this.onTextChanging = new EventEmitter(); this.onSpinDown = new EventEmitter(); this.onSpinUp = new EventEmitter(); this.onValueChanged = new EventEmitter(); // For V2.1 Compatibility, we have to keep this property or event this.valueChange = new EventEmitter(); this.valueIsFullChange = new EventEmitter(); } writeValue(value) { this.value = value; if (this._imCtrl) { this._imCtrl.value = this.value; } } 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._imCtrl = new GC.InputMan.GcMask(input, this); } bindEvent() { if (!this._imCtrl) { return; } super.bindEvent(); this._imCtrl.onInput((s) => { this.valueIsFullChange.emit(s.getValueIsFull()); }); this._imCtrl.onTextChanging((s, e) => { this.onTextChanging.emit({ sender: s, eArgs: e }); }); this._imCtrl.onSpinDown((s) => { this.onSpinDown.emit(s); }); this._imCtrl.onSpinUp((s) => { this.onSpinUp.emit(s); }); this._imCtrl.onValueChanged((s) => { this.onValueChanged.emit(s); this.onChange(s.getValue()); this.onTouched(); this.valueChange.emit(s.getValue()); this.valueIsFullChange.emit(s.getValueIsFull()); }); } } GcMaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcMaskComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); GcMaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcMaskComponent, selector: "gc-mask", inputs: { acceptsCrlf: "acceptsCrlf", acceptsTabChar: "acceptsTabChar", autoConvert: "autoConvert", value: "value", formatPattern: "formatPattern", promptChar: "promptChar", showLiterals: "showLiterals", tabAction: "tabAction", text: "text", clipContent: "clipContent", allowSpin: "allowSpin", spinWheel: "spinWheel", spinOnKeys: "spinOnKeys", exitOnLastChar: "exitOnLastChar", highlightText: "highlightText", showSpinButton: "showSpinButton", spinButtonPosition: "spinButtonPosition", valueIsFull: "valueIsFull" }, outputs: { onTextChanging: "onTextChanging", onSpinDown: "onSpinDown", onSpinUp: "onSpinUp", onValueChanged: "onValueChanged", valueChange: "valueChange", valueIsFullChange: "valueIsFullChange" }, providers: [ provideParent(GcMaskComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcMaskComponent), } ], usesInheritance: true, ngImport: i0, template: ``, isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcMaskComponent, decorators: [{ type: Component, args: [{ selector: 'gc-mask', template: ``, providers: [ provideParent(GcMaskComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcMaskComponent), } ] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { acceptsCrlf: [{ type: Input }], acceptsTabChar: [{ type: Input }], autoConvert: [{ type: Input }], value: [{ type: Input }], formatPattern: [{ type: Input }], promptChar: [{ type: Input }], showLiterals: [{ type: Input }], tabAction: [{ type: Input }], text: [{ type: Input }], clipContent: [{ type: Input }], allowSpin: [{ type: Input }], spinWheel: [{ type: Input }], spinOnKeys: [{ type: Input }], exitOnLastChar: [{ type: Input }], highlightText: [{ type: Input }], showSpinButton: [{ type: Input }], spinButtonPosition: [{ type: Input }], valueIsFull: [{ type: Input }], onTextChanging: [{ type: Output }], onSpinDown: [{ type: Output }], onSpinUp: [{ type: Output }], onValueChanged: [{ type: Output }], valueChange: [{ type: Output }], valueIsFullChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NNYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9HY01hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFlM0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsdUJBQTJDO0lBRTVFLFlBQVksR0FBZTtRQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHUCxhQUFRLEdBQWEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLGNBQVMsR0FBYSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUEyRGpDLG1CQUFjLEdBQTJELElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUYsZUFBVSxHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxFLGFBQVEsR0FBcUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRSxtQkFBYyxHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdFLGlFQUFpRTtRQUUxRCxnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELHNCQUFpQixHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBekVyRSxDQUFDO0lBS0QsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9B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LEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFO3dCQUNQLGFBQWEsaUJBQWlCO3dCQUM5Qjs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDakQ7cUJBQ0o7aUJBQ0o7aUdBOEJVLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxXQUFXO3NCQUZqQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLE1BQU07Z0JBR0EsVUFBVTtzQkFEaEIsTUFBTTtnQkFHQSxRQUFRO3NCQURkLE1BQU07Z0JBR0EsY0FBYztzQkFEcEIsTUFBTTtnQkFJQSxXQUFXO3NCQURqQixNQUFNO2dCQUdBLGlCQUFpQjtzQkFEdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQgfSBmcm9tICcuL0djQ29tcG9uZW50cyc7XG5pbXBvcnQgeyBHY0lucHV0TWFuQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vR2NJbnB1dE1hbkJhc2UnO1xuaW1wb3J0IHsgR2NOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL0djTnVtYmVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy1tYXNrJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVQYXJlbnQoR2NNYXNrQ29tcG9uZW50KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdjTWFza0NvbXBvbmVudCksXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEdjTWFza0NvbXBvbmVudCBleHRlbmRzIEdjSW5wdXRNYW5CYXNlQ29tcG9uZW50PEdDLklucHV0TWFuLkdjTWFzaz4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICB0aGlzLl9pbUN0cmwudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbmFibGVkID0gIWlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHRoaXMuX2ltQ3RybC5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0c0NybGY6IEdDLklucHV0TWFuLkNyTGZNb2RlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdHNUYWJDaGFyOiBHQy5JbnB1dE1hbi5UYWJDaGFyTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvQ29udmVydDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtYXRQYXR0ZXJuOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvbXB0Q2hhcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dMaXRlcmFsczogR0MuSW5wdXRNYW4uU2hvd0xpdGVyYWxzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYkFjdGlvbjogR0MuSW5wdXRNYW4uVGFiQWN0aW9uO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjbGlwQ29udGVudDogR0MuSW5wdXRNYW4uQ2xpcENvbnRlbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dTcGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwaW5XaGVlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluT25LZXlzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4aXRPbkxhc3RDaGFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZ2hsaWdodFRleHQ6IHN0cmluZyB8IEdDLklucHV0TWFuLkhpZ2hsaWdodFRleHQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd1NwaW5CdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3BpbkJ1dHRvblBvc2l0aW9uOiBHQy5JbnB1dE1hbi5TcGluQnV0dG9uQWxpZ25tZW50O1xuICAgIEBJbnB1dCgpXG4gICAgLy8gRm9yIFYyLjEgQ29tcGF0aWJpbGl0eSwgd2UgaGF2ZSB0byBrZWVwIHRoaXMgcHJvcGVydHkgb3IgZXZlbnRcbiAgICBwdWJsaWMgdmFsdWVJc0Z1bGw6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVGV4dENoYW5naW5nOiBFdmVudEVtaXR0ZXI8e3NlbmRlcjogR0MuSW5wdXRNYW4uR2NNYXNrLCBlQXJnczogYW55fT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uU3BpbkRvd246IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY01hc2s+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblNwaW5VcDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjTWFzaz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NNYXNrPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBGb3IgVjIuMSBDb21wYXRpYmlsaXR5LCB3ZSBoYXZlIHRvIGtlZXAgdGhpcyBwcm9wZXJ0eSBvciBldmVudFxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlSXNGdWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgaW5pdEdjQ29tcG9uZW50KCkge1xuICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlKGlucHV0KTtcbiAgICAgICAgdGhpcy5faW1DdHJsID0gbmV3IEdDLklucHV0TWFuLkdjTWFzayhpbnB1dCwgdGhpcyBhcyBhbnkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBiaW5kRXZlbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5faW1DdHJsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci5iaW5kRXZlbnQoKTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uSW5wdXQoKHMpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVJc0Z1bGxDaGFuZ2UuZW1pdChzLmdldFZhbHVlSXNGdWxsKCkgYXMgYW55KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5vblRleHRDaGFuZ2luZygocywgZSkgPT4geyB0aGlzLm9uVGV4dENoYW5naW5nLmVtaXQoeyBzZW5kZXI6IHMsIGVBcmdzOiBlIH0pIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwub25TcGluRG93bigocykgPT4geyB0aGlzLm9uU3BpbkRvd24uZW1pdChzKSB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uU3BpblVwKChzKSA9PiB7IHRoaXMub25TcGluVXAuZW1pdChzKSB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLm9uVmFsdWVDaGFuZ2VkKChzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQocyk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHMuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHMuZ2V0VmFsdWUoKSBhcyBhbnkpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUlzRnVsbENoYW5nZS5lbWl0KHMuZ2V0VmFsdWVJc0Z1bGwoKSBhcyBhbnkpO1xuICAgICAgICB9KTtcbiAgICB9XG59Il19