@progress/kendo-angular-navigation 19.0.0-develop.1 → 19.0.0-develop.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core';
6
- import { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';
5
+ import { ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild, QueryList, forwardRef } from '@angular/core';
6
+ import { NgIf, NgClass, NgTemplateOutlet, NgFor, NgStyle } from '@angular/common';
7
7
  import { validatePackage } from '@progress/kendo-licensing';
8
8
  import { packageMetadata } from '../package-metadata';
9
9
  import { Subscription } from 'rxjs';
@@ -15,12 +15,14 @@ import { AnimationBuilder } from '@angular/animations';
15
15
  import { slideDown, slideUp } from './animation/animations';
16
16
  import { take } from 'rxjs/operators';
17
17
  import { ActionSheetListComponent } from './list.component';
18
+ import { ButtonDirective } from '@progress/kendo-angular-buttons';
19
+ import { ActionSheetViewComponent } from './actionsheet-view.component';
18
20
  import * as i0 from "@angular/core";
19
21
  import * as i1 from "@progress/kendo-angular-l10n";
20
22
  import * as i2 from "@angular/animations";
21
23
  const DEFAULT_ANIMATION_CONFIG = { duration: 300 };
22
24
  /**
23
- * Represents the [Kendo UI ActionSheet component for Angular]({% slug overview_actionsheet %}).
25
+ * Represents the [Kendo UI ActionSheet component for Angular](slug:overview_actionsheet).
24
26
  * Used to display a set of choices related to a task the user initiates.
25
27
  */
26
28
  export class ActionSheetComponent {
@@ -30,6 +32,10 @@ export class ActionSheetComponent {
30
32
  localizationService;
31
33
  builder;
32
34
  cdr;
35
+ /**
36
+ * @hidden
37
+ */
38
+ currentView = 1;
33
39
  /**
34
40
  * @hidden
35
41
  */
@@ -40,6 +46,24 @@ export class ActionSheetComponent {
40
46
  * @hidden
41
47
  */
42
48
  direction;
49
+ /**
50
+ * Specifies the ActionSheet action buttons.
51
+ */
52
+ actions;
53
+ /**
54
+ * Specifies the layout of the action buttons.
55
+ * By default, the action buttons are rendered horizontally and stretched.
56
+ */
57
+ actionsLayout = {
58
+ orientation: 'horizontal',
59
+ alignment: 'stretched'
60
+ };
61
+ /**
62
+ * Specifies if the ActionSheet is closed on overlay click.
63
+ *
64
+ * @default false
65
+ */
66
+ overlayClickClose = false;
43
67
  /**
44
68
  * Specifies the text that is rendered as title.
45
69
  */
@@ -58,8 +82,13 @@ export class ActionSheetComponent {
58
82
  */
59
83
  cssClass;
60
84
  /**
61
- * Configures the ActionSheet opening and closing animations ([see example]({% slug animations_actionsheet %})).
62
- * By default the animations are turned off. The default animations' duration is `300ms`.
85
+ * The inline styles that will be rendered on the inner ActionSheet element.
86
+ * Supports the type of values that are supported by [ngStyle](link:site.data.urls.angular['ngstyleapi']).
87
+ */
88
+ cssStyle;
89
+ /**
90
+ * Configures the ActionSheet opening and closing animations ([see example](slug:animations_actionsheet)).
91
+ * By default, the animations are turned off. The default animations' duration is `300ms`.
63
92
  *
64
93
  * @default true
65
94
  */
@@ -72,16 +101,26 @@ export class ActionSheetComponent {
72
101
  expanded = false;
73
102
  /**
74
103
  * Sets the `aria-labelledby` attribute of the ActionSheet wrapper element.
75
- * Use this option when the built-in header element is replaced through the [`ActionSheetHeaderTemplate`]({% slug api_navigation_actionsheetheadertemplatedirective %})
76
- * or [`ActionSheetContentTemplate`]({% slug api_navigation_actionsheetcontenttemplatedirective %}).
104
+ * Use this option when the built-in header element is replaced through the [`ActionSheetHeaderTemplate`](slug:api_navigation_actionsheetheadertemplatedirective)
105
+ * or [`ActionSheetContentTemplate`](slug:api_navigation_actionsheetcontenttemplatedirective).
77
106
  *
78
107
  */
79
108
  titleId = getId('k-actionsheet-title');
109
+ /**
110
+ * @hidden
111
+ *
112
+ * Determines if the ActionSheet should focus the first focusable element when opened.
113
+ */
114
+ initialFocus = true;
80
115
  /**
81
116
  * Fires when the `expanded` property of the component is updated.
82
117
  * Used to provide a two-way binding for the `expanded` property.
83
118
  */
84
119
  expandedChange = new EventEmitter();
120
+ /**
121
+ * Fires when any of the ActionSheet action buttons is clicked.
122
+ */
123
+ action = new EventEmitter();
85
124
  /**
86
125
  * Fires when the ActionSheet is expanded and its animation is complete.
87
126
  */
@@ -102,6 +141,10 @@ export class ActionSheetComponent {
102
141
  * @hidden
103
142
  */
104
143
  childContainer;
144
+ /**
145
+ * @hidden
146
+ */
147
+ actionSheetViews;
105
148
  /**
106
149
  * @hidden
107
150
  */
@@ -158,6 +201,24 @@ export class ActionSheetComponent {
158
201
  this.player.destroy();
159
202
  }
160
203
  }
204
+ /**
205
+ * @hidden
206
+ * Navigates to the next view.
207
+ */
208
+ nextView() {
209
+ if (this.currentView < this.actionSheetViews.length) {
210
+ this.currentView += 1;
211
+ }
212
+ }
213
+ /**
214
+ * @hidden
215
+ * Navigates to the previous view.
216
+ */
217
+ prevView() {
218
+ if (this.currentView > 1) {
219
+ this.currentView -= 1;
220
+ }
221
+ }
161
222
  /**
162
223
  * Toggles the visibility of the ActionSheet.
163
224
  *
@@ -184,6 +245,18 @@ export class ActionSheetComponent {
184
245
  this[current ? 'expand' : 'collapse'].emit();
185
246
  }
186
247
  }
248
+ /**
249
+ * @hidden
250
+ */
251
+ get orientationClass() {
252
+ return this.actionsLayout.orientation ? `k-actions-${this.actionsLayout.orientation}` : '';
253
+ }
254
+ /**
255
+ * @hidden
256
+ */
257
+ get alignmentClass() {
258
+ return this.actionsLayout.alignment ? `k-actions-${this.actionsLayout.alignment}` : '';
259
+ }
187
260
  /**
188
261
  * @hidden
189
262
  */
@@ -207,6 +280,9 @@ export class ActionSheetComponent {
207
280
  */
208
281
  onOverlayClick() {
209
282
  this.overlayClick.emit();
283
+ if (this.overlayClickClose) {
284
+ this.toggle(false);
285
+ }
210
286
  }
211
287
  /**
212
288
  * @hidden
@@ -252,7 +328,7 @@ export class ActionSheetComponent {
252
328
  }
253
329
  handleInitialFocus() {
254
330
  const [firstFocusable] = getFirstAndLastFocusable(this.element.nativeElement);
255
- if (firstFocusable) {
331
+ if (firstFocusable && this.initialFocus) {
256
332
  firstFocusable.focus();
257
333
  }
258
334
  }
@@ -311,80 +387,106 @@ export class ActionSheetComponent {
311
387
  this.player.play();
312
388
  }
313
389
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i2.AnimationBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
314
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionSheetComponent, isStandalone: true, selector: "kendo-actionsheet", inputs: { title: "title", subtitle: "subtitle", items: "items", cssClass: "cssClass", animation: "animation", expanded: "expanded", titleId: "titleId" }, outputs: { expandedChange: "expandedChange", expand: "expand", collapse: "collapse", itemClick: "itemClick", overlayClick: "overlayClick" }, host: { properties: { "class.k-actionsheet-container": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
390
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionSheetComponent, isStandalone: true, selector: "kendo-actionsheet", inputs: { actions: "actions", actionsLayout: "actionsLayout", overlayClickClose: "overlayClickClose", title: "title", subtitle: "subtitle", items: "items", cssClass: "cssClass", cssStyle: "cssStyle", animation: "animation", expanded: "expanded", titleId: "titleId", initialFocus: "initialFocus" }, outputs: { expandedChange: "expandedChange", action: "action", expand: "expand", collapse: "collapse", itemClick: "itemClick", overlayClick: "overlayClick" }, host: { properties: { "class.k-actionsheet-container": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
315
391
  LocalizationService,
316
392
  {
317
393
  provide: L10N_PREFIX,
318
394
  useValue: 'kendo.actionsheet.component'
319
395
  }
320
- ], queries: [{ propertyName: "actionSheetTemplate", first: true, predicate: ActionSheetTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ActionSheetHeaderTemplateDirective, descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ActionSheetContentTemplateDirective, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: ActionSheetItemTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ActionSheetFooterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "childContainer", first: true, predicate: ["childContainer"], descendants: true }], exportAs: ["kendoActionSheet"], usesOnChanges: true, ngImport: i0, template: `
396
+ ], queries: [{ propertyName: "actionSheetTemplate", first: true, predicate: ActionSheetTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ActionSheetHeaderTemplateDirective, descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ActionSheetContentTemplateDirective, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: ActionSheetItemTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ActionSheetFooterTemplateDirective, descendants: true }, { propertyName: "actionSheetViews", predicate: i0.forwardRef(function () { return ActionSheetViewComponent; }) }], viewQueries: [{ propertyName: "childContainer", first: true, predicate: ["childContainer"], descendants: true }], exportAs: ["kendoActionSheet"], usesOnChanges: true, ngImport: i0, template: `
321
397
  <ng-container *ngIf="expanded">
322
398
  <div class="k-overlay" (click)="onOverlayClick()"></div>
323
399
  <div class="k-animation-container k-animation-container-shown">
324
400
  <div #childContainer class="k-child-animation-container" [style]="'bottom: 0px; width: 100%;'">
325
- <div class="k-actionsheet k-actionsheet-bottom"
401
+ <div
402
+ class="k-actionsheet k-actionsheet-bottom"
326
403
  [ngClass]="cssClass"
404
+ [ngStyle]="cssStyle"
327
405
  role="dialog"
328
406
  aria-modal="true"
329
- [attr.aria-labelledby]="titleId">
407
+ [attr.aria-labelledby]="titleId"
408
+ [style.--kendo-actionsheet-view-current]="actionSheetViews?.length > 0 ? currentView : null"
409
+ >
410
+ <ng-content *ngIf="actionSheetViews?.length > 0" select="kendo-actionsheet-view"></ng-content>
411
+
412
+ <div *ngIf="actionSheetViews?.length === 0" class="k-actionsheet-view">
413
+ <ng-template *ngIf="actionSheetTemplate; else defaultTemplate"
414
+ [ngTemplateOutlet]="actionSheetTemplate?.templateRef">
415
+ </ng-template>
330
416
 
331
- <ng-template *ngIf="actionSheetTemplate; else defaultTemplate"
332
- [ngTemplateOutlet]="actionSheetTemplate?.templateRef">
333
- </ng-template>
417
+ <ng-template #defaultTemplate>
418
+ <div *ngIf="title || subtitle || headerTemplate" class="k-actionsheet-titlebar">
419
+ <ng-template *ngIf="headerTemplate; else defaultHeaderTemplate"
420
+ [ngTemplateOutlet]="headerTemplate?.templateRef">
421
+ </ng-template>
334
422
 
335
- <ng-template #defaultTemplate>
336
- <div *ngIf="title || subtitle || headerTemplate" class="k-actionsheet-titlebar">
337
- <ng-template *ngIf="headerTemplate; else defaultHeaderTemplate"
338
- [ngTemplateOutlet]="headerTemplate?.templateRef">
339
- </ng-template>
423
+ <ng-template #defaultHeaderTemplate>
424
+ <div class="k-actionsheet-titlebar-group k-hbox">
425
+ <div class="k-actionsheet-title" [id]="titleId">
426
+ <div *ngIf="title" class="k-text-center">{{title}}</div>
427
+ <div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
428
+ </div>
429
+ </div>
430
+ </ng-template>
431
+ </div>
340
432
 
341
- <ng-template #defaultHeaderTemplate>
342
- <div class="k-actionsheet-titlebar-group k-hbox">
343
- <div class="k-actionsheet-title" [id]="titleId">
344
- <div *ngIf="title" class="k-text-center">{{title}}</div>
345
- <div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
433
+ <div *ngIf="items || contentTemplate" class="k-actionsheet-content">
434
+ <ng-template *ngIf="contentTemplate; else defaultContentTemplate"
435
+ [ngTemplateOutlet]="contentTemplate?.templateRef">
436
+ </ng-template>
437
+ <ng-template #defaultContentTemplate>
438
+ <div *ngIf="topGroupItems" kendoActionSheetList
439
+ class="k-list-ul"
440
+ role="group"
441
+ [groupItems]="topGroupItems"
442
+ [allItems]="items"
443
+ [itemTemplate]="itemTemplate?.templateRef"
444
+ (itemClick)="onItemClick($event)">
445
+ </div>
446
+
447
+ <hr *ngIf="shouldRenderSeparator" class="k-hr"/>
448
+
449
+ <div *ngIf="bottomGroupItems" kendoActionSheetList
450
+ class="k-list-ul"
451
+ role="group"
452
+ [groupItems]="bottomGroupItems"
453
+ [allItems]="items"
454
+ [itemTemplate]="itemTemplate?.templateRef"
455
+ (itemClick)="onItemClick($event)">
346
456
  </div>
347
- </div>
348
- </ng-template>
349
- </div>
457
+ </ng-template>
458
+ </div>
459
+ <div *ngIf="footerTemplate || actions" [ngClass]="[orientationClass, alignmentClass, 'k-actions', 'k-actionsheet-footer']">
460
+ <ng-template
461
+ *ngIf="footerTemplate"
462
+ [ngTemplateOutlet]="footerTemplate?.templateRef">
463
+ </ng-template>
350
464
 
351
- <div *ngIf="items || contentTemplate" class="k-actionsheet-content">
352
- <ng-template *ngIf="contentTemplate; else defaultContentTemplate"
353
- [ngTemplateOutlet]="contentTemplate?.templateRef">
354
- </ng-template>
355
- <ng-template #defaultContentTemplate>
356
- <div *ngIf="topGroupItems" kendoActionSheetList
357
- class="k-list-ul"
358
- role="group"
359
- [groupItems]="topGroupItems"
360
- [allItems]="items"
361
- [itemTemplate]="itemTemplate?.templateRef"
362
- (itemClick)="onItemClick($event)">
363
- </div>
364
-
365
- <hr *ngIf="shouldRenderSeparator" class="k-hr"/>
366
-
367
- <div *ngIf="bottomGroupItems" kendoActionSheetList
368
- class="k-list-ul"
369
- role="group"
370
- [groupItems]="bottomGroupItems"
371
- [allItems]="items"
372
- [itemTemplate]="itemTemplate?.templateRef"
373
- (itemClick)="onItemClick($event)">
374
- </div>
375
- </ng-template>
376
- </div>
377
- <div *ngIf="footerTemplate" class="k-actionsheet-footer">
378
- <ng-template
379
- [ngTemplateOutlet]="footerTemplate?.templateRef">
380
- </ng-template>
381
- </div>
382
- </ng-template>
465
+ <ng-container *ngIf="!footerTemplate && actions">
466
+ <button
467
+ *ngFor="let actionButton of actions"
468
+ kendoButton
469
+ type="button"
470
+ [icon]="actionButton.icon"
471
+ [title]="actionButton.title"
472
+ [svgIcon]="actionButton.svgIcon"
473
+ [themeColor]="actionButton.themeColor"
474
+ [fillMode]="actionButton.fillMode"
475
+ [size]="actionButton.size"
476
+ [attr.aria-label]="actionButton.text"
477
+ (click)="action.emit(actionButton)"
478
+ >
479
+ {{ actionButton.text }}
480
+ </button>
481
+ </ng-container>
482
+ </div>
483
+ </ng-template>
484
+ </div>
383
485
  </div>
384
486
  </div>
385
487
  </div>
386
488
  </ng-container>
387
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionSheetListComponent, selector: "[kendoActionSheetList]", inputs: ["groupItems", "allItems", "itemTemplate"], outputs: ["itemClick"] }] });
489
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionSheetListComponent, selector: "[kendoActionSheetList]", inputs: ["groupItems", "allItems", "itemTemplate"], outputs: ["itemClick"] }, { kind: "component", type: ButtonDirective, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
388
490
  }
389
491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetComponent, decorators: [{
390
492
  type: Component,
@@ -396,64 +498,90 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
396
498
  <div class="k-overlay" (click)="onOverlayClick()"></div>
397
499
  <div class="k-animation-container k-animation-container-shown">
398
500
  <div #childContainer class="k-child-animation-container" [style]="'bottom: 0px; width: 100%;'">
399
- <div class="k-actionsheet k-actionsheet-bottom"
501
+ <div
502
+ class="k-actionsheet k-actionsheet-bottom"
400
503
  [ngClass]="cssClass"
504
+ [ngStyle]="cssStyle"
401
505
  role="dialog"
402
506
  aria-modal="true"
403
- [attr.aria-labelledby]="titleId">
507
+ [attr.aria-labelledby]="titleId"
508
+ [style.--kendo-actionsheet-view-current]="actionSheetViews?.length > 0 ? currentView : null"
509
+ >
510
+ <ng-content *ngIf="actionSheetViews?.length > 0" select="kendo-actionsheet-view"></ng-content>
404
511
 
405
- <ng-template *ngIf="actionSheetTemplate; else defaultTemplate"
406
- [ngTemplateOutlet]="actionSheetTemplate?.templateRef">
407
- </ng-template>
512
+ <div *ngIf="actionSheetViews?.length === 0" class="k-actionsheet-view">
513
+ <ng-template *ngIf="actionSheetTemplate; else defaultTemplate"
514
+ [ngTemplateOutlet]="actionSheetTemplate?.templateRef">
515
+ </ng-template>
408
516
 
409
- <ng-template #defaultTemplate>
410
- <div *ngIf="title || subtitle || headerTemplate" class="k-actionsheet-titlebar">
411
- <ng-template *ngIf="headerTemplate; else defaultHeaderTemplate"
412
- [ngTemplateOutlet]="headerTemplate?.templateRef">
413
- </ng-template>
517
+ <ng-template #defaultTemplate>
518
+ <div *ngIf="title || subtitle || headerTemplate" class="k-actionsheet-titlebar">
519
+ <ng-template *ngIf="headerTemplate; else defaultHeaderTemplate"
520
+ [ngTemplateOutlet]="headerTemplate?.templateRef">
521
+ </ng-template>
414
522
 
415
- <ng-template #defaultHeaderTemplate>
416
- <div class="k-actionsheet-titlebar-group k-hbox">
417
- <div class="k-actionsheet-title" [id]="titleId">
418
- <div *ngIf="title" class="k-text-center">{{title}}</div>
419
- <div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
523
+ <ng-template #defaultHeaderTemplate>
524
+ <div class="k-actionsheet-titlebar-group k-hbox">
525
+ <div class="k-actionsheet-title" [id]="titleId">
526
+ <div *ngIf="title" class="k-text-center">{{title}}</div>
527
+ <div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
528
+ </div>
529
+ </div>
530
+ </ng-template>
531
+ </div>
532
+
533
+ <div *ngIf="items || contentTemplate" class="k-actionsheet-content">
534
+ <ng-template *ngIf="contentTemplate; else defaultContentTemplate"
535
+ [ngTemplateOutlet]="contentTemplate?.templateRef">
536
+ </ng-template>
537
+ <ng-template #defaultContentTemplate>
538
+ <div *ngIf="topGroupItems" kendoActionSheetList
539
+ class="k-list-ul"
540
+ role="group"
541
+ [groupItems]="topGroupItems"
542
+ [allItems]="items"
543
+ [itemTemplate]="itemTemplate?.templateRef"
544
+ (itemClick)="onItemClick($event)">
545
+ </div>
546
+
547
+ <hr *ngIf="shouldRenderSeparator" class="k-hr"/>
548
+
549
+ <div *ngIf="bottomGroupItems" kendoActionSheetList
550
+ class="k-list-ul"
551
+ role="group"
552
+ [groupItems]="bottomGroupItems"
553
+ [allItems]="items"
554
+ [itemTemplate]="itemTemplate?.templateRef"
555
+ (itemClick)="onItemClick($event)">
420
556
  </div>
421
- </div>
422
- </ng-template>
423
- </div>
557
+ </ng-template>
558
+ </div>
559
+ <div *ngIf="footerTemplate || actions" [ngClass]="[orientationClass, alignmentClass, 'k-actions', 'k-actionsheet-footer']">
560
+ <ng-template
561
+ *ngIf="footerTemplate"
562
+ [ngTemplateOutlet]="footerTemplate?.templateRef">
563
+ </ng-template>
424
564
 
425
- <div *ngIf="items || contentTemplate" class="k-actionsheet-content">
426
- <ng-template *ngIf="contentTemplate; else defaultContentTemplate"
427
- [ngTemplateOutlet]="contentTemplate?.templateRef">
428
- </ng-template>
429
- <ng-template #defaultContentTemplate>
430
- <div *ngIf="topGroupItems" kendoActionSheetList
431
- class="k-list-ul"
432
- role="group"
433
- [groupItems]="topGroupItems"
434
- [allItems]="items"
435
- [itemTemplate]="itemTemplate?.templateRef"
436
- (itemClick)="onItemClick($event)">
437
- </div>
438
-
439
- <hr *ngIf="shouldRenderSeparator" class="k-hr"/>
440
-
441
- <div *ngIf="bottomGroupItems" kendoActionSheetList
442
- class="k-list-ul"
443
- role="group"
444
- [groupItems]="bottomGroupItems"
445
- [allItems]="items"
446
- [itemTemplate]="itemTemplate?.templateRef"
447
- (itemClick)="onItemClick($event)">
448
- </div>
449
- </ng-template>
450
- </div>
451
- <div *ngIf="footerTemplate" class="k-actionsheet-footer">
452
- <ng-template
453
- [ngTemplateOutlet]="footerTemplate?.templateRef">
454
- </ng-template>
455
- </div>
456
- </ng-template>
565
+ <ng-container *ngIf="!footerTemplate && actions">
566
+ <button
567
+ *ngFor="let actionButton of actions"
568
+ kendoButton
569
+ type="button"
570
+ [icon]="actionButton.icon"
571
+ [title]="actionButton.title"
572
+ [svgIcon]="actionButton.svgIcon"
573
+ [themeColor]="actionButton.themeColor"
574
+ [fillMode]="actionButton.fillMode"
575
+ [size]="actionButton.size"
576
+ [attr.aria-label]="actionButton.text"
577
+ (click)="action.emit(actionButton)"
578
+ >
579
+ {{ actionButton.text }}
580
+ </button>
581
+ </ng-container>
582
+ </div>
583
+ </ng-template>
584
+ </div>
457
585
  </div>
458
586
  </div>
459
587
  </div>
@@ -467,7 +595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
467
595
  }
468
596
  ],
469
597
  standalone: true,
470
- imports: [NgIf, NgClass, NgTemplateOutlet, ActionSheetListComponent]
598
+ imports: [NgIf, NgFor, NgStyle, NgClass, NgTemplateOutlet, ActionSheetListComponent, ButtonDirective]
471
599
  }]
472
600
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i2.AnimationBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
473
601
  type: HostBinding,
@@ -475,6 +603,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
475
603
  }], direction: [{
476
604
  type: HostBinding,
477
605
  args: ['attr.dir']
606
+ }], actions: [{
607
+ type: Input
608
+ }], actionsLayout: [{
609
+ type: Input
610
+ }], overlayClickClose: [{
611
+ type: Input
478
612
  }], title: [{
479
613
  type: Input
480
614
  }], subtitle: [{
@@ -483,14 +617,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
483
617
  type: Input
484
618
  }], cssClass: [{
485
619
  type: Input
620
+ }], cssStyle: [{
621
+ type: Input
486
622
  }], animation: [{
487
623
  type: Input
488
624
  }], expanded: [{
489
625
  type: Input
490
626
  }], titleId: [{
491
627
  type: Input
628
+ }], initialFocus: [{
629
+ type: Input
492
630
  }], expandedChange: [{
493
631
  type: Output
632
+ }], action: [{
633
+ type: Output
494
634
  }], expand: [{
495
635
  type: Output
496
636
  }], collapse: [{
@@ -502,6 +642,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
502
642
  }], childContainer: [{
503
643
  type: ViewChild,
504
644
  args: ['childContainer']
645
+ }], actionSheetViews: [{
646
+ type: ContentChildren,
647
+ args: [forwardRef(() => ActionSheetViewComponent)]
505
648
  }], actionSheetTemplate: [{
506
649
  type: ContentChild,
507
650
  args: [ActionSheetTemplateDirective]
@@ -0,0 +1,5 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export {};
@@ -0,0 +1,5 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export {};
@@ -7,11 +7,12 @@ import { IconsService } from '@progress/kendo-angular-icons';
7
7
  import { KENDO_ACTIONSHEET } from './directives';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./actionsheet/actionsheet.component";
10
- import * as i2 from "./actionsheet/templates/header-template.directive";
11
- import * as i3 from "./actionsheet/templates/item-template.directive";
12
- import * as i4 from "./actionsheet/templates/content-template.directive";
13
- import * as i5 from "./actionsheet/templates/footer-template.directive";
14
- import * as i6 from "./actionsheet/templates/actionsheet-template";
10
+ import * as i2 from "./actionsheet/actionsheet-view.component";
11
+ import * as i3 from "./actionsheet/templates/header-template.directive";
12
+ import * as i4 from "./actionsheet/templates/item-template.directive";
13
+ import * as i5 from "./actionsheet/templates/content-template.directive";
14
+ import * as i6 from "./actionsheet/templates/footer-template.directive";
15
+ import * as i7 from "./actionsheet/templates/actionsheet-template";
15
16
  // IMPORTANT: NgModule export kept for backwards compatibility
16
17
  /**
17
18
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -47,7 +48,7 @@ import * as i6 from "./actionsheet/templates/actionsheet-template";
47
48
  */
48
49
  export class ActionSheetModule {
49
50
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
50
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetModule, imports: [i1.ActionSheetComponent, i2.ActionSheetHeaderTemplateDirective, i3.ActionSheetItemTemplateDirective, i4.ActionSheetContentTemplateDirective, i5.ActionSheetFooterTemplateDirective, i6.ActionSheetTemplateDirective], exports: [i1.ActionSheetComponent, i2.ActionSheetHeaderTemplateDirective, i3.ActionSheetItemTemplateDirective, i4.ActionSheetContentTemplateDirective, i5.ActionSheetFooterTemplateDirective, i6.ActionSheetTemplateDirective] });
51
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetModule, imports: [i1.ActionSheetComponent, i2.ActionSheetViewComponent, i3.ActionSheetHeaderTemplateDirective, i4.ActionSheetItemTemplateDirective, i5.ActionSheetContentTemplateDirective, i6.ActionSheetFooterTemplateDirective, i7.ActionSheetTemplateDirective], exports: [i1.ActionSheetComponent, i2.ActionSheetViewComponent, i3.ActionSheetHeaderTemplateDirective, i4.ActionSheetItemTemplateDirective, i5.ActionSheetContentTemplateDirective, i6.ActionSheetFooterTemplateDirective, i7.ActionSheetTemplateDirective] });
51
52
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetModule, providers: [IconsService], imports: [i1.ActionSheetComponent] });
52
53
  }
53
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionSheetModule, decorators: [{
@@ -2,6 +2,7 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
+ import { ActionSheetViewComponent } from "./actionsheet/actionsheet-view.component";
5
6
  import { ActionSheetComponent } from "./actionsheet/actionsheet.component";
6
7
  import { ActionSheetContentTemplateDirective, ActionSheetFooterTemplateDirective, ActionSheetHeaderTemplateDirective, ActionSheetItemTemplateDirective, ActionSheetTemplateDirective } from "./actionsheet/models";
7
8
  import { AppBarSectionComponent } from "./appbar/appbar-section.component";
@@ -16,6 +17,7 @@ import { BreadCrumbItemTemplateDirective } from "./breadcrumb/template-directive
16
17
  */
17
18
  export const KENDO_ACTIONSHEET = [
18
19
  ActionSheetComponent,
20
+ ActionSheetViewComponent,
19
21
  ActionSheetHeaderTemplateDirective,
20
22
  ActionSheetItemTemplateDirective,
21
23
  ActionSheetContentTemplateDirective,
package/esm2022/index.mjs CHANGED
@@ -21,6 +21,7 @@ export { BreadCrumbItemComponent } from './breadcrumb/breadcrumb-item.component'
21
21
  export { BreadCrumbListComponent } from './breadcrumb/list.component';
22
22
  //ActionSheet exports
23
23
  export { ActionSheetComponent } from './actionsheet/actionsheet.component';
24
+ export { ActionSheetViewComponent } from './actionsheet/actionsheet-view.component';
24
25
  export { ActionSheetItemClickEvent, ActionSheetHeaderTemplateDirective, ActionSheetItemTemplateDirective, ActionSheetContentTemplateDirective, ActionSheetFooterTemplateDirective, ActionSheetTemplateDirective } from './actionsheet/models';
25
26
  export { ActionSheetModule } from './actionsheet.module';
26
27
  export * from './directives';