design-angular-kit
Version:
Un toolkit Angular conforme alle linee guida di design per i servizi web della PA
46 lines • 6.16 kB
JavaScript
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