@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.
- package/avatar/l10n/messages.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-layout.mjs +290 -290
- package/package.json +12 -20
- package/stepper/localization/messages.d.ts +1 -1
- package/tabstrip/localization/messages.d.ts +1 -1
- package/timeline/localization/messages.d.ts +1 -1
- package/esm2022/avatar/avatar.component.mjs +0 -406
- package/esm2022/avatar/l10n/custom-messages.component.mjs +0 -53
- package/esm2022/avatar/l10n/localized-messages.directive.mjs +0 -40
- package/esm2022/avatar/l10n/messages.mjs +0 -27
- package/esm2022/avatar/models/fill.mjs +0 -5
- package/esm2022/avatar/models/models.mjs +0 -9
- package/esm2022/avatar/models/rounded.mjs +0 -5
- package/esm2022/avatar/models/shape.mjs +0 -5
- package/esm2022/avatar/models/size.mjs +0 -5
- package/esm2022/avatar/models/theme-color.mjs +0 -5
- package/esm2022/avatar.module.mjs +0 -38
- package/esm2022/card/card-actions.component.mjs +0 -177
- package/esm2022/card/card-body.component.mjs +0 -37
- package/esm2022/card/card-footer.component.mjs +0 -37
- package/esm2022/card/card-header.component.mjs +0 -38
- package/esm2022/card/card.component.mjs +0 -118
- package/esm2022/card/directives/card-media.directive.mjs +0 -33
- package/esm2022/card/directives/card-separator.directive.mjs +0 -61
- package/esm2022/card/directives/card-subtitle.directive.mjs +0 -31
- package/esm2022/card/directives/card-title.directive.mjs +0 -31
- package/esm2022/card/models/actions-layout.mjs +0 -5
- package/esm2022/card/models/card-action.mjs +0 -21
- package/esm2022/card.module.mjs +0 -45
- package/esm2022/common/direction.mjs +0 -5
- package/esm2022/common/dom-queries.mjs +0 -47
- package/esm2022/common/orientation.mjs +0 -5
- package/esm2022/common/preventable-event.mjs +0 -31
- package/esm2022/common/styling-classes.mjs +0 -5
- package/esm2022/common/util.mjs +0 -85
- package/esm2022/directives.mjs +0 -174
- package/esm2022/drawer/animations.mjs +0 -146
- package/esm2022/drawer/drawer-container.component.mjs +0 -135
- package/esm2022/drawer/drawer-content.component.mjs +0 -39
- package/esm2022/drawer/drawer.component.mjs +0 -471
- package/esm2022/drawer/drawer.service.mjs +0 -105
- package/esm2022/drawer/events/drawer-list-select.event.mjs +0 -29
- package/esm2022/drawer/events/select-event.mjs +0 -33
- package/esm2022/drawer/item.component.mjs +0 -210
- package/esm2022/drawer/list.component.mjs +0 -165
- package/esm2022/drawer/models/constants.mjs +0 -8
- package/esm2022/drawer/models/drawer-animation.interface.mjs +0 -5
- package/esm2022/drawer/models/drawer-item-expand.interface.mjs +0 -5
- package/esm2022/drawer/models/drawer-item.interface.mjs +0 -5
- package/esm2022/drawer/models/drawer-view-item.interface.mjs +0 -5
- package/esm2022/drawer/models/mode.mjs +0 -5
- package/esm2022/drawer/models/position.mjs +0 -5
- package/esm2022/drawer/template-directives/drawer-template.directive.mjs +0 -43
- package/esm2022/drawer/template-directives/footer-template.directive.mjs +0 -36
- package/esm2022/drawer/template-directives/header-template.directive.mjs +0 -36
- package/esm2022/drawer/template-directives/item-template.directive.mjs +0 -44
- package/esm2022/drawer/template-directives.mjs +0 -8
- package/esm2022/drawer/types.mjs +0 -5
- package/esm2022/drawer/util.mjs +0 -16
- package/esm2022/drawer.module.mjs +0 -43
- package/esm2022/expansionpanel/animations.mjs +0 -23
- package/esm2022/expansionpanel/events/action-event.mjs +0 -21
- package/esm2022/expansionpanel/expansionpanel-title.directive.mjs +0 -38
- package/esm2022/expansionpanel/expansionpanel.component.mjs +0 -515
- package/esm2022/expansionpanel.module.mjs +0 -38
- package/esm2022/gridlayout.module.mjs +0 -38
- package/esm2022/index.mjs +0 -89
- package/esm2022/layout.module.mjs +0 -89
- package/esm2022/layouts/grid-layout.component.mjs +0 -179
- package/esm2022/layouts/gridlayout-item.component.mjs +0 -82
- package/esm2022/layouts/models/gridlayout-gap-settings.mjs +0 -5
- package/esm2022/layouts/models/gridlayout-row-col-size.mjs +0 -5
- package/esm2022/layouts/models/layout-align-settings.mjs +0 -5
- package/esm2022/layouts/models/layout-horizontal-align.mjs +0 -5
- package/esm2022/layouts/models/layout-vertical-align.mjs +0 -5
- package/esm2022/layouts/models.mjs +0 -10
- package/esm2022/layouts/stack-layout.component.mjs +0 -161
- package/esm2022/layouts/util.mjs +0 -101
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/panelbar/events/collapse-event.mjs +0 -14
- package/esm2022/panelbar/events/expand-event.mjs +0 -14
- package/esm2022/panelbar/events/item-click-event.mjs +0 -17
- package/esm2022/panelbar/events/select-event.mjs +0 -14
- package/esm2022/panelbar/events/state-change-event.mjs +0 -13
- package/esm2022/panelbar/events.mjs +0 -9
- package/esm2022/panelbar/panelbar-content.directive.mjs +0 -36
- package/esm2022/panelbar/panelbar-expand-mode.mjs +0 -29
- package/esm2022/panelbar/panelbar-item-model.mjs +0 -5
- package/esm2022/panelbar/panelbar-item-template.directive.mjs +0 -37
- package/esm2022/panelbar/panelbar-item-title.directive.mjs +0 -42
- package/esm2022/panelbar/panelbar-item.component.mjs +0 -722
- package/esm2022/panelbar/panelbar.component.mjs +0 -705
- package/esm2022/panelbar/panelbar.service.mjs +0 -53
- package/esm2022/panelbar.module.mjs +0 -41
- package/esm2022/progress-kendo-angular-layout.mjs +0 -8
- package/esm2022/splitter/splitter-bar.component.mjs +0 -338
- package/esm2022/splitter/splitter-pane.component.mjs +0 -324
- package/esm2022/splitter/splitter.component.mjs +0 -301
- package/esm2022/splitter/splitter.service.mjs +0 -205
- package/esm2022/splitter/util.mjs +0 -34
- package/esm2022/splitter.module.mjs +0 -38
- package/esm2022/stacklayout.module.mjs +0 -37
- package/esm2022/stepper/events/activate-event.mjs +0 -33
- package/esm2022/stepper/list.component.mjs +0 -185
- package/esm2022/stepper/localization/custom-messages.component.mjs +0 -52
- package/esm2022/stepper/localization/localized-messages.directive.mjs +0 -41
- package/esm2022/stepper/localization/messages.mjs +0 -27
- package/esm2022/stepper/models/constants.mjs +0 -8
- package/esm2022/stepper/models/orientation.mjs +0 -5
- package/esm2022/stepper/models/step-predicate.mjs +0 -5
- package/esm2022/stepper/models/step-type.mjs +0 -5
- package/esm2022/stepper/models/stepper-step.interface.mjs +0 -5
- package/esm2022/stepper/step.component.mjs +0 -396
- package/esm2022/stepper/stepper.component.mjs +0 -423
- package/esm2022/stepper/stepper.service.mjs +0 -186
- package/esm2022/stepper/template-directives/indicator-template.directive.mjs +0 -37
- package/esm2022/stepper/template-directives/label-template.directive.mjs +0 -37
- package/esm2022/stepper/template-directives/step-template.directive.mjs +0 -39
- package/esm2022/stepper/template-directives.mjs +0 -7
- package/esm2022/stepper/types.mjs +0 -5
- package/esm2022/stepper.module.mjs +0 -41
- package/esm2022/tabstrip/constants.mjs +0 -29
- package/esm2022/tabstrip/directives/tab-content.directive.mjs +0 -39
- package/esm2022/tabstrip/directives/tab-title.directive.mjs +0 -37
- package/esm2022/tabstrip/directives/tab.directive.mjs +0 -24
- package/esm2022/tabstrip/events/select-event.mjs +0 -25
- package/esm2022/tabstrip/events/tabclose-event.mjs +0 -23
- package/esm2022/tabstrip/events/tabscroll-event.mjs +0 -23
- package/esm2022/tabstrip/events.mjs +0 -7
- package/esm2022/tabstrip/localization/custom-messages.component.mjs +0 -53
- package/esm2022/tabstrip/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/tabstrip/localization/messages.mjs +0 -39
- package/esm2022/tabstrip/models/button-state-change.mjs +0 -5
- package/esm2022/tabstrip/models/scroll-button-type.mjs +0 -5
- package/esm2022/tabstrip/models/scroll-buttons-visibility.mjs +0 -5
- package/esm2022/tabstrip/models/scrollable-settings.mjs +0 -23
- package/esm2022/tabstrip/models/size.mjs +0 -5
- package/esm2022/tabstrip/models/tab-alignment.mjs +0 -5
- package/esm2022/tabstrip/models/tab-position.mjs +0 -5
- package/esm2022/tabstrip/models/tabstrip-tab.component.mjs +0 -130
- package/esm2022/tabstrip/rendering/tab.component.mjs +0 -182
- package/esm2022/tabstrip/scrollable-button.component.mjs +0 -182
- package/esm2022/tabstrip/tabstrip-scroll.service.mjs +0 -176
- package/esm2022/tabstrip/tabstrip.component.mjs +0 -954
- package/esm2022/tabstrip/tabstrip.service.mjs +0 -155
- package/esm2022/tabstrip/util.mjs +0 -120
- package/esm2022/tabstrip.module.mjs +0 -41
- package/esm2022/tilelayout/constants.mjs +0 -70
- package/esm2022/tilelayout/dragging-service.mjs +0 -421
- package/esm2022/tilelayout/keyboard-navigation.service.mjs +0 -189
- package/esm2022/tilelayout/models/dragging-config.interface.mjs +0 -5
- package/esm2022/tilelayout/models/flowmode.type.mjs +0 -5
- package/esm2022/tilelayout/models/gap.interface.mjs +0 -5
- package/esm2022/tilelayout/models/navigation.interface.mjs +0 -5
- package/esm2022/tilelayout/reorder-event.mjs +0 -43
- package/esm2022/tilelayout/resize-event.mjs +0 -37
- package/esm2022/tilelayout/tilelayout-item-body.component.mjs +0 -45
- package/esm2022/tilelayout/tilelayout-item-header.component.mjs +0 -43
- package/esm2022/tilelayout/tilelayout-item.component.mjs +0 -322
- package/esm2022/tilelayout/tilelayout-resize-handle.directive.mjs +0 -61
- package/esm2022/tilelayout/tilelayout.component.mjs +0 -388
- package/esm2022/tilelayout/util.mjs +0 -138
- package/esm2022/tilelayout.module.mjs +0 -40
- package/esm2022/timeline/events/navigation-direction.mjs +0 -5
- package/esm2022/timeline/localization/custom-messages.component.mjs +0 -43
- package/esm2022/timeline/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/timeline/localization/messages.mjs +0 -33
- package/esm2022/timeline/models/anchor-target.mjs +0 -5
- package/esm2022/timeline/models/default-model-fields.mjs +0 -16
- package/esm2022/timeline/models/events-order.mjs +0 -5
- package/esm2022/timeline/models/model-fields.mjs +0 -5
- package/esm2022/timeline/models/timeline-event.mjs +0 -5
- package/esm2022/timeline/templates/timeline-card-actions.directive.mjs +0 -40
- package/esm2022/timeline/templates/timeline-card-body.directive.mjs +0 -40
- package/esm2022/timeline/templates/timeline-card-header.directive.mjs +0 -41
- package/esm2022/timeline/timeline-card.component.mjs +0 -451
- package/esm2022/timeline/timeline-horizontal.component.mjs +0 -781
- package/esm2022/timeline/timeline-vertical.component.mjs +0 -203
- package/esm2022/timeline/timeline.component.mjs +0 -491
- package/esm2022/timeline/timeline.service.mjs +0 -32
- package/esm2022/timeline/util.mjs +0 -26
- package/esm2022/timeline.module.mjs +0 -41
|
@@ -1,324 +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 { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Renderer2, Input, Output } from '@angular/core';
|
|
6
|
-
import { SplitterService } from './splitter.service';
|
|
7
|
-
import { anyChanged } from '@progress/kendo-angular-common';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./splitter.service";
|
|
10
|
-
/**
|
|
11
|
-
* Represents the pane component of the Splitter.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```html
|
|
15
|
-
* <kendo-splitter>
|
|
16
|
-
* <kendo-splitter-pane size="30%" [collapsible]="true">
|
|
17
|
-
* Left pane content
|
|
18
|
-
* </kendo-splitter-pane>
|
|
19
|
-
* <kendo-splitter-pane>
|
|
20
|
-
* Right pane content
|
|
21
|
-
* </kendo-splitter-pane>
|
|
22
|
-
* </kendo-splitter>
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export class SplitterPaneComponent {
|
|
26
|
-
element;
|
|
27
|
-
renderer;
|
|
28
|
-
cdr;
|
|
29
|
-
splitterService;
|
|
30
|
-
/**
|
|
31
|
-
* @hidden
|
|
32
|
-
*/
|
|
33
|
-
set order(paneOrder) {
|
|
34
|
-
this._order = paneOrder;
|
|
35
|
-
this.setOrderStyles();
|
|
36
|
-
}
|
|
37
|
-
get order() {
|
|
38
|
-
return this._order;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Defines the initial size of the pane.
|
|
42
|
-
* Accepts values in pixels and percentages.
|
|
43
|
-
* The value must be between the `min` and `max` properties.
|
|
44
|
-
*/
|
|
45
|
-
set size(newSize) {
|
|
46
|
-
this._size = newSize;
|
|
47
|
-
// Only set flex-basis if the pane is not collapsed
|
|
48
|
-
if (!this._collapsed) {
|
|
49
|
-
this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
|
|
50
|
-
this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
|
|
51
|
-
}
|
|
52
|
-
this.setStaticPaneClass();
|
|
53
|
-
}
|
|
54
|
-
get size() {
|
|
55
|
-
return this._size;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Defines the HTML attributes of the splitter bar.
|
|
59
|
-
* Accepts string key-value pairs.
|
|
60
|
-
* You cannot change attributes that are essential for certain functionalities.
|
|
61
|
-
*/
|
|
62
|
-
set splitterBarAttributes(attributes) {
|
|
63
|
-
this._splitterBarAttributes = attributes;
|
|
64
|
-
const splitterBar = this.splitterService.getPaneSplitterBar(this);
|
|
65
|
-
if (splitterBar) {
|
|
66
|
-
splitterBar.htmlAttributes = attributes;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
get splitterBarAttributes() {
|
|
70
|
-
return this._splitterBarAttributes;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Defines the CSS classes that are rendered on the splitter bar.
|
|
74
|
-
* Supports the same values as [`ngClass`](link:site.data.urls.angular['ngclassapi']).
|
|
75
|
-
*/
|
|
76
|
-
splitterBarClass;
|
|
77
|
-
/**
|
|
78
|
-
* Defines the minimum possible size of the pane.
|
|
79
|
-
* Accepts values in pixels and percentages.
|
|
80
|
-
*/
|
|
81
|
-
min;
|
|
82
|
-
/**
|
|
83
|
-
* Defines the maximum possible size of the pane.
|
|
84
|
-
* Accepts values in pixels and percentages.
|
|
85
|
-
*/
|
|
86
|
-
max;
|
|
87
|
-
/**
|
|
88
|
-
* Determines if you can resize the pane and provide space for other panes.
|
|
89
|
-
*
|
|
90
|
-
* @default true
|
|
91
|
-
*/
|
|
92
|
-
resizable = true;
|
|
93
|
-
/**
|
|
94
|
-
* Determines if you can hide the pane and provide space for other panes.
|
|
95
|
-
*
|
|
96
|
-
* @default false
|
|
97
|
-
*/
|
|
98
|
-
collapsible = false;
|
|
99
|
-
/**
|
|
100
|
-
* Determines if overflowing content is scrollable or hidden.
|
|
101
|
-
*
|
|
102
|
-
* @default true
|
|
103
|
-
*/
|
|
104
|
-
scrollable = true;
|
|
105
|
-
/**
|
|
106
|
-
* Determines if the pane is initially collapsed.
|
|
107
|
-
*
|
|
108
|
-
* @default false
|
|
109
|
-
*/
|
|
110
|
-
set collapsed(value) {
|
|
111
|
-
const hasChanged = this._collapsed !== value;
|
|
112
|
-
this._collapsed = value;
|
|
113
|
-
if (hasChanged && this.nativeElement) {
|
|
114
|
-
if (this._collapsed) {
|
|
115
|
-
// When collapsing, clear the flex-basis to allow other panes to expand
|
|
116
|
-
this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', '0');
|
|
117
|
-
this.renderer.setStyle(this.nativeElement, 'flex-basis', '0');
|
|
118
|
-
}
|
|
119
|
-
else if (this._size) {
|
|
120
|
-
// When expanding, restore the size if it was set
|
|
121
|
-
this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', this._size);
|
|
122
|
-
this.renderer.setStyle(this.nativeElement, 'flex-basis', this._size);
|
|
123
|
-
}
|
|
124
|
-
// Trigger the same forceExpand logic that tryToggle does
|
|
125
|
-
// This ensures remaining panes expand when a pane is collapsed
|
|
126
|
-
if (this.splitterService?.panes) {
|
|
127
|
-
const notCollapsed = this.splitterService.panes.filter(p => !p.collapsed);
|
|
128
|
-
const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
|
|
129
|
-
notCollapsed.filter(p => p.fixedSize).forEach(pane => {
|
|
130
|
-
pane.forceExpand = allHaveFixedSize;
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
get collapsed() {
|
|
136
|
-
return this._collapsed;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* @hidden
|
|
140
|
-
*/
|
|
141
|
-
orientation = 'horizontal';
|
|
142
|
-
/**
|
|
143
|
-
* @hidden
|
|
144
|
-
*/
|
|
145
|
-
set containsSplitter(value) {
|
|
146
|
-
if (value) {
|
|
147
|
-
this.renderer.addClass(this.nativeElement, 'k-pane-flex');
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
this.renderer.removeClass(this.nativeElement, 'k-pane-flex');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* @hidden
|
|
155
|
-
*/
|
|
156
|
-
overlayContent = false;
|
|
157
|
-
/**
|
|
158
|
-
* Fires when the Splitter pane size changes.
|
|
159
|
-
* The event data contains the new pane size.
|
|
160
|
-
* Enables two-way binding of the pane `size` property.
|
|
161
|
-
*/
|
|
162
|
-
sizeChange = new EventEmitter();
|
|
163
|
-
/**
|
|
164
|
-
* Fires when the Splitter pane collapses or expands.
|
|
165
|
-
* The event data contains the new property state.
|
|
166
|
-
* Enables two-way binding of the `collapsed` pane property.
|
|
167
|
-
*/
|
|
168
|
-
collapsedChange = new EventEmitter();
|
|
169
|
-
get isHidden() {
|
|
170
|
-
return this.collapsed;
|
|
171
|
-
}
|
|
172
|
-
ariaRole = 'group';
|
|
173
|
-
hostClass = true;
|
|
174
|
-
get scrollablePaneClass() {
|
|
175
|
-
return this.scrollable;
|
|
176
|
-
}
|
|
177
|
-
get fixedSize() {
|
|
178
|
-
return this.size && this.size.length > 0;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* @hidden
|
|
182
|
-
*/
|
|
183
|
-
forceExpand = false;
|
|
184
|
-
/**
|
|
185
|
-
* @hidden
|
|
186
|
-
*/
|
|
187
|
-
isResized = false;
|
|
188
|
-
_size;
|
|
189
|
-
_order;
|
|
190
|
-
_splitterBarAttributes;
|
|
191
|
-
_collapsed = false;
|
|
192
|
-
constructor(element, renderer, cdr, splitterService) {
|
|
193
|
-
this.element = element;
|
|
194
|
-
this.renderer = renderer;
|
|
195
|
-
this.cdr = cdr;
|
|
196
|
-
this.splitterService = splitterService;
|
|
197
|
-
}
|
|
198
|
-
ngAfterViewChecked() {
|
|
199
|
-
if (this.isHidden) {
|
|
200
|
-
this.renderer.addClass(this.nativeElement, 'k-hidden');
|
|
201
|
-
this.renderer.addClass(this.nativeElement, 'hidden');
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
this.renderer.removeClass(this.nativeElement, 'k-hidden');
|
|
205
|
-
this.renderer.removeClass(this.nativeElement, 'hidden');
|
|
206
|
-
}
|
|
207
|
-
this.setStaticPaneClass();
|
|
208
|
-
}
|
|
209
|
-
ngOnChanges(changes) {
|
|
210
|
-
if (anyChanged(['resizable', 'collapsible'], changes)) {
|
|
211
|
-
this.setStaticPaneClass();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* @hidden
|
|
216
|
-
*/
|
|
217
|
-
get computedSize() {
|
|
218
|
-
if (this.orientation === 'vertical') {
|
|
219
|
-
return this.nativeElement.offsetHeight;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
return this.nativeElement.offsetWidth;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* @hidden
|
|
227
|
-
*/
|
|
228
|
-
get nativeElement() {
|
|
229
|
-
return this.element.nativeElement;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* @hidden
|
|
233
|
-
*/
|
|
234
|
-
toggleOverlay(show) {
|
|
235
|
-
this.overlayContent = show;
|
|
236
|
-
this.cdr.detectChanges();
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* @hidden
|
|
240
|
-
*/
|
|
241
|
-
detectChanges() {
|
|
242
|
-
this.cdr.detectChanges();
|
|
243
|
-
}
|
|
244
|
-
setOrderStyles() {
|
|
245
|
-
this.renderer.setStyle(this.nativeElement, '-ms-flex-order', this.order);
|
|
246
|
-
this.renderer.setStyle(this.nativeElement, 'order', this.order);
|
|
247
|
-
}
|
|
248
|
-
setStaticPaneClass() {
|
|
249
|
-
if (this.forceExpand) {
|
|
250
|
-
this.renderer.removeClass(this.nativeElement, 'k-pane-static');
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
if (!this.resizable && !this.collapsible || this.fixedSize) {
|
|
254
|
-
this.renderer.addClass(this.nativeElement, 'k-pane-static');
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
this.renderer.removeClass(this.nativeElement, 'k-pane-static');
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitterPaneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.SplitterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
261
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SplitterPaneComponent, isStandalone: true, selector: "kendo-splitter-pane", inputs: { order: "order", size: "size", splitterBarAttributes: "splitterBarAttributes", splitterBarClass: "splitterBarClass", min: "min", max: "max", resizable: "resizable", collapsible: "collapsible", scrollable: "scrollable", collapsed: "collapsed", orientation: "orientation", containsSplitter: "containsSplitter", overlayContent: "overlayContent" }, outputs: { sizeChange: "sizeChange", collapsedChange: "collapsedChange" }, host: { properties: { "attr.role": "this.ariaRole", "class.k-pane": "this.hostClass", "class.k-scrollable": "this.scrollablePaneClass" } }, exportAs: ["kendoSplitterPane"], usesOnChanges: true, ngImport: i0, template: `
|
|
262
|
-
@if (!collapsed) {
|
|
263
|
-
<ng-content></ng-content>
|
|
264
|
-
}
|
|
265
|
-
@if (overlayContent) {
|
|
266
|
-
<div class="k-splitter-overlay k-overlay"></div>
|
|
267
|
-
}
|
|
268
|
-
`, isInline: true });
|
|
269
|
-
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitterPaneComponent, decorators: [{
|
|
271
|
-
type: Component,
|
|
272
|
-
args: [{
|
|
273
|
-
exportAs: 'kendoSplitterPane',
|
|
274
|
-
selector: 'kendo-splitter-pane',
|
|
275
|
-
template: `
|
|
276
|
-
@if (!collapsed) {
|
|
277
|
-
<ng-content></ng-content>
|
|
278
|
-
}
|
|
279
|
-
@if (overlayContent) {
|
|
280
|
-
<div class="k-splitter-overlay k-overlay"></div>
|
|
281
|
-
}
|
|
282
|
-
`,
|
|
283
|
-
standalone: true
|
|
284
|
-
}]
|
|
285
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.SplitterService }], propDecorators: { order: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], size: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}], splitterBarAttributes: [{
|
|
290
|
-
type: Input
|
|
291
|
-
}], splitterBarClass: [{
|
|
292
|
-
type: Input
|
|
293
|
-
}], min: [{
|
|
294
|
-
type: Input
|
|
295
|
-
}], max: [{
|
|
296
|
-
type: Input
|
|
297
|
-
}], resizable: [{
|
|
298
|
-
type: Input
|
|
299
|
-
}], collapsible: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], scrollable: [{
|
|
302
|
-
type: Input
|
|
303
|
-
}], collapsed: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], orientation: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], containsSplitter: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], overlayContent: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], sizeChange: [{
|
|
312
|
-
type: Output
|
|
313
|
-
}], collapsedChange: [{
|
|
314
|
-
type: Output
|
|
315
|
-
}], ariaRole: [{
|
|
316
|
-
type: HostBinding,
|
|
317
|
-
args: ['attr.role']
|
|
318
|
-
}], hostClass: [{
|
|
319
|
-
type: HostBinding,
|
|
320
|
-
args: ['class.k-pane']
|
|
321
|
-
}], scrollablePaneClass: [{
|
|
322
|
-
type: HostBinding,
|
|
323
|
-
args: ['class.k-scrollable']
|
|
324
|
-
}] } });
|
|
@@ -1,301 +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, EventEmitter, ContentChildren, Host, HostBinding, Inject, Input, Optional, Output, QueryList, ViewChildren, Renderer2, NgZone, isDevMode } from '@angular/core';
|
|
6
|
-
import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
7
|
-
import { validatePackage } from '@progress/kendo-licensing';
|
|
8
|
-
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
9
|
-
import { packageMetadata } from '../package-metadata';
|
|
10
|
-
import { SplitterPaneComponent } from './splitter-pane.component';
|
|
11
|
-
import { SplitterBarComponent } from './splitter-bar.component';
|
|
12
|
-
import { SplitterService } from './splitter.service';
|
|
13
|
-
import { isPresent } from '../common/util';
|
|
14
|
-
import { DraggableDirective } from '@progress/kendo-angular-common';
|
|
15
|
-
import { NgClass, NgStyle } from '@angular/common';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "./splitter.service";
|
|
18
|
-
import * as i2 from "@progress/kendo-angular-l10n";
|
|
19
|
-
import * as i3 from "./splitter-pane.component";
|
|
20
|
-
const SIZING_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/layout/splitter/panes/#specifying-the-dimensions';
|
|
21
|
-
/**
|
|
22
|
-
* Represents the [Kendo UI Splitter component for Angular]({% slug overview_splitter %}).
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```html
|
|
26
|
-
* <kendo-splitter [style.height.px]="280">
|
|
27
|
-
* <kendo-splitter-pane [collapsible]="true" size="30%">
|
|
28
|
-
* <h3>Left pane</h3>
|
|
29
|
-
* </kendo-splitter-pane>
|
|
30
|
-
* <kendo-splitter-pane>
|
|
31
|
-
* <h3>Right pane</h3>
|
|
32
|
-
* </kendo-splitter-pane>
|
|
33
|
-
* </kendo-splitter>
|
|
34
|
-
* ```
|
|
35
|
-
* @remarks
|
|
36
|
-
* Supported children components are: {@link SplitterPaneComponent}.
|
|
37
|
-
*/
|
|
38
|
-
export class SplitterComponent {
|
|
39
|
-
element;
|
|
40
|
-
splitterService;
|
|
41
|
-
localization;
|
|
42
|
-
renderer;
|
|
43
|
-
ngZone;
|
|
44
|
-
enclosingPane;
|
|
45
|
-
/**
|
|
46
|
-
* Defines the orientation of the panes within the Splitter.
|
|
47
|
-
* Use `horizontal` to place panes horizontally or `vertical` to place them vertically.
|
|
48
|
-
*
|
|
49
|
-
* @default 'horizontal'
|
|
50
|
-
*/
|
|
51
|
-
orientation = 'horizontal';
|
|
52
|
-
/**
|
|
53
|
-
* Defines the width or height of the Splitter splitbars in pixels.
|
|
54
|
-
* The dimension depends on the orientation of the Splitter.
|
|
55
|
-
*/
|
|
56
|
-
splitbarWidth;
|
|
57
|
-
/**
|
|
58
|
-
* Defines the distance in pixels that you move the separator during keyboard navigation.
|
|
59
|
-
*
|
|
60
|
-
* @default 10
|
|
61
|
-
*/
|
|
62
|
-
set resizeStep(value) {
|
|
63
|
-
this.splitterService.resizeStep = value;
|
|
64
|
-
}
|
|
65
|
-
get resizeStep() {
|
|
66
|
-
return this.splitterService.resizeStep;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Defines the CSS classes that are rendered on the splitter bars.
|
|
70
|
-
* Supports the same values as [`ngClass`](link:site.data.urls.angular['ngclassapi']).
|
|
71
|
-
*/
|
|
72
|
-
splitterBarClass;
|
|
73
|
-
/**
|
|
74
|
-
* Fires when the layout of the Splitter changes.
|
|
75
|
-
* Use this event to trigger layout calculations on components that are positioned inside the panes.
|
|
76
|
-
*/
|
|
77
|
-
layoutChange;
|
|
78
|
-
get hostClasses() {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
get horizontalHostClasses() {
|
|
82
|
-
return this.orientation === 'horizontal';
|
|
83
|
-
}
|
|
84
|
-
get verticalHostClasses() {
|
|
85
|
-
return this.orientation === 'vertical';
|
|
86
|
-
}
|
|
87
|
-
get dir() {
|
|
88
|
-
return this.direction;
|
|
89
|
-
}
|
|
90
|
-
set splitbars(splitbars) {
|
|
91
|
-
this.splitterService.splitterBars = splitbars ? splitbars.toArray() : [];
|
|
92
|
-
if (!isPresent(splitbars) || !isPresent(this.panes)) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (!isDocumentAvailable()) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const panesArray = this.panes.toArray();
|
|
99
|
-
const splitBarsArray = splitbars.toArray();
|
|
100
|
-
const components = [...panesArray, ...splitBarsArray]
|
|
101
|
-
.sort((a, b) => a.order - b.order);
|
|
102
|
-
const elements = components.map(component => component.element.nativeElement);
|
|
103
|
-
panesArray.forEach((pane, i) => {
|
|
104
|
-
const splitbar = splitBarsArray[i];
|
|
105
|
-
if (splitbar && pane.splitterBarAttributes) {
|
|
106
|
-
splitbar.htmlAttributes = pane.splitterBarAttributes;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
elements.forEach(element => this.renderer.appendChild(this.element.nativeElement, element));
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* @hidden
|
|
113
|
-
*/
|
|
114
|
-
panes;
|
|
115
|
-
paneChangesSubscription;
|
|
116
|
-
_styleObserver;
|
|
117
|
-
constructor(element, splitterService, localization, renderer, ngZone, enclosingPane) {
|
|
118
|
-
this.element = element;
|
|
119
|
-
this.splitterService = splitterService;
|
|
120
|
-
this.localization = localization;
|
|
121
|
-
this.renderer = renderer;
|
|
122
|
-
this.ngZone = ngZone;
|
|
123
|
-
this.enclosingPane = enclosingPane;
|
|
124
|
-
validatePackage(packageMetadata);
|
|
125
|
-
if (enclosingPane) {
|
|
126
|
-
enclosingPane.containsSplitter = true;
|
|
127
|
-
}
|
|
128
|
-
// the handler only runs in NgZone if there are bound handlers
|
|
129
|
-
// this line merges both streams
|
|
130
|
-
this.layoutChange = this.splitterService.layoutChange;
|
|
131
|
-
this.configure = this.configure.bind(this);
|
|
132
|
-
}
|
|
133
|
-
ngAfterContentInit() {
|
|
134
|
-
if (!isDocumentAvailable()) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this.reconfigure();
|
|
138
|
-
this.setFixedHeight();
|
|
139
|
-
const allHaveFixedSize = this.panes.length && Array.from(this.panes).every(p => p.fixedSize);
|
|
140
|
-
if (allHaveFixedSize && isDevMode()) {
|
|
141
|
-
throw new Error(`
|
|
142
|
-
The Splitter should have at least one pane without a set size.
|
|
143
|
-
See ${SIZING_DOC_LINK} for more information.
|
|
144
|
-
`);
|
|
145
|
-
}
|
|
146
|
-
this._styleObserver = new MutationObserver(() => {
|
|
147
|
-
this.ngZone.runOutsideAngular(() => {
|
|
148
|
-
this.setFixedHeight();
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
this._styleObserver.observe(this.element.nativeElement, { attributeFilter: ['style'] });
|
|
152
|
-
}
|
|
153
|
-
ngOnChanges(changes) {
|
|
154
|
-
if (changes.orientation && !changes.orientation.isFirstChange()) {
|
|
155
|
-
this.reconfigure();
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
ngOnDestroy() {
|
|
159
|
-
if (this.enclosingPane) {
|
|
160
|
-
this.enclosingPane.containsSplitter = false;
|
|
161
|
-
}
|
|
162
|
-
if (this._styleObserver) {
|
|
163
|
-
this._styleObserver.disconnect();
|
|
164
|
-
this._styleObserver = null;
|
|
165
|
-
}
|
|
166
|
-
this.unsubscribeChanges();
|
|
167
|
-
}
|
|
168
|
-
reconfigure() {
|
|
169
|
-
this.unsubscribeChanges();
|
|
170
|
-
this.configure();
|
|
171
|
-
this.paneChangesSubscription = this.panes.changes.subscribe(this.configure);
|
|
172
|
-
}
|
|
173
|
-
unsubscribeChanges() {
|
|
174
|
-
if (this.paneChangesSubscription) {
|
|
175
|
-
this.paneChangesSubscription.unsubscribe();
|
|
176
|
-
this.paneChangesSubscription = null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
configure() {
|
|
180
|
-
this.splitterService.configure({
|
|
181
|
-
panes: this.panes.toArray(),
|
|
182
|
-
orientation: this.orientation,
|
|
183
|
-
containerSize: () => {
|
|
184
|
-
if (this.orientation === 'vertical') {
|
|
185
|
-
return this.element.nativeElement.clientHeight;
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
return this.element.nativeElement.clientWidth;
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
direction: this.direction
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
get direction() {
|
|
195
|
-
return this.localization.rtl ? 'rtl' : 'ltr';
|
|
196
|
-
}
|
|
197
|
-
setFixedHeight() {
|
|
198
|
-
this.splitterService.fixedHeight = getComputedStyle(this.element.nativeElement).getPropertyValue('height') !== 'auto';
|
|
199
|
-
}
|
|
200
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: i1.SplitterService }, { token: i2.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: SplitterPaneComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
201
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SplitterComponent, isStandalone: true, selector: "kendo-splitter", inputs: { orientation: "orientation", splitbarWidth: "splitbarWidth", resizeStep: "resizeStep", splitterBarClass: "splitterBarClass" }, outputs: { layoutChange: "layoutChange" }, host: { properties: { "class.k-splitter": "this.hostClasses", "class.k-splitter-flex": "this.hostClasses", "class.k-splitter-horizontal": "this.horizontalHostClasses", "class.k-splitter-vertical": "this.verticalHostClasses", "attr.dir": "this.dir" } }, providers: [
|
|
202
|
-
SplitterService,
|
|
203
|
-
LocalizationService,
|
|
204
|
-
{
|
|
205
|
-
provide: L10N_PREFIX,
|
|
206
|
-
useValue: 'kendo.spliter'
|
|
207
|
-
}
|
|
208
|
-
], queries: [{ propertyName: "panes", predicate: SplitterPaneComponent }], viewQueries: [{ propertyName: "splitbars", predicate: SplitterBarComponent, descendants: true }], exportAs: ["kendoSplitter"], usesOnChanges: true, ngImport: i0, template: `
|
|
209
|
-
<ng-content select="kendo-splitter-pane"></ng-content>
|
|
210
|
-
@for (
|
|
211
|
-
pane of panes; track
|
|
212
|
-
pane; let index = $index; let last = $last) {
|
|
213
|
-
@if (!last) {
|
|
214
|
-
<kendo-splitter-bar
|
|
215
|
-
kendoDraggable
|
|
216
|
-
[index]="index"
|
|
217
|
-
[orientation]="orientation"
|
|
218
|
-
[ngClass]="pane.splitterBarClass || splitterBarClass"
|
|
219
|
-
[ngStyle]="{
|
|
220
|
-
width: orientation === 'horizontal' ? splitbarWidth + 'px' : undefined,
|
|
221
|
-
height: orientation === 'vertical' ? splitbarWidth + 'px' : undefined
|
|
222
|
-
}">
|
|
223
|
-
</kendo-splitter-bar>
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SplitterBarComponent, selector: "kendo-splitter-bar", inputs: ["orientation", "index", "htmlAttributes"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
227
|
-
}
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplitterComponent, decorators: [{
|
|
229
|
-
type: Component,
|
|
230
|
-
args: [{
|
|
231
|
-
exportAs: 'kendoSplitter',
|
|
232
|
-
selector: 'kendo-splitter',
|
|
233
|
-
providers: [
|
|
234
|
-
SplitterService,
|
|
235
|
-
LocalizationService,
|
|
236
|
-
{
|
|
237
|
-
provide: L10N_PREFIX,
|
|
238
|
-
useValue: 'kendo.spliter'
|
|
239
|
-
}
|
|
240
|
-
],
|
|
241
|
-
template: `
|
|
242
|
-
<ng-content select="kendo-splitter-pane"></ng-content>
|
|
243
|
-
@for (
|
|
244
|
-
pane of panes; track
|
|
245
|
-
pane; let index = $index; let last = $last) {
|
|
246
|
-
@if (!last) {
|
|
247
|
-
<kendo-splitter-bar
|
|
248
|
-
kendoDraggable
|
|
249
|
-
[index]="index"
|
|
250
|
-
[orientation]="orientation"
|
|
251
|
-
[ngClass]="pane.splitterBarClass || splitterBarClass"
|
|
252
|
-
[ngStyle]="{
|
|
253
|
-
width: orientation === 'horizontal' ? splitbarWidth + 'px' : undefined,
|
|
254
|
-
height: orientation === 'vertical' ? splitbarWidth + 'px' : undefined
|
|
255
|
-
}">
|
|
256
|
-
</kendo-splitter-bar>
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
`,
|
|
260
|
-
standalone: true,
|
|
261
|
-
imports: [SplitterBarComponent, DraggableDirective, NgStyle, NgClass]
|
|
262
|
-
}]
|
|
263
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SplitterService }, { type: i2.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i3.SplitterPaneComponent, decorators: [{
|
|
264
|
-
type: Optional
|
|
265
|
-
}, {
|
|
266
|
-
type: Host
|
|
267
|
-
}, {
|
|
268
|
-
type: Inject,
|
|
269
|
-
args: [SplitterPaneComponent]
|
|
270
|
-
}] }], propDecorators: { orientation: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], splitbarWidth: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], resizeStep: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], splitterBarClass: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], layoutChange: [{
|
|
279
|
-
type: Output
|
|
280
|
-
}], hostClasses: [{
|
|
281
|
-
type: HostBinding,
|
|
282
|
-
args: ['class.k-splitter']
|
|
283
|
-
}, {
|
|
284
|
-
type: HostBinding,
|
|
285
|
-
args: ['class.k-splitter-flex']
|
|
286
|
-
}], horizontalHostClasses: [{
|
|
287
|
-
type: HostBinding,
|
|
288
|
-
args: ['class.k-splitter-horizontal']
|
|
289
|
-
}], verticalHostClasses: [{
|
|
290
|
-
type: HostBinding,
|
|
291
|
-
args: ['class.k-splitter-vertical']
|
|
292
|
-
}], dir: [{
|
|
293
|
-
type: HostBinding,
|
|
294
|
-
args: ['attr.dir']
|
|
295
|
-
}], splitbars: [{
|
|
296
|
-
type: ViewChildren,
|
|
297
|
-
args: [SplitterBarComponent]
|
|
298
|
-
}], panes: [{
|
|
299
|
-
type: ContentChildren,
|
|
300
|
-
args: [SplitterPaneComponent]
|
|
301
|
-
}] } });
|