@progress/kendo-angular-navigation 2.1.1 → 11.0.0-develop.101
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/LICENSE.md +1 -1
- package/NOTICE.txt +4 -4
- package/README.md +1 -1
- package/actionsheet/actionsheet.component.d.ts +1 -1
- package/actionsheet/item.component.d.ts +1 -1
- package/actionsheet/list.component.d.ts +1 -1
- package/actionsheet/models/actionsheet-item.interface.d.ts +1 -1
- package/actionsheet/models/group.d.ts +1 -1
- package/actionsheet/models/index.d.ts +1 -1
- package/actionsheet/models/item-click.event.d.ts +1 -1
- package/actionsheet/templates/content-template.directive.d.ts +1 -1
- package/actionsheet/templates/footer-template.directive.d.ts +1 -1
- package/actionsheet/templates/header-template.directive.d.ts +1 -1
- package/actionsheet/templates/item-template.directive.d.ts +1 -1
- package/actionsheet.module.d.ts +1 -1
- package/appbar/appbar-section.component.d.ts +1 -1
- package/appbar/appbar-spacer.component.d.ts +1 -1
- package/appbar/appbar.component.d.ts +1 -1
- package/appbar/models/position-mode.d.ts +1 -1
- package/appbar/models/position.d.ts +1 -1
- package/appbar/models/theme-color.d.ts +1 -1
- package/appbar.module.d.ts +1 -1
- package/bottomnavigation/bottomnavigation-item.component.d.ts +1 -1
- package/bottomnavigation/bottomnavigation.component.d.ts +1 -1
- package/bottomnavigation/constants.d.ts +2 -2
- package/bottomnavigation/events/select-event.d.ts +1 -1
- package/bottomnavigation/templates/item-template.directive.d.ts +1 -1
- package/bottomnavigation/types/bottomnavigation-fill.d.ts +1 -1
- package/bottomnavigation/types/bottomnavigation-item-flow.d.ts +1 -1
- package/bottomnavigation/types/bottomnavigation-item.d.ts +1 -1
- package/bottomnavigation/types/bottomnavigation-position-mode.d.ts +1 -1
- package/bottomnavigation/types/bottomnavigation-theme-color.d.ts +1 -1
- package/bottomnavigation.module.d.ts +1 -1
- package/breadcrumb/breadcrumb-item.component.d.ts +1 -1
- package/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/breadcrumb/list.component.d.ts +1 -1
- package/breadcrumb/models/breadcrumb-item.interface.d.ts +1 -1
- package/breadcrumb/models/collapse-mode.d.ts +1 -1
- package/breadcrumb/models/constants.d.ts +2 -2
- package/breadcrumb/template-directives/item-template.directive.d.ts +1 -1
- package/breadcrumb/template-directives/separator.directive.d.ts +1 -1
- package/breadcrumb/util.d.ts +1 -1
- package/breadcrumb.module.d.ts +1 -1
- package/common/direction.d.ts +1 -1
- package/common/dom-queries.d.ts +1 -1
- package/common/preventable-event.d.ts +1 -1
- package/common/util.d.ts +1 -1
- package/{esm2015/actionsheet/actionsheet.component.js → esm2020/actionsheet/actionsheet.component.mjs} +12 -15
- package/{esm2015/actionsheet/item.component.js → esm2020/actionsheet/item.component.mjs} +6 -6
- package/{esm2015/actionsheet/list.component.js → esm2020/actionsheet/list.component.mjs} +5 -5
- package/{esm2015/actionsheet/models/actionsheet-item.interface.js → esm2020/actionsheet/models/actionsheet-item.interface.mjs} +1 -1
- package/{esm2015/actionsheet/models/group.js → esm2020/actionsheet/models/group.mjs} +1 -1
- package/{esm2015/actionsheet/models/index.js → esm2020/actionsheet/models/index.mjs} +1 -1
- package/{esm2015/actionsheet/models/item-click.event.js → esm2020/actionsheet/models/item-click.event.mjs} +1 -1
- package/{esm2015/actionsheet/templates/content-template.directive.js → esm2020/actionsheet/templates/content-template.directive.mjs} +5 -5
- package/{esm2015/actionsheet/templates/footer-template.directive.js → esm2020/actionsheet/templates/footer-template.directive.mjs} +5 -5
- package/{esm2015/actionsheet/templates/header-template.directive.js → esm2020/actionsheet/templates/header-template.directive.mjs} +5 -5
- package/{esm2015/actionsheet/templates/item-template.directive.js → esm2020/actionsheet/templates/item-template.directive.mjs} +5 -5
- package/{esm2015/actionsheet.module.js → esm2020/actionsheet.module.mjs} +5 -5
- package/{esm2015/appbar/appbar-section.component.js → esm2020/appbar/appbar-section.component.mjs} +4 -4
- package/{esm2015/appbar/appbar-spacer.component.js → esm2020/appbar/appbar-spacer.component.mjs} +5 -5
- package/{esm2015/appbar/appbar.component.js → esm2020/appbar/appbar.component.mjs} +4 -4
- package/{esm2015/appbar/models/position.js → esm2020/appbar/models/position-mode.mjs} +1 -1
- package/{esm2015/appbar/models/position-mode.js → esm2020/appbar/models/position.mjs} +1 -1
- package/esm2020/appbar/models/theme-color.mjs +5 -0
- package/{esm2015/appbar.module.js → esm2020/appbar.module.mjs} +5 -5
- package/{esm2015/bottomnavigation/bottomnavigation-item.component.js → esm2020/bottomnavigation/bottomnavigation-item.component.mjs} +5 -4
- package/{esm2015/bottomnavigation/bottomnavigation.component.js → esm2020/bottomnavigation/bottomnavigation.component.mjs} +6 -6
- package/{esm2015/bottomnavigation/constants.js → esm2020/bottomnavigation/constants.mjs} +1 -1
- package/{esm2015/bottomnavigation/events/select-event.js → esm2020/bottomnavigation/events/select-event.mjs} +1 -1
- package/{esm2015/bottomnavigation/templates/item-template.directive.js → esm2020/bottomnavigation/templates/item-template.directive.mjs} +5 -5
- package/esm2020/bottomnavigation/types/bottomnavigation-fill.mjs +5 -0
- package/esm2020/bottomnavigation/types/bottomnavigation-item-flow.mjs +5 -0
- package/esm2020/bottomnavigation/types/bottomnavigation-item.mjs +5 -0
- package/esm2020/bottomnavigation/types/bottomnavigation-position-mode.mjs +5 -0
- package/{esm2015/bottomnavigation/types/bottomnavigation-theme-color.js → esm2020/bottomnavigation/types/bottomnavigation-theme-color.mjs} +1 -1
- package/{esm2015/bottomnavigation.module.js → esm2020/bottomnavigation.module.mjs} +5 -5
- package/{esm2015/breadcrumb/breadcrumb-item.component.js → esm2020/breadcrumb/breadcrumb-item.component.mjs} +5 -5
- package/{esm2015/breadcrumb/breadcrumb.component.js → esm2020/breadcrumb/breadcrumb.component.mjs} +6 -6
- package/{esm2015/breadcrumb/list.component.js → esm2020/breadcrumb/list.component.mjs} +5 -5
- package/esm2020/breadcrumb/models/breadcrumb-item.interface.mjs +5 -0
- package/esm2020/breadcrumb/models/collapse-mode.mjs +5 -0
- package/{esm2015/breadcrumb/models/constants.js → esm2020/breadcrumb/models/constants.mjs} +1 -1
- package/{esm2015/breadcrumb/template-directives/item-template.directive.js → esm2020/breadcrumb/template-directives/item-template.directive.mjs} +5 -5
- package/{esm2015/breadcrumb/template-directives/separator.directive.js → esm2020/breadcrumb/template-directives/separator.directive.mjs} +6 -5
- package/{esm2015/breadcrumb/util.js → esm2020/breadcrumb/util.mjs} +1 -1
- package/{esm2015/breadcrumb.module.js → esm2020/breadcrumb.module.mjs} +5 -5
- package/esm2020/common/direction.mjs +5 -0
- package/{esm2015/common/dom-queries.js → esm2020/common/dom-queries.mjs} +1 -1
- package/{esm2015/common/preventable-event.js → esm2020/common/preventable-event.mjs} +1 -1
- package/{esm2015/common/util.js → esm2020/common/util.mjs} +1 -1
- package/{esm2015/main.js → esm2020/index.mjs} +1 -1
- package/{esm2015/navigation.module.js → esm2020/navigation.module.mjs} +5 -5
- package/{esm2015/package-metadata.js → esm2020/package-metadata.mjs} +3 -3
- package/{esm2015/kendo-angular-navigation.js → esm2020/progress-kendo-angular-navigation.mjs} +2 -2
- package/fesm2015/progress-kendo-angular-navigation.mjs +2325 -0
- package/{fesm2015/kendo-angular-navigation.js → fesm2020/progress-kendo-angular-navigation.mjs} +104 -107
- package/{main.d.ts → index.d.ts} +1 -1
- package/navigation.module.d.ts +1 -1
- package/package-metadata.d.ts +1 -1
- package/package.json +27 -53
- package/{kendo-angular-navigation.d.ts → progress-kendo-angular-navigation.d.ts} +2 -2
- package/schematics/ngAdd/index.js +1 -5
- package/bundles/kendo-angular-navigation.umd.js +0 -5
- package/esm2015/appbar/models/theme-color.js +0 -5
- package/esm2015/bottomnavigation/types/bottomnavigation-fill.js +0 -5
- package/esm2015/bottomnavigation/types/bottomnavigation-item-flow.js +0 -5
- package/esm2015/bottomnavigation/types/bottomnavigation-item.js +0 -5
- package/esm2015/bottomnavigation/types/bottomnavigation-position-mode.js +0 -5
- package/esm2015/breadcrumb/models/breadcrumb-item.interface.js +0 -5
- package/esm2015/breadcrumb/models/collapse-mode.js +0 -5
- package/esm2015/common/direction.js +0 -5
- package/schematics/ngAdd/index.js.map +0 -1
|
@@ -0,0 +1,2325 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2023 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
import * as i0 from '@angular/core';
|
|
6
|
+
import { Component, HostBinding, Input, NgModule, Directive, Optional, EventEmitter, Output, ViewChildren, isDevMode, ElementRef, ViewChild, ContentChild } from '@angular/core';
|
|
7
|
+
import * as i1 from '@progress/kendo-angular-l10n';
|
|
8
|
+
import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
9
|
+
import { validatePackage } from '@progress/kendo-licensing';
|
|
10
|
+
import * as i3 from '@progress/kendo-angular-common';
|
|
11
|
+
import { closestInScope as closestInScope$1, isDocumentAvailable, Keys, ResizeSensorModule } from '@progress/kendo-angular-common';
|
|
12
|
+
import * as i1$1 from '@angular/common';
|
|
13
|
+
import { CommonModule } from '@angular/common';
|
|
14
|
+
import { fromEvent, merge, ReplaySubject, Subject, Subscription } from 'rxjs';
|
|
15
|
+
import { filter, map, startWith, share } from 'rxjs/operators';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
const packageMetadata = {
|
|
21
|
+
name: '@progress/kendo-angular-navigation',
|
|
22
|
+
productName: 'Kendo UI for Angular',
|
|
23
|
+
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
24
|
+
publishDate: 1673510422,
|
|
25
|
+
version: '',
|
|
26
|
+
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Represents the [Kendo UI AppBar component for Angular]({% slug overview_appbar %}).
|
|
31
|
+
* Used to display information, actions, branding titles and additional navigation on the current screen.
|
|
32
|
+
*/
|
|
33
|
+
class AppBarComponent {
|
|
34
|
+
constructor(localizationService) {
|
|
35
|
+
this.localizationService = localizationService;
|
|
36
|
+
this.hostClass = true;
|
|
37
|
+
/**
|
|
38
|
+
* Specifies the position of the AppBar
|
|
39
|
+
* ([see example]({% slug positioning_appbar %}#toc-position)).
|
|
40
|
+
*
|
|
41
|
+
* * The possible values are:
|
|
42
|
+
* * `top` (Default)—Positions the AppBar at the top of the content.
|
|
43
|
+
* Setting the `position` property to `top` requires adding the Appbar component before the page content.
|
|
44
|
+
* The position property applies CSS `top: 0` style in [`fixed mode`]({% slug api_navigation_appbarcomponent %}#toc-positionMode) and also adds a `box-shadow` to the bottom of the AppBar.
|
|
45
|
+
*
|
|
46
|
+
* * `bottom`—Positions the AppBar at the bottom of the content.
|
|
47
|
+
* Setting the `position` property to `bottom` requires adding the Appbar component after the page content.
|
|
48
|
+
* The position property applies CSS `bottom: 0` style in [`fixed mode`]({% slug api_navigation_appbarcomponent %}#toc-positionMode) and also adds a `box-shadow ` to the top of the AppBar.
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
this.position = 'top';
|
|
52
|
+
/**
|
|
53
|
+
* Specifies the positionMode of the AppBar
|
|
54
|
+
* ([see example]({% slug positioning_appbar %}#toc-positionmode)).
|
|
55
|
+
*
|
|
56
|
+
* * The possible values are:
|
|
57
|
+
* * `static` (Default)—Does not position the AppBar in any special way. It is positioned according to the normal flow of the page.
|
|
58
|
+
* * `sticky`—Positions the AppBar based on the user's scroll position. A sticky element toggles between static and fixed CSS [`position`](https://developer.mozilla.org/en-US/docs/Web/CSS/position) property, depending on the scroll position.
|
|
59
|
+
* * `fixed`—Positions the AppBar relative to the viewport. It always stays in the same place even if the page is scrolled.
|
|
60
|
+
*/
|
|
61
|
+
this.positionMode = 'static';
|
|
62
|
+
/**
|
|
63
|
+
* Specifies the theme color of the AppBar.
|
|
64
|
+
* The theme color will be applied as background color of the component.
|
|
65
|
+
*
|
|
66
|
+
*
|
|
67
|
+
* * The possible values are:
|
|
68
|
+
* * `light` (Default)—Applies coloring based on light theme color.
|
|
69
|
+
* * `dark`—Applies coloring based on dark theme color.
|
|
70
|
+
* * `inherit`— Applies inherited coloring value.
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
this.themeColor = 'light';
|
|
74
|
+
this.rtl = false;
|
|
75
|
+
validatePackage(packageMetadata);
|
|
76
|
+
this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
|
|
77
|
+
this.rtl = rtl;
|
|
78
|
+
this.direction = this.rtl ? 'rtl' : 'ltr';
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
get topClass() {
|
|
82
|
+
return this.position === 'top';
|
|
83
|
+
}
|
|
84
|
+
get bottomClass() {
|
|
85
|
+
return this.position === 'bottom';
|
|
86
|
+
}
|
|
87
|
+
get stickyClass() {
|
|
88
|
+
return this.positionMode === 'sticky';
|
|
89
|
+
}
|
|
90
|
+
get fixedClass() {
|
|
91
|
+
return this.positionMode === 'fixed';
|
|
92
|
+
}
|
|
93
|
+
get staticClass() {
|
|
94
|
+
return this.positionMode === 'static';
|
|
95
|
+
}
|
|
96
|
+
get lightClass() {
|
|
97
|
+
return this.themeColor === 'light';
|
|
98
|
+
}
|
|
99
|
+
get darkClass() {
|
|
100
|
+
return this.themeColor === 'dark';
|
|
101
|
+
}
|
|
102
|
+
get inheritClass() {
|
|
103
|
+
return this.themeColor === 'inherit';
|
|
104
|
+
}
|
|
105
|
+
ngOnDestroy() {
|
|
106
|
+
if (this.dynamicRTLSubscription) {
|
|
107
|
+
this.dynamicRTLSubscription.unsubscribe();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
AppBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
+
AppBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AppBarComponent, selector: "kendo-appbar", inputs: { position: "position", positionMode: "positionMode", themeColor: "themeColor" }, host: { properties: { "class.k-appbar": "this.hostClass", "class.k-appbar-top": "this.topClass", "class.k-appbar-bottom": "this.bottomClass", "class.k-appbar-sticky": "this.stickyClass", "class.k-appbar-fixed": "this.fixedClass", "class.k-appbar-static": "this.staticClass", "class.k-appbar-light": "this.lightClass", "class.k-appbar-dark": "this.darkClass", "class.k-appbar-inherit": "this.inheritClass", "attr.dir": "this.direction" } }, providers: [
|
|
113
|
+
LocalizationService,
|
|
114
|
+
{
|
|
115
|
+
provide: L10N_PREFIX,
|
|
116
|
+
useValue: 'kendo.appbar.component'
|
|
117
|
+
}
|
|
118
|
+
], exportAs: ["kendoAppBar"], ngImport: i0, template: `
|
|
119
|
+
<ng-content></ng-content>
|
|
120
|
+
`, isInline: true });
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarComponent, decorators: [{
|
|
122
|
+
type: Component,
|
|
123
|
+
args: [{
|
|
124
|
+
exportAs: 'kendoAppBar',
|
|
125
|
+
selector: 'kendo-appbar',
|
|
126
|
+
template: `
|
|
127
|
+
<ng-content></ng-content>
|
|
128
|
+
`,
|
|
129
|
+
providers: [
|
|
130
|
+
LocalizationService,
|
|
131
|
+
{
|
|
132
|
+
provide: L10N_PREFIX,
|
|
133
|
+
useValue: 'kendo.appbar.component'
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}]
|
|
137
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
|
138
|
+
type: HostBinding,
|
|
139
|
+
args: ['class.k-appbar']
|
|
140
|
+
}], topClass: [{
|
|
141
|
+
type: HostBinding,
|
|
142
|
+
args: ['class.k-appbar-top']
|
|
143
|
+
}], bottomClass: [{
|
|
144
|
+
type: HostBinding,
|
|
145
|
+
args: ['class.k-appbar-bottom']
|
|
146
|
+
}], stickyClass: [{
|
|
147
|
+
type: HostBinding,
|
|
148
|
+
args: ['class.k-appbar-sticky']
|
|
149
|
+
}], fixedClass: [{
|
|
150
|
+
type: HostBinding,
|
|
151
|
+
args: ['class.k-appbar-fixed']
|
|
152
|
+
}], staticClass: [{
|
|
153
|
+
type: HostBinding,
|
|
154
|
+
args: ['class.k-appbar-static']
|
|
155
|
+
}], lightClass: [{
|
|
156
|
+
type: HostBinding,
|
|
157
|
+
args: ['class.k-appbar-light']
|
|
158
|
+
}], darkClass: [{
|
|
159
|
+
type: HostBinding,
|
|
160
|
+
args: ['class.k-appbar-dark']
|
|
161
|
+
}], inheritClass: [{
|
|
162
|
+
type: HostBinding,
|
|
163
|
+
args: ['class.k-appbar-inherit']
|
|
164
|
+
}], direction: [{
|
|
165
|
+
type: HostBinding,
|
|
166
|
+
args: ['attr.dir']
|
|
167
|
+
}], position: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], positionMode: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], themeColor: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}] } });
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Represents the [Kendo UI AppBarSection component for Angular]({% slug contentarrangement_appbar %}#toc-sections).
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
*
|
|
180
|
+
* ```ts-no-run
|
|
181
|
+
* * _@Component({
|
|
182
|
+
* selector: 'my-app',
|
|
183
|
+
* template: `
|
|
184
|
+
* <kendo-appbar>
|
|
185
|
+
* <kendo-appbar-section>
|
|
186
|
+
* <h2>Page Title</h2>
|
|
187
|
+
* </kendo-appbar-section>
|
|
188
|
+
* </kendo-appbar>
|
|
189
|
+
* `
|
|
190
|
+
* })
|
|
191
|
+
* class AppComponent {}
|
|
192
|
+
*/
|
|
193
|
+
class AppBarSectionComponent {
|
|
194
|
+
constructor() {
|
|
195
|
+
this.hostClass = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
AppBarSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
199
|
+
AppBarSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AppBarSectionComponent, selector: "kendo-appbar-section", host: { properties: { "class.k-appbar-section": "this.hostClass" } }, ngImport: i0, template: `
|
|
200
|
+
<ng-content></ng-content>
|
|
201
|
+
`, isInline: true });
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarSectionComponent, decorators: [{
|
|
203
|
+
type: Component,
|
|
204
|
+
args: [{
|
|
205
|
+
selector: 'kendo-appbar-section',
|
|
206
|
+
template: `
|
|
207
|
+
<ng-content></ng-content>
|
|
208
|
+
`
|
|
209
|
+
}]
|
|
210
|
+
}], propDecorators: { hostClass: [{
|
|
211
|
+
type: HostBinding,
|
|
212
|
+
args: ['class.k-appbar-section']
|
|
213
|
+
}] } });
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* @hidden
|
|
217
|
+
*/
|
|
218
|
+
const isPresent = (value) => value !== null && value !== undefined;
|
|
219
|
+
/**
|
|
220
|
+
* @hidden
|
|
221
|
+
*/
|
|
222
|
+
const outerWidth = (element) => {
|
|
223
|
+
let width = element.offsetWidth;
|
|
224
|
+
const style = getComputedStyle(element);
|
|
225
|
+
width += (parseFloat(style.marginLeft) || 0) + (parseFloat(style.marginRight) || 0);
|
|
226
|
+
return width;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* @hidden
|
|
230
|
+
*/
|
|
231
|
+
const getFirstAndLastFocusable = (parent) => {
|
|
232
|
+
const all = getAllFocusableChildren(parent);
|
|
233
|
+
const firstFocusable = all.length > 0 ? all[0] : parent;
|
|
234
|
+
const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;
|
|
235
|
+
return [firstFocusable, lastFocusable];
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* @hidden
|
|
239
|
+
*/
|
|
240
|
+
const getAllFocusableChildren = (parent) => {
|
|
241
|
+
return parent.querySelectorAll(focusableSelector);
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* @hidden
|
|
245
|
+
*/
|
|
246
|
+
const focusableSelector = [
|
|
247
|
+
'a[href]',
|
|
248
|
+
'area[href]',
|
|
249
|
+
'input:not([disabled])',
|
|
250
|
+
'select:not([disabled])',
|
|
251
|
+
'textarea:not([disabled])',
|
|
252
|
+
'button:not([disabled])',
|
|
253
|
+
'iframe',
|
|
254
|
+
'object',
|
|
255
|
+
'embed',
|
|
256
|
+
'*[tabindex]',
|
|
257
|
+
'*[contenteditable]'
|
|
258
|
+
].join(',');
|
|
259
|
+
/**
|
|
260
|
+
* @hidden
|
|
261
|
+
*/
|
|
262
|
+
let idx = 0;
|
|
263
|
+
/**
|
|
264
|
+
* @hidden
|
|
265
|
+
*/
|
|
266
|
+
const hexColorRegex = /^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
|
|
267
|
+
/**
|
|
268
|
+
* @hidden
|
|
269
|
+
*/
|
|
270
|
+
const getId = (prefix) => {
|
|
271
|
+
return `${prefix}${++idx}`;
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* @hidden
|
|
275
|
+
*/
|
|
276
|
+
const ACTIONSHEET_ITEM_INDEX_ATTRIBUTE = 'kendo-actionsheet-item-index';
|
|
277
|
+
/**
|
|
278
|
+
* @hidden
|
|
279
|
+
*/
|
|
280
|
+
const getActionSheetItemIndex = (target, targetAttr, scope) => {
|
|
281
|
+
const item = closestItem$1(target, targetAttr, scope);
|
|
282
|
+
if (item) {
|
|
283
|
+
return itemIndex$1(item, targetAttr);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
const itemIndex$1 = (item, indexAttr) => +item.getAttribute(indexAttr);
|
|
287
|
+
const hasItemIndex$1 = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));
|
|
288
|
+
const closestItem$1 = (target, targetAttr, scope) => closestInScope$1(target, el => hasItemIndex$1(el, targetAttr), scope);
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Represents the [Kendo UI AppBarSpacer component for Angular]({% slug contentarrangement_appbar %}#toc-spacings).
|
|
292
|
+
* Used to give additional white space between the AppBar sections and provides a way for customizing its width.
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
*
|
|
296
|
+
* ```ts-no-run
|
|
297
|
+
* * _@Component({
|
|
298
|
+
* selector: 'my-app',
|
|
299
|
+
* template: `
|
|
300
|
+
* <kendo-appbar>
|
|
301
|
+
* <kendo-appbar-section>
|
|
302
|
+
* <button kendoButton fillMode="flat">
|
|
303
|
+
* <kendo-icon name="menu"></kendo-icon>
|
|
304
|
+
* </button>
|
|
305
|
+
* </kendo-appbar-section>
|
|
306
|
+
*
|
|
307
|
+
* <kendo-appbar-spacer></kendo-appbar-spacer>
|
|
308
|
+
*
|
|
309
|
+
* <kendo-appbar-section>
|
|
310
|
+
* <h2>Page Title</h2>
|
|
311
|
+
* </kendo-appbar-section>
|
|
312
|
+
* </kendo-appbar>
|
|
313
|
+
* `
|
|
314
|
+
* })
|
|
315
|
+
* class AppComponent {}
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
class AppBarSpacerComponent {
|
|
319
|
+
constructor(renderer, element) {
|
|
320
|
+
this.renderer = renderer;
|
|
321
|
+
this.element = element;
|
|
322
|
+
this.hostClass = true;
|
|
323
|
+
}
|
|
324
|
+
get sizedClass() {
|
|
325
|
+
return isPresent(this.width);
|
|
326
|
+
}
|
|
327
|
+
ngAfterViewInit() {
|
|
328
|
+
if (isPresent(this.width)) {
|
|
329
|
+
const element = this.element.nativeElement;
|
|
330
|
+
this.renderer.setStyle(element, 'flexBasis', this.width);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
AppBarSpacerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarSpacerComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
+
AppBarSpacerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AppBarSpacerComponent, selector: "kendo-appbar-spacer", inputs: { width: "width" }, host: { properties: { "class.k-appbar-spacer": "this.hostClass", "class.k-appbar-spacer-sized": "this.sizedClass" } }, ngImport: i0, template: ``, isInline: true });
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarSpacerComponent, decorators: [{
|
|
337
|
+
type: Component,
|
|
338
|
+
args: [{
|
|
339
|
+
selector: 'kendo-appbar-spacer',
|
|
340
|
+
template: ``
|
|
341
|
+
}]
|
|
342
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{
|
|
343
|
+
type: HostBinding,
|
|
344
|
+
args: ['class.k-appbar-spacer']
|
|
345
|
+
}], sizedClass: [{
|
|
346
|
+
type: HostBinding,
|
|
347
|
+
args: ['class.k-appbar-spacer-sized']
|
|
348
|
+
}], width: [{
|
|
349
|
+
type: Input
|
|
350
|
+
}] } });
|
|
351
|
+
|
|
352
|
+
const exportedModules$2 = [
|
|
353
|
+
AppBarComponent,
|
|
354
|
+
AppBarSectionComponent,
|
|
355
|
+
AppBarSpacerComponent
|
|
356
|
+
];
|
|
357
|
+
const declarations$3 = [
|
|
358
|
+
...exportedModules$2
|
|
359
|
+
];
|
|
360
|
+
/**
|
|
361
|
+
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
362
|
+
* definition for the AppBar component.
|
|
363
|
+
*
|
|
364
|
+
* * @example
|
|
365
|
+
*
|
|
366
|
+
* ```ts-no-run
|
|
367
|
+
* // Import the AppBar module
|
|
368
|
+
* import { AppBarModule } from '@progress/kendo-angular-navigation';
|
|
369
|
+
*
|
|
370
|
+
* // The browser platform with a compiler
|
|
371
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
372
|
+
* import { BrowserModule } from '@angular/platform-browser';
|
|
373
|
+
*
|
|
374
|
+
* import { NgModule } from '@angular/core';
|
|
375
|
+
*
|
|
376
|
+
* // Import the app component
|
|
377
|
+
* import { AppComponent } from './app.component';
|
|
378
|
+
*
|
|
379
|
+
* // Define the app module
|
|
380
|
+
* _@NgModule({
|
|
381
|
+
* declarations: [AppComponent], // declare app component
|
|
382
|
+
* imports: [BrowserModule, AppBarModule], // import AppBar module
|
|
383
|
+
* bootstrap: [AppComponent]
|
|
384
|
+
* })
|
|
385
|
+
* export class AppModule {}
|
|
386
|
+
*
|
|
387
|
+
* // Compile and launch the module
|
|
388
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
389
|
+
*
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
class AppBarModule {
|
|
393
|
+
}
|
|
394
|
+
AppBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
395
|
+
AppBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarModule, declarations: [AppBarComponent,
|
|
396
|
+
AppBarSectionComponent,
|
|
397
|
+
AppBarSpacerComponent], imports: [CommonModule], exports: [AppBarComponent,
|
|
398
|
+
AppBarSectionComponent,
|
|
399
|
+
AppBarSpacerComponent] });
|
|
400
|
+
AppBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarModule, imports: [[CommonModule]] });
|
|
401
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AppBarModule, decorators: [{
|
|
402
|
+
type: NgModule,
|
|
403
|
+
args: [{
|
|
404
|
+
declarations: [declarations$3],
|
|
405
|
+
exports: [exportedModules$2],
|
|
406
|
+
imports: [CommonModule]
|
|
407
|
+
}]
|
|
408
|
+
}] });
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Represents a template that defines the content of a Breadcrumb item.
|
|
412
|
+
* To define the template, nest an `<ng-template>` tag with the `kendoBreadCrumbItemTemplate` directive inside the `<kendo-breadcrumb>` tag.
|
|
413
|
+
*
|
|
414
|
+
* For more information and example refer to the [Templates]({% slug templates_breadcrumb %}) article.
|
|
415
|
+
*/
|
|
416
|
+
class BreadCrumbItemTemplateDirective {
|
|
417
|
+
constructor(templateRef) {
|
|
418
|
+
this.templateRef = templateRef;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
BreadCrumbItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
422
|
+
BreadCrumbItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: BreadCrumbItemTemplateDirective, selector: "[kendoBreadCrumbItemTemplate]", ngImport: i0 });
|
|
423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbItemTemplateDirective, decorators: [{
|
|
424
|
+
type: Directive,
|
|
425
|
+
args: [{
|
|
426
|
+
selector: '[kendoBreadCrumbItemTemplate]'
|
|
427
|
+
}]
|
|
428
|
+
}], ctorParameters: function () {
|
|
429
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
430
|
+
type: Optional
|
|
431
|
+
}] }];
|
|
432
|
+
} });
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* @hidden
|
|
436
|
+
*/
|
|
437
|
+
const BREADCRUMB_ITEM_INDEX = 'data-kendo-breadcrumb-index';
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* @hidden
|
|
441
|
+
*/
|
|
442
|
+
class BreadCrumbItemComponent {
|
|
443
|
+
constructor(el) {
|
|
444
|
+
this.el = el;
|
|
445
|
+
this.index = -1;
|
|
446
|
+
this.hostClasses = true;
|
|
447
|
+
this.disabled = false;
|
|
448
|
+
}
|
|
449
|
+
get isRootItem() {
|
|
450
|
+
return this.item.context.isFirst;
|
|
451
|
+
}
|
|
452
|
+
get isDisabled() {
|
|
453
|
+
return this.disabled || null;
|
|
454
|
+
}
|
|
455
|
+
get isLastItem() {
|
|
456
|
+
return this.item.context.isLast;
|
|
457
|
+
}
|
|
458
|
+
ngOnInit() {
|
|
459
|
+
this.disabled = this.item.data && (this.item.data.disabled || this.item.context.isLast);
|
|
460
|
+
}
|
|
461
|
+
ngAfterViewInit() {
|
|
462
|
+
if (isDocumentAvailable()) {
|
|
463
|
+
this.width = outerWidth(this.el.nativeElement);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
onImageLoad() {
|
|
467
|
+
if (isDocumentAvailable()) {
|
|
468
|
+
this.width = outerWidth(this.el.nativeElement);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
BreadCrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
473
|
+
BreadCrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: BreadCrumbItemComponent, selector: "[kendoBreadCrumbItem]", inputs: { item: "item", collapseMode: "collapseMode", index: "index", itemTemplate: "itemTemplate" }, host: { properties: { "class.k-flex-none": "this.hostClasses", "class.k-breadcrumb-item": "this.hostClasses", "class.k-breadcrumb-root-item": "this.isRootItem", "attr.aria-disabled": "this.isDisabled", "class.k-breadcrumb-last-item": "this.isLastItem" } }, ngImport: i0, template: `
|
|
474
|
+
<ng-template #separator>
|
|
475
|
+
<ng-content select="[kendoBreadCrumbSeparator]"></ng-content>
|
|
476
|
+
</ng-template>
|
|
477
|
+
|
|
478
|
+
<ng-container *ngIf="collapseMode === 'wrap'">
|
|
479
|
+
<ng-container *ngTemplateOutlet="separator"></ng-container>
|
|
480
|
+
</ng-container>
|
|
481
|
+
|
|
482
|
+
<ng-container *ngIf="!item.context.collapsed">
|
|
483
|
+
<span
|
|
484
|
+
*ngIf="!itemTemplate"
|
|
485
|
+
[ngClass]="{
|
|
486
|
+
'k-breadcrumb-root-link': item.context.isFirst,
|
|
487
|
+
'k-breadcrumb-link': index !== 0,
|
|
488
|
+
'k-breadcrumb-icontext-link': !!item.data.icon && !!item.data.text,
|
|
489
|
+
'k-breadcrumb-icon-link': !!item.data.icon && !item.data.text,
|
|
490
|
+
'k-disabled': disabled
|
|
491
|
+
}"
|
|
492
|
+
[title]="item.data.title || ''"
|
|
493
|
+
[tabindex]="disabled ? -1 : 0"
|
|
494
|
+
[attr.aria-current]="item.context.isLast ? true : null"
|
|
495
|
+
role="link"
|
|
496
|
+
class="k-cursor-pointer k-flex-none"
|
|
497
|
+
>
|
|
498
|
+
<img *ngIf="item.data.imageUrl" (load)="onImageLoad()" [src]="item.data.imageUrl" class="k-image" role="presentation" />
|
|
499
|
+
<span *ngIf="item.data.icon && !item.data.iconClass" class="k-icon k-i-{{ item.data.icon }}"></span>
|
|
500
|
+
<span *ngIf="item.data.iconClass" class="{{ item.data.iconClass }}"></span>
|
|
501
|
+
{{ item.data.text }}
|
|
502
|
+
</span>
|
|
503
|
+
<ng-template
|
|
504
|
+
*ngIf="itemTemplate"
|
|
505
|
+
[ngTemplateOutlet]="itemTemplate"
|
|
506
|
+
[ngTemplateOutletContext]="{
|
|
507
|
+
$implicit: item.data,
|
|
508
|
+
index: index
|
|
509
|
+
}"
|
|
510
|
+
></ng-template>
|
|
511
|
+
</ng-container>
|
|
512
|
+
|
|
513
|
+
<ng-container *ngIf="collapseMode !== 'wrap'">
|
|
514
|
+
<ng-container *ngTemplateOutlet="separator"></ng-container>
|
|
515
|
+
</ng-container>
|
|
516
|
+
`, isInline: true, directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
517
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbItemComponent, decorators: [{
|
|
518
|
+
type: Component,
|
|
519
|
+
args: [{
|
|
520
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
521
|
+
selector: '[kendoBreadCrumbItem]',
|
|
522
|
+
template: `
|
|
523
|
+
<ng-template #separator>
|
|
524
|
+
<ng-content select="[kendoBreadCrumbSeparator]"></ng-content>
|
|
525
|
+
</ng-template>
|
|
526
|
+
|
|
527
|
+
<ng-container *ngIf="collapseMode === 'wrap'">
|
|
528
|
+
<ng-container *ngTemplateOutlet="separator"></ng-container>
|
|
529
|
+
</ng-container>
|
|
530
|
+
|
|
531
|
+
<ng-container *ngIf="!item.context.collapsed">
|
|
532
|
+
<span
|
|
533
|
+
*ngIf="!itemTemplate"
|
|
534
|
+
[ngClass]="{
|
|
535
|
+
'k-breadcrumb-root-link': item.context.isFirst,
|
|
536
|
+
'k-breadcrumb-link': index !== 0,
|
|
537
|
+
'k-breadcrumb-icontext-link': !!item.data.icon && !!item.data.text,
|
|
538
|
+
'k-breadcrumb-icon-link': !!item.data.icon && !item.data.text,
|
|
539
|
+
'k-disabled': disabled
|
|
540
|
+
}"
|
|
541
|
+
[title]="item.data.title || ''"
|
|
542
|
+
[tabindex]="disabled ? -1 : 0"
|
|
543
|
+
[attr.aria-current]="item.context.isLast ? true : null"
|
|
544
|
+
role="link"
|
|
545
|
+
class="k-cursor-pointer k-flex-none"
|
|
546
|
+
>
|
|
547
|
+
<img *ngIf="item.data.imageUrl" (load)="onImageLoad()" [src]="item.data.imageUrl" class="k-image" role="presentation" />
|
|
548
|
+
<span *ngIf="item.data.icon && !item.data.iconClass" class="k-icon k-i-{{ item.data.icon }}"></span>
|
|
549
|
+
<span *ngIf="item.data.iconClass" class="{{ item.data.iconClass }}"></span>
|
|
550
|
+
{{ item.data.text }}
|
|
551
|
+
</span>
|
|
552
|
+
<ng-template
|
|
553
|
+
*ngIf="itemTemplate"
|
|
554
|
+
[ngTemplateOutlet]="itemTemplate"
|
|
555
|
+
[ngTemplateOutletContext]="{
|
|
556
|
+
$implicit: item.data,
|
|
557
|
+
index: index
|
|
558
|
+
}"
|
|
559
|
+
></ng-template>
|
|
560
|
+
</ng-container>
|
|
561
|
+
|
|
562
|
+
<ng-container *ngIf="collapseMode !== 'wrap'">
|
|
563
|
+
<ng-container *ngTemplateOutlet="separator"></ng-container>
|
|
564
|
+
</ng-container>
|
|
565
|
+
`
|
|
566
|
+
}]
|
|
567
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{
|
|
568
|
+
type: Input
|
|
569
|
+
}], collapseMode: [{
|
|
570
|
+
type: Input
|
|
571
|
+
}], index: [{
|
|
572
|
+
type: Input
|
|
573
|
+
}], itemTemplate: [{
|
|
574
|
+
type: Input
|
|
575
|
+
}], hostClasses: [{
|
|
576
|
+
type: HostBinding,
|
|
577
|
+
args: ['class.k-flex-none']
|
|
578
|
+
}, {
|
|
579
|
+
type: HostBinding,
|
|
580
|
+
args: ['class.k-breadcrumb-item']
|
|
581
|
+
}], isRootItem: [{
|
|
582
|
+
type: HostBinding,
|
|
583
|
+
args: ['class.k-breadcrumb-root-item']
|
|
584
|
+
}], isDisabled: [{
|
|
585
|
+
type: HostBinding,
|
|
586
|
+
args: ['attr.aria-disabled']
|
|
587
|
+
}], isLastItem: [{
|
|
588
|
+
type: HostBinding,
|
|
589
|
+
args: ['class.k-breadcrumb-last-item']
|
|
590
|
+
}] } });
|
|
591
|
+
|
|
592
|
+
const closestInScope = (target, targetAttr, predicate, scope) => {
|
|
593
|
+
while (target && target !== scope && !predicate(target, targetAttr)) {
|
|
594
|
+
target = target.parentNode;
|
|
595
|
+
}
|
|
596
|
+
if (target !== scope) {
|
|
597
|
+
return target;
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
const hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));
|
|
601
|
+
/**
|
|
602
|
+
* @hidden
|
|
603
|
+
*/
|
|
604
|
+
const itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);
|
|
605
|
+
/**
|
|
606
|
+
* @hidden
|
|
607
|
+
*/
|
|
608
|
+
const closestItem = (target, targetAttr, scope) => closestInScope(target, targetAttr, hasItemIndex, scope);
|
|
609
|
+
|
|
610
|
+
const DEFAULT_ICON = 'chevron-right';
|
|
611
|
+
const DEFAULT_RTL_ICON = 'chevron-left';
|
|
612
|
+
/**
|
|
613
|
+
* @hidden
|
|
614
|
+
*/
|
|
615
|
+
class BreadCrumbSeparatorDirective {
|
|
616
|
+
constructor(el, localization) {
|
|
617
|
+
this.el = el;
|
|
618
|
+
this.localization = localization;
|
|
619
|
+
this.defaultClasses = true;
|
|
620
|
+
this.ariaHidden = true;
|
|
621
|
+
this.direction = 'ltr';
|
|
622
|
+
this.direction = this.localization.rtl ? 'rtl' : 'ltr';
|
|
623
|
+
}
|
|
624
|
+
set icon(icon) {
|
|
625
|
+
const element = this.el.nativeElement;
|
|
626
|
+
element.classList.remove(`k-i-${this._icon}`);
|
|
627
|
+
if (isPresent(icon)) {
|
|
628
|
+
this._icon = icon;
|
|
629
|
+
this.hasDefaultIcon = false;
|
|
630
|
+
}
|
|
631
|
+
else {
|
|
632
|
+
this._icon = this.direction === 'ltr' ? DEFAULT_ICON : DEFAULT_RTL_ICON;
|
|
633
|
+
this.hasDefaultIcon = true;
|
|
634
|
+
}
|
|
635
|
+
element.classList.add(`k-i-${this._icon}`);
|
|
636
|
+
}
|
|
637
|
+
get icon() {
|
|
638
|
+
return this._icon;
|
|
639
|
+
}
|
|
640
|
+
ngOnInit() {
|
|
641
|
+
this.localizationChangesSubscription = this.localization.changes.subscribe(({ rtl }) => {
|
|
642
|
+
this.direction = rtl ? 'rtl' : 'ltr';
|
|
643
|
+
if (this.hasDefaultIcon) {
|
|
644
|
+
this.icon = undefined;
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
ngOnDestroy() {
|
|
649
|
+
this.localizationChangesSubscription.unsubscribe();
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
BreadCrumbSeparatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbSeparatorDirective, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
653
|
+
BreadCrumbSeparatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: BreadCrumbSeparatorDirective, selector: "[kendoBreadCrumbSeparator]", inputs: { icon: "icon" }, host: { properties: { "class.k-breadcrumb-delimiter-icon": "this.defaultClasses", "class.k-icon": "this.defaultClasses", "attr.aria-hidden": "this.ariaHidden" } }, ngImport: i0 });
|
|
654
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbSeparatorDirective, decorators: [{
|
|
655
|
+
type: Directive,
|
|
656
|
+
args: [{
|
|
657
|
+
selector: '[kendoBreadCrumbSeparator]'
|
|
658
|
+
}]
|
|
659
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { icon: [{
|
|
660
|
+
type: Input
|
|
661
|
+
}], defaultClasses: [{
|
|
662
|
+
type: HostBinding,
|
|
663
|
+
args: ['class.k-breadcrumb-delimiter-icon']
|
|
664
|
+
}, {
|
|
665
|
+
type: HostBinding,
|
|
666
|
+
args: ['class.k-icon']
|
|
667
|
+
}], ariaHidden: [{
|
|
668
|
+
type: HostBinding,
|
|
669
|
+
args: ['attr.aria-hidden']
|
|
670
|
+
}] } });
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* @hidden
|
|
674
|
+
*/
|
|
675
|
+
class BreadCrumbListComponent {
|
|
676
|
+
constructor(el, zone) {
|
|
677
|
+
this.el = el;
|
|
678
|
+
this.zone = zone;
|
|
679
|
+
this.items = [];
|
|
680
|
+
this.collapseMode = 'auto';
|
|
681
|
+
this.itemClick = new EventEmitter();
|
|
682
|
+
const element = this.el.nativeElement;
|
|
683
|
+
this.isRootItemContainer = element.classList.contains('k-breadcrumb-root-item-container');
|
|
684
|
+
this.zone.runOutsideAngular(() => {
|
|
685
|
+
const click$ = fromEvent(element, 'click');
|
|
686
|
+
const enterKey$ = fromEvent(element, 'keydown').pipe(filter((ev /* KeyboardEvent causes lint error */) => ev.keyCode === Keys.Enter));
|
|
687
|
+
this.domEventsSubscription = merge(click$, enterKey$)
|
|
688
|
+
.pipe(map((ev) => ev.target), filter(e => !e.classList.contains('k-breadcrumb-delimiter-icon')), // do not trigger handler when a separator is clicked
|
|
689
|
+
map(e => this.getItemIndex(e)), filter(isPresent), map(i => parseInt(i, 10)), map(i => this.items[i]), filter(item => !item.data.disabled && !item.context.isLast), map(item => item.data))
|
|
690
|
+
.subscribe(el => {
|
|
691
|
+
this.zone.run(() => this.itemClick.emit(el));
|
|
692
|
+
});
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
ngOnDestroy() {
|
|
696
|
+
this.domEventsSubscription.unsubscribe();
|
|
697
|
+
}
|
|
698
|
+
getItemIndex(target) {
|
|
699
|
+
const item = closestItem(target, BREADCRUMB_ITEM_INDEX, this.el.nativeElement);
|
|
700
|
+
if (item) {
|
|
701
|
+
return itemIndex(item, BREADCRUMB_ITEM_INDEX);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
BreadCrumbListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
706
|
+
BreadCrumbListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: BreadCrumbListComponent, selector: "[kendoBreadCrumbList]", inputs: { items: "items", itemTemplate: "itemTemplate", collapseMode: "collapseMode", separatorIcon: "separatorIcon" }, outputs: { itemClick: "itemClick" }, viewQueries: [{ propertyName: "renderedItems", predicate: BreadCrumbItemComponent, descendants: true }], ngImport: i0, template: "\n <ng-container *ngFor=\"let item of items; let i = index; let isFirst = first; let isLast = last\">\n <li\n #renderedItem\n kendoBreadCrumbItem\n *ngIf=\"!(collapseMode === 'wrap' && isFirst) || isRootItemContainer\"\n [attr.data-kendo-breadcrumb-index]=\"i\"\n [item]=\"item\"\n [index]=\"i\"\n [collapseMode]=\"collapseMode\"\n [itemTemplate]=\"itemTemplate\"\n >\n <span kendoBreadCrumbSeparator [icon]=\"separatorIcon\" *ngIf=\"collapseMode === 'wrap' && !isFirst\"></span>\n <span\n kendoBreadCrumbSeparator\n [icon]=\"separatorIcon\"\n *ngIf=\"collapseMode !== 'wrap' && !isLast && !(item?.context.collapsed && items[i + 1]?.context.collapsed)\"\n ></span>\n </li>\n </ng-container>\n ", isInline: true, components: [{ type: BreadCrumbItemComponent, selector: "[kendoBreadCrumbItem]", inputs: ["item", "collapseMode", "index", "itemTemplate"] }], directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BreadCrumbSeparatorDirective, selector: "[kendoBreadCrumbSeparator]", inputs: ["icon"] }] });
|
|
707
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbListComponent, decorators: [{
|
|
708
|
+
type: Component,
|
|
709
|
+
args: [{
|
|
710
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
711
|
+
selector: '[kendoBreadCrumbList]',
|
|
712
|
+
template: `
|
|
713
|
+
<ng-container *ngFor="let item of items; let i = index; let isFirst = first; let isLast = last">
|
|
714
|
+
<li
|
|
715
|
+
#renderedItem
|
|
716
|
+
kendoBreadCrumbItem
|
|
717
|
+
*ngIf="!(collapseMode === 'wrap' && isFirst) || isRootItemContainer"
|
|
718
|
+
[attr.${BREADCRUMB_ITEM_INDEX}]="i"
|
|
719
|
+
[item]="item"
|
|
720
|
+
[index]="i"
|
|
721
|
+
[collapseMode]="collapseMode"
|
|
722
|
+
[itemTemplate]="itemTemplate"
|
|
723
|
+
>
|
|
724
|
+
<span kendoBreadCrumbSeparator [icon]="separatorIcon" *ngIf="collapseMode === 'wrap' && !isFirst"></span>
|
|
725
|
+
<span
|
|
726
|
+
kendoBreadCrumbSeparator
|
|
727
|
+
[icon]="separatorIcon"
|
|
728
|
+
*ngIf="collapseMode !== 'wrap' && !isLast && !(item?.context.collapsed && items[i + 1]?.context.collapsed)"
|
|
729
|
+
></span>
|
|
730
|
+
</li>
|
|
731
|
+
</ng-container>
|
|
732
|
+
`
|
|
733
|
+
}]
|
|
734
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { items: [{
|
|
735
|
+
type: Input
|
|
736
|
+
}], itemTemplate: [{
|
|
737
|
+
type: Input
|
|
738
|
+
}], collapseMode: [{
|
|
739
|
+
type: Input
|
|
740
|
+
}], separatorIcon: [{
|
|
741
|
+
type: Input
|
|
742
|
+
}], itemClick: [{
|
|
743
|
+
type: Output
|
|
744
|
+
}], renderedItems: [{
|
|
745
|
+
type: ViewChildren,
|
|
746
|
+
args: [BreadCrumbItemComponent]
|
|
747
|
+
}] } });
|
|
748
|
+
|
|
749
|
+
const getCollapsed = (itemComponent) => itemComponent.item.context.collapsed;
|
|
750
|
+
/**
|
|
751
|
+
* @hidden
|
|
752
|
+
*/
|
|
753
|
+
const collapsed = (itemComponent) => getCollapsed(itemComponent) === true;
|
|
754
|
+
/**
|
|
755
|
+
* @hidden
|
|
756
|
+
*/
|
|
757
|
+
const expanded = (itemComponent) => getCollapsed(itemComponent) === false;
|
|
758
|
+
const toggleFirst = (collapsed) => (itemComponents) => (itemComponents.find(ic => getCollapsed(ic) === collapsed).item.context.collapsed = !collapsed);
|
|
759
|
+
/**
|
|
760
|
+
* @hidden
|
|
761
|
+
*/
|
|
762
|
+
const collapseFirst = toggleFirst(false);
|
|
763
|
+
/**
|
|
764
|
+
* @hidden
|
|
765
|
+
*/
|
|
766
|
+
const expandFirst = toggleFirst(true);
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Represents the [Kendo UI Breadcrumb component for Angular]({% slug overview_breadcrumb %}).
|
|
770
|
+
*
|
|
771
|
+
* @example
|
|
772
|
+
* ```ts-no-run
|
|
773
|
+
* _@Component({
|
|
774
|
+
* selector: 'my-app',
|
|
775
|
+
* template: `
|
|
776
|
+
* <kendo-breadcrumb
|
|
777
|
+
* [items]="items"
|
|
778
|
+
* (itemClick)="onItemClick($event)">
|
|
779
|
+
* </kendo-breadcrumb>
|
|
780
|
+
* `
|
|
781
|
+
* })
|
|
782
|
+
* class AppComponent {
|
|
783
|
+
* public items: BreadCrumbItem[] = [
|
|
784
|
+
* { text: 'Home', title: 'Home', icon: 'home' },
|
|
785
|
+
* { text: 'Kids', title: 'Kids' },
|
|
786
|
+
* { text: '8y-16y', title: '8y-16y', disabled: true },
|
|
787
|
+
* { text: 'New collection', title: 'New collection' },
|
|
788
|
+
* { text: 'Jeans', title: 'Jeans' }
|
|
789
|
+
* ];
|
|
790
|
+
*
|
|
791
|
+
* public onItemClick(item: BreadCrumbItem): void {
|
|
792
|
+
* console.log(item);
|
|
793
|
+
* }
|
|
794
|
+
* }
|
|
795
|
+
* ```
|
|
796
|
+
*/
|
|
797
|
+
class BreadCrumbComponent {
|
|
798
|
+
constructor(el, cdr, zone, localization) {
|
|
799
|
+
this.el = el;
|
|
800
|
+
this.cdr = cdr;
|
|
801
|
+
this.zone = zone;
|
|
802
|
+
this.localization = localization;
|
|
803
|
+
/**
|
|
804
|
+
* Fires when a Breadcrumb item is clicked. The event will not be fired by disabled items and the last item.
|
|
805
|
+
*/
|
|
806
|
+
this.itemClick = new EventEmitter();
|
|
807
|
+
this.hostClasses = true;
|
|
808
|
+
this._items = [];
|
|
809
|
+
this._collapseMode = 'auto';
|
|
810
|
+
this.updateItems = new ReplaySubject();
|
|
811
|
+
this.afterViewInit = new Subject();
|
|
812
|
+
this.subscriptions = new Subscription();
|
|
813
|
+
this.direction = 'ltr';
|
|
814
|
+
validatePackage(packageMetadata);
|
|
815
|
+
const updateItems$ = this.updateItems.asObservable().pipe(startWith([]));
|
|
816
|
+
this.direction = localization.rtl ? 'rtl' : 'ltr';
|
|
817
|
+
this.itemsData$ = updateItems$.pipe(map(items => items.filter(Boolean)), map(items => items.map((item, index, collection) => ({
|
|
818
|
+
context: {
|
|
819
|
+
collapsed: false,
|
|
820
|
+
isLast: index === collection.length - 1,
|
|
821
|
+
isFirst: index === 0
|
|
822
|
+
},
|
|
823
|
+
data: item
|
|
824
|
+
}))), share());
|
|
825
|
+
this.firstItem$ = updateItems$.pipe(map(items => {
|
|
826
|
+
if (items.length > 0) {
|
|
827
|
+
return [
|
|
828
|
+
{
|
|
829
|
+
context: {
|
|
830
|
+
collapsed: false,
|
|
831
|
+
isLast: items.length === 1,
|
|
832
|
+
isFirst: true
|
|
833
|
+
},
|
|
834
|
+
data: items[0]
|
|
835
|
+
}
|
|
836
|
+
];
|
|
837
|
+
}
|
|
838
|
+
return [];
|
|
839
|
+
}), share());
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* The collection of items that will be rendered in the Breadcrumb.
|
|
843
|
+
*/
|
|
844
|
+
set items(items) {
|
|
845
|
+
this._items = items || [];
|
|
846
|
+
this.updateItems.next(this._items);
|
|
847
|
+
}
|
|
848
|
+
get items() {
|
|
849
|
+
return this._items;
|
|
850
|
+
}
|
|
851
|
+
/**
|
|
852
|
+
* Specifies the collapse mode of the Breadcrumb ([see example]({% slug collapse_modes_breadcrumb %})).
|
|
853
|
+
*
|
|
854
|
+
* The possible values are:
|
|
855
|
+
* - `auto` (default)—items are automatically collapsed based on the width of the Breadcrumb.
|
|
856
|
+
* - `wrap`—items are wrapped on multiple rows.
|
|
857
|
+
* - `none`—all items are expanded on the same row.
|
|
858
|
+
*
|
|
859
|
+
* For more information and example refer to the [Collapse Modes]({% slug collapse_modes_breadcrumb %}) article.
|
|
860
|
+
*/
|
|
861
|
+
set collapseMode(mode) {
|
|
862
|
+
if (isDevMode() && ['auto', 'wrap', 'none'].indexOf(mode) < 0) {
|
|
863
|
+
throw new Error('Invalid collapse mode. Allowed values are "auto", "wrap" or "none". \nFor more details see https://www.telerik.com/kendo-angular-ui/components/navigation/api/BreadCrumbCollapseMode/');
|
|
864
|
+
}
|
|
865
|
+
this._collapseMode = mode || 'auto';
|
|
866
|
+
this.updateItems.next(this.items);
|
|
867
|
+
}
|
|
868
|
+
get collapseMode() {
|
|
869
|
+
return this._collapseMode;
|
|
870
|
+
}
|
|
871
|
+
get wrapMode() {
|
|
872
|
+
return this.collapseMode === 'wrap';
|
|
873
|
+
}
|
|
874
|
+
get getDir() {
|
|
875
|
+
return this.direction;
|
|
876
|
+
}
|
|
877
|
+
ngOnInit() {
|
|
878
|
+
this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));
|
|
879
|
+
}
|
|
880
|
+
ngAfterViewInit() {
|
|
881
|
+
this.attachResizeHandler();
|
|
882
|
+
this.afterViewInit.next();
|
|
883
|
+
}
|
|
884
|
+
ngOnDestroy() {
|
|
885
|
+
this.subscriptions.unsubscribe();
|
|
886
|
+
}
|
|
887
|
+
handleResize() {
|
|
888
|
+
const autoCollapseCandidates = [
|
|
889
|
+
...this.listComponent.renderedItems.toArray().filter(ri => !ri.item.context.isFirst && !ri.item.context.isLast)
|
|
890
|
+
];
|
|
891
|
+
const componentWidth = outerWidth(this.el.nativeElement);
|
|
892
|
+
const itemsContainerWidth = Math.floor(this.itemsContainers
|
|
893
|
+
.toArray()
|
|
894
|
+
.map(el => outerWidth(el.nativeElement))
|
|
895
|
+
.reduce((acc, curr) => acc + curr, 0));
|
|
896
|
+
const nextExpandWidth = ([...autoCollapseCandidates].reverse().find(collapsed) || { width: 0 }).width;
|
|
897
|
+
// // shrink
|
|
898
|
+
if (componentWidth <= itemsContainerWidth && autoCollapseCandidates.find(expanded)) {
|
|
899
|
+
collapseFirst(autoCollapseCandidates);
|
|
900
|
+
// needed by resize sensor
|
|
901
|
+
this.cdr.detectChanges();
|
|
902
|
+
return this.handleResize();
|
|
903
|
+
}
|
|
904
|
+
// expand
|
|
905
|
+
if (componentWidth > itemsContainerWidth + nextExpandWidth && autoCollapseCandidates.find(collapsed)) {
|
|
906
|
+
expandFirst([...autoCollapseCandidates].reverse());
|
|
907
|
+
// needed by resize sensor
|
|
908
|
+
this.cdr.detectChanges();
|
|
909
|
+
return this.handleResize();
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
shouldResize() {
|
|
913
|
+
return isDocumentAvailable() && this.collapseMode === 'auto';
|
|
914
|
+
}
|
|
915
|
+
attachResizeHandler() {
|
|
916
|
+
// resize when:
|
|
917
|
+
// the component is initialized
|
|
918
|
+
// the container is resized
|
|
919
|
+
// items are added/removed
|
|
920
|
+
this.subscriptions.add(merge(this.resizeSensor.resize, this.itemsData$, this.afterViewInit.asObservable())
|
|
921
|
+
.pipe(filter(() => this.shouldResize()))
|
|
922
|
+
.subscribe(() => {
|
|
923
|
+
this.zone.runOutsideAngular(() => setTimeout(() => {
|
|
924
|
+
this.zone.run(() => {
|
|
925
|
+
if (this.listComponent) {
|
|
926
|
+
this.handleResize();
|
|
927
|
+
this.resizeSensor.acceptSize();
|
|
928
|
+
}
|
|
929
|
+
});
|
|
930
|
+
}));
|
|
931
|
+
}));
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
BreadCrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
935
|
+
BreadCrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: BreadCrumbComponent, selector: "kendo-breadcrumb", inputs: { items: "items", separatorIcon: "separatorIcon", collapseMode: "collapseMode" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.k-widget": "this.hostClasses", "class.k-breadcrumb": "this.hostClasses", "class.k-breadcrumb-wrap": "this.wrapMode", "attr.dir": "this.getDir" } }, providers: [
|
|
936
|
+
LocalizationService,
|
|
937
|
+
{
|
|
938
|
+
provide: L10N_PREFIX,
|
|
939
|
+
useValue: 'kendo.breadcrumb'
|
|
940
|
+
}
|
|
941
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: BreadCrumbItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ["resizeSensor"], descendants: true, static: true }, { propertyName: "listComponent", first: true, predicate: BreadCrumbListComponent, descendants: true, static: true }, { propertyName: "itemsContainers", predicate: ["itemsContainer"], descendants: true, read: ElementRef }], exportAs: ["kendoBreadCrumb"], ngImport: i0, template: `
|
|
942
|
+
<ol
|
|
943
|
+
#itemsContainer
|
|
944
|
+
kendoBreadCrumbList
|
|
945
|
+
class="k-breadcrumb-root-item-container"
|
|
946
|
+
*ngIf="collapseMode === 'wrap'"
|
|
947
|
+
[items]="firstItem$ | async"
|
|
948
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
949
|
+
[collapseMode]="collapseMode"
|
|
950
|
+
[separatorIcon]="separatorIcon"
|
|
951
|
+
(itemClick)="itemClick.emit($event)"
|
|
952
|
+
></ol>
|
|
953
|
+
<ol
|
|
954
|
+
#itemsContainer
|
|
955
|
+
kendoBreadCrumbList
|
|
956
|
+
class="k-breadcrumb-container"
|
|
957
|
+
[items]="itemsData$ | async"
|
|
958
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
959
|
+
[collapseMode]="collapseMode"
|
|
960
|
+
[separatorIcon]="separatorIcon"
|
|
961
|
+
(itemClick)="itemClick.emit($event)"
|
|
962
|
+
[ngClass]="{ 'k-flex-wrap': collapseMode === 'wrap', 'k-flex-none': collapseMode === 'none' }"
|
|
963
|
+
></ol>
|
|
964
|
+
<kendo-resize-sensor [rateLimit]="1000" #resizeSensor></kendo-resize-sensor>
|
|
965
|
+
`, isInline: true, components: [{ type: BreadCrumbListComponent, selector: "[kendoBreadCrumbList]", inputs: ["items", "itemTemplate", "collapseMode", "separatorIcon"], outputs: ["itemClick"] }, { type: i3.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1$1.AsyncPipe } });
|
|
966
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbComponent, decorators: [{
|
|
967
|
+
type: Component,
|
|
968
|
+
args: [{
|
|
969
|
+
exportAs: 'kendoBreadCrumb',
|
|
970
|
+
selector: 'kendo-breadcrumb',
|
|
971
|
+
providers: [
|
|
972
|
+
LocalizationService,
|
|
973
|
+
{
|
|
974
|
+
provide: L10N_PREFIX,
|
|
975
|
+
useValue: 'kendo.breadcrumb'
|
|
976
|
+
}
|
|
977
|
+
],
|
|
978
|
+
template: `
|
|
979
|
+
<ol
|
|
980
|
+
#itemsContainer
|
|
981
|
+
kendoBreadCrumbList
|
|
982
|
+
class="k-breadcrumb-root-item-container"
|
|
983
|
+
*ngIf="collapseMode === 'wrap'"
|
|
984
|
+
[items]="firstItem$ | async"
|
|
985
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
986
|
+
[collapseMode]="collapseMode"
|
|
987
|
+
[separatorIcon]="separatorIcon"
|
|
988
|
+
(itemClick)="itemClick.emit($event)"
|
|
989
|
+
></ol>
|
|
990
|
+
<ol
|
|
991
|
+
#itemsContainer
|
|
992
|
+
kendoBreadCrumbList
|
|
993
|
+
class="k-breadcrumb-container"
|
|
994
|
+
[items]="itemsData$ | async"
|
|
995
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
996
|
+
[collapseMode]="collapseMode"
|
|
997
|
+
[separatorIcon]="separatorIcon"
|
|
998
|
+
(itemClick)="itemClick.emit($event)"
|
|
999
|
+
[ngClass]="{ 'k-flex-wrap': collapseMode === 'wrap', 'k-flex-none': collapseMode === 'none' }"
|
|
1000
|
+
></ol>
|
|
1001
|
+
<kendo-resize-sensor [rateLimit]="1000" #resizeSensor></kendo-resize-sensor>
|
|
1002
|
+
`
|
|
1003
|
+
}]
|
|
1004
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { items: [{
|
|
1005
|
+
type: Input
|
|
1006
|
+
}], separatorIcon: [{
|
|
1007
|
+
type: Input
|
|
1008
|
+
}], collapseMode: [{
|
|
1009
|
+
type: Input
|
|
1010
|
+
}], itemClick: [{
|
|
1011
|
+
type: Output
|
|
1012
|
+
}], resizeSensor: [{
|
|
1013
|
+
type: ViewChild,
|
|
1014
|
+
args: ['resizeSensor', { static: true }]
|
|
1015
|
+
}], itemsContainers: [{
|
|
1016
|
+
type: ViewChildren,
|
|
1017
|
+
args: ['itemsContainer', { read: ElementRef }]
|
|
1018
|
+
}], listComponent: [{
|
|
1019
|
+
type: ViewChild,
|
|
1020
|
+
args: [BreadCrumbListComponent, { static: true }]
|
|
1021
|
+
}], itemTemplate: [{
|
|
1022
|
+
type: ContentChild,
|
|
1023
|
+
args: [BreadCrumbItemTemplateDirective, { static: false }]
|
|
1024
|
+
}], hostClasses: [{
|
|
1025
|
+
type: HostBinding,
|
|
1026
|
+
args: ['class.k-widget']
|
|
1027
|
+
}, {
|
|
1028
|
+
type: HostBinding,
|
|
1029
|
+
args: ['class.k-breadcrumb']
|
|
1030
|
+
}], wrapMode: [{
|
|
1031
|
+
type: HostBinding,
|
|
1032
|
+
args: ['class.k-breadcrumb-wrap']
|
|
1033
|
+
}], getDir: [{
|
|
1034
|
+
type: HostBinding,
|
|
1035
|
+
args: ['attr.dir']
|
|
1036
|
+
}] } });
|
|
1037
|
+
|
|
1038
|
+
const templateDirectives$2 = [
|
|
1039
|
+
BreadCrumbItemTemplateDirective
|
|
1040
|
+
];
|
|
1041
|
+
const exportedModules$1 = [
|
|
1042
|
+
BreadCrumbComponent,
|
|
1043
|
+
BreadCrumbItemComponent,
|
|
1044
|
+
BreadCrumbListComponent,
|
|
1045
|
+
...templateDirectives$2
|
|
1046
|
+
];
|
|
1047
|
+
const declarations$2 = [
|
|
1048
|
+
...exportedModules$1,
|
|
1049
|
+
BreadCrumbSeparatorDirective
|
|
1050
|
+
];
|
|
1051
|
+
/**
|
|
1052
|
+
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
1053
|
+
* definition for the BreadCrumb component.
|
|
1054
|
+
* @example
|
|
1055
|
+
*
|
|
1056
|
+
* ```ts-no-run
|
|
1057
|
+
* // Import the BreadCrumb module
|
|
1058
|
+
* import { BreadCrumbModule } from '@progress/kendo-angular-navigation';
|
|
1059
|
+
*
|
|
1060
|
+
* // The browser platform with a compiler
|
|
1061
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
1062
|
+
* import { BrowserModule } from '@angular/platform-browser';
|
|
1063
|
+
*
|
|
1064
|
+
* import { NgModule } from '@angular/core';
|
|
1065
|
+
*
|
|
1066
|
+
* // Import the app component
|
|
1067
|
+
* import { AppComponent } from './app.component';
|
|
1068
|
+
*
|
|
1069
|
+
* // Define the app module
|
|
1070
|
+
* _@NgModule({
|
|
1071
|
+
* declarations: [AppComponent], // declare app component
|
|
1072
|
+
* imports: [BrowserModule, BreadCrumbModule], // import BreadCrumb module
|
|
1073
|
+
* bootstrap: [AppComponent]
|
|
1074
|
+
* })
|
|
1075
|
+
* export class AppModule {}
|
|
1076
|
+
*
|
|
1077
|
+
* // Compile and launch the module
|
|
1078
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
1079
|
+
*
|
|
1080
|
+
* ```
|
|
1081
|
+
*/
|
|
1082
|
+
class BreadCrumbModule {
|
|
1083
|
+
}
|
|
1084
|
+
BreadCrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1085
|
+
BreadCrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbModule, declarations: [BreadCrumbComponent,
|
|
1086
|
+
BreadCrumbItemComponent,
|
|
1087
|
+
BreadCrumbListComponent, BreadCrumbItemTemplateDirective, BreadCrumbSeparatorDirective], imports: [CommonModule, ResizeSensorModule], exports: [BreadCrumbComponent,
|
|
1088
|
+
BreadCrumbItemComponent,
|
|
1089
|
+
BreadCrumbListComponent, BreadCrumbItemTemplateDirective] });
|
|
1090
|
+
BreadCrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbModule, imports: [[CommonModule, ResizeSensorModule]] });
|
|
1091
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BreadCrumbModule, decorators: [{
|
|
1092
|
+
type: NgModule,
|
|
1093
|
+
args: [{
|
|
1094
|
+
declarations: [declarations$2],
|
|
1095
|
+
exports: [exportedModules$1],
|
|
1096
|
+
imports: [CommonModule, ResizeSensorModule]
|
|
1097
|
+
}]
|
|
1098
|
+
}] });
|
|
1099
|
+
|
|
1100
|
+
/**
|
|
1101
|
+
* @hidden
|
|
1102
|
+
*/
|
|
1103
|
+
class BottomNavigationItemComponent {
|
|
1104
|
+
get disabledClass() {
|
|
1105
|
+
return this.item.disabled;
|
|
1106
|
+
}
|
|
1107
|
+
get horizontalItemClass() {
|
|
1108
|
+
return this.orientation === 'horizontal';
|
|
1109
|
+
}
|
|
1110
|
+
get verticalItemClass() {
|
|
1111
|
+
return this.orientation === 'vertical';
|
|
1112
|
+
}
|
|
1113
|
+
get label() {
|
|
1114
|
+
return this.item.text ? this.item.text : null;
|
|
1115
|
+
}
|
|
1116
|
+
get tabindex() {
|
|
1117
|
+
return this.item.tabIndex ? this.item.tabIndex : 0;
|
|
1118
|
+
}
|
|
1119
|
+
get selectedClass() {
|
|
1120
|
+
return this.selectedIdx ? this.selectedIdx === this.index : this.item.selected;
|
|
1121
|
+
}
|
|
1122
|
+
get itemIcon() {
|
|
1123
|
+
return this.item.icon || this.item.iconClass ? true : false;
|
|
1124
|
+
}
|
|
1125
|
+
get iconClasses() {
|
|
1126
|
+
const kendoIcon = this.item.icon ? `k-icon k-i-${this.item.icon}` : '';
|
|
1127
|
+
const customIcon = this.item.iconClass ? this.item.iconClass : '';
|
|
1128
|
+
return `${kendoIcon} ${customIcon}`;
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
BottomNavigationItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1132
|
+
BottomNavigationItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: BottomNavigationItemComponent, selector: "[kendoBottomNavigationItem]", inputs: { itemTemplate: "itemTemplate", item: "item", index: "index", disabledComponent: "disabledComponent", selectedIdx: "selectedIdx", orientation: "orientation" }, host: { properties: { "attr.aria-disabled": "this.disabledClass", "class.k-disabled": "this.disabledClass", "class.k-hstack": "this.horizontalItemClass", "class.k-vstack": "this.verticalItemClass", "attr.aria-label": "this.label", "attr.tabindex": "this.tabindex", "attr.aria-selected": "this.selectedClass", "class.k-selected": "this.selectedClass" } }, ngImport: i0, template: `
|
|
1133
|
+
<ng-container *ngIf="!itemTemplate">
|
|
1134
|
+
<span *ngIf="itemIcon" class="k-bottom-nav-item-icon" [ngClass]="iconClasses"></span>
|
|
1135
|
+
<span *ngIf="item.text" class="k-bottom-nav-item-text">{{item.text}}</span>
|
|
1136
|
+
</ng-container>
|
|
1137
|
+
<ng-template *ngIf="itemTemplate"
|
|
1138
|
+
[ngTemplateOutlet]="itemTemplate?.templateRef"
|
|
1139
|
+
[ngTemplateOutletContext]="{ $implicit: item }">
|
|
1140
|
+
</ng-template>
|
|
1141
|
+
`, isInline: true, directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
1142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationItemComponent, decorators: [{
|
|
1143
|
+
type: Component,
|
|
1144
|
+
args: [{
|
|
1145
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1146
|
+
selector: '[kendoBottomNavigationItem]',
|
|
1147
|
+
template: `
|
|
1148
|
+
<ng-container *ngIf="!itemTemplate">
|
|
1149
|
+
<span *ngIf="itemIcon" class="k-bottom-nav-item-icon" [ngClass]="iconClasses"></span>
|
|
1150
|
+
<span *ngIf="item.text" class="k-bottom-nav-item-text">{{item.text}}</span>
|
|
1151
|
+
</ng-container>
|
|
1152
|
+
<ng-template *ngIf="itemTemplate"
|
|
1153
|
+
[ngTemplateOutlet]="itemTemplate?.templateRef"
|
|
1154
|
+
[ngTemplateOutletContext]="{ $implicit: item }">
|
|
1155
|
+
</ng-template>
|
|
1156
|
+
`
|
|
1157
|
+
}]
|
|
1158
|
+
}], propDecorators: { itemTemplate: [{
|
|
1159
|
+
type: Input
|
|
1160
|
+
}], item: [{
|
|
1161
|
+
type: Input
|
|
1162
|
+
}], index: [{
|
|
1163
|
+
type: Input
|
|
1164
|
+
}], disabledComponent: [{
|
|
1165
|
+
type: Input
|
|
1166
|
+
}], selectedIdx: [{
|
|
1167
|
+
type: Input
|
|
1168
|
+
}], orientation: [{
|
|
1169
|
+
type: Input
|
|
1170
|
+
}], disabledClass: [{
|
|
1171
|
+
type: HostBinding,
|
|
1172
|
+
args: ['attr.aria-disabled']
|
|
1173
|
+
}, {
|
|
1174
|
+
type: HostBinding,
|
|
1175
|
+
args: ['class.k-disabled']
|
|
1176
|
+
}], horizontalItemClass: [{
|
|
1177
|
+
type: HostBinding,
|
|
1178
|
+
args: ['class.k-hstack']
|
|
1179
|
+
}], verticalItemClass: [{
|
|
1180
|
+
type: HostBinding,
|
|
1181
|
+
args: ['class.k-vstack']
|
|
1182
|
+
}], label: [{
|
|
1183
|
+
type: HostBinding,
|
|
1184
|
+
args: ['attr.aria-label']
|
|
1185
|
+
}], tabindex: [{
|
|
1186
|
+
type: HostBinding,
|
|
1187
|
+
args: ['attr.tabindex']
|
|
1188
|
+
}], selectedClass: [{
|
|
1189
|
+
type: HostBinding,
|
|
1190
|
+
args: ['attr.aria-selected']
|
|
1191
|
+
}, {
|
|
1192
|
+
type: HostBinding,
|
|
1193
|
+
args: ['class.k-selected']
|
|
1194
|
+
}] } });
|
|
1195
|
+
|
|
1196
|
+
/**
|
|
1197
|
+
* Represents a template that defines the item content of the BottomNavigation.
|
|
1198
|
+
* To define the template, nest an `<ng-template>` tag
|
|
1199
|
+
* with the `kendoBottomNavigationItemTemplate` directive inside the `<kendo-bottomnavigation>` tag ([see example]({% slug templates_bottomnavigation %})).
|
|
1200
|
+
*/
|
|
1201
|
+
class BottomNavigationItemTemplateDirective {
|
|
1202
|
+
constructor(templateRef) {
|
|
1203
|
+
this.templateRef = templateRef;
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
BottomNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1207
|
+
BottomNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: BottomNavigationItemTemplateDirective, selector: "[kendoBottomNavigationItemTemplate]", ngImport: i0 });
|
|
1208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationItemTemplateDirective, decorators: [{
|
|
1209
|
+
type: Directive,
|
|
1210
|
+
args: [{
|
|
1211
|
+
selector: '[kendoBottomNavigationItemTemplate]'
|
|
1212
|
+
}]
|
|
1213
|
+
}], ctorParameters: function () {
|
|
1214
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
1215
|
+
type: Optional
|
|
1216
|
+
}] }];
|
|
1217
|
+
} });
|
|
1218
|
+
|
|
1219
|
+
/**
|
|
1220
|
+
* @hidden
|
|
1221
|
+
*/
|
|
1222
|
+
class PreventableEvent {
|
|
1223
|
+
/**
|
|
1224
|
+
* @hidden
|
|
1225
|
+
*/
|
|
1226
|
+
constructor(args) {
|
|
1227
|
+
this.prevented = false;
|
|
1228
|
+
Object.assign(this, args);
|
|
1229
|
+
}
|
|
1230
|
+
/**
|
|
1231
|
+
* Prevents the default action for a specified event.
|
|
1232
|
+
* In this way, the source component suppresses
|
|
1233
|
+
* the built-in behavior that follows the event.
|
|
1234
|
+
*/
|
|
1235
|
+
preventDefault() {
|
|
1236
|
+
this.prevented = true;
|
|
1237
|
+
}
|
|
1238
|
+
/**
|
|
1239
|
+
* Returns `true` if the event was prevented
|
|
1240
|
+
* by any of its subscribers.
|
|
1241
|
+
*
|
|
1242
|
+
* @returns `true` if the default action was prevented.
|
|
1243
|
+
* Otherwise, returns `false`.
|
|
1244
|
+
*/
|
|
1245
|
+
isDefaultPrevented() {
|
|
1246
|
+
return this.prevented;
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
/**
|
|
1251
|
+
* Arguments for the `select` event of the BottomNavigation.
|
|
1252
|
+
*/
|
|
1253
|
+
class BottomNavigationSelectEvent extends PreventableEvent {
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
/**
|
|
1257
|
+
* @hidden
|
|
1258
|
+
*/
|
|
1259
|
+
const BOTTOMNAVIGATION_ITEM_INDEX = 'data-kendo-bottomnavigation-index';
|
|
1260
|
+
/**
|
|
1261
|
+
* @hidden
|
|
1262
|
+
*/
|
|
1263
|
+
const colors = ['primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];
|
|
1264
|
+
|
|
1265
|
+
/**
|
|
1266
|
+
* Represents the [Kendo UI BottomNavigation component for Angular]({% slug overview_bottomnavigation %}).
|
|
1267
|
+
*
|
|
1268
|
+
* @example
|
|
1269
|
+
* ```ts-no-run
|
|
1270
|
+
* _@Component({
|
|
1271
|
+
* selector: 'my-app',
|
|
1272
|
+
* template: `
|
|
1273
|
+
* <kendo-bottomnavigation [items]="items"></kendo-bottomnavigation>
|
|
1274
|
+
* `
|
|
1275
|
+
* })
|
|
1276
|
+
* class AppComponent {
|
|
1277
|
+
* public items: Array<any> = [
|
|
1278
|
+
* { text: 'Inbox', icon: 'envelop', selected: true },
|
|
1279
|
+
* { text: 'Calendar', icon: 'calendar'},
|
|
1280
|
+
* { text: 'Profile', icon: 'user'}
|
|
1281
|
+
* ]
|
|
1282
|
+
* }
|
|
1283
|
+
* ```
|
|
1284
|
+
*/
|
|
1285
|
+
class BottomNavigationComponent {
|
|
1286
|
+
constructor(localization, hostElement, ngZone, changeDetector, renderer) {
|
|
1287
|
+
this.localization = localization;
|
|
1288
|
+
this.hostElement = hostElement;
|
|
1289
|
+
this.ngZone = ngZone;
|
|
1290
|
+
this.changeDetector = changeDetector;
|
|
1291
|
+
this.renderer = renderer;
|
|
1292
|
+
/**
|
|
1293
|
+
* Sets a top border to the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).
|
|
1294
|
+
*
|
|
1295
|
+
* @default false
|
|
1296
|
+
*/
|
|
1297
|
+
this.border = false;
|
|
1298
|
+
/**
|
|
1299
|
+
* Disables the whole BottomNavigation.
|
|
1300
|
+
*
|
|
1301
|
+
* @default false
|
|
1302
|
+
*/
|
|
1303
|
+
this.disabled = false;
|
|
1304
|
+
/**
|
|
1305
|
+
* Fires each time an item is selected. This event is preventable.
|
|
1306
|
+
*/
|
|
1307
|
+
this.select = new EventEmitter();
|
|
1308
|
+
/**
|
|
1309
|
+
* @hidden
|
|
1310
|
+
*/
|
|
1311
|
+
this.hostClass = true;
|
|
1312
|
+
/**
|
|
1313
|
+
* @hidden
|
|
1314
|
+
*/
|
|
1315
|
+
this.role = 'navigation';
|
|
1316
|
+
this._fill = 'flat';
|
|
1317
|
+
this._itemFlow = 'vertical';
|
|
1318
|
+
this._positionMode = 'fixed';
|
|
1319
|
+
this._themeColor = 'primary';
|
|
1320
|
+
this._nativeHostElement = this.hostElement.nativeElement;
|
|
1321
|
+
this.subscriptions = new Subscription();
|
|
1322
|
+
this.rtl = false;
|
|
1323
|
+
validatePackage(packageMetadata);
|
|
1324
|
+
this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {
|
|
1325
|
+
this.rtl = rtl;
|
|
1326
|
+
this.direction = this.rtl ? 'rtl' : 'ltr';
|
|
1327
|
+
});
|
|
1328
|
+
}
|
|
1329
|
+
/**
|
|
1330
|
+
* The fill style of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).
|
|
1331
|
+
*
|
|
1332
|
+
* * The possible values are:
|
|
1333
|
+
* * (Default) `flat`
|
|
1334
|
+
* * `solid`
|
|
1335
|
+
*/
|
|
1336
|
+
set fill(fill) {
|
|
1337
|
+
this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);
|
|
1338
|
+
this._fill = fill === 'solid' ? 'solid' : 'flat';
|
|
1339
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._fill}`);
|
|
1340
|
+
}
|
|
1341
|
+
get fill() {
|
|
1342
|
+
return this._fill;
|
|
1343
|
+
}
|
|
1344
|
+
/**
|
|
1345
|
+
* Specifies how the icon and text label are positioned in the BottomNavigation items ([see example]({% slug items_bottomnavigation %}#toc-itemflow)).
|
|
1346
|
+
*
|
|
1347
|
+
* The possible values are:
|
|
1348
|
+
* * (Default) `vertical` - Renders the text below the icon.
|
|
1349
|
+
* * `horizontal` - Renders the icon and the text on the same line.
|
|
1350
|
+
*/
|
|
1351
|
+
set itemFlow(itemFlow) {
|
|
1352
|
+
this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);
|
|
1353
|
+
this._itemFlow = itemFlow === 'horizontal' ? 'horizontal' : 'vertical';
|
|
1354
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this._itemFlow}`);
|
|
1355
|
+
}
|
|
1356
|
+
get itemFlow() {
|
|
1357
|
+
return this._itemFlow;
|
|
1358
|
+
}
|
|
1359
|
+
/**
|
|
1360
|
+
* Specifies the position and behavior of the BottomNavigation when the page is scrollable ([see example]({% slug positioning_bottomnavigation %})).
|
|
1361
|
+
*
|
|
1362
|
+
* The possible values are:
|
|
1363
|
+
* * (Default) `fixed` - The BottomNavigation always stays at the bottom of the viewport, regardless of the page scroll position.
|
|
1364
|
+
* * `sticky` - Positions the BottomNavigation at the end of the scrollable container.
|
|
1365
|
+
*/
|
|
1366
|
+
set positionMode(positionMode) {
|
|
1367
|
+
this.renderer.removeClass(this._nativeHostElement, `k-pos-${this.positionMode}`);
|
|
1368
|
+
this._positionMode = positionMode === 'sticky' ? 'sticky' : 'fixed';
|
|
1369
|
+
this.renderer.addClass(this._nativeHostElement, `k-pos-${this._positionMode}`);
|
|
1370
|
+
}
|
|
1371
|
+
get positionMode() {
|
|
1372
|
+
return this._positionMode;
|
|
1373
|
+
}
|
|
1374
|
+
/**
|
|
1375
|
+
* Specifies the theme color of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).
|
|
1376
|
+
*
|
|
1377
|
+
* * The possible values are:
|
|
1378
|
+
* * (Default) `primary` - Applies coloring based on the primary theme color.
|
|
1379
|
+
* * `secondary` - Applies coloring based on the secondary theme color.
|
|
1380
|
+
* * `tertiary` - Applies coloring based on the tertiary theme color.
|
|
1381
|
+
* * `info` - Applies coloring based on the info theme color.
|
|
1382
|
+
* * `success` - Applies coloring based on the success theme color.
|
|
1383
|
+
* * `warning` - Applies coloring based on the warning theme color.
|
|
1384
|
+
* * `error` - Applies coloring based on the error theme color.
|
|
1385
|
+
* * `dark` - Applies coloring based on the dark theme color.
|
|
1386
|
+
* * `light` - Applies coloring based on the light theme color.
|
|
1387
|
+
* * `inverse` - Applies coloring based on the inverted theme color.
|
|
1388
|
+
*/
|
|
1389
|
+
set themeColor(themeColor) {
|
|
1390
|
+
const newColor = colors.find(color => color === themeColor);
|
|
1391
|
+
if (newColor) {
|
|
1392
|
+
this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this._themeColor}`);
|
|
1393
|
+
this._themeColor = themeColor;
|
|
1394
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._themeColor}`);
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
get themeColor() {
|
|
1398
|
+
return this._themeColor;
|
|
1399
|
+
}
|
|
1400
|
+
/**
|
|
1401
|
+
* @hidden
|
|
1402
|
+
*/
|
|
1403
|
+
get borderClass() {
|
|
1404
|
+
return this.border;
|
|
1405
|
+
}
|
|
1406
|
+
/**
|
|
1407
|
+
* @hidden
|
|
1408
|
+
*/
|
|
1409
|
+
get disabledClass() {
|
|
1410
|
+
return this.disabled;
|
|
1411
|
+
}
|
|
1412
|
+
/**
|
|
1413
|
+
* @hidden
|
|
1414
|
+
*/
|
|
1415
|
+
ngOnInit() {
|
|
1416
|
+
this.initDomEvents();
|
|
1417
|
+
}
|
|
1418
|
+
/**
|
|
1419
|
+
* @hidden
|
|
1420
|
+
*/
|
|
1421
|
+
ngAfterViewInit() {
|
|
1422
|
+
this.applyClasses();
|
|
1423
|
+
}
|
|
1424
|
+
/**
|
|
1425
|
+
* @hidden
|
|
1426
|
+
*/
|
|
1427
|
+
ngOnDestroy() {
|
|
1428
|
+
if (this.dynamicRTLSubscription) {
|
|
1429
|
+
this.dynamicRTLSubscription.unsubscribe();
|
|
1430
|
+
}
|
|
1431
|
+
this.subscriptions.unsubscribe();
|
|
1432
|
+
}
|
|
1433
|
+
/**
|
|
1434
|
+
* @hidden
|
|
1435
|
+
*/
|
|
1436
|
+
selectItem(idx, args) {
|
|
1437
|
+
const eventArgs = new BottomNavigationSelectEvent(Object.assign({}, args));
|
|
1438
|
+
this.select.emit(eventArgs);
|
|
1439
|
+
if (!eventArgs.isDefaultPrevented()) {
|
|
1440
|
+
this.selectedIdx = idx;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
applyClasses() {
|
|
1444
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);
|
|
1445
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);
|
|
1446
|
+
this.renderer.addClass(this._nativeHostElement, `k-pos-${this.positionMode}`);
|
|
1447
|
+
this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.themeColor}`);
|
|
1448
|
+
}
|
|
1449
|
+
initDomEvents() {
|
|
1450
|
+
if (!this.hostElement) {
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1454
|
+
this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'click', this.clickHandler.bind(this)));
|
|
1455
|
+
this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'keydown', this.keyDownHandler.bind(this)));
|
|
1456
|
+
});
|
|
1457
|
+
}
|
|
1458
|
+
clickHandler(e) {
|
|
1459
|
+
const itemIdx = this.getBottomNavigationItemIndex(e.target);
|
|
1460
|
+
const item = this.items[itemIdx];
|
|
1461
|
+
if (!item) {
|
|
1462
|
+
return;
|
|
1463
|
+
}
|
|
1464
|
+
if (item.disabled) {
|
|
1465
|
+
e.preventDefault();
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
const args = {
|
|
1469
|
+
index: itemIdx,
|
|
1470
|
+
item: item,
|
|
1471
|
+
originalEvent: e,
|
|
1472
|
+
sender: this
|
|
1473
|
+
};
|
|
1474
|
+
this.ngZone.run(() => {
|
|
1475
|
+
this.selectItem(itemIdx, args);
|
|
1476
|
+
this.changeDetector.markForCheck();
|
|
1477
|
+
});
|
|
1478
|
+
}
|
|
1479
|
+
keyDownHandler(e) {
|
|
1480
|
+
const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;
|
|
1481
|
+
if (!isEnterOrSpace) {
|
|
1482
|
+
return;
|
|
1483
|
+
}
|
|
1484
|
+
this.clickHandler(e);
|
|
1485
|
+
}
|
|
1486
|
+
getBottomNavigationItemIndex(target) {
|
|
1487
|
+
const item = closestItem(target, BOTTOMNAVIGATION_ITEM_INDEX, this._nativeHostElement);
|
|
1488
|
+
if (item) {
|
|
1489
|
+
return itemIndex(item, BOTTOMNAVIGATION_ITEM_INDEX);
|
|
1490
|
+
}
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
BottomNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1494
|
+
BottomNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: BottomNavigationComponent, selector: "kendo-bottomnavigation", inputs: { items: "items", border: "border", disabled: "disabled", fill: "fill", itemFlow: "itemFlow", positionMode: "positionMode", themeColor: "themeColor" }, outputs: { select: "select" }, host: { properties: { "class.k-hstack": "this.hostClass", "class.k-justify-content-stretch": "this.hostClass", "class.k-bottom-nav": "this.hostClass", "class.k-bottom-nav-border": "this.borderClass", "class.k-disabled": "this.disabledClass", "attr.role": "this.role", "attr.dir": "this.direction" } }, providers: [
|
|
1495
|
+
LocalizationService,
|
|
1496
|
+
{
|
|
1497
|
+
provide: L10N_PREFIX,
|
|
1498
|
+
useValue: 'kendo.bottomnavigation'
|
|
1499
|
+
}
|
|
1500
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: BottomNavigationItemTemplateDirective, descendants: true }], exportAs: ["kendoBottomNavigation"], ngImport: i0, template: "\n <ng-container *ngIf=\"items\">\n <span kendoBottomNavigationItem\n *ngFor=\"let item of items; let idx=index\"\n role=\"link\"\n class=\"k-bottom-nav-item\"\n [disabledComponent]=\"disabled\"\n [item]=\"item\"\n [index]=\"idx\"\n [selectedIdx]=\"selectedIdx\"\n [itemTemplate]=\"itemTemplate\"\n [attr.data-kendo-bottomnavigation-index]=\"idx\"\n [ngClass]=\"item.cssClass\"\n [ngStyle]=\"item.cssStyle\"\n [orientation]=\"itemFlow\">\n </span>\n </ng-container>\n ", isInline: true, components: [{ type: BottomNavigationItemComponent, selector: "[kendoBottomNavigationItem]", inputs: ["itemTemplate", "item", "index", "disabledComponent", "selectedIdx", "orientation"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationComponent, decorators: [{
|
|
1502
|
+
type: Component,
|
|
1503
|
+
args: [{
|
|
1504
|
+
exportAs: 'kendoBottomNavigation',
|
|
1505
|
+
selector: 'kendo-bottomnavigation',
|
|
1506
|
+
providers: [
|
|
1507
|
+
LocalizationService,
|
|
1508
|
+
{
|
|
1509
|
+
provide: L10N_PREFIX,
|
|
1510
|
+
useValue: 'kendo.bottomnavigation'
|
|
1511
|
+
}
|
|
1512
|
+
],
|
|
1513
|
+
template: `
|
|
1514
|
+
<ng-container *ngIf="items">
|
|
1515
|
+
<span kendoBottomNavigationItem
|
|
1516
|
+
*ngFor="let item of items; let idx=index"
|
|
1517
|
+
role="link"
|
|
1518
|
+
class="k-bottom-nav-item"
|
|
1519
|
+
[disabledComponent]="disabled"
|
|
1520
|
+
[item]="item"
|
|
1521
|
+
[index]="idx"
|
|
1522
|
+
[selectedIdx]="selectedIdx"
|
|
1523
|
+
[itemTemplate]="itemTemplate"
|
|
1524
|
+
[attr.${BOTTOMNAVIGATION_ITEM_INDEX}]="idx"
|
|
1525
|
+
[ngClass]="item.cssClass"
|
|
1526
|
+
[ngStyle]="item.cssStyle"
|
|
1527
|
+
[orientation]="itemFlow">
|
|
1528
|
+
</span>
|
|
1529
|
+
</ng-container>
|
|
1530
|
+
`
|
|
1531
|
+
}]
|
|
1532
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { items: [{
|
|
1533
|
+
type: Input
|
|
1534
|
+
}], border: [{
|
|
1535
|
+
type: Input
|
|
1536
|
+
}], disabled: [{
|
|
1537
|
+
type: Input
|
|
1538
|
+
}], fill: [{
|
|
1539
|
+
type: Input
|
|
1540
|
+
}], itemFlow: [{
|
|
1541
|
+
type: Input
|
|
1542
|
+
}], positionMode: [{
|
|
1543
|
+
type: Input
|
|
1544
|
+
}], themeColor: [{
|
|
1545
|
+
type: Input
|
|
1546
|
+
}], select: [{
|
|
1547
|
+
type: Output
|
|
1548
|
+
}], hostClass: [{
|
|
1549
|
+
type: HostBinding,
|
|
1550
|
+
args: ['class.k-hstack']
|
|
1551
|
+
}, {
|
|
1552
|
+
type: HostBinding,
|
|
1553
|
+
args: ['class.k-justify-content-stretch']
|
|
1554
|
+
}, {
|
|
1555
|
+
type: HostBinding,
|
|
1556
|
+
args: ['class.k-bottom-nav']
|
|
1557
|
+
}], borderClass: [{
|
|
1558
|
+
type: HostBinding,
|
|
1559
|
+
args: ['class.k-bottom-nav-border']
|
|
1560
|
+
}], disabledClass: [{
|
|
1561
|
+
type: HostBinding,
|
|
1562
|
+
args: ['class.k-disabled']
|
|
1563
|
+
}], role: [{
|
|
1564
|
+
type: HostBinding,
|
|
1565
|
+
args: ['attr.role']
|
|
1566
|
+
}], direction: [{
|
|
1567
|
+
type: HostBinding,
|
|
1568
|
+
args: ['attr.dir']
|
|
1569
|
+
}], itemTemplate: [{
|
|
1570
|
+
type: ContentChild,
|
|
1571
|
+
args: [BottomNavigationItemTemplateDirective, { static: false }]
|
|
1572
|
+
}] } });
|
|
1573
|
+
|
|
1574
|
+
const templateDirectives$1 = [BottomNavigationItemTemplateDirective];
|
|
1575
|
+
const exportedComponents = [BottomNavigationComponent, ...templateDirectives$1];
|
|
1576
|
+
const declarations$1 = [BottomNavigationItemComponent, ...exportedComponents];
|
|
1577
|
+
/**
|
|
1578
|
+
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
1579
|
+
* definition for the BottomNavigation component.
|
|
1580
|
+
* @example
|
|
1581
|
+
*
|
|
1582
|
+
* ```ts-no-run
|
|
1583
|
+
* // Import the BottomNavigation module
|
|
1584
|
+
* import { BottomNavigationModule } from '@progress/kendo-angular-navigation';
|
|
1585
|
+
*
|
|
1586
|
+
* // The browser platform with a compiler
|
|
1587
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
1588
|
+
* import { BrowserModule } from '@angular/platform-browser';
|
|
1589
|
+
*
|
|
1590
|
+
* import { NgModule } from '@angular/core';
|
|
1591
|
+
*
|
|
1592
|
+
* // Import the app component
|
|
1593
|
+
* import { AppComponent } from './app.component';
|
|
1594
|
+
*
|
|
1595
|
+
* // Define the app module
|
|
1596
|
+
* _@NgModule({
|
|
1597
|
+
* declarations: [AppComponent], // declare app component
|
|
1598
|
+
* imports: [BrowserModule, BottomNavigationModule], // import BottomNavigation module
|
|
1599
|
+
* bootstrap: [AppComponent]
|
|
1600
|
+
* })
|
|
1601
|
+
* export class AppModule {}
|
|
1602
|
+
*
|
|
1603
|
+
* // Compile and launch the module
|
|
1604
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
1605
|
+
*
|
|
1606
|
+
* ```
|
|
1607
|
+
*/
|
|
1608
|
+
class BottomNavigationModule {
|
|
1609
|
+
}
|
|
1610
|
+
BottomNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1611
|
+
BottomNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationModule, declarations: [BottomNavigationItemComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective], imports: [CommonModule], exports: [BottomNavigationComponent, BottomNavigationItemTemplateDirective] });
|
|
1612
|
+
BottomNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationModule, imports: [[CommonModule]] });
|
|
1613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BottomNavigationModule, decorators: [{
|
|
1614
|
+
type: NgModule,
|
|
1615
|
+
args: [{
|
|
1616
|
+
declarations: [declarations$1],
|
|
1617
|
+
exports: [exportedComponents],
|
|
1618
|
+
imports: [CommonModule]
|
|
1619
|
+
}]
|
|
1620
|
+
}] });
|
|
1621
|
+
|
|
1622
|
+
/**
|
|
1623
|
+
* Arguments for the `itemClick` event of the ActionSheet.
|
|
1624
|
+
*/
|
|
1625
|
+
class ActionSheetItemClickEvent {
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
/**
|
|
1629
|
+
* Represents a template that defines the header content of the ActionSheet. Utilizing the template overrides both the `title` and `subtitle` of the ActionSheet.
|
|
1630
|
+
* To define the template, nest an `<ng-template>` tag
|
|
1631
|
+
* with the `kendoActionSheetHeaderTemplate` directive inside the `<kendo-actionsheet>` tag.
|
|
1632
|
+
*/
|
|
1633
|
+
class ActionSheetHeaderTemplateDirective {
|
|
1634
|
+
constructor(templateRef) {
|
|
1635
|
+
this.templateRef = templateRef;
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1638
|
+
ActionSheetHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1639
|
+
ActionSheetHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetHeaderTemplateDirective, selector: "[kendoActionSheetHeaderTemplate]", ngImport: i0 });
|
|
1640
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetHeaderTemplateDirective, decorators: [{
|
|
1641
|
+
type: Directive,
|
|
1642
|
+
args: [{
|
|
1643
|
+
selector: '[kendoActionSheetHeaderTemplate]'
|
|
1644
|
+
}]
|
|
1645
|
+
}], ctorParameters: function () {
|
|
1646
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
1647
|
+
type: Optional
|
|
1648
|
+
}] }];
|
|
1649
|
+
} });
|
|
1650
|
+
|
|
1651
|
+
/**
|
|
1652
|
+
* Represents a template that defines the item content of the ActionSheet.
|
|
1653
|
+
* To define the template, nest an `<ng-template>` tag
|
|
1654
|
+
* with the `kendoActionSheetItemTemplate` directive inside the `<kendo-actionsheet>` tag.
|
|
1655
|
+
*/
|
|
1656
|
+
class ActionSheetItemTemplateDirective {
|
|
1657
|
+
constructor(templateRef) {
|
|
1658
|
+
this.templateRef = templateRef;
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
ActionSheetItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1662
|
+
ActionSheetItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetItemTemplateDirective, selector: "[kendoActionSheetItemTemplate]", ngImport: i0 });
|
|
1663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetItemTemplateDirective, decorators: [{
|
|
1664
|
+
type: Directive,
|
|
1665
|
+
args: [{
|
|
1666
|
+
selector: '[kendoActionSheetItemTemplate]'
|
|
1667
|
+
}]
|
|
1668
|
+
}], ctorParameters: function () {
|
|
1669
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
1670
|
+
type: Optional
|
|
1671
|
+
}] }];
|
|
1672
|
+
} });
|
|
1673
|
+
|
|
1674
|
+
/**
|
|
1675
|
+
* Represents a template that defines the items list content of the ActionSheet.
|
|
1676
|
+
* To define the template, nest an `<ng-template>` tag
|
|
1677
|
+
* with the `kendoActionSheetContentTemplate` directive inside the `<kendo-actionsheet>` tag.
|
|
1678
|
+
*/
|
|
1679
|
+
class ActionSheetContentTemplateDirective {
|
|
1680
|
+
constructor(templateRef) {
|
|
1681
|
+
this.templateRef = templateRef;
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
ActionSheetContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1685
|
+
ActionSheetContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetContentTemplateDirective, selector: "[kendoActionSheetContentTemplate]", ngImport: i0 });
|
|
1686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetContentTemplateDirective, decorators: [{
|
|
1687
|
+
type: Directive,
|
|
1688
|
+
args: [{
|
|
1689
|
+
selector: '[kendoActionSheetContentTemplate]'
|
|
1690
|
+
}]
|
|
1691
|
+
}], ctorParameters: function () {
|
|
1692
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
1693
|
+
type: Optional
|
|
1694
|
+
}] }];
|
|
1695
|
+
} });
|
|
1696
|
+
|
|
1697
|
+
/**
|
|
1698
|
+
* Represents a template that defines the footer of the ActionSheet.
|
|
1699
|
+
* To define the template, nest an `<ng-template>` tag
|
|
1700
|
+
* with the `kendoActionSheetFooterTemplate` directive inside the `<kendo-actionsheet>` tag.
|
|
1701
|
+
*/
|
|
1702
|
+
class ActionSheetFooterTemplateDirective {
|
|
1703
|
+
constructor(templateRef) {
|
|
1704
|
+
this.templateRef = templateRef;
|
|
1705
|
+
}
|
|
1706
|
+
}
|
|
1707
|
+
ActionSheetFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1708
|
+
ActionSheetFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetFooterTemplateDirective, selector: "[kendoActionSheetFooterTemplate]", ngImport: i0 });
|
|
1709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetFooterTemplateDirective, decorators: [{
|
|
1710
|
+
type: Directive,
|
|
1711
|
+
args: [{
|
|
1712
|
+
selector: '[kendoActionSheetFooterTemplate]'
|
|
1713
|
+
}]
|
|
1714
|
+
}], ctorParameters: function () {
|
|
1715
|
+
return [{ type: i0.TemplateRef, decorators: [{
|
|
1716
|
+
type: Optional
|
|
1717
|
+
}] }];
|
|
1718
|
+
} });
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* @hidden
|
|
1722
|
+
*/
|
|
1723
|
+
class ActionSheetItemComponent {
|
|
1724
|
+
constructor() {
|
|
1725
|
+
this.pointerClass = true;
|
|
1726
|
+
}
|
|
1727
|
+
manageIconClasses(item) {
|
|
1728
|
+
const classes = ['k-actionsheet-item-icon'];
|
|
1729
|
+
if (item.icon) {
|
|
1730
|
+
classes.push(`k-icon k-i-${item.icon}`);
|
|
1731
|
+
}
|
|
1732
|
+
if (item.iconClass) {
|
|
1733
|
+
classes.push(`${item.iconClass}`);
|
|
1734
|
+
}
|
|
1735
|
+
const isHexColor = isPresent(item.iconColor) && hexColorRegex.test(item.iconColor);
|
|
1736
|
+
const isThemeColor = isPresent(item.iconColor) && item.iconColor !== '' && !isHexColor;
|
|
1737
|
+
if (isThemeColor) {
|
|
1738
|
+
classes.push(`k-text-${item.iconColor}`);
|
|
1739
|
+
}
|
|
1740
|
+
return classes.join(' ');
|
|
1741
|
+
}
|
|
1742
|
+
manageIconStyles(item) {
|
|
1743
|
+
const isHexColor = isPresent(item.iconColor) && hexColorRegex.test(item.iconColor);
|
|
1744
|
+
const isSizeSet = isPresent(item.iconSize) && item.iconSize !== '';
|
|
1745
|
+
const styles = {};
|
|
1746
|
+
if (isHexColor) {
|
|
1747
|
+
styles.color = item.iconColor;
|
|
1748
|
+
}
|
|
1749
|
+
if (isSizeSet) {
|
|
1750
|
+
styles.fontSize = item.iconSize;
|
|
1751
|
+
}
|
|
1752
|
+
return styles;
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
ActionSheetItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1756
|
+
ActionSheetItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetItemComponent, selector: "[kendoActionSheetItem]", inputs: { itemTemplate: "itemTemplate", item: "item" }, host: { properties: { "class.k-cursor-pointer": "this.pointerClass" } }, ngImport: i0, template: `
|
|
1757
|
+
<ng-template *ngIf="itemTemplate; else defaultTemplate"
|
|
1758
|
+
[ngTemplateOutlet]="itemTemplate"
|
|
1759
|
+
[ngTemplateOutletContext]="{
|
|
1760
|
+
$implicit: item
|
|
1761
|
+
}">
|
|
1762
|
+
</ng-template>
|
|
1763
|
+
<ng-template #defaultTemplate>
|
|
1764
|
+
<span class="k-actionsheet-action">
|
|
1765
|
+
<span *ngIf="item.icon || item.iconClass" class="k-icon-wrap">
|
|
1766
|
+
<span
|
|
1767
|
+
[class]="manageIconClasses(item)"
|
|
1768
|
+
[style]="manageIconStyles(item)">
|
|
1769
|
+
</span>
|
|
1770
|
+
</span>
|
|
1771
|
+
<span *ngIf="item.title || item.description" class="k-actionsheet-item-text">
|
|
1772
|
+
<span *ngIf="item.title" class="k-actionsheet-item-title">{{item.title}}</span>
|
|
1773
|
+
<span *ngIf="item.description" class="k-actionsheet-item-description">{{item.description}}</span>
|
|
1774
|
+
</span>
|
|
1775
|
+
</span>
|
|
1776
|
+
</ng-template>
|
|
1777
|
+
`, isInline: true, directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
1778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetItemComponent, decorators: [{
|
|
1779
|
+
type: Component,
|
|
1780
|
+
args: [{
|
|
1781
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1782
|
+
selector: '[kendoActionSheetItem]',
|
|
1783
|
+
template: `
|
|
1784
|
+
<ng-template *ngIf="itemTemplate; else defaultTemplate"
|
|
1785
|
+
[ngTemplateOutlet]="itemTemplate"
|
|
1786
|
+
[ngTemplateOutletContext]="{
|
|
1787
|
+
$implicit: item
|
|
1788
|
+
}">
|
|
1789
|
+
</ng-template>
|
|
1790
|
+
<ng-template #defaultTemplate>
|
|
1791
|
+
<span class="k-actionsheet-action">
|
|
1792
|
+
<span *ngIf="item.icon || item.iconClass" class="k-icon-wrap">
|
|
1793
|
+
<span
|
|
1794
|
+
[class]="manageIconClasses(item)"
|
|
1795
|
+
[style]="manageIconStyles(item)">
|
|
1796
|
+
</span>
|
|
1797
|
+
</span>
|
|
1798
|
+
<span *ngIf="item.title || item.description" class="k-actionsheet-item-text">
|
|
1799
|
+
<span *ngIf="item.title" class="k-actionsheet-item-title">{{item.title}}</span>
|
|
1800
|
+
<span *ngIf="item.description" class="k-actionsheet-item-description">{{item.description}}</span>
|
|
1801
|
+
</span>
|
|
1802
|
+
</span>
|
|
1803
|
+
</ng-template>
|
|
1804
|
+
`
|
|
1805
|
+
}]
|
|
1806
|
+
}], propDecorators: { itemTemplate: [{
|
|
1807
|
+
type: Input
|
|
1808
|
+
}], item: [{
|
|
1809
|
+
type: Input
|
|
1810
|
+
}], pointerClass: [{
|
|
1811
|
+
type: HostBinding,
|
|
1812
|
+
args: ['class.k-cursor-pointer']
|
|
1813
|
+
}] } });
|
|
1814
|
+
|
|
1815
|
+
/**
|
|
1816
|
+
* @hidden
|
|
1817
|
+
*/
|
|
1818
|
+
class ActionSheetListComponent {
|
|
1819
|
+
constructor(renderer, ngZone, element) {
|
|
1820
|
+
this.renderer = renderer;
|
|
1821
|
+
this.ngZone = ngZone;
|
|
1822
|
+
this.element = element;
|
|
1823
|
+
this.groupItems = [];
|
|
1824
|
+
this.allItems = [];
|
|
1825
|
+
this.itemClick = new EventEmitter();
|
|
1826
|
+
this.subscriptions = new Subscription();
|
|
1827
|
+
}
|
|
1828
|
+
ngAfterViewInit() {
|
|
1829
|
+
this.initDomEvents();
|
|
1830
|
+
}
|
|
1831
|
+
ngOnDestroy() {
|
|
1832
|
+
this.subscriptions.unsubscribe();
|
|
1833
|
+
}
|
|
1834
|
+
initDomEvents() {
|
|
1835
|
+
if (!this.element) {
|
|
1836
|
+
return;
|
|
1837
|
+
}
|
|
1838
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1839
|
+
const nativeElement = this.element.nativeElement;
|
|
1840
|
+
this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));
|
|
1841
|
+
});
|
|
1842
|
+
}
|
|
1843
|
+
clickHandler(e) {
|
|
1844
|
+
const itemIndex = getActionSheetItemIndex(e.target, ACTIONSHEET_ITEM_INDEX_ATTRIBUTE, this.element.nativeElement);
|
|
1845
|
+
const item = this.allItems[itemIndex];
|
|
1846
|
+
if (!item) {
|
|
1847
|
+
return;
|
|
1848
|
+
}
|
|
1849
|
+
if (item.disabled) {
|
|
1850
|
+
e.preventDefault();
|
|
1851
|
+
return;
|
|
1852
|
+
}
|
|
1853
|
+
this.ngZone.run(() => {
|
|
1854
|
+
this.itemClick.emit({ item, originalEvent: e });
|
|
1855
|
+
});
|
|
1856
|
+
}
|
|
1857
|
+
setAttrIndex(item) {
|
|
1858
|
+
return this.allItems.indexOf(item);
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
ActionSheetListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1862
|
+
ActionSheetListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetListComponent, selector: "[kendoActionSheetList]", inputs: { groupItems: "groupItems", allItems: "allItems", itemTemplate: "itemTemplate" }, outputs: { itemClick: "itemClick" }, ngImport: i0, template: "\n <span *ngFor=\"let item of groupItems\" kendoActionSheetItem\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-disabled]=\"item.disabled\"\n [class.k-actionsheet-item]=\"true\"\n [attr.kendo-actionsheet-item-index]=\"setAttrIndex(item)\"\n [class.k-disabled]=\"item.disabled\"\n [ngClass]=\"item.cssClass\"\n [ngStyle]=\"item.cssStyle\"\n [itemTemplate]=\"itemTemplate\"\n [item]=\"item\">\n </span>\n ", isInline: true, components: [{ type: ActionSheetItemComponent, selector: "[kendoActionSheetItem]", inputs: ["itemTemplate", "item"] }], directives: [{ type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1863
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetListComponent, decorators: [{
|
|
1864
|
+
type: Component,
|
|
1865
|
+
args: [{
|
|
1866
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1867
|
+
selector: '[kendoActionSheetList]',
|
|
1868
|
+
template: `
|
|
1869
|
+
<span *ngFor="let item of groupItems" kendoActionSheetItem
|
|
1870
|
+
tabindex="0"
|
|
1871
|
+
role="button"
|
|
1872
|
+
[attr.aria-disabled]="item.disabled"
|
|
1873
|
+
[class.k-actionsheet-item]="true"
|
|
1874
|
+
[attr.${ACTIONSHEET_ITEM_INDEX_ATTRIBUTE}]="setAttrIndex(item)"
|
|
1875
|
+
[class.k-disabled]="item.disabled"
|
|
1876
|
+
[ngClass]="item.cssClass"
|
|
1877
|
+
[ngStyle]="item.cssStyle"
|
|
1878
|
+
[itemTemplate]="itemTemplate"
|
|
1879
|
+
[item]="item">
|
|
1880
|
+
</span>
|
|
1881
|
+
`
|
|
1882
|
+
}]
|
|
1883
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { groupItems: [{
|
|
1884
|
+
type: Input
|
|
1885
|
+
}], allItems: [{
|
|
1886
|
+
type: Input
|
|
1887
|
+
}], itemTemplate: [{
|
|
1888
|
+
type: Input
|
|
1889
|
+
}], itemClick: [{
|
|
1890
|
+
type: Output
|
|
1891
|
+
}] } });
|
|
1892
|
+
|
|
1893
|
+
/**
|
|
1894
|
+
* Represents the [Kendo UI ActionSheet component for Angular]({% slug overview_actionsheet %}).
|
|
1895
|
+
* Used to display a set of choices related to a task the user initiates.
|
|
1896
|
+
*/
|
|
1897
|
+
class ActionSheetComponent {
|
|
1898
|
+
constructor(element, ngZone, renderer, localizationService) {
|
|
1899
|
+
this.element = element;
|
|
1900
|
+
this.ngZone = ngZone;
|
|
1901
|
+
this.renderer = renderer;
|
|
1902
|
+
this.localizationService = localizationService;
|
|
1903
|
+
/**
|
|
1904
|
+
* @hidden
|
|
1905
|
+
*/
|
|
1906
|
+
this.hostClass = true;
|
|
1907
|
+
/**
|
|
1908
|
+
* Fires when an ActionSheet item is clicked.
|
|
1909
|
+
*/
|
|
1910
|
+
this.itemClick = new EventEmitter();
|
|
1911
|
+
/**
|
|
1912
|
+
* Fires when the modal overlay is clicked.
|
|
1913
|
+
*/
|
|
1914
|
+
this.overlayClick = new EventEmitter();
|
|
1915
|
+
/**
|
|
1916
|
+
* @hidden
|
|
1917
|
+
*/
|
|
1918
|
+
this.titleId = null;
|
|
1919
|
+
this.rtl = false;
|
|
1920
|
+
this.domSubs = new Subscription();
|
|
1921
|
+
validatePackage(packageMetadata);
|
|
1922
|
+
this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
|
|
1923
|
+
this.rtl = rtl;
|
|
1924
|
+
this.direction = this.rtl ? 'rtl' : 'ltr';
|
|
1925
|
+
});
|
|
1926
|
+
this.titleId = getId('k-actionsheet-title');
|
|
1927
|
+
}
|
|
1928
|
+
ngAfterViewInit() {
|
|
1929
|
+
this.handleInitialFocus();
|
|
1930
|
+
this.initDomEvents();
|
|
1931
|
+
}
|
|
1932
|
+
ngOnDestroy() {
|
|
1933
|
+
this.domSubs.unsubscribe();
|
|
1934
|
+
if (this.dynamicRTLSubscription) {
|
|
1935
|
+
this.dynamicRTLSubscription.unsubscribe();
|
|
1936
|
+
}
|
|
1937
|
+
}
|
|
1938
|
+
/**
|
|
1939
|
+
* @hidden
|
|
1940
|
+
*/
|
|
1941
|
+
get topGroupItems() {
|
|
1942
|
+
var _a;
|
|
1943
|
+
return (_a = this.items) === null || _a === void 0 ? void 0 : _a.filter(item => !item.group || item.group === 'top');
|
|
1944
|
+
}
|
|
1945
|
+
/**
|
|
1946
|
+
* @hidden
|
|
1947
|
+
*/
|
|
1948
|
+
get bottomGroupItems() {
|
|
1949
|
+
var _a;
|
|
1950
|
+
return (_a = this.items) === null || _a === void 0 ? void 0 : _a.filter(item => item.group === 'bottom');
|
|
1951
|
+
}
|
|
1952
|
+
/**
|
|
1953
|
+
* @hidden
|
|
1954
|
+
*/
|
|
1955
|
+
onItemClick(ev) {
|
|
1956
|
+
this.itemClick.emit(ev);
|
|
1957
|
+
}
|
|
1958
|
+
/**
|
|
1959
|
+
* @hidden
|
|
1960
|
+
*/
|
|
1961
|
+
onOverlayClick() {
|
|
1962
|
+
this.overlayClick.emit();
|
|
1963
|
+
}
|
|
1964
|
+
/**
|
|
1965
|
+
* @hidden
|
|
1966
|
+
*/
|
|
1967
|
+
get shouldRenderSeparator() {
|
|
1968
|
+
var _a, _b;
|
|
1969
|
+
return ((_a = this.topGroupItems) === null || _a === void 0 ? void 0 : _a.length) > 0 && ((_b = this.bottomGroupItems) === null || _b === void 0 ? void 0 : _b.length) > 0;
|
|
1970
|
+
}
|
|
1971
|
+
initDomEvents() {
|
|
1972
|
+
if (!this.element) {
|
|
1973
|
+
return;
|
|
1974
|
+
}
|
|
1975
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1976
|
+
this.domSubs.add(this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {
|
|
1977
|
+
this.onKeyDown(ev);
|
|
1978
|
+
}));
|
|
1979
|
+
});
|
|
1980
|
+
}
|
|
1981
|
+
onKeyDown(event) {
|
|
1982
|
+
const target = event.target;
|
|
1983
|
+
if (event.keyCode === Keys.Tab) {
|
|
1984
|
+
this.ngZone.run(() => {
|
|
1985
|
+
this.keepFocusWithinComponent(target, event);
|
|
1986
|
+
});
|
|
1987
|
+
}
|
|
1988
|
+
if (event.keyCode === Keys.Escape) {
|
|
1989
|
+
this.ngZone.run(() => {
|
|
1990
|
+
this.overlayClick.emit();
|
|
1991
|
+
});
|
|
1992
|
+
}
|
|
1993
|
+
if (event.keyCode === Keys.Enter) {
|
|
1994
|
+
this.ngZone.run(() => {
|
|
1995
|
+
this.triggerItemClick(target, event);
|
|
1996
|
+
});
|
|
1997
|
+
}
|
|
1998
|
+
}
|
|
1999
|
+
handleInitialFocus() {
|
|
2000
|
+
const [firstFocusable] = getFirstAndLastFocusable(this.element.nativeElement);
|
|
2001
|
+
if (firstFocusable) {
|
|
2002
|
+
firstFocusable.focus();
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
keepFocusWithinComponent(target, event) {
|
|
2006
|
+
const wrapper = this.element.nativeElement;
|
|
2007
|
+
const [firstFocusable, lastFocusable] = getFirstAndLastFocusable(wrapper);
|
|
2008
|
+
const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;
|
|
2009
|
+
const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;
|
|
2010
|
+
if (tabAfterLastFocusable) {
|
|
2011
|
+
event.preventDefault();
|
|
2012
|
+
firstFocusable.focus();
|
|
2013
|
+
}
|
|
2014
|
+
if (shiftTabAfterFirstFocusable) {
|
|
2015
|
+
event.preventDefault();
|
|
2016
|
+
lastFocusable.focus();
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
triggerItemClick(target, event) {
|
|
2020
|
+
const itemIndex = getActionSheetItemIndex(target, ACTIONSHEET_ITEM_INDEX_ATTRIBUTE, this.element.nativeElement);
|
|
2021
|
+
const item = this.items[itemIndex];
|
|
2022
|
+
if (!item || item.disabled) {
|
|
2023
|
+
return;
|
|
2024
|
+
}
|
|
2025
|
+
this.itemClick.emit({ item, originalEvent: event });
|
|
2026
|
+
}
|
|
2027
|
+
}
|
|
2028
|
+
ActionSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2029
|
+
ActionSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: { title: "title", subtitle: "subtitle", items: "items" }, outputs: { itemClick: "itemClick", overlayClick: "overlayClick" }, host: { properties: { "class.k-actionsheet-container": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
|
|
2030
|
+
LocalizationService,
|
|
2031
|
+
{
|
|
2032
|
+
provide: L10N_PREFIX,
|
|
2033
|
+
useValue: 'kendo.actionsheet.component'
|
|
2034
|
+
}
|
|
2035
|
+
], queries: [{ propertyName: "headerTemplate", first: true, predicate: ActionSheetHeaderTemplateDirective, descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ActionSheetContentTemplateDirective, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: ActionSheetItemTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: ActionSheetFooterTemplateDirective, descendants: true }], exportAs: ["kendoActionSheet"], ngImport: i0, template: `
|
|
2036
|
+
<div class="k-overlay" (click)="onOverlayClick()"></div>
|
|
2037
|
+
<div class="k-animation-container">
|
|
2038
|
+
<div class="k-child-animation-container" [style]="'bottom: 0px; width: 100%;'">
|
|
2039
|
+
<div class="k-actionsheet k-actionsheet-bottom"
|
|
2040
|
+
[style]="'--kendo-actionsheet-height: auto; --kendo-actionsheet-max-height: none;'"
|
|
2041
|
+
role="dialog"
|
|
2042
|
+
aria-modal="true"
|
|
2043
|
+
[attr.aria-labelledby]="titleId">
|
|
2044
|
+
|
|
2045
|
+
<div *ngIf="title || headerTemplate" class="k-actionsheet-titlebar">
|
|
2046
|
+
<div class="k-actionsheet-titlebar-group k-hbox">
|
|
2047
|
+
<div class="k-actionsheet-title" [id]="titleId">
|
|
2048
|
+
<ng-template *ngIf="headerTemplate; else defaultTemplate"
|
|
2049
|
+
[ngTemplateOutlet]="headerTemplate?.templateRef">
|
|
2050
|
+
</ng-template>
|
|
2051
|
+
<ng-template #defaultTemplate>
|
|
2052
|
+
<div *ngIf="title" class="k-text-center">{{title}}</div>
|
|
2053
|
+
<div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
|
|
2054
|
+
</ng-template>
|
|
2055
|
+
</div>
|
|
2056
|
+
</div>
|
|
2057
|
+
</div>
|
|
2058
|
+
|
|
2059
|
+
<div *ngIf="items || contentTemplate" class="k-actionsheet-content">
|
|
2060
|
+
<ng-template *ngIf="contentTemplate; else defaultContentTemplate"
|
|
2061
|
+
[ngTemplateOutlet]="contentTemplate?.templateRef">
|
|
2062
|
+
</ng-template>
|
|
2063
|
+
<ng-template #defaultContentTemplate>
|
|
2064
|
+
<div *ngIf="topGroupItems" kendoActionSheetList
|
|
2065
|
+
class="k-list-ul"
|
|
2066
|
+
role="group"
|
|
2067
|
+
[groupItems]="topGroupItems"
|
|
2068
|
+
[allItems]="items"
|
|
2069
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
2070
|
+
(itemClick)="onItemClick($event)">
|
|
2071
|
+
</div>
|
|
2072
|
+
|
|
2073
|
+
<hr *ngIf="shouldRenderSeparator" class="k-hr"/>
|
|
2074
|
+
|
|
2075
|
+
<div *ngIf="bottomGroupItems" kendoActionSheetList
|
|
2076
|
+
class="k-list-ul"
|
|
2077
|
+
role="group"
|
|
2078
|
+
[groupItems]="bottomGroupItems"
|
|
2079
|
+
[allItems]="items"
|
|
2080
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
2081
|
+
(itemClick)="onItemClick($event)">
|
|
2082
|
+
</div>
|
|
2083
|
+
</ng-template>
|
|
2084
|
+
</div>
|
|
2085
|
+
<div *ngIf="footerTemplate" class="k-actionsheet-footer">
|
|
2086
|
+
<ng-template
|
|
2087
|
+
[ngTemplateOutlet]="footerTemplate?.templateRef">
|
|
2088
|
+
</ng-template>
|
|
2089
|
+
</div>
|
|
2090
|
+
</div>
|
|
2091
|
+
</div>
|
|
2092
|
+
</div>
|
|
2093
|
+
`, isInline: true, components: [{ type: ActionSheetListComponent, selector: "[kendoActionSheetList]", inputs: ["groupItems", "allItems", "itemTemplate"], outputs: ["itemClick"] }], directives: [{ type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
2094
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetComponent, decorators: [{
|
|
2095
|
+
type: Component,
|
|
2096
|
+
args: [{
|
|
2097
|
+
exportAs: 'kendoActionSheet',
|
|
2098
|
+
selector: 'kendo-actionsheet',
|
|
2099
|
+
template: `
|
|
2100
|
+
<div class="k-overlay" (click)="onOverlayClick()"></div>
|
|
2101
|
+
<div class="k-animation-container">
|
|
2102
|
+
<div class="k-child-animation-container" [style]="'bottom: 0px; width: 100%;'">
|
|
2103
|
+
<div class="k-actionsheet k-actionsheet-bottom"
|
|
2104
|
+
[style]="'--kendo-actionsheet-height: auto; --kendo-actionsheet-max-height: none;'"
|
|
2105
|
+
role="dialog"
|
|
2106
|
+
aria-modal="true"
|
|
2107
|
+
[attr.aria-labelledby]="titleId">
|
|
2108
|
+
|
|
2109
|
+
<div *ngIf="title || headerTemplate" class="k-actionsheet-titlebar">
|
|
2110
|
+
<div class="k-actionsheet-titlebar-group k-hbox">
|
|
2111
|
+
<div class="k-actionsheet-title" [id]="titleId">
|
|
2112
|
+
<ng-template *ngIf="headerTemplate; else defaultTemplate"
|
|
2113
|
+
[ngTemplateOutlet]="headerTemplate?.templateRef">
|
|
2114
|
+
</ng-template>
|
|
2115
|
+
<ng-template #defaultTemplate>
|
|
2116
|
+
<div *ngIf="title" class="k-text-center">{{title}}</div>
|
|
2117
|
+
<div *ngIf="subtitle" class="k-actionsheet-subtitle k-text-center">{{subtitle}}</div>
|
|
2118
|
+
</ng-template>
|
|
2119
|
+
</div>
|
|
2120
|
+
</div>
|
|
2121
|
+
</div>
|
|
2122
|
+
|
|
2123
|
+
<div *ngIf="items || contentTemplate" class="k-actionsheet-content">
|
|
2124
|
+
<ng-template *ngIf="contentTemplate; else defaultContentTemplate"
|
|
2125
|
+
[ngTemplateOutlet]="contentTemplate?.templateRef">
|
|
2126
|
+
</ng-template>
|
|
2127
|
+
<ng-template #defaultContentTemplate>
|
|
2128
|
+
<div *ngIf="topGroupItems" kendoActionSheetList
|
|
2129
|
+
class="k-list-ul"
|
|
2130
|
+
role="group"
|
|
2131
|
+
[groupItems]="topGroupItems"
|
|
2132
|
+
[allItems]="items"
|
|
2133
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
2134
|
+
(itemClick)="onItemClick($event)">
|
|
2135
|
+
</div>
|
|
2136
|
+
|
|
2137
|
+
<hr *ngIf="shouldRenderSeparator" class="k-hr"/>
|
|
2138
|
+
|
|
2139
|
+
<div *ngIf="bottomGroupItems" kendoActionSheetList
|
|
2140
|
+
class="k-list-ul"
|
|
2141
|
+
role="group"
|
|
2142
|
+
[groupItems]="bottomGroupItems"
|
|
2143
|
+
[allItems]="items"
|
|
2144
|
+
[itemTemplate]="itemTemplate?.templateRef"
|
|
2145
|
+
(itemClick)="onItemClick($event)">
|
|
2146
|
+
</div>
|
|
2147
|
+
</ng-template>
|
|
2148
|
+
</div>
|
|
2149
|
+
<div *ngIf="footerTemplate" class="k-actionsheet-footer">
|
|
2150
|
+
<ng-template
|
|
2151
|
+
[ngTemplateOutlet]="footerTemplate?.templateRef">
|
|
2152
|
+
</ng-template>
|
|
2153
|
+
</div>
|
|
2154
|
+
</div>
|
|
2155
|
+
</div>
|
|
2156
|
+
</div>
|
|
2157
|
+
`,
|
|
2158
|
+
providers: [
|
|
2159
|
+
LocalizationService,
|
|
2160
|
+
{
|
|
2161
|
+
provide: L10N_PREFIX,
|
|
2162
|
+
useValue: 'kendo.actionsheet.component'
|
|
2163
|
+
}
|
|
2164
|
+
]
|
|
2165
|
+
}]
|
|
2166
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
|
2167
|
+
type: HostBinding,
|
|
2168
|
+
args: ['class.k-actionsheet-container']
|
|
2169
|
+
}], direction: [{
|
|
2170
|
+
type: HostBinding,
|
|
2171
|
+
args: ['attr.dir']
|
|
2172
|
+
}], title: [{
|
|
2173
|
+
type: Input
|
|
2174
|
+
}], subtitle: [{
|
|
2175
|
+
type: Input
|
|
2176
|
+
}], items: [{
|
|
2177
|
+
type: Input
|
|
2178
|
+
}], itemClick: [{
|
|
2179
|
+
type: Output
|
|
2180
|
+
}], overlayClick: [{
|
|
2181
|
+
type: Output
|
|
2182
|
+
}], headerTemplate: [{
|
|
2183
|
+
type: ContentChild,
|
|
2184
|
+
args: [ActionSheetHeaderTemplateDirective]
|
|
2185
|
+
}], contentTemplate: [{
|
|
2186
|
+
type: ContentChild,
|
|
2187
|
+
args: [ActionSheetContentTemplateDirective]
|
|
2188
|
+
}], itemTemplate: [{
|
|
2189
|
+
type: ContentChild,
|
|
2190
|
+
args: [ActionSheetItemTemplateDirective]
|
|
2191
|
+
}], footerTemplate: [{
|
|
2192
|
+
type: ContentChild,
|
|
2193
|
+
args: [ActionSheetFooterTemplateDirective]
|
|
2194
|
+
}] } });
|
|
2195
|
+
|
|
2196
|
+
const templateDirectives = [
|
|
2197
|
+
ActionSheetHeaderTemplateDirective,
|
|
2198
|
+
ActionSheetItemTemplateDirective,
|
|
2199
|
+
ActionSheetContentTemplateDirective,
|
|
2200
|
+
ActionSheetFooterTemplateDirective
|
|
2201
|
+
];
|
|
2202
|
+
const exportedModules = [
|
|
2203
|
+
ActionSheetComponent,
|
|
2204
|
+
...templateDirectives
|
|
2205
|
+
];
|
|
2206
|
+
const declarations = [
|
|
2207
|
+
ActionSheetItemComponent,
|
|
2208
|
+
ActionSheetListComponent,
|
|
2209
|
+
...exportedModules
|
|
2210
|
+
];
|
|
2211
|
+
/**
|
|
2212
|
+
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
2213
|
+
* definition for the ActionSheet component.
|
|
2214
|
+
*
|
|
2215
|
+
* * @example
|
|
2216
|
+
*
|
|
2217
|
+
* ```ts-no-run
|
|
2218
|
+
* // Import the ActionSheet module
|
|
2219
|
+
* import { ActionSheetModule } from '@progress/kendo-angular-navigation';
|
|
2220
|
+
*
|
|
2221
|
+
* // The browser platform with a compiler
|
|
2222
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
2223
|
+
* import { BrowserModule } from '@angular/platform-browser';
|
|
2224
|
+
*
|
|
2225
|
+
* import { NgModule } from '@angular/core';
|
|
2226
|
+
*
|
|
2227
|
+
* // Import the app component
|
|
2228
|
+
* import { AppComponent } from './app.component';
|
|
2229
|
+
*
|
|
2230
|
+
* // Define the app module
|
|
2231
|
+
* _@NgModule({
|
|
2232
|
+
* declarations: [AppComponent], // declare app component
|
|
2233
|
+
* imports: [BrowserModule, ActionSheetModule], // import ActionSheet module
|
|
2234
|
+
* bootstrap: [AppComponent]
|
|
2235
|
+
* })
|
|
2236
|
+
* export class AppModule {}
|
|
2237
|
+
*
|
|
2238
|
+
* // Compile and launch the module
|
|
2239
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
2240
|
+
*
|
|
2241
|
+
* ```
|
|
2242
|
+
*/
|
|
2243
|
+
class ActionSheetModule {
|
|
2244
|
+
}
|
|
2245
|
+
ActionSheetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2246
|
+
ActionSheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetModule, declarations: [ActionSheetItemComponent,
|
|
2247
|
+
ActionSheetListComponent, ActionSheetComponent, ActionSheetHeaderTemplateDirective,
|
|
2248
|
+
ActionSheetItemTemplateDirective,
|
|
2249
|
+
ActionSheetContentTemplateDirective,
|
|
2250
|
+
ActionSheetFooterTemplateDirective], imports: [CommonModule], exports: [ActionSheetComponent, ActionSheetHeaderTemplateDirective,
|
|
2251
|
+
ActionSheetItemTemplateDirective,
|
|
2252
|
+
ActionSheetContentTemplateDirective,
|
|
2253
|
+
ActionSheetFooterTemplateDirective] });
|
|
2254
|
+
ActionSheetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetModule, imports: [[CommonModule]] });
|
|
2255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ActionSheetModule, decorators: [{
|
|
2256
|
+
type: NgModule,
|
|
2257
|
+
args: [{
|
|
2258
|
+
declarations: [declarations],
|
|
2259
|
+
exports: [exportedModules],
|
|
2260
|
+
imports: [CommonModule]
|
|
2261
|
+
}]
|
|
2262
|
+
}] });
|
|
2263
|
+
|
|
2264
|
+
/**
|
|
2265
|
+
* Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
|
|
2266
|
+
* definition for the Navigation components.
|
|
2267
|
+
*
|
|
2268
|
+
* @example
|
|
2269
|
+
*
|
|
2270
|
+
* ```ts-no-run
|
|
2271
|
+
* // Import the Navigation module
|
|
2272
|
+
* import { NavigationModule } from '@progress/kendo-angular-navigation';
|
|
2273
|
+
*
|
|
2274
|
+
* // The browser platform with a compiler
|
|
2275
|
+
* import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
2276
|
+
*
|
|
2277
|
+
* import { NgModule } from '@angular/core';
|
|
2278
|
+
*
|
|
2279
|
+
* // Import the app component
|
|
2280
|
+
* import { AppComponent } from './app.component';
|
|
2281
|
+
*
|
|
2282
|
+
* // Define the app module
|
|
2283
|
+
* _@NgModule({
|
|
2284
|
+
* declarations: [AppComponent], // declare app component
|
|
2285
|
+
* imports: [BrowserModule, NavigationModule], // import Navigation module
|
|
2286
|
+
* bootstrap: [AppComponent]
|
|
2287
|
+
* })
|
|
2288
|
+
* export class AppModule {}
|
|
2289
|
+
*
|
|
2290
|
+
* // Compile and launch the module
|
|
2291
|
+
* platformBrowserDynamic().bootstrapModule(AppModule);
|
|
2292
|
+
*
|
|
2293
|
+
* ```
|
|
2294
|
+
*/
|
|
2295
|
+
class NavigationModule {
|
|
2296
|
+
}
|
|
2297
|
+
NavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2298
|
+
NavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationModule, exports: [AppBarModule,
|
|
2299
|
+
BreadCrumbModule,
|
|
2300
|
+
BottomNavigationModule,
|
|
2301
|
+
ActionSheetModule] });
|
|
2302
|
+
NavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationModule, imports: [AppBarModule,
|
|
2303
|
+
BreadCrumbModule,
|
|
2304
|
+
BottomNavigationModule,
|
|
2305
|
+
ActionSheetModule] });
|
|
2306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationModule, decorators: [{
|
|
2307
|
+
type: NgModule,
|
|
2308
|
+
args: [{
|
|
2309
|
+
exports: [
|
|
2310
|
+
AppBarModule,
|
|
2311
|
+
BreadCrumbModule,
|
|
2312
|
+
BottomNavigationModule,
|
|
2313
|
+
ActionSheetModule
|
|
2314
|
+
]
|
|
2315
|
+
}]
|
|
2316
|
+
}] });
|
|
2317
|
+
|
|
2318
|
+
// AppBar exports
|
|
2319
|
+
|
|
2320
|
+
/**
|
|
2321
|
+
* Generated bundle index. Do not edit.
|
|
2322
|
+
*/
|
|
2323
|
+
|
|
2324
|
+
export { ActionSheetComponent, ActionSheetContentTemplateDirective, ActionSheetFooterTemplateDirective, ActionSheetHeaderTemplateDirective, ActionSheetItemClickEvent, ActionSheetItemTemplateDirective, ActionSheetModule, AppBarComponent, AppBarModule, AppBarSectionComponent, AppBarSpacerComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective, BottomNavigationModule, BottomNavigationSelectEvent, BreadCrumbComponent, BreadCrumbItemComponent, BreadCrumbItemTemplateDirective, BreadCrumbListComponent, BreadCrumbModule, NavigationModule };
|
|
2325
|
+
|