UNPKG

@grapecity/inputman.angular

Version:

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

112 lines 15.4 kB
import { ElementRef, Input, Output, forwardRef, EventEmitter, Component } from '@angular/core'; import { MethodType, getMethodPrefix, IMCtrl, isEmpty } from '../common'; import * as i0 from "@angular/core"; export function provideParent(component) { return { provide: GcComponents, useExisting: forwardRef(() => component) }; } export class GcComponents { constructor(ref) { this.onInitialized = new EventEmitter(); this._container = ref.nativeElement; } ngOnChanges(changes) { if (!this._imCtrl) { return; } Object.keys(changes).forEach((key) => { var currentValue = changes[key].currentValue; this.setValueToIMControl(key, currentValue); }); } setValueToIMControl(key, value) { if (value === undefined) { return; } if (this.isSetAccessor(key)) { this._imCtrl[key] = value; return; } var setter = this.tryGetPropertyOperator(key, MethodType.setter); if (this.hasRealMethod(setter)) { if (this.propDic && this.propDic[key] && this.propDic[key].isPramArr === true) { this._imCtrl[setter].apply(this._imCtrl, value); } else { this._imCtrl[setter](value); } } } isSetAccessor(key, prototype = Object.getPrototypeOf(this._imCtrl)) { let descriptor = Object.getOwnPropertyDescriptor(prototype, key); if (descriptor && descriptor.set) { return true; } else { prototype = Object.getPrototypeOf(prototype); if (prototype) { return this.isSetAccessor(key, prototype); } } return false; } ngOnDestroy() { if (this._container != null) { if ((this._imCtrl).destroy) { (this._imCtrl).destroy(); } this._container.remove(); } } ngAfterContentInit() { this.initGcComponent(); if (typeof this._imCtrl === 'object') { this.onInitialized.emit(this._imCtrl); } this.bindEvent(); if (this.propDic) { var unSupportWithinConfigProps = Object.keys(this.propDic).filter(p => this.propDic[p] && this.propDic[p].supportWithinConfig === false); unSupportWithinConfigProps.sort((p1, p2) => { return this.propDic[p1].order - this.propDic[p2].order; }); unSupportWithinConfigProps.forEach(p => { this.setValueToIMControl(p, this[p]); }); } this._container[IMCtrl] = this._imCtrl; } tryGetPropertyOperator(propertyName, methodType) { var method = ""; if (this.propDic && this.propDic[propertyName]) { method = methodType === MethodType.getter ? this.propDic[propertyName].getter : this.propDic[propertyName].setter; if (!isEmpty(method)) { return method; } } return getMethodPrefix(methodType) + propertyName[0].toUpperCase() + propertyName.slice(1); } hasRealMethod(methodName) { return this._imCtrl && typeof this._imCtrl[methodName] === "function"; } getNestedIMControl() { return this._imCtrl; } createTemplate(element) { this._container.appendChild(element); if (element && this.name) { element.setAttribute('name', this.name); } } } GcComponents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComponents, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); GcComponents.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcComponents, selector: "ng-component", inputs: { name: "name" }, outputs: { onInitialized: "onInitialized" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComponents, decorators: [{ type: Component, args: [{ template: '' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { name: [{ type: Input }], onInitialized: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NDb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9HY0NvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQyxVQUFVLEVBQWlCLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDbEssT0FBTyxFQUFzQixVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRTdGLE1BQU0sVUFBVSxhQUFhLENBQUMsU0FBYztJQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDL0UsQ0FBQztBQUtELE1BQU0sT0FBZ0IsWUFBWTtJQUs5QixZQUFZLEdBQWU7UUErR3BCLGtCQUFhLEdBQW9CLElBQUksWUFBWSxFQUFFLENBQUM7UUE5R3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN6QyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDakQsSUFBSSxLQUFLLEtBQUssU0FBUyxF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QUFJLEVBQUU7WUFDdEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO0lBQ0wsQ0FBQzs7MEdBOUdpQixZQUFZOzhGQUFaLFlBQVksZ0pBRnBCLEVBQUU7NEZBRU0sWUFBWTtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsRUFBRTtpQkFDZjtpR0FrSFUsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgRWxlbWVudFJlZiwgU2ltcGxlQ2hhbmdlcywgSW5wdXQsIE91dHB1dCwgZm9yd2FyZFJlZiwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3BlcnR5RGljdGlvbmFyeSwgTWV0aG9kVHlwZSwgZ2V0TWV0aG9kUHJlZml4LCBJTUN0cmwsIGlzRW1wdHkgfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVBhcmVudChjb21wb25lbnQ6IGFueSkge1xuICAgIHJldHVybiB7IHByb3ZpZGU6IEdjQ29tcG9uZW50cywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gY29tcG9uZW50KSB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2NDb21wb25lbnRzPFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByb3RlY3RlZCBfY29udGFpbmVyOiBFbGVtZW50O1xuICAgIHByb3RlY3RlZCBfaW1DdHJsOiBUO1xuICAgIHByb3RlY3RlZCBwcm9wRGljOiBQcm9wZXJ0eURpY3Rpb25hcnk7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gcmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVUb0lNQ29udHJvbChrZXksIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRWYWx1ZVRvSU1Db250cm9sKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NldEFjY2Vzc29yKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2ltQ3RybFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2V0dGVyID0gdGhpcy50cnlHZXRQcm9wZXJ0eU9wZXJhdG9yKGtleSwgTWV0aG9kVHlwZS5zZXR0ZXIpO1xuICAgICAgICBpZiAodGhpcy5oYXNSZWFsTWV0aG9kKHNldHRlcikpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BEaWMgJiYgdGhpcy5wcm9wRGljW2tleV0gJiYgdGhpcy5wcm9wRGljW2tleV0uaXNQcmFtQXJyID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW1DdHJsW3NldHRlcl0uYXBwbHkodGhpcy5faW1DdHJsLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ltQ3RybFtzZXR0ZXJdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNTZXRBY2Nlc3NvcihrZXk6IHN0cmluZywgcHJvdG90eXBlOiBPYmplY3QgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5faW1DdHJsKSkge1xuXG4gICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90b3R5cGUsIGtleSk7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3Iuc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgICAgICAgICAgaWYgKHByb3RvdHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzU2V0QWNjZXNzb3Ioa2V5LCBwcm90b3R5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmKHRoaXMuX2NvbnRhaW5lciAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZigoKHRoaXMuX2ltQ3RybCkgYXMgYW55KS5kZXN0cm95KXtcbiAgICAgICAgICAgICAgICAoKHRoaXMuX2ltQ3RybCkgYXMgYW55KS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRHY0NvbXBvbmVudCgpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2ltQ3RybCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMub25Jbml0aWFsaXplZC5lbWl0KHRoaXMuX2ltQ3RybCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kRXZlbnQoKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcERpYykge1xuICAgICAgICAgICAgdmFyIHVuU3VwcG9ydFdpdGhpbkNvbmZpZ1Byb3BzID0gT2JqZWN0LmtleXModGhpcy5wcm9wRGljKS5maWx0ZXIocCA9PiB0aGlzLnByb3BEaWNbcF0gJiYgdGhpcy5wcm9wRGljW3BdLnN1cHBvcnRXaXRoaW5Db25maWcgPT09IGZhbHNlKTtcbiAgICAgICAgICAgIHVuU3VwcG9ydFdpdGhpbkNvbmZpZ1Byb3BzLnNvcnQoKHAxLCBwMikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BEaWNbcDFdLm9yZGVyIC0gdGhpcy5wcm9wRGljW3AyXS5vcmRlcjtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB1blN1cHBvcnRXaXRoaW5Db25maWdQcm9wcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVUb0lNQ29udHJvbChwLCB0aGlzW3BdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lcltJTUN0cmxdID0gdGhpcy5faW1DdHJsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0R2NDb21wb25lbnQoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBiaW5kRXZlbnQoKTogdm9pZDtcblxuICAgIHByaXZhdGUgdHJ5R2V0UHJvcGVydHlPcGVyYXRvcihwcm9wZXJ0eU5hbWU6IHN0cmluZywgbWV0aG9kVHlwZTogTWV0aG9kVHlwZSk6IHN0cmluZyB7XG4gICAgICAgIHZhciBtZXRob2Q6IHN0cmluZyA9IFwiXCI7XG4gICAgICAgIGlmICh0aGlzLnByb3BEaWMgJiYgdGhpcy5wcm9wRGljW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZFR5cGUgPT09IE1ldGhvZFR5cGUuZ2V0dGVyID8gdGhpcy5wcm9wRGljW3Byb3BlcnR5TmFtZV0uZ2V0dGVyIDogdGhpcy5wcm9wRGljW3Byb3BlcnR5TmFtZV0uc2V0dGVyO1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KG1ldGhvZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRNZXRob2RQcmVmaXgobWV0aG9kVHlwZSkgKyBwcm9wZXJ0eU5hbWVbMF0udG9VcHBlckNhc2UoKSArIHByb3BlcnR5TmFtZS5zbGljZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1JlYWxNZXRob2QobWV0aG9kTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbUN0cmwgJiYgdHlwZW9mIHRoaXMuX2ltQ3RybFttZXRob2ROYW1lXSA9PT0gXCJmdW5jdGlvblwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROZXN0ZWRJTUNvbnRyb2woKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbUN0cmw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRlbXBsYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsIHRoaXMubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25Jbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xufSJdfQ==