@progress/kendo-angular-layout 21.4.1 → 22.0.0-develop.1

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.
Files changed (182) hide show
  1. package/avatar/l10n/messages.d.ts +1 -1
  2. package/fesm2022/progress-kendo-angular-layout.mjs +290 -290
  3. package/package.json +12 -20
  4. package/stepper/localization/messages.d.ts +1 -1
  5. package/tabstrip/localization/messages.d.ts +1 -1
  6. package/timeline/localization/messages.d.ts +1 -1
  7. package/esm2022/avatar/avatar.component.mjs +0 -406
  8. package/esm2022/avatar/l10n/custom-messages.component.mjs +0 -53
  9. package/esm2022/avatar/l10n/localized-messages.directive.mjs +0 -40
  10. package/esm2022/avatar/l10n/messages.mjs +0 -27
  11. package/esm2022/avatar/models/fill.mjs +0 -5
  12. package/esm2022/avatar/models/models.mjs +0 -9
  13. package/esm2022/avatar/models/rounded.mjs +0 -5
  14. package/esm2022/avatar/models/shape.mjs +0 -5
  15. package/esm2022/avatar/models/size.mjs +0 -5
  16. package/esm2022/avatar/models/theme-color.mjs +0 -5
  17. package/esm2022/avatar.module.mjs +0 -38
  18. package/esm2022/card/card-actions.component.mjs +0 -177
  19. package/esm2022/card/card-body.component.mjs +0 -37
  20. package/esm2022/card/card-footer.component.mjs +0 -37
  21. package/esm2022/card/card-header.component.mjs +0 -38
  22. package/esm2022/card/card.component.mjs +0 -118
  23. package/esm2022/card/directives/card-media.directive.mjs +0 -33
  24. package/esm2022/card/directives/card-separator.directive.mjs +0 -61
  25. package/esm2022/card/directives/card-subtitle.directive.mjs +0 -31
  26. package/esm2022/card/directives/card-title.directive.mjs +0 -31
  27. package/esm2022/card/models/actions-layout.mjs +0 -5
  28. package/esm2022/card/models/card-action.mjs +0 -21
  29. package/esm2022/card.module.mjs +0 -45
  30. package/esm2022/common/direction.mjs +0 -5
  31. package/esm2022/common/dom-queries.mjs +0 -47
  32. package/esm2022/common/orientation.mjs +0 -5
  33. package/esm2022/common/preventable-event.mjs +0 -31
  34. package/esm2022/common/styling-classes.mjs +0 -5
  35. package/esm2022/common/util.mjs +0 -85
  36. package/esm2022/directives.mjs +0 -174
  37. package/esm2022/drawer/animations.mjs +0 -146
  38. package/esm2022/drawer/drawer-container.component.mjs +0 -135
  39. package/esm2022/drawer/drawer-content.component.mjs +0 -39
  40. package/esm2022/drawer/drawer.component.mjs +0 -471
  41. package/esm2022/drawer/drawer.service.mjs +0 -105
  42. package/esm2022/drawer/events/drawer-list-select.event.mjs +0 -29
  43. package/esm2022/drawer/events/select-event.mjs +0 -33
  44. package/esm2022/drawer/item.component.mjs +0 -210
  45. package/esm2022/drawer/list.component.mjs +0 -165
  46. package/esm2022/drawer/models/constants.mjs +0 -8
  47. package/esm2022/drawer/models/drawer-animation.interface.mjs +0 -5
  48. package/esm2022/drawer/models/drawer-item-expand.interface.mjs +0 -5
  49. package/esm2022/drawer/models/drawer-item.interface.mjs +0 -5
  50. package/esm2022/drawer/models/drawer-view-item.interface.mjs +0 -5
  51. package/esm2022/drawer/models/mode.mjs +0 -5
  52. package/esm2022/drawer/models/position.mjs +0 -5
  53. package/esm2022/drawer/template-directives/drawer-template.directive.mjs +0 -43
  54. package/esm2022/drawer/template-directives/footer-template.directive.mjs +0 -36
  55. package/esm2022/drawer/template-directives/header-template.directive.mjs +0 -36
  56. package/esm2022/drawer/template-directives/item-template.directive.mjs +0 -44
  57. package/esm2022/drawer/template-directives.mjs +0 -8
  58. package/esm2022/drawer/types.mjs +0 -5
  59. package/esm2022/drawer/util.mjs +0 -16
  60. package/esm2022/drawer.module.mjs +0 -43
  61. package/esm2022/expansionpanel/animations.mjs +0 -23
  62. package/esm2022/expansionpanel/events/action-event.mjs +0 -21
  63. package/esm2022/expansionpanel/expansionpanel-title.directive.mjs +0 -38
  64. package/esm2022/expansionpanel/expansionpanel.component.mjs +0 -515
  65. package/esm2022/expansionpanel.module.mjs +0 -38
  66. package/esm2022/gridlayout.module.mjs +0 -38
  67. package/esm2022/index.mjs +0 -89
  68. package/esm2022/layout.module.mjs +0 -89
  69. package/esm2022/layouts/grid-layout.component.mjs +0 -179
  70. package/esm2022/layouts/gridlayout-item.component.mjs +0 -82
  71. package/esm2022/layouts/models/gridlayout-gap-settings.mjs +0 -5
  72. package/esm2022/layouts/models/gridlayout-row-col-size.mjs +0 -5
  73. package/esm2022/layouts/models/layout-align-settings.mjs +0 -5
  74. package/esm2022/layouts/models/layout-horizontal-align.mjs +0 -5
  75. package/esm2022/layouts/models/layout-vertical-align.mjs +0 -5
  76. package/esm2022/layouts/models.mjs +0 -10
  77. package/esm2022/layouts/stack-layout.component.mjs +0 -161
  78. package/esm2022/layouts/util.mjs +0 -101
  79. package/esm2022/package-metadata.mjs +0 -16
  80. package/esm2022/panelbar/events/collapse-event.mjs +0 -14
  81. package/esm2022/panelbar/events/expand-event.mjs +0 -14
  82. package/esm2022/panelbar/events/item-click-event.mjs +0 -17
  83. package/esm2022/panelbar/events/select-event.mjs +0 -14
  84. package/esm2022/panelbar/events/state-change-event.mjs +0 -13
  85. package/esm2022/panelbar/events.mjs +0 -9
  86. package/esm2022/panelbar/panelbar-content.directive.mjs +0 -36
  87. package/esm2022/panelbar/panelbar-expand-mode.mjs +0 -29
  88. package/esm2022/panelbar/panelbar-item-model.mjs +0 -5
  89. package/esm2022/panelbar/panelbar-item-template.directive.mjs +0 -37
  90. package/esm2022/panelbar/panelbar-item-title.directive.mjs +0 -42
  91. package/esm2022/panelbar/panelbar-item.component.mjs +0 -722
  92. package/esm2022/panelbar/panelbar.component.mjs +0 -705
  93. package/esm2022/panelbar/panelbar.service.mjs +0 -53
  94. package/esm2022/panelbar.module.mjs +0 -41
  95. package/esm2022/progress-kendo-angular-layout.mjs +0 -8
  96. package/esm2022/splitter/splitter-bar.component.mjs +0 -338
  97. package/esm2022/splitter/splitter-pane.component.mjs +0 -324
  98. package/esm2022/splitter/splitter.component.mjs +0 -301
  99. package/esm2022/splitter/splitter.service.mjs +0 -205
  100. package/esm2022/splitter/util.mjs +0 -34
  101. package/esm2022/splitter.module.mjs +0 -38
  102. package/esm2022/stacklayout.module.mjs +0 -37
  103. package/esm2022/stepper/events/activate-event.mjs +0 -33
  104. package/esm2022/stepper/list.component.mjs +0 -185
  105. package/esm2022/stepper/localization/custom-messages.component.mjs +0 -52
  106. package/esm2022/stepper/localization/localized-messages.directive.mjs +0 -41
  107. package/esm2022/stepper/localization/messages.mjs +0 -27
  108. package/esm2022/stepper/models/constants.mjs +0 -8
  109. package/esm2022/stepper/models/orientation.mjs +0 -5
  110. package/esm2022/stepper/models/step-predicate.mjs +0 -5
  111. package/esm2022/stepper/models/step-type.mjs +0 -5
  112. package/esm2022/stepper/models/stepper-step.interface.mjs +0 -5
  113. package/esm2022/stepper/step.component.mjs +0 -396
  114. package/esm2022/stepper/stepper.component.mjs +0 -423
  115. package/esm2022/stepper/stepper.service.mjs +0 -186
  116. package/esm2022/stepper/template-directives/indicator-template.directive.mjs +0 -37
  117. package/esm2022/stepper/template-directives/label-template.directive.mjs +0 -37
  118. package/esm2022/stepper/template-directives/step-template.directive.mjs +0 -39
  119. package/esm2022/stepper/template-directives.mjs +0 -7
  120. package/esm2022/stepper/types.mjs +0 -5
  121. package/esm2022/stepper.module.mjs +0 -41
  122. package/esm2022/tabstrip/constants.mjs +0 -29
  123. package/esm2022/tabstrip/directives/tab-content.directive.mjs +0 -39
  124. package/esm2022/tabstrip/directives/tab-title.directive.mjs +0 -37
  125. package/esm2022/tabstrip/directives/tab.directive.mjs +0 -24
  126. package/esm2022/tabstrip/events/select-event.mjs +0 -25
  127. package/esm2022/tabstrip/events/tabclose-event.mjs +0 -23
  128. package/esm2022/tabstrip/events/tabscroll-event.mjs +0 -23
  129. package/esm2022/tabstrip/events.mjs +0 -7
  130. package/esm2022/tabstrip/localization/custom-messages.component.mjs +0 -53
  131. package/esm2022/tabstrip/localization/localized-messages.directive.mjs +0 -39
  132. package/esm2022/tabstrip/localization/messages.mjs +0 -39
  133. package/esm2022/tabstrip/models/button-state-change.mjs +0 -5
  134. package/esm2022/tabstrip/models/scroll-button-type.mjs +0 -5
  135. package/esm2022/tabstrip/models/scroll-buttons-visibility.mjs +0 -5
  136. package/esm2022/tabstrip/models/scrollable-settings.mjs +0 -23
  137. package/esm2022/tabstrip/models/size.mjs +0 -5
  138. package/esm2022/tabstrip/models/tab-alignment.mjs +0 -5
  139. package/esm2022/tabstrip/models/tab-position.mjs +0 -5
  140. package/esm2022/tabstrip/models/tabstrip-tab.component.mjs +0 -130
  141. package/esm2022/tabstrip/rendering/tab.component.mjs +0 -182
  142. package/esm2022/tabstrip/scrollable-button.component.mjs +0 -182
  143. package/esm2022/tabstrip/tabstrip-scroll.service.mjs +0 -176
  144. package/esm2022/tabstrip/tabstrip.component.mjs +0 -954
  145. package/esm2022/tabstrip/tabstrip.service.mjs +0 -155
  146. package/esm2022/tabstrip/util.mjs +0 -120
  147. package/esm2022/tabstrip.module.mjs +0 -41
  148. package/esm2022/tilelayout/constants.mjs +0 -70
  149. package/esm2022/tilelayout/dragging-service.mjs +0 -421
  150. package/esm2022/tilelayout/keyboard-navigation.service.mjs +0 -189
  151. package/esm2022/tilelayout/models/dragging-config.interface.mjs +0 -5
  152. package/esm2022/tilelayout/models/flowmode.type.mjs +0 -5
  153. package/esm2022/tilelayout/models/gap.interface.mjs +0 -5
  154. package/esm2022/tilelayout/models/navigation.interface.mjs +0 -5
  155. package/esm2022/tilelayout/reorder-event.mjs +0 -43
  156. package/esm2022/tilelayout/resize-event.mjs +0 -37
  157. package/esm2022/tilelayout/tilelayout-item-body.component.mjs +0 -45
  158. package/esm2022/tilelayout/tilelayout-item-header.component.mjs +0 -43
  159. package/esm2022/tilelayout/tilelayout-item.component.mjs +0 -322
  160. package/esm2022/tilelayout/tilelayout-resize-handle.directive.mjs +0 -61
  161. package/esm2022/tilelayout/tilelayout.component.mjs +0 -388
  162. package/esm2022/tilelayout/util.mjs +0 -138
  163. package/esm2022/tilelayout.module.mjs +0 -40
  164. package/esm2022/timeline/events/navigation-direction.mjs +0 -5
  165. package/esm2022/timeline/localization/custom-messages.component.mjs +0 -43
  166. package/esm2022/timeline/localization/localized-messages.directive.mjs +0 -39
  167. package/esm2022/timeline/localization/messages.mjs +0 -33
  168. package/esm2022/timeline/models/anchor-target.mjs +0 -5
  169. package/esm2022/timeline/models/default-model-fields.mjs +0 -16
  170. package/esm2022/timeline/models/events-order.mjs +0 -5
  171. package/esm2022/timeline/models/model-fields.mjs +0 -5
  172. package/esm2022/timeline/models/timeline-event.mjs +0 -5
  173. package/esm2022/timeline/templates/timeline-card-actions.directive.mjs +0 -40
  174. package/esm2022/timeline/templates/timeline-card-body.directive.mjs +0 -40
  175. package/esm2022/timeline/templates/timeline-card-header.directive.mjs +0 -41
  176. package/esm2022/timeline/timeline-card.component.mjs +0 -451
  177. package/esm2022/timeline/timeline-horizontal.component.mjs +0 -781
  178. package/esm2022/timeline/timeline-vertical.component.mjs +0 -203
  179. package/esm2022/timeline/timeline.component.mjs +0 -491
  180. package/esm2022/timeline/timeline.service.mjs +0 -32
  181. package/esm2022/timeline/util.mjs +0 -26
  182. package/esm2022/timeline.module.mjs +0 -41
@@ -1,33 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Directive, Input } from '@angular/core';
6
- import { ComponentMessages } from '@progress/kendo-angular-l10n';
7
- import * as i0 from "@angular/core";
8
- /**
9
- * @hidden
10
- */
11
- export class TimelineMessages extends ComponentMessages {
12
- /**
13
- * The title of the previous button in horizontal orientation.
14
- */
15
- previous;
16
- /**
17
- * The title of the next button in horizontal orientation.
18
- */
19
- next;
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TimelineMessages, selector: "kendo-timeline-messages-base", inputs: { previous: "previous", next: "next" }, usesInheritance: true, ngImport: i0 });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineMessages, decorators: [{
24
- type: Directive,
25
- args: [{
26
- // eslint-disable-next-line @angular-eslint/directive-selector
27
- selector: 'kendo-timeline-messages-base'
28
- }]
29
- }], propDecorators: { previous: [{
30
- type: Input
31
- }], next: [{
32
- type: Input
33
- }] } });
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,16 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- /**
6
- * @hidden
7
- */
8
- export const defaultModelFields = {
9
- title: 'title',
10
- subtitle: 'subtitle',
11
- description: 'description',
12
- date: 'date',
13
- expanded: 'expanded',
14
- images: 'images',
15
- actions: 'actions',
16
- };
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,40 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Directive, Optional, TemplateRef } from '@angular/core';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Specifies the actions of each timeline card. To define an actions template, nest an `<ng-template>` tag
9
- * with the `kendoTimelineCardActionsTemplate` directive inside the `<kendo-timeline>` tag.
10
- *
11
- * The following values are available as context variables:
12
- * - `let-event="event"` (`TimelineEvent`)&mdash;The current card's event. Also available as implicit context variable.
13
- * - `let-index="index"` (`number`)&mdash;The current event index.
14
- *
15
- * @example
16
- * ```html
17
- * <kendo-timeline [events]="events">
18
- * <ng-template kendoTimelineCardActionsTemplate let-event let-index="index">
19
- * Content for the actions of the card with index {{ index }} and event {{ event.title }}.
20
- * </ng-template>
21
- * </kendo-timeline>
22
- * ```
23
- */
24
- export class TimelineCardActionsTemplateDirective {
25
- templateRef;
26
- constructor(templateRef) {
27
- this.templateRef = templateRef;
28
- }
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardActionsTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
30
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TimelineCardActionsTemplateDirective, isStandalone: true, selector: "[kendoTimelineCardActionsTemplate]", ngImport: i0 });
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardActionsTemplateDirective, decorators: [{
33
- type: Directive,
34
- args: [{
35
- selector: '[kendoTimelineCardActionsTemplate]',
36
- standalone: true
37
- }]
38
- }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
39
- type: Optional
40
- }] }] });
@@ -1,40 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Directive, Optional, TemplateRef } from '@angular/core';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Specifies the body of each timeline card. To define a body template, nest an `<ng-template>` tag
9
- * with the `kendoTimelineCardBodyTemplate` directive inside the `<kendo-timeline>` tag.
10
- *
11
- * The following values are available as context variables:
12
- * - `let-event="event"` (`TimelineEvent`)&mdash;The current card's event. Also available as implicit context variable.
13
- * - `let-index="index"` (`number`)&mdash;The current event index.
14
- *
15
- * @example
16
- * ```html
17
- * <kendo-timeline [events]="events">
18
- * <ng-template kendoTimelineCardBodyTemplate let-event let-index="index">
19
- * Component for the body of the card with index {{ index }} and event {{ event.title }}.
20
- * </ng-template>
21
- * </kendo-timeline>
22
- * ```
23
- */
24
- export class TimelineCardBodyTemplateDirective {
25
- templateRef;
26
- constructor(templateRef) {
27
- this.templateRef = templateRef;
28
- }
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardBodyTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
30
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TimelineCardBodyTemplateDirective, isStandalone: true, selector: "[kendoTimelineCardBodyTemplate]", ngImport: i0 });
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardBodyTemplateDirective, decorators: [{
33
- type: Directive,
34
- args: [{
35
- selector: '[kendoTimelineCardBodyTemplate]',
36
- standalone: true
37
- }]
38
- }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
39
- type: Optional
40
- }] }] });
@@ -1,41 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Directive, Optional, TemplateRef } from '@angular/core';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Specifies the header of each timeline card. To define a header template, nest an `<ng-template>` tag
9
- * with the `kendoTimelineCardHeaderTemplate` directive inside the `<kendo-timeline>` tag.
10
- *
11
- * The following values are available as context variables:
12
- * - `let-event="event"` (`TimelineEvent`)&mdash;The current card's event. Also available as implicit context variable.
13
- * - `let-index="index"` (`number`)&mdash;The current event index.
14
- *
15
- * @example
16
- * ```html
17
- * <kendo-timeline [events]="events">
18
- * <ng-template kendoTimelineCardHeaderTemplate let-event let-index="index">
19
- * <span class="k-event-title">Title: {{ event.title }}</span>
20
- * <div kendoCardSubtitle>Event number {{ index }}</div>
21
- * </ng-template>
22
- * </kendo-timeline>
23
- * ```
24
- */
25
- export class TimelineCardHeaderTemplateDirective {
26
- templateRef;
27
- constructor(templateRef) {
28
- this.templateRef = templateRef;
29
- }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
31
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TimelineCardHeaderTemplateDirective, isStandalone: true, selector: "[kendoTimelineCardHeaderTemplate]", ngImport: i0 });
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardHeaderTemplateDirective, decorators: [{
34
- type: Directive,
35
- args: [{
36
- selector: '[kendoTimelineCardHeaderTemplate]',
37
- standalone: true
38
- }]
39
- }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
40
- type: Optional
41
- }] }] });
@@ -1,451 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, ElementRef, HostBinding, HostListener, Input, Renderer2, ViewChild } from '@angular/core';
6
- import { chevronRightIcon } from '@progress/kendo-svg-icons';
7
- import { Keys, isChanged } from '@progress/kendo-angular-common';
8
- import { animate, state, style, transition, trigger } from '@angular/animations';
9
- import { TimelineService } from './timeline.service';
10
- import { TimelineCardHeaderTemplateDirective } from './templates/timeline-card-header.directive';
11
- import { TimelineCardBodyTemplateDirective } from './templates/timeline-card-body.directive';
12
- import { TimelineCardActionsTemplateDirective } from './templates/timeline-card-actions.directive';
13
- import { CardActionsComponent } from '../card/card-actions.component';
14
- import { CardMediaDirective } from '../card/directives/card-media.directive';
15
- import { CardBodyComponent } from '../card/card-body.component';
16
- import { CardSubtitleDirective } from '../card/directives/card-subtitle.directive';
17
- import { ButtonComponent } from '@progress/kendo-angular-buttons';
18
- import { CardTitleDirective } from '../card/directives/card-title.directive';
19
- import { CardHeaderComponent } from '../card/card-header.component';
20
- import { NgStyle, NgClass, NgTemplateOutlet } from '@angular/common';
21
- import { CardComponent } from '../card/card.component';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "./timeline.service";
24
- /**
25
- * @hidden
26
- */
27
- export class TimelineCardComponent {
28
- element;
29
- timelineService;
30
- renderer;
31
- event;
32
- expanded = false;
33
- collapsible = true;
34
- reversed = false;
35
- orientation;
36
- navigable;
37
- tabIndex;
38
- animationDuration;
39
- index;
40
- eventWidth;
41
- eventHeight;
42
- headerTemplate;
43
- bodyTemplate;
44
- actionsTemplate;
45
- set calloutStyle(value) {
46
- // applies only to horizontal orientation where the callout points upwards
47
- if (!this.calloutElementRef || !this.calloutElementRef.nativeElement.classList.contains('k-callout-n')) {
48
- return;
49
- }
50
- this.calloutElementRef.nativeElement.style.left = value?.left;
51
- }
52
- calloutElementRef;
53
- hostClass = true;
54
- get collapsedClass() {
55
- return !this.expanded && !this.animationInProgress && this.animationState === 'collapsed';
56
- }
57
- onComponentKeyDown(event) {
58
- if (!this.navigable) {
59
- return;
60
- }
61
- if (event.code === Keys.Space || event.code === Keys.Enter || event.code === Keys.NumpadEnter) {
62
- event.preventDefault();
63
- if (this.collapsible && this.orientation === 'vertical') {
64
- this.expanded = !this.expanded;
65
- }
66
- }
67
- }
68
- get role() {
69
- return this.orientation === 'vertical' ? 'button' : 'tabpanel';
70
- }
71
- get ariaLive() {
72
- return this.orientation === 'vertical' ? 'polite' : null;
73
- }
74
- get ariaExpanded() {
75
- return this.orientation === 'vertical' ? this.expanded : null;
76
- }
77
- calloutSvgIcon = chevronRightIcon;
78
- calloutFontIcon = 'arrow-chevron-right';
79
- animationState = this.expanded ? 'expanded' : 'collapsed';
80
- animationInProgress = false;
81
- constructor(element, timelineService, renderer) {
82
- this.element = element;
83
- this.timelineService = timelineService;
84
- this.renderer = renderer;
85
- }
86
- ngAfterViewInit() {
87
- this.makeOverflowVisible();
88
- }
89
- ngOnChanges(changes) {
90
- if (isChanged('collapsible', changes, false)) {
91
- if (!this.collapsible) {
92
- this.expanded = true;
93
- }
94
- }
95
- }
96
- toggle() {
97
- if (this.orientation === 'vertical') {
98
- this.expanded = this.collapsible ? !this.expanded : true;
99
- this.timelineService.onToggle(this.index);
100
- }
101
- }
102
- expand() {
103
- if (!this.expanded) {
104
- this.expanded = true;
105
- this.timelineService.onToggle(this.index);
106
- }
107
- }
108
- collapse() {
109
- if (!this.collapsible || !this.expanded) {
110
- return;
111
- }
112
- this.expanded = false;
113
- this.timelineService.onToggle(this.index);
114
- }
115
- onActionClick(event) {
116
- event.stopPropagation();
117
- this.timelineService.onActionClick(this.index);
118
- }
119
- animationStart() {
120
- this.animationInProgress = true;
121
- }
122
- animationDone(event) {
123
- this.animationInProgress = false;
124
- if (event.toState === 'expanded' && event.fromState !== 'expanded') {
125
- this.animationState = 'expanded';
126
- this.makeOverflowVisible();
127
- }
128
- else if (event.toState === 'collapsed' && event.fromState !== 'collapsed') {
129
- this.animationState = 'collapsed';
130
- }
131
- }
132
- makeOverflowVisible() {
133
- if (this.orientation === 'vertical') {
134
- return;
135
- }
136
- const cardBody = this.element?.nativeElement.querySelector('.k-card-body');
137
- if (cardBody) {
138
- this.renderer.setStyle(cardBody, 'overflow', 'auto');
139
- }
140
- }
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardComponent, deps: [{ token: i0.ElementRef }, { token: i1.TimelineService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TimelineCardComponent, isStandalone: true, selector: "kendo-timeline-card", inputs: { event: "event", expanded: "expanded", collapsible: "collapsible", reversed: "reversed", orientation: "orientation", navigable: "navigable", tabIndex: "tabIndex", animationDuration: "animationDuration", index: "index", eventWidth: "eventWidth", eventHeight: "eventHeight", headerTemplate: "headerTemplate", bodyTemplate: "bodyTemplate", actionsTemplate: "actionsTemplate", calloutStyle: "calloutStyle" }, host: { listeners: { "keydown": "onComponentKeyDown($event)" }, properties: { "class.k-timeline-card": "this.hostClass", "class.k-collapsed": "this.collapsedClass" } }, providers: [], viewQueries: [{ propertyName: "calloutElementRef", first: true, predicate: ["callout"], descendants: true }], exportAs: ["kendoTimelineCard"], usesOnChanges: true, ngImport: i0, template: `
143
- <kendo-card
144
- [ngStyle]="{ 'height': orientation === 'horizontal' ? eventHeight + 'px' : null }"
145
- [width]="orientation === 'horizontal' ? 'auto' : eventWidth + 'px'"
146
- class="k-card-with-callout k-card-vertical"
147
- (click)="toggle()"
148
- [attr.role]="role"
149
- [attr.aria-live]="ariaLive"
150
- [attr.aria-expanded]="ariaExpanded"
151
- [attr.tabindex]="tabIndex"
152
- >
153
- <span
154
- #callout
155
- class="k-timeline-card-callout k-card-callout"
156
- [ngClass]="{
157
- 'k-callout-n': orientation === 'horizontal',
158
- 'k-callout-w': orientation === 'vertical' && !this.reversed,
159
- 'k-callout-e': orientation === 'vertical' && this.reversed
160
- }"
161
- >
162
- </span>
163
- @if (event) {
164
- <div class="k-card-inner">
165
- <kendo-card-header>
166
- @if (headerTemplate) {
167
- <ng-template
168
- [ngTemplateOutlet]="headerTemplate?.templateRef"
169
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
170
- >
171
- </ng-template>
172
- }
173
- @if (!headerTemplate) {
174
- <div kendoCardTitle>
175
- <span class="k-event-title">{{ event.title }}</span>
176
- @if (collapsible && orientation === 'vertical') {
177
- <button
178
- kendoButton
179
- [icon]="calloutFontIcon"
180
- [svgIcon]="calloutSvgIcon"
181
- class="k-event-collapse"
182
- fillMode="flat"
183
- [attr.aria-hidden]="true"
184
- tabindex="-1"
185
- type="button"
186
- ></button>
187
- }
188
- </div>
189
- }
190
- @if (!headerTemplate) {
191
- <div kendoCardSubtitle >{{ event.subtitle }}</div>
192
- }
193
- </kendo-card-header>
194
- @if (event.description || event.images) {
195
- <kendo-card-body
196
- [@toggle]="{value: expanded ? 'expanded' : 'collapsed', params: {animationDuration: this.animationDuration || 0}}"
197
- (@toggle.start)="animationStart()"
198
- (@toggle.done)="animationDone($event)"
199
- >
200
- @if (bodyTemplate) {
201
- <ng-template
202
- [ngTemplateOutlet]="bodyTemplate?.templateRef"
203
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
204
- >
205
- </ng-template>
206
- }
207
- @if (!bodyTemplate) {
208
- <div class="k-card-description">
209
- @if (event.description) {
210
- <p>{{ event.description }}</p>
211
- }
212
- @for (image of event.images; track image) {
213
- @if (image.alt) {
214
- <img kendoCardMedia [src]="image.src" [alt]="image.alt" />
215
- }
216
- @if (!image.alt) {
217
- <img kendoCardMedia [src]="image.src" />
218
- }
219
- }
220
- </div>
221
- }
222
- </kendo-card-body>
223
- }
224
- @if (event.actions) {
225
- <kendo-card-actions
226
- [@toggle]="{value: expanded ? 'expanded' : 'collapsed', params: {animationDuration: this.animationDuration || 0}}"
227
- >
228
- @if (actionsTemplate) {
229
- <ng-template
230
- [ngTemplateOutlet]="actionsTemplate?.templateRef"
231
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
232
- >
233
- </ng-template>
234
- }
235
- @if (!actionsTemplate) {
236
- @for (action of event.actions; track action) {
237
- <a
238
- [href]="action.url"
239
- [target]="action.target === 'blank' ? '_blank' : '_self'"
240
- (click)="onActionClick($event)"
241
- class="k-button k-button-md k-rounded-md k-button-flat k-button-flat-primary"
242
- role="button"
243
- >
244
- {{ action.text }}
245
- </a>
246
- }
247
- }
248
- </kendo-card-actions>
249
- }
250
- </div>
251
- }
252
- </kendo-card>
253
- `, isInline: true, dependencies: [{ kind: "component", type: CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CardHeaderComponent, selector: "kendo-card-header" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CardTitleDirective, selector: "[kendoCardTitle]" }, { kind: "component", type: ButtonComponent, 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"] }, { kind: "directive", type: CardSubtitleDirective, selector: "[kendoCardSubtitle]" }, { kind: "component", type: CardBodyComponent, selector: "kendo-card-body" }, { kind: "directive", type: CardMediaDirective, selector: "[kendoCardMedia]" }, { kind: "component", type: CardActionsComponent, selector: "kendo-card-actions", inputs: ["orientation", "layout", "actions"], outputs: ["action"] }], animations: [
254
- trigger('toggle', [
255
- state('collapsed', style({
256
- height: '0',
257
- 'overflow-y': 'hidden',
258
- display: 'none'
259
- })),
260
- state('expanded', style({
261
- height: '*',
262
- 'overflow-y': 'hidden',
263
- display: 'block'
264
- })),
265
- transition('collapsed <=> expanded', [
266
- animate('{{animationDuration}}ms')
267
- ], { params: { animationDuration: '400' } }),
268
- ])
269
- ] });
270
- }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCardComponent, decorators: [{
272
- type: Component,
273
- args: [{
274
- animations: [
275
- trigger('toggle', [
276
- state('collapsed', style({
277
- height: '0',
278
- 'overflow-y': 'hidden',
279
- display: 'none'
280
- })),
281
- state('expanded', style({
282
- height: '*',
283
- 'overflow-y': 'hidden',
284
- display: 'block'
285
- })),
286
- transition('collapsed <=> expanded', [
287
- animate('{{animationDuration}}ms')
288
- ], { params: { animationDuration: '400' } }),
289
- ])
290
- ],
291
- providers: [],
292
- exportAs: 'kendoTimelineCard',
293
- selector: 'kendo-timeline-card',
294
- template: `
295
- <kendo-card
296
- [ngStyle]="{ 'height': orientation === 'horizontal' ? eventHeight + 'px' : null }"
297
- [width]="orientation === 'horizontal' ? 'auto' : eventWidth + 'px'"
298
- class="k-card-with-callout k-card-vertical"
299
- (click)="toggle()"
300
- [attr.role]="role"
301
- [attr.aria-live]="ariaLive"
302
- [attr.aria-expanded]="ariaExpanded"
303
- [attr.tabindex]="tabIndex"
304
- >
305
- <span
306
- #callout
307
- class="k-timeline-card-callout k-card-callout"
308
- [ngClass]="{
309
- 'k-callout-n': orientation === 'horizontal',
310
- 'k-callout-w': orientation === 'vertical' && !this.reversed,
311
- 'k-callout-e': orientation === 'vertical' && this.reversed
312
- }"
313
- >
314
- </span>
315
- @if (event) {
316
- <div class="k-card-inner">
317
- <kendo-card-header>
318
- @if (headerTemplate) {
319
- <ng-template
320
- [ngTemplateOutlet]="headerTemplate?.templateRef"
321
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
322
- >
323
- </ng-template>
324
- }
325
- @if (!headerTemplate) {
326
- <div kendoCardTitle>
327
- <span class="k-event-title">{{ event.title }}</span>
328
- @if (collapsible && orientation === 'vertical') {
329
- <button
330
- kendoButton
331
- [icon]="calloutFontIcon"
332
- [svgIcon]="calloutSvgIcon"
333
- class="k-event-collapse"
334
- fillMode="flat"
335
- [attr.aria-hidden]="true"
336
- tabindex="-1"
337
- type="button"
338
- ></button>
339
- }
340
- </div>
341
- }
342
- @if (!headerTemplate) {
343
- <div kendoCardSubtitle >{{ event.subtitle }}</div>
344
- }
345
- </kendo-card-header>
346
- @if (event.description || event.images) {
347
- <kendo-card-body
348
- [@toggle]="{value: expanded ? 'expanded' : 'collapsed', params: {animationDuration: this.animationDuration || 0}}"
349
- (@toggle.start)="animationStart()"
350
- (@toggle.done)="animationDone($event)"
351
- >
352
- @if (bodyTemplate) {
353
- <ng-template
354
- [ngTemplateOutlet]="bodyTemplate?.templateRef"
355
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
356
- >
357
- </ng-template>
358
- }
359
- @if (!bodyTemplate) {
360
- <div class="k-card-description">
361
- @if (event.description) {
362
- <p>{{ event.description }}</p>
363
- }
364
- @for (image of event.images; track image) {
365
- @if (image.alt) {
366
- <img kendoCardMedia [src]="image.src" [alt]="image.alt" />
367
- }
368
- @if (!image.alt) {
369
- <img kendoCardMedia [src]="image.src" />
370
- }
371
- }
372
- </div>
373
- }
374
- </kendo-card-body>
375
- }
376
- @if (event.actions) {
377
- <kendo-card-actions
378
- [@toggle]="{value: expanded ? 'expanded' : 'collapsed', params: {animationDuration: this.animationDuration || 0}}"
379
- >
380
- @if (actionsTemplate) {
381
- <ng-template
382
- [ngTemplateOutlet]="actionsTemplate?.templateRef"
383
- [ngTemplateOutletContext]="{ $implicit: event, index: index}">
384
- >
385
- </ng-template>
386
- }
387
- @if (!actionsTemplate) {
388
- @for (action of event.actions; track action) {
389
- <a
390
- [href]="action.url"
391
- [target]="action.target === 'blank' ? '_blank' : '_self'"
392
- (click)="onActionClick($event)"
393
- class="k-button k-button-md k-rounded-md k-button-flat k-button-flat-primary"
394
- role="button"
395
- >
396
- {{ action.text }}
397
- </a>
398
- }
399
- }
400
- </kendo-card-actions>
401
- }
402
- </div>
403
- }
404
- </kendo-card>
405
- `,
406
- standalone: true,
407
- imports: [CardComponent, NgStyle, NgClass, CardHeaderComponent, NgTemplateOutlet, CardTitleDirective, ButtonComponent, CardSubtitleDirective, CardBodyComponent, CardMediaDirective, CardActionsComponent]
408
- }]
409
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TimelineService }, { type: i0.Renderer2 }], propDecorators: { event: [{
410
- type: Input
411
- }], expanded: [{
412
- type: Input
413
- }], collapsible: [{
414
- type: Input
415
- }], reversed: [{
416
- type: Input
417
- }], orientation: [{
418
- type: Input
419
- }], navigable: [{
420
- type: Input
421
- }], tabIndex: [{
422
- type: Input
423
- }], animationDuration: [{
424
- type: Input
425
- }], index: [{
426
- type: Input
427
- }], eventWidth: [{
428
- type: Input
429
- }], eventHeight: [{
430
- type: Input
431
- }], headerTemplate: [{
432
- type: Input
433
- }], bodyTemplate: [{
434
- type: Input
435
- }], actionsTemplate: [{
436
- type: Input
437
- }], calloutStyle: [{
438
- type: Input
439
- }], calloutElementRef: [{
440
- type: ViewChild,
441
- args: ['callout']
442
- }], hostClass: [{
443
- type: HostBinding,
444
- args: ['class.k-timeline-card']
445
- }], collapsedClass: [{
446
- type: HostBinding,
447
- args: ['class.k-collapsed']
448
- }], onComponentKeyDown: [{
449
- type: HostListener,
450
- args: ['keydown', ['$event']]
451
- }] } });