UNPKG

@progress/kendo-angular-listview

Version:

Kendo UI Angular listview component

98 lines (97 loc) 5.21 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, HostListener, ElementRef, Renderer2 as Renderer, NgZone } from '@angular/core'; import { Button } from '@progress/kendo-angular-buttons'; import { LocalizationService } from '@progress/kendo-angular-l10n'; import { EditService } from '../edit.service'; import { getClosestListItemIndex } from '../../utils'; import { NgIf, NgClass } from '@angular/common'; import { IconWrapperComponent } from '@progress/kendo-angular-icons'; import * as i0 from "@angular/core"; import * as i1 from "../edit.service"; import * as i2 from "@progress/kendo-angular-l10n"; /** * Represents the save command button directive of the Kendo UI ListView for Angular. * Provides the `save` command of the ListView. You can apply this directive to any `button` * element inside a [`EditTemplateDirective`]({% slug api_listview_edittemplatedirective %}) template. * When you click an associated button with the directive, the * [`save`]({% slug api_listview_listviewcomponent %}#toc-save) event * triggers ([see example]({% slug editing_listview %})). * * @example * ```html * <kendo-listview> * <ng-template kendoListViewEditTemplate> * <button kendoListViewSaveCommand>Save changes</button> * </ng-template> * </kendo-listview> * ``` * * You can control the content of the button based on the state of the item. * * @example * ```html * <kendo-listview> * <ng-template kendoListViewEditTemplate let-isNew="isNew"> * <button kendoListViewSaveCommand>{{isNew ? 'Add' : 'Update'}}</button> * </ng-template> * </kendo-listview> * ``` */ export class SaveCommandDirective extends Button { editService; elementRef; /** * @hidden */ clickHandler(e) { e.preventDefault(); const index = getClosestListItemIndex(this.elementRef.nativeElement); if (this.editService.isEdited(index)) { this.editService.save(index); } } constructor(editService, element, renderer, localization, ngZone) { super(element, renderer, null, localization, ngZone); this.editService = editService; this.elementRef = element; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SaveCommandDirective, deps: [{ token: i1.EditService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SaveCommandDirective, isStandalone: true, selector: "[kendoListViewSaveCommand]", host: { listeners: { "click": "clickHandler($event)" } }, usesInheritance: true, ngImport: i0, template: ` <kendo-icon-wrapper *ngIf="icon || svgIcon" innerCssClass="k-button-icon" [name]="icon" [svgIcon]="svgIcon"></kendo-icon-wrapper> <span *ngIf="imageUrl" class="k-button-icon k-icon"> <img [src]="imageUrl" class="k-image" role="presentation" /> </span> <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span> <span class="k-button-text"><ng-content></ng-content></span> `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SaveCommandDirective, decorators: [{ type: Component, args: [{ selector: '[kendoListViewSaveCommand]', template: ` <kendo-icon-wrapper *ngIf="icon || svgIcon" innerCssClass="k-button-icon" [name]="icon" [svgIcon]="svgIcon"></kendo-icon-wrapper> <span *ngIf="imageUrl" class="k-button-icon k-icon"> <img [src]="imageUrl" class="k-image" role="presentation" /> </span> <span *ngIf="iconClass" class="k-button-icon" [ngClass]="iconClass"></span> <span class="k-button-text"><ng-content></ng-content></span> `, standalone: true, imports: [NgIf, IconWrapperComponent, NgClass] }] }], ctorParameters: function () { return [{ type: i1.EditService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { clickHandler: [{ type: HostListener, args: ['click', ['$event']] }] } });