@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,388 +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, HostBinding, Input, Output, EventEmitter, ContentChildren, QueryList, ElementRef, Renderer2, NgZone, ViewChild } from '@angular/core';
6
- import { TileLayoutDraggingService } from './dragging-service';
7
- import { Subscription } from 'rxjs';
8
- import { Draggable } from '@progress/kendo-draggable';
9
- import { TileLayoutItemComponent } from './tilelayout-item.component';
10
- import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
11
- import { hasObservers, isChanged, shouldShowValidationUI, getLicenseMessage, WatermarkOverlayComponent } from '@progress/kendo-angular-common';
12
- import { validatePackage } from '@progress/kendo-licensing';
13
- import { packageMetadata } from '../package-metadata';
14
- import { isPresent } from '../common/util';
15
- import { TileLayoutKeyboardNavigationService } from './keyboard-navigation.service';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@progress/kendo-angular-l10n";
18
- import * as i2 from "./dragging-service";
19
- import * as i3 from "./keyboard-navigation.service";
20
- const autoFlowClasses = {
21
- column: 'k-grid-flow-col',
22
- row: 'k-grid-flow-row',
23
- 'column-dense': 'k-grid-flow-col-dense',
24
- 'row-dense': 'k-grid-flow-row-dense'
25
- };
26
- /**
27
- * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})
28
- *
29
- * @example
30
- * ```html
31
- * <kendo-tilelayout [columns]="3" [gap]="10">
32
- * <kendo-tilelayout-item>Content 1</kendo-tilelayout-item>
33
- * <kendo-tilelayout-item>Content 2</kendo-tilelayout-item>
34
- * </kendo-tilelayout>
35
- * ```
36
- * @remarks
37
- * Supported children components are: {@link TileLayoutItemComponent}.
38
- */
39
- export class TileLayoutComponent {
40
- zone;
41
- elem;
42
- renderer;
43
- localization;
44
- draggingService;
45
- navigationService;
46
- /**
47
- * Specifies the number of columns ([see example](slug:tiles_tilelayout#size-and-position)).
48
- * @default 1
49
- */
50
- columns = 1;
51
- /**
52
- * Sets the width of the columns.
53
- * Use numeric values for pixels or string values for other CSS units ([see example](slug:tiles_tilelayout#size-and-position)).
54
- * @default '1fr'
55
- */
56
- columnWidth = '1fr';
57
- /**
58
- * Sets the spacing between layout items in pixels.
59
- * Use an object with `rows` and `columns` properties to set different horizontal and vertical spacing.
60
- * Use a single number to apply the same spacing to both directions.
61
- *
62
- * @default { rows: 16, columns: 16 }
63
- */
64
- set gap(value) {
65
- this._gap = (typeof value === 'number') ? { rows: value, columns: value } : Object.assign(this._gap, value);
66
- }
67
- get gap() {
68
- return this._gap;
69
- }
70
- /**
71
- * Enables or disables item reordering ([see example]({% slug reordering_tilelayout %})).
72
- * @default false
73
- */
74
- reorderable = false;
75
- /**
76
- * Enables or disables item resizing ([see example]({% slug resizing_tilelayout %})).
77
- * @default false
78
- */
79
- resizable = false;
80
- /**
81
- * Sets the height of the rows.
82
- * Use numeric values for pixels or string values for other CSS units ([see example](slug:tiles_tilelayout#size-and-position)).
83
- * @default '1fr'
84
- */
85
- rowHeight = '1fr';
86
- /**
87
- *
88
- * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example]({% slug tiles_autoflow_tilelayout %})).
89
- *
90
- * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).
91
- * @default 'column'
92
- */
93
- autoFlow = 'column';
94
- /**
95
- * Enables or disables [keyboard navigation](slug:keyboard_navigation_tilelayout).
96
- * @default true
97
- */
98
- navigable = true;
99
- /**
100
- * Fires when item reordering is completed ([see example]({% slug reordering_tilelayout %})).
101
- * You can prevent this event to cancel the reorder operation.
102
- */
103
- reorder = new EventEmitter();
104
- /**
105
- * Fires when item resizing is completed ([see example]({% slug resizing_tilelayout %})).
106
- * You can prevent this event to cancel the resize operation.
107
- */
108
- resize = new EventEmitter();
109
- hostClass = true;
110
- hostRole = 'list';
111
- get gapStyle() {
112
- return `${this.gap.rows}px ${this.gap.columns}px`;
113
- }
114
- direction;
115
- get currentColStart() {
116
- return this.draggingService.colStart;
117
- }
118
- get currentRowStart() {
119
- return this.draggingService.rowStart;
120
- }
121
- get draggedItemWrapper() {
122
- return this.draggingService.itemWrapper;
123
- }
124
- get targetOrder() {
125
- return this.draggingService.order;
126
- }
127
- /**
128
- * Contains a query list of the `TileLayoutItemComponent` instances that are used in the TileLayout.
129
- * This allows you to access the items programmatically and manipulate their properties or listen to their events.
130
- */
131
- items;
132
- hint;
133
- /**
134
- * @hidden
135
- */
136
- showLicenseWatermark = false;
137
- /**
138
- * @hidden
139
- */
140
- licenseMessage;
141
- draggable;
142
- subs = new Subscription();
143
- _gap = {
144
- rows: 16,
145
- columns: 16
146
- };
147
- constructor(zone, elem, renderer, localization, draggingService, navigationService) {
148
- this.zone = zone;
149
- this.elem = elem;
150
- this.renderer = renderer;
151
- this.localization = localization;
152
- this.draggingService = draggingService;
153
- this.navigationService = navigationService;
154
- const isValid = validatePackage(packageMetadata);
155
- this.licenseMessage = getLicenseMessage(packageMetadata);
156
- this.showLicenseWatermark = shouldShowValidationUI(isValid);
157
- }
158
- ngOnInit() {
159
- this.applyColStyling();
160
- this.applyRowStyling();
161
- this.draggingService.reorderable.next(this.reorderable);
162
- this.draggingService.resizable.next(this.resizable);
163
- this.navigationService.owner = this;
164
- this.navigationService.navigable.next(this.navigable);
165
- if (hasObservers(this.reorder)) {
166
- this.subs.add(this.draggingService.reorder.subscribe(e => this.reorder.emit(e)));
167
- }
168
- if (hasObservers(this.resize)) {
169
- this.subs.add(this.draggingService.resize.subscribe(e => this.resize.emit(e)));
170
- }
171
- this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {
172
- if (reorderable && !this.draggable) {
173
- this.initializeDraggable();
174
- }
175
- }));
176
- this.subs.add(this.draggingService.resizable.subscribe(resizable => {
177
- if (resizable && !this.draggable) {
178
- this.initializeDraggable();
179
- }
180
- }));
181
- this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
182
- this.direction = rtl ? 'rtl' : 'ltr';
183
- }));
184
- }
185
- ngAfterViewInit() {
186
- this.draggingService.tileLayoutSettings = this.draggingServiceConfig();
187
- this.applyAutoFlow(null, autoFlowClasses[this.autoFlow]);
188
- this.items.changes.subscribe(() => {
189
- this.setItemsOrder();
190
- this.draggingService.tileLayoutSettings.items = this.items.toArray();
191
- });
192
- this.zone.runOutsideAngular(() => {
193
- this.elem.nativeElement.addEventListener('focusin', this.onFocusIn);
194
- });
195
- }
196
- ngAfterContentInit() {
197
- this.setItemsOrder();
198
- }
199
- ngOnChanges(changes) {
200
- if (changes['columns'] || changes['columnWidth']) {
201
- this.applyColStyling();
202
- }
203
- if (changes['rowHeight']) {
204
- this.applyRowStyling();
205
- }
206
- if (isChanged('reorderable', changes)) {
207
- this.draggingService.reorderable.next(changes['reorderable'].currentValue);
208
- }
209
- if (isChanged('resizable', changes)) {
210
- this.draggingService.resizable.next(changes['resizable'].currentValue);
211
- }
212
- if (changes['gap'] || changes['autoFlow'] || changes['columns']) {
213
- this.draggingService.tileLayoutSettings = this.draggingServiceConfig();
214
- if (changes['autoFlow']) {
215
- this.applyAutoFlow(autoFlowClasses[changes['autoFlow'].previousValue] || '', autoFlowClasses[changes['autoFlow'].currentValue]);
216
- }
217
- }
218
- if (isChanged('navigable', changes)) {
219
- this.navigationService.navigable.next(changes['navigable'].currentValue);
220
- }
221
- }
222
- ngOnDestroy() {
223
- if (this.draggable) {
224
- this.draggable.destroy();
225
- }
226
- this.subs.unsubscribe();
227
- this.elem.nativeElement.removeEventListener('focusin', this.onFocusIn);
228
- }
229
- handlePress({ originalEvent }) {
230
- this.draggingService.handlePress(originalEvent);
231
- }
232
- handleDrag({ originalEvent }) {
233
- this.draggingService.handleDrag(originalEvent);
234
- }
235
- handleRelease({ originalEvent }) {
236
- this.draggingService.handleRelease(originalEvent);
237
- }
238
- applyColStyling() {
239
- const colWidth = typeof this.columnWidth === 'number' ? `${this.columnWidth}px` : this.columnWidth;
240
- const gridTemplateColumnsStyle = `repeat(${this.columns}, ${colWidth})`;
241
- this.renderer.setStyle(this.elem.nativeElement, 'grid-template-columns', gridTemplateColumnsStyle);
242
- }
243
- applyRowStyling() {
244
- const rowHeight = typeof this.rowHeight === 'number' ? `${this.rowHeight}px` : this.rowHeight;
245
- const gridAutoRowsStyle = `${rowHeight}`;
246
- this.renderer.setStyle(this.elem.nativeElement, 'grid-auto-rows', gridAutoRowsStyle);
247
- }
248
- draggingServiceConfig() {
249
- return {
250
- tileLayoutElement: this.elem ? this.elem.nativeElement : undefined,
251
- hintElement: this.hint ? this.hint.nativeElement : undefined,
252
- gap: this.gap,
253
- columns: this.columns,
254
- autoFlow: this.autoFlow,
255
- items: this.items ? this.items.toArray() : []
256
- };
257
- }
258
- initializeDraggable() {
259
- this.draggable = new Draggable({
260
- press: this.handlePress.bind(this),
261
- drag: this.handleDrag.bind(this),
262
- release: this.handleRelease.bind(this)
263
- });
264
- this.zone.runOutsideAngular(() => this.draggable.bindTo(this.elem.nativeElement));
265
- }
266
- applyAutoFlow(classToRemove, classToAdd) {
267
- const element = this.elem.nativeElement;
268
- if (classToRemove) {
269
- this.renderer.removeClass(element, classToRemove);
270
- }
271
- if (this.autoFlow !== 'none' && isPresent(classToAdd)) {
272
- this.renderer.addClass(element, classToAdd);
273
- }
274
- }
275
- setItemsOrder() {
276
- this.items.forEach((item, index) => {
277
- if (!isPresent(item.order)) {
278
- item.order = index;
279
- }
280
- });
281
- }
282
- onFocusIn = (e) => {
283
- if (!this.navigable || this.navigationService.mousedown || !e.relatedTarget) {
284
- this.navigationService.mousedown = false;
285
- return;
286
- }
287
- if (!(this.elem.nativeElement.compareDocumentPosition(e.relatedTarget) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {
288
- this.navigationService.returnFocus();
289
- }
290
- };
291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i2.TileLayoutDraggingService }, { token: i3.TileLayoutKeyboardNavigationService }], target: i0.ɵɵFactoryTarget.Component });
292
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TileLayoutComponent, isStandalone: true, selector: "kendo-tilelayout", inputs: { columns: "columns", columnWidth: "columnWidth", gap: "gap", reorderable: "reorderable", resizable: "resizable", rowHeight: "rowHeight", autoFlow: "autoFlow", navigable: "navigable" }, outputs: { reorder: "reorder", resize: "resize" }, host: { properties: { "class.k-tilelayout": "this.hostClass", "attr.role": "this.hostRole", "style.gap": "this.gapStyle", "style.padding": "this.gapStyle", "attr.dir": "this.direction" } }, providers: [
293
- LocalizationService,
294
- TileLayoutDraggingService,
295
- TileLayoutKeyboardNavigationService,
296
- {
297
- provide: L10N_PREFIX,
298
- useValue: 'kendo.tilelayout.component'
299
- }
300
- ], queries: [{ propertyName: "items", predicate: TileLayoutItemComponent }], viewQueries: [{ propertyName: "hint", first: true, predicate: ["hint"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
301
- <ng-content></ng-content>
302
- <div #hint class="k-layout-item-hint"
303
- [style.display]="'none'"
304
- [style.order]="targetOrder"
305
- [style.gridColumnEnd]="draggedItemWrapper?.style.gridColumnEnd"
306
- [style.gridRowEnd]="draggedItemWrapper?.style.gridRowEnd"
307
- [style.gridColumnStart]="currentColStart"
308
- [style.gridRowStart]="currentRowStart"
309
- [style.zIndex]="'1'">
310
- </div>
311
- @if (showLicenseWatermark) {
312
- <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
313
- }
314
- `, isInline: true, dependencies: [{ kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]", inputs: ["licenseMessage"] }] });
315
- }
316
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutComponent, decorators: [{
317
- type: Component,
318
- args: [{
319
- selector: 'kendo-tilelayout',
320
- providers: [
321
- LocalizationService,
322
- TileLayoutDraggingService,
323
- TileLayoutKeyboardNavigationService,
324
- {
325
- provide: L10N_PREFIX,
326
- useValue: 'kendo.tilelayout.component'
327
- }
328
- ],
329
- template: `
330
- <ng-content></ng-content>
331
- <div #hint class="k-layout-item-hint"
332
- [style.display]="'none'"
333
- [style.order]="targetOrder"
334
- [style.gridColumnEnd]="draggedItemWrapper?.style.gridColumnEnd"
335
- [style.gridRowEnd]="draggedItemWrapper?.style.gridRowEnd"
336
- [style.gridColumnStart]="currentColStart"
337
- [style.gridRowStart]="currentRowStart"
338
- [style.zIndex]="'1'">
339
- </div>
340
- @if (showLicenseWatermark) {
341
- <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
342
- }
343
- `,
344
- standalone: true,
345
- imports: [WatermarkOverlayComponent]
346
- }]
347
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i2.TileLayoutDraggingService }, { type: i3.TileLayoutKeyboardNavigationService }], propDecorators: { columns: [{
348
- type: Input
349
- }], columnWidth: [{
350
- type: Input
351
- }], gap: [{
352
- type: Input
353
- }], reorderable: [{
354
- type: Input
355
- }], resizable: [{
356
- type: Input
357
- }], rowHeight: [{
358
- type: Input
359
- }], autoFlow: [{
360
- type: Input
361
- }], navigable: [{
362
- type: Input
363
- }], reorder: [{
364
- type: Output
365
- }], resize: [{
366
- type: Output
367
- }], hostClass: [{
368
- type: HostBinding,
369
- args: ['class.k-tilelayout']
370
- }], hostRole: [{
371
- type: HostBinding,
372
- args: ['attr.role']
373
- }], gapStyle: [{
374
- type: HostBinding,
375
- args: ['style.gap']
376
- }, {
377
- type: HostBinding,
378
- args: ['style.padding']
379
- }], direction: [{
380
- type: HostBinding,
381
- args: ['attr.dir']
382
- }], items: [{
383
- type: ContentChildren,
384
- args: [TileLayoutItemComponent]
385
- }], hint: [{
386
- type: ViewChild,
387
- args: ['hint', { static: false }]
388
- }] } });
@@ -1,138 +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 { isDocumentAvailable, Keys } from '@progress/kendo-angular-common';
6
- import { isPresent } from '../common/util';
7
- /**
8
- * @hidden
9
- */
10
- let idx = 0;
11
- /**
12
- * @hidden
13
- */
14
- export const getId = (prefix) => {
15
- return `${prefix}-${++idx}`;
16
- };
17
- /**
18
- * @hidden
19
- */
20
- export const normalizeValue = (value, max = Infinity) => {
21
- const normalizedValue = isPresent(value) ? Math.min(Math.max(+value, 1), max) : value;
22
- return normalizedValue;
23
- };
24
- /**
25
- * @hidden
26
- */
27
- export const isRowItemPresent = (items) => {
28
- return items.some(item => isPresent(item.row));
29
- };
30
- /**
31
- * @hidden
32
- */
33
- export const propsChanged = (initialProps, newProps) => {
34
- for (let i = 0; i < initialProps.length; i++) {
35
- if (initialProps[i] !== newProps[i]) {
36
- return true;
37
- }
38
- }
39
- return false;
40
- };
41
- /**
42
- * @hidden
43
- *
44
- * Extracts the event target from the viewport coords. Required for touch devices
45
- * where the `event.target` of a `pointermove` event is always the initially dragged item.
46
- */
47
- export const getDropTarget = (event) => {
48
- if (!(isDocumentAvailable() && isPresent(document.elementsFromPoint))) {
49
- return [event.target];
50
- }
51
- return document.elementsFromPoint(event.clientX, event.clientY)
52
- .filter(item => item.classList && (item.classList.contains('k-tilelayout-item') || item.classList.contains('k-layout-item-hint')));
53
- };
54
- /**
55
- * @hidden
56
- */
57
- export const setElementStyles = (renderer, elem, styles) => {
58
- const props = Object.keys(styles);
59
- props.forEach(p => {
60
- renderer.setStyle(elem, p, styles[p]);
61
- });
62
- };
63
- /**
64
- * @hidden
65
- */
66
- export const calculateCellFromPosition = (coordinates, tileLayoutElement, gap, cellSize, columns, rtl = false) => {
67
- const tileLayoutRect = tileLayoutElement.getBoundingClientRect();
68
- const totalRows = (tileLayoutRect.height - gap.rows) / (cellSize.height + gap.rows);
69
- const distanceFromTop = coordinates.y - tileLayoutRect.y;
70
- const distanceFromLeft = coordinates.x - tileLayoutRect.x;
71
- const distanceFromRight = tileLayoutRect.right - coordinates.x;
72
- const distanceToCellWidthRatio = Math.floor((rtl ? distanceFromRight : distanceFromLeft) / (gap.columns + cellSize.width));
73
- const cappedColumnPosition = Math.min(distanceToCellWidthRatio + 1, columns);
74
- const distanceToCellHeightRatio = Math.floor(distanceFromTop / (gap.rows + cellSize.height));
75
- const cappedRowPosition = Math.min(distanceToCellHeightRatio + 1, totalRows);
76
- const col = Math.max(cappedColumnPosition, 0);
77
- const row = Math.max(cappedRowPosition, 0);
78
- return {
79
- row, col
80
- };
81
- };
82
- /**
83
- * @hidden
84
- */
85
- export const calculateOrderFromCell = (row, col, items, draggedItem, tileLayoutElement, gap, cellSize, columns) => {
86
- let order = 0;
87
- items.forEach(item => {
88
- const rect = item.elem.nativeElement.getBoundingClientRect();
89
- const start = calculateCellFromPosition({
90
- x: rect.x,
91
- y: rect.y
92
- }, tileLayoutElement, gap, cellSize, columns);
93
- if (item !== draggedItem && ((start.row === row && start.col < col) || start.row < row)) {
94
- order++;
95
- }
96
- });
97
- return order;
98
- };
99
- /**
100
- * @hidden
101
- */
102
- export const shouldResize = (keyCode, col, selectedTile, settings) => {
103
- const resizeRight = keyCode === Keys.ArrowRight && col + selectedTile.colSpan <= settings.columns;
104
- const resizeLeft = keyCode === Keys.ArrowLeft && selectedTile.colSpan > 1;
105
- const resizeDown = keyCode === Keys.ArrowDown;
106
- const resizeUp = keyCode === Keys.ArrowUp && selectedTile.rowSpan > 1;
107
- return { resizeRight, resizeLeft, resizeDown, resizeUp };
108
- };
109
- /**
110
- * @hidden
111
- */
112
- export const shouldReorder = (keyCode, col, selectedTile, settings) => {
113
- let reorderRight;
114
- let reorderLeft;
115
- if (selectedTile.col) {
116
- reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + col <= settings.columns;
117
- reorderLeft = keyCode === Keys.ArrowLeft && col > 1;
118
- }
119
- else {
120
- reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + selectedTile.order < settings.items.length;
121
- reorderLeft = keyCode === Keys.ArrowLeft && selectedTile.order > 0;
122
- }
123
- return { reorderLeft, reorderRight };
124
- };
125
- /**
126
- * @hidden
127
- */
128
- export const getCurrentCol = (selectedTile, settings, rtl) => {
129
- const rects = selectedTile.elem.nativeElement.getBoundingClientRect();
130
- const targetSize = {
131
- rowSpan: selectedTile.rowSpan,
132
- colSpan: selectedTile.colSpan
133
- };
134
- const width = (rects.width - ((targetSize.colSpan - 1) * settings.gap.columns)) / targetSize.colSpan;
135
- const height = (rects.height - ((targetSize.rowSpan - 1) * settings.gap.rows)) / targetSize.rowSpan;
136
- const { col } = calculateCellFromPosition({ x: rects.x, y: rects.y }, settings.tileLayoutElement, settings.gap, { width: width, height: height }, settings.columns, rtl);
137
- return col;
138
- };
@@ -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 { NgModule } from '@angular/core';
6
- import { KENDO_TILELAYOUT } from './directives';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./tilelayout/tilelayout.component";
9
- import * as i2 from "./tilelayout/tilelayout-item-body.component";
10
- import * as i3 from "./tilelayout/tilelayout-item.component";
11
- import * as i4 from "./tilelayout/tilelayout-item-header.component";
12
- // IMPORTANT: NgModule export kept for backwards compatibility
13
- /**
14
- * Defines the [`NgModule`](link:site.data.urls.angular['ngmoduleapi']) for the TileLayout component.
15
- *
16
- * Use this module to add the TileLayout component to your NgModule-based Angular application.
17
- *
18
- * @example
19
- * ```typescript
20
- * import { TileLayoutModule } from '@progress/kendo-angular-layout';
21
- * import { NgModule } from '@angular/core';
22
- *
23
- * @NgModule({
24
- * imports: [TileLayoutModule]
25
- * })
26
- * export class AppModule { }
27
- * ```
28
- */
29
- export class TileLayoutModule {
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutModule, imports: [i1.TileLayoutComponent, i2.TileLayoutItemBodyComponent, i3.TileLayoutItemComponent, i4.TileLayoutItemHeaderComponent], exports: [i1.TileLayoutComponent, i2.TileLayoutItemBodyComponent, i3.TileLayoutItemComponent, i4.TileLayoutItemHeaderComponent] });
32
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutModule, imports: [i1.TileLayoutComponent] });
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileLayoutModule, decorators: [{
35
- type: NgModule,
36
- args: [{
37
- exports: [...KENDO_TILELAYOUT],
38
- imports: [...KENDO_TILELAYOUT]
39
- }]
40
- }] });
@@ -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,43 +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, forwardRef } from '@angular/core';
6
- import { LocalizationService } from '@progress/kendo-angular-l10n';
7
- import { TimelineMessages } from './messages';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@progress/kendo-angular-l10n";
10
- /**
11
- * Custom component messages override default component messages.
12
- */
13
- export class TimelineCustomMessagesComponent extends TimelineMessages {
14
- service;
15
- constructor(service) {
16
- super();
17
- this.service = service;
18
- }
19
- get override() {
20
- return true;
21
- }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
23
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TimelineCustomMessagesComponent, isStandalone: true, selector: "kendo-timeline-messages", providers: [
24
- {
25
- provide: TimelineMessages,
26
- useExisting: forwardRef(() => TimelineCustomMessagesComponent),
27
- },
28
- ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimelineCustomMessagesComponent, decorators: [{
31
- type: Component,
32
- args: [{
33
- providers: [
34
- {
35
- provide: TimelineMessages,
36
- useExisting: forwardRef(() => TimelineCustomMessagesComponent),
37
- },
38
- ],
39
- selector: 'kendo-timeline-messages',
40
- template: ``,
41
- standalone: true
42
- }]
43
- }], ctorParameters: () => [{ type: i1.LocalizationService }] });
@@ -1,39 +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, forwardRef } from '@angular/core';
6
- import { LocalizationService } from '@progress/kendo-angular-l10n';
7
- import { TimelineMessages } from './messages';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@progress/kendo-angular-l10n";
10
- /**
11
- * @hidden
12
- */
13
- export class LocalizedTimelineMessagesDirective extends TimelineMessages {
14
- service;
15
- constructor(service) {
16
- super();
17
- this.service = service;
18
- }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocalizedTimelineMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
20
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: LocalizedTimelineMessagesDirective, isStandalone: true, selector: "[kendoTimelineLocalizedMessages]", providers: [
21
- {
22
- provide: TimelineMessages,
23
- useExisting: forwardRef(() => LocalizedTimelineMessagesDirective),
24
- },
25
- ], usesInheritance: true, ngImport: i0 });
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocalizedTimelineMessagesDirective, decorators: [{
28
- type: Directive,
29
- args: [{
30
- providers: [
31
- {
32
- provide: TimelineMessages,
33
- useExisting: forwardRef(() => LocalizedTimelineMessagesDirective),
34
- },
35
- ],
36
- selector: `[kendoTimelineLocalizedMessages]`,
37
- standalone: true
38
- }]
39
- }], ctorParameters: () => [{ type: i1.LocalizationService }] });