UNPKG

design-angular-kit

Version:

Un toolkit Angular conforme alle linee guida di design per i servizi web della PA

46 lines 6.16 kB
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, Renderer2, } from '@angular/core'; import * as i0 from "@angular/core"; export class ItAbstractComponent { /** * Counter of active instances * @private */ static { this.instances = 0; } constructor() { /** * The element ID */ this.id = this.getDefaultId(); this._renderer = inject(Renderer2); this._elementRef = inject(ElementRef); this._changeDetectorRef = inject(ChangeDetectorRef); this.valueChanges = new EventEmitter(); } ngAfterViewInit() { this._renderer.removeAttribute(this._elementRef.nativeElement, 'id'); } // eslint-disable-next-line @typescript-eslint/no-unused-vars ngOnChanges(changes) { this.valueChanges.next(); // The inputs were changed } /** * Generate unique id for components * @private */ getDefaultId() { const name = this.constructor.name.replace('Component', ''); const kebabName = name.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase()); return `${kebabName}-${ItAbstractComponent.instances++}`; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItAbstractComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: ItAbstractComponent, selector: "ng-component", inputs: { id: "id" }, outputs: { valueChanges: "valueChanges" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItAbstractComponent, decorators: [{ type: Component, args: [{ template: '' }] }], ctorParameters: () => [], propDecorators: { id: [{ type: Input }], valueChanges: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQzs7QUFHdkIsTUFBTSxPQUFnQixtQkFBbUI7SUFXdkM7OztPQUdHO2FBQ1ksY0FBUyxHQUFHLENBQUMsQUFBSixDQUFLO0lBTTdCO1FBcEJBOztXQUVHO1FBQ00sT0FBRSxHQUFXLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQWtCeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQywwQkFBMEI7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekcsT0FBTyxHQUFHLFNBQVMsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBQzNELENBQUM7OEdBOUNtQixtQkFBbUI7a0dBQW5CLG1CQUFtQiwwSUFEbEIsRUFBRTs7MkZBQ0gsbUJBQW1CO2tCQUR4QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTt3REFLaEIsRUFBRTtzQkFBVixLQUFLO2dCQUtXLFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSXRBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCBJRFxuICAgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IHRoaXMuZ2V0RGVmYXVsdElkKCk7XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gY29tcG9uZW50IGlucHV0IGF0dHJpYnV0ZXMgd2FzIGNoYW5nZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2VzOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgLyoqXG4gICAqIENvdW50ZXIgb2YgYWN0aXZlIGluc3RhbmNlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VzID0gMDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjI7IC8vIEluamVjdGVkXG4gIHByb3RlY3RlZCByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjsgLy8gSW5qZWN0ZWRcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7IC8vIEluamVjdGVkXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICB0aGlzLl9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHRoaXMudmFsdWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpZCcpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXMubmV4dCgpOyAvLyBUaGUgaW5wdXRzIHdlcmUgY2hhbmdlZFxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHVuaXF1ZSBpZCBmb3IgY29tcG9uZW50c1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXREZWZhdWx0SWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLnJlcGxhY2UoJ0NvbXBvbmVudCcsICcnKTtcbiAgICBjb25zdCBrZWJhYk5hbWUgPSBuYW1lLnJlcGxhY2UoL1tBLVpdKyg/IVthLXpdKXxbQS1aXS9nLCAoJCwgb2ZzKSA9PiAob2ZzID8gJy0nIDogJycpICsgJC50b0xvd2VyQ2FzZSgpKTtcbiAgICByZXR1cm4gYCR7a2ViYWJOYW1lfS0ke0l0QWJzdHJhY3RDb21wb25lbnQuaW5zdGFuY2VzKyt9YDtcbiAgfVxufVxuIl19