UNPKG

design-angular-kit

Version:

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

136 lines 15.4 kB
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core'; import { NgClass } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { IT_ASSET_BASE_PATH } from '../../../interfaces/design-angular-kit-config'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; export class ItChipComponent { /** * Indica la label */ set label(value) { this._label = value; } get label() { return this._label; } /** * Indica se mostrate il pulante di chisura */ set showCloseButton(value) { this._showCloseButton = value; } get showCloseButton() { return this._showCloseButton; } /** * Indica il size */ set size(value) { this._size = value; } get size() { return this._size; } /** * Indica il colore della chip */ set color(value) { this._color = value; } get color() { return this._color; } /** * Indica se la chip è disabilitata */ set disabled(value) { this._disabled = value; } get disabled() { return this._disabled; } /** * Indica il nome dell'icona, se valorizzata viene mostrata */ set icon(value) { this._icon = value; } get icon() { return this._icon; } /** * Indica l'url dell'avatar, se valorizzata viene mostrata */ set avatar(value) { this._avatar = value; } get avatar() { return this._avatar; } /** * Indica il valore da aggiungere al parametro alt, di default '' */ set altAvatar(value) { this._altAvatar = value; } get altAvatar() { return this._altAvatar; } /** * Return the icon href */ get iconHref() { return `${this.assetBasePath}/dist/svg/sprites.svg#it-${this._icon}`; } /** * Return the close icon href */ get iconCloseHref() { return `${this.assetBasePath}/dist/svg/sprites.svg#it-${this.iconClose}`; } constructor() { this._label = ''; this._showCloseButton = false; this._size = ''; this._color = undefined; this._disabled = false; this._icon = undefined; this._avatar = undefined; this._altAvatar = ''; /** * Evento emesso al click sul bottone di chiusura */ this.closeEvent = new EventEmitter(); this.iconClose = 'close'; this.assetBasePath = inject(IT_ASSET_BASE_PATH); } clickToClose() { this.closeEvent.emit(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItChipComponent, isStandalone: true, selector: "it-chip", inputs: { label: "label", showCloseButton: "showCloseButton", size: "size", color: "color", disabled: "disabled", icon: "icon", avatar: "avatar", altAvatar: "altAvatar" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<div\n class=\"chip\"\n [ngClass]=\"[\n !showCloseButton ? 'chip-simple' : 'alert',\n size === 'lg' ? 'chip-lg' : '',\n color ? 'chip-' + color : '',\n disabled ? 'chip-disabled' : '',\n ]\">\n @if (icon) {\n <svg class=\"icon icon-xs\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n </svg>\n }\n @if (avatar) {\n <div class=\"avatar size-xs\"><img [src]=\"avatar\" [alt]=\"altAvatar\" /></div>\n }\n <span class=\"chip-label\">{{ label }}</span>\n @if (showCloseButton) {\n <button (click)=\"clickToClose()\" [disabled]=\"disabled\">\n <svg class=\"icon\">\n <use [attr.href]=\"iconCloseHref\" [attr.xlink:href]=\"iconCloseHref\"></use>\n </svg>\n <span class=\"visually-hidden\">{{ 'it.core.remove' | translate }} {{ label }}</span>\n </button>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItChipComponent, decorators: [{ type: Component, args: [{ standalone: true, selector: 'it-chip', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, TranslateModule], template: "<div\n class=\"chip\"\n [ngClass]=\"[\n !showCloseButton ? 'chip-simple' : 'alert',\n size === 'lg' ? 'chip-lg' : '',\n color ? 'chip-' + color : '',\n disabled ? 'chip-disabled' : '',\n ]\">\n @if (icon) {\n <svg class=\"icon icon-xs\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n </svg>\n }\n @if (avatar) {\n <div class=\"avatar size-xs\"><img [src]=\"avatar\" [alt]=\"altAvatar\" /></div>\n }\n <span class=\"chip-label\">{{ label }}</span>\n @if (showCloseButton) {\n <button (click)=\"clickToClose()\" [disabled]=\"disabled\">\n <svg class=\"icon\">\n <use [attr.href]=\"iconCloseHref\" [attr.xlink:href]=\"iconCloseHref\"></use>\n </svg>\n <span class=\"visually-hidden\">{{ 'it.core.remove' | translate }} {{ label }}</span>\n </button>\n }\n</div>\n" }] }], ctorParameters: () => [], propDecorators: { label: [{ type: Input }], showCloseButton: [{ type: Input }], size: [{ type: Input }], color: [{ type: Input }], disabled: [{ type: Input }], icon: [{ type: Input }], avatar: [{ type: Input }], altAvatar: [{ type: Input }], closeEvent: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvY2hpcC9jaGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9jaGlwL2NoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBU25GLE1BQU0sT0FBTyxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFJRDs7T0FFRztJQUNILElBQWEsZUFBZSxDQUFDLEtBQWM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFJRDs7T0FFRztJQUNILElBQWEsSUFBSSxDQUFDLEtBQWdCO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENB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bmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9pY29uJztcbmltcG9ydCB7IENoaXBDb2xvciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSVRfQVNTRVRfQkFTRV9QQVRIIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9kZXNpZ24tYW5ndWxhci1raXQtY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtY2hpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGlwLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBUcmFuc2xhdGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBJdENoaXBDb21wb25lbnQge1xuICAvKipcbiAgICogSW5kaWNhIGxhIGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIF9sYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmRpY2Egc2UgbW9zdHJhdGUgaWwgcHVsYW50ZSBkaSBjaGlzdXJhXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd0Nsb3NlQnV0dG9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0Nsb3NlQnV0dG9uID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0Nsb3NlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93Q2xvc2VCdXR0b247XG4gIH1cblxuICBwcml2YXRlIF9zaG93Q2xvc2VCdXR0b24gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhIGlsIHNpemVcbiAgICovXG4gIEBJbnB1dCgpIHNldCBzaXplKHZhbHVlOiAnJyB8ICdsZycpIHtcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2l6ZSgpOiAnJyB8ICdsZycge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2l6ZTogJycgfCAnbGcnID0gJyc7XG5cbiAgLyoqXG4gICAqIEluZGljYSBpbCBjb2xvcmUgZGVsbGEgY2hpcFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGNvbG9yKHZhbHVlOiBDaGlwQ29sb3IgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbG9yKCk6IENoaXBDb2xvciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29sb3I6IENoaXBDb2xvciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhIHNlIGxhIGNoaXAgw6ggZGlzYWJpbGl0YXRhXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYSBpbCBub21lIGRlbGwnaWNvbmEsIHNlIHZhbG9yaXp6YXRhIHZpZW5lIG1vc3RyYXRhXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaWNvbih2YWx1ZTogSWNvbk5hbWUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9pY29uID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cblxuICBwcml2YXRlIF9pY29uOiBJY29uTmFtZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhIGwndXJsIGRlbGwnYXZhdGFyLCBzZSB2YWxvcml6emF0YSB2aWVuZSBtb3N0cmF0YVxuICAgKi9cbiAgQElucHV0KCkgc2V0IGF2YXRhcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYXZhdGFyID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYXZhdGFyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2F2YXRhcjtcbiAgfVxuXG4gIHByaXZhdGUgX2F2YXRhcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2EgaWwgdmFsb3JlIGRhIGFnZ2l1bmdlcmUgYWwgcGFyYW1ldHJvIGFsdCwgZGkgZGVmYXVsdCAnJ1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGFsdEF2YXRhcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYWx0QXZhdGFyID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYWx0QXZhdGFyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FsdEF2YXRhcjtcbiAgfVxuXG4gIHByaXZhdGUgX2FsdEF2YXRhcjogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBlbWVzc28gYWwgY2xpY2sgc3VsIGJvdHRvbmUgZGkgY2hpdXN1cmFcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGljb24gaHJlZlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBpY29uSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmFzc2V0QmFzZVBhdGh9L2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LSR7dGhpcy5faWNvbn1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpY29uQ2xvc2U6IEljb25OYW1lID0gJ2Nsb3NlJztcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBjbG9zZSBpY29uIGhyZWZcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaWNvbkNsb3NlSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmFzc2V0QmFzZVBhdGh9L2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LSR7dGhpcy5pY29uQ2xvc2V9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYm9vdHN0cmFwLWl0YWxpYSBhc3NldCBmb2xkZXIgcGF0aFxuICAgKiBAZGVmYXVsdCAuL2Jvb3RzdHJhcC1pdGFsaWFcbiAgICovXG4gIHByb3RlY3RlZCBhc3NldEJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hc3NldEJhc2VQYXRoID0gaW5qZWN0KElUX0FTU0VUX0JBU0VfUEFUSCk7XG4gIH1cblxuICBjbGlja1RvQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNoaXBcIlxuICBbbmdDbGFzc109XCJbXG4gICAgIXNob3dDbG9zZUJ1dHRvbiA/ICdjaGlwLXNpbXBsZScgOiAnYWxlcnQnLFxuICAgIHNpemUgPT09ICdsZycgPyAnY2hpcC1sZycgOiAnJyxcbiAgICBjb2xvciA/ICdjaGlwLScgKyBjb2xvciA6ICcnLFxuICAgIGRpc2FibGVkID8gJ2NoaXAtZGlzYWJsZWQnIDogJycsXG4gIF1cIj5cbiAgQGlmIChpY29uKSB7XG4gICAgPHN2ZyBjbGFzcz1cImljb24gaWNvbi14c1wiPlxuICAgICAgPHVzZSBbYXR0ci5ocmVmXT1cImljb25IcmVmXCIgW2F0dHIueGxpbms6aHJlZl09XCJpY29uSHJlZlwiPjwvdXNlPlxuICAgIDwvc3ZnPlxuICB9XG4gIEBpZiAoYXZhdGFyKSB7XG4gICAgPGRpdiBjbGFzcz1cImF2YXRhciBzaXplLXhzXCI+PGltZyBbc3JjXT1cImF2YXRhclwiIFthbHRdPVwiYWx0QXZhdGFyXCIgLz48L2Rpdj5cbiAgfVxuICA8c3BhbiBjbGFzcz1cImNoaXAtbGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgQGlmIChzaG93Q2xvc2VCdXR0b24pIHtcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGlja1RvQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgPHN2ZyBjbGFzcz1cImljb25cIj5cbiAgICAgICAgPHVzZSBbYXR0ci5ocmVmXT1cImljb25DbG9zZUhyZWZcIiBbYXR0ci54bGluazpocmVmXT1cImljb25DbG9zZUhyZWZcIj48L3VzZT5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQuY29yZS5yZW1vdmUnIHwgdHJhbnNsYXRlIH19IHt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cbiJdfQ==