UNPKG

@progress/kendo-angular-buttons

Version:
168 lines (167 loc) 8.37 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { validatePackage } from '@progress/kendo-licensing'; import { packageMetadata } from '../package-metadata'; import { ButtonItemTemplateDirective } from './button-item-template.directive'; import { SIZES } from '../util'; import { IconWrapperComponent } from '@progress/kendo-angular-icons'; import { FocusableDirective } from '../focusable/focusable.directive'; import { NgClass, NgFor, NgIf } from '@angular/common'; import { TemplateContextDirective } from '@progress/kendo-angular-common'; import * as i0 from "@angular/core"; /** * @hidden */ export class ListComponent { data; textField; itemTemplate; onItemClick = new EventEmitter(); onItemBlur = new EventEmitter(); set size(size) { if (size) { this.sizeClass = `k-menu-group-${SIZES[size]}`; } else { this.sizeClass = ''; } } sizeClass = ''; constructor() { validatePackage(packageMetadata); } getText(dataItem) { if (dataItem) { return this.textField ? dataItem[this.textField] : dataItem.text || dataItem; } return undefined; } getIconClasses(dataItem) { const icon = dataItem.icon ? 'k-icon k-i-' + dataItem.icon : undefined; const classes = {}; classes[icon || dataItem.iconClass] = true; return classes; } onClick(index) { this.onItemClick.emit(index); } onBlur() { this.onItemBlur.emit(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListComponent, isStandalone: true, selector: "kendo-button-list", inputs: { data: "data", textField: "textField", itemTemplate: "itemTemplate", size: "size" }, outputs: { onItemClick: "onItemClick", onItemBlur: "onItemBlur" }, ngImport: i0, template: ` <ul class="k-group k-menu-group k-reset" role="list" [ngClass]="sizeClass"> <li kendoButtonFocusable *ngFor="let dataItem of data; let index = index;" [index]="index" tabindex="-1" class="k-item k-menu-item" role="listitem" [attr.aria-disabled]="dataItem.disabled ? true : false" (click)="$event.stopImmediatePropagation(); onClick(index);" (blur)="onBlur()"> <ng-template [ngIf]="itemTemplate?.templateRef"> <span class="k-link k-menu-link" [class.k-disabled]="dataItem.disabled" [ngClass]="dataItem.cssClass"> <ng-template [templateContext]="{ templateRef: itemTemplate?.templateRef, $implicit: dataItem }" ></ng-template> </span> </ng-template> <ng-template [ngIf]="!itemTemplate?.templateRef"> <span class="k-link k-menu-link" [class.k-disabled]="dataItem.disabled" [ngClass]="dataItem.cssClass"> <kendo-icon-wrapper *ngIf="dataItem.icon || dataItem.iconClass || dataItem.svgIcon" [name]="dataItem.icon" [svgIcon]="dataItem.svgIcon" [customFontClass]="dataItem.iconClass" ></kendo-icon-wrapper> <img *ngIf="dataItem.imageUrl" class="k-image" [src]="dataItem.imageUrl" [alt]="dataItem.imageAlt" > <span *ngIf="getText(dataItem)" class="k-menu-link-text"> {{ getText(dataItem) }} </span> </span> </ng-template> </li> </ul> `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: FocusableDirective, selector: "[kendoButtonFocusable]", inputs: ["index"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, decorators: [{ type: Component, args: [{ selector: 'kendo-button-list', template: ` <ul class="k-group k-menu-group k-reset" role="list" [ngClass]="sizeClass"> <li kendoButtonFocusable *ngFor="let dataItem of data; let index = index;" [index]="index" tabindex="-1" class="k-item k-menu-item" role="listitem" [attr.aria-disabled]="dataItem.disabled ? true : false" (click)="$event.stopImmediatePropagation(); onClick(index);" (blur)="onBlur()"> <ng-template [ngIf]="itemTemplate?.templateRef"> <span class="k-link k-menu-link" [class.k-disabled]="dataItem.disabled" [ngClass]="dataItem.cssClass"> <ng-template [templateContext]="{ templateRef: itemTemplate?.templateRef, $implicit: dataItem }" ></ng-template> </span> </ng-template> <ng-template [ngIf]="!itemTemplate?.templateRef"> <span class="k-link k-menu-link" [class.k-disabled]="dataItem.disabled" [ngClass]="dataItem.cssClass"> <kendo-icon-wrapper *ngIf="dataItem.icon || dataItem.iconClass || dataItem.svgIcon" [name]="dataItem.icon" [svgIcon]="dataItem.svgIcon" [customFontClass]="dataItem.iconClass" ></kendo-icon-wrapper> <img *ngIf="dataItem.imageUrl" class="k-image" [src]="dataItem.imageUrl" [alt]="dataItem.imageAlt" > <span *ngIf="getText(dataItem)" class="k-menu-link-text"> {{ getText(dataItem) }} </span> </span> </ng-template> </li> </ul> `, standalone: true, imports: [NgClass, NgFor, FocusableDirective, NgIf, TemplateContextDirective, IconWrapperComponent] }] }], ctorParameters: function () { return []; }, propDecorators: { data: [{ type: Input }], textField: [{ type: Input }], itemTemplate: [{ type: Input }], onItemClick: [{ type: Output }], onItemBlur: [{ type: Output }], size: [{ type: Input }] } });