@progress/kendo-angular-common 17.0.0-develop.9 → 17.0.1-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adornments/prefix.directive.d.ts +1 -1
- package/adornments/separator-orientation.d.ts +1 -1
- package/adornments/separator.component.d.ts +1 -1
- package/adornments/suffix.directive.d.ts +1 -1
- package/adornments.d.ts +0 -1
- package/draggable/draggable.directive.d.ts +1 -1
- package/draggable.d.ts +0 -1
- package/{esm2020 → esm2022}/adornments/prefix.directive.mjs +8 -7
- package/{esm2020 → esm2022}/adornments/separator.component.mjs +13 -15
- package/{esm2020 → esm2022}/adornments/suffix.directive.mjs +8 -7
- package/{esm2020 → esm2022}/adornments.mjs +0 -1
- package/{esm2020 → esm2022}/draggable/draggable.directive.mjs +10 -7
- package/{esm2020 → esm2022}/draggable.mjs +0 -1
- package/{esm2020 → esm2022}/events/events-outside-angular.directive.mjs +9 -4
- package/{esm2020 → esm2022}/events.mjs +0 -1
- package/{esm2020 → esm2022}/preventable-event.mjs +1 -3
- package/{esm2020 → esm2022}/resize-sensor/compat.service.mjs +6 -0
- package/{esm2020 → esm2022}/resize-sensor/observer.service.mjs +6 -3
- package/{esm2020 → esm2022}/resize-sensor/resize-batch.service.mjs +7 -5
- package/{esm2020 → esm2022}/resize-sensor/resize-sensor.component.mjs +15 -13
- package/{esm2020 → esm2022}/resize-sensor/resize.service.mjs +7 -3
- package/{esm2020 → esm2022}/resize-sensor.mjs +0 -1
- package/{esm2020 → esm2022}/template-context/template-context.directive.mjs +8 -6
- package/{esm2020 → esm2022}/toggle-button-tab-stop/toggle-button-tab-stop.directive.mjs +44 -28
- package/{esm2020 → esm2022}/toggle-button-tab-stop/toggle-button-tab-stop.mjs +1 -0
- package/{esm2020 → esm2022}/toggle-button-tab-stop.mjs +0 -1
- package/{esm2020 → esm2022}/utils/scrollbar-width.service.mjs +4 -4
- package/{esm2020 → esm2022}/watermark/index.mjs +0 -1
- package/{esm2020 → esm2022}/watermark/watermark.component.mjs +11 -12
- package/events/events-outside-angular.directive.d.ts +1 -1
- package/events.d.ts +0 -1
- package/{fesm2020 → fesm2022}/progress-kendo-angular-common.mjs +228 -290
- package/package.json +10 -16
- package/resize-sensor/resize-sensor.component.d.ts +1 -1
- package/resize-sensor.d.ts +0 -1
- package/template-context/template-context.directive.d.ts +1 -1
- package/toggle-button-tab-stop/toggle-button-tab-stop.directive.d.ts +1 -1
- package/toggle-button-tab-stop.d.ts +0 -1
- package/watermark/index.d.ts +0 -1
- package/adornments/adornments.module.d.ts +0 -17
- package/draggable/draggable.module.d.ts +0 -15
- package/esm2020/adornments/adornments.module.mjs +0 -26
- package/esm2020/draggable/draggable.module.mjs +0 -23
- package/esm2020/events/events.module.mjs +0 -23
- package/esm2020/resize-sensor/resize-sensor.module.mjs +0 -25
- package/esm2020/toggle-button-tab-stop/toggle-button-tab-stop.module.mjs +0 -23
- package/esm2020/watermark/watermark.module.mjs +0 -23
- package/events/events.module.d.ts +0 -15
- package/fesm2015/progress-kendo-angular-common.mjs +0 -1628
- package/resize-sensor/resize-sensor.module.d.ts +0 -15
- package/toggle-button-tab-stop/toggle-button-tab-stop.module.d.ts +0 -15
- package/watermark/watermark.module.d.ts +0 -15
- /package/{esm2020 → esm2022}/adornments/separator-orientation.mjs +0 -0
- /package/{esm2020 → esm2022}/directives.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/closest-by-selector.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/closest-in-scope.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/closest.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/contains.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/find-element.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/find-focusable-child.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/find-focusable.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/has-classes.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/is-focusable-with-tab-key.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/is-focusable.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/is-visible.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/matches-classes.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/matches-node-name.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries/rtl-scroll-position.mjs +0 -0
- /package/{esm2020 → esm2022}/dom-queries.mjs +0 -0
- /package/{esm2020 → esm2022}/enums/keys.mjs +0 -0
- /package/{esm2020 → esm2022}/enums.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/progress-kendo-angular-common.mjs +0 -0
- /package/{esm2020 → esm2022}/template-context/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/any-changed.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/detect-browser.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/focusable-selectors.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/forms-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/guid.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/has-observers.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/html-attributes.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/is-changed.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/is-document-available.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/ng-class-parser.mjs +0 -0
- /package/{esm2020 → esm2022}/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/watermark/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/watermark/validation.mjs +0 -0
|
@@ -1,1628 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2024 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 { EventEmitter, Directive, Input, Output, NgModule, Injectable, Component, HostBinding, ViewChild, Optional, isDevMode } from '@angular/core';
|
|
7
|
-
import { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
|
|
8
|
-
import { take, auditTime } from 'rxjs/operators';
|
|
9
|
-
import { Draggable } from '@progress/kendo-draggable';
|
|
10
|
-
import { merge, fromEvent, from, Subscription } from 'rxjs';
|
|
11
|
-
import { NgIf, NgStyle } from '@angular/common';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @hidden
|
|
15
|
-
*/
|
|
16
|
-
const isDocumentAvailable = () => typeof document !== 'undefined';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @hidden
|
|
20
|
-
*/
|
|
21
|
-
const isChanged = (propertyName, changes, skipFirstChange = true) => (typeof changes[propertyName] !== 'undefined' &&
|
|
22
|
-
(!changes[propertyName].isFirstChange() || !skipFirstChange) &&
|
|
23
|
-
changes[propertyName].previousValue !== changes[propertyName].currentValue);
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @hidden
|
|
27
|
-
*/
|
|
28
|
-
const anyChanged = (propertyNames, changes, skipFirstChange = true) => propertyNames.some(name => isChanged(name, changes, skipFirstChange));
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @hidden
|
|
32
|
-
*/
|
|
33
|
-
const hasObservers = (emitter) => emitter && emitter.observers.length > 0;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @hidden
|
|
37
|
-
*/
|
|
38
|
-
const guid = () => {
|
|
39
|
-
let id = "";
|
|
40
|
-
for (let i = 0; i < 32; i++) {
|
|
41
|
-
const random = Math.random() * 16 | 0; // eslint-disable-line no-bitwise
|
|
42
|
-
if (i === 8 || i === 12 || i === 16 || i === 20) {
|
|
43
|
-
id += "-";
|
|
44
|
-
}
|
|
45
|
-
// eslint-disable-next-line no-bitwise
|
|
46
|
-
id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);
|
|
47
|
-
}
|
|
48
|
-
return id;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @hidden
|
|
53
|
-
*
|
|
54
|
-
* Returns true if the used browser is Safari.
|
|
55
|
-
*/
|
|
56
|
-
const isSafari = (userAgent) => {
|
|
57
|
-
return detectDesktopBrowser(userAgent).safari ||
|
|
58
|
-
(detectMobileOS(userAgent) && detectMobileOS(userAgent).browser === 'mobilesafari');
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* @hidden
|
|
62
|
-
*
|
|
63
|
-
* Returns true if the used browser is Firefox.
|
|
64
|
-
*/
|
|
65
|
-
const isFirefox = (userAgent) => {
|
|
66
|
-
const desktopBrowser = detectDesktopBrowser(userAgent);
|
|
67
|
-
const mobileOS = detectMobileOS(userAgent);
|
|
68
|
-
return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
72
|
-
/**
|
|
73
|
-
* @hidden
|
|
74
|
-
*/
|
|
75
|
-
const isPresent = (value) => value !== null && value !== undefined;
|
|
76
|
-
/**
|
|
77
|
-
* @hidden
|
|
78
|
-
*/
|
|
79
|
-
const isObjectPresent = (value) => {
|
|
80
|
-
return isObject(value) && Object.keys(value).length > 0;
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* @hidden
|
|
84
|
-
*/
|
|
85
|
-
const isString = (value) => value instanceof String || typeof value === 'string';
|
|
86
|
-
/**
|
|
87
|
-
* @hidden
|
|
88
|
-
*/
|
|
89
|
-
const isObject = (value) => isPresent(value) && !Array.isArray(value) && typeof value === 'object';
|
|
90
|
-
/**
|
|
91
|
-
* @hidden
|
|
92
|
-
*/
|
|
93
|
-
const splitStringToArray = (value) => value.trim().replace(/\s+/g, " ").split(' ');
|
|
94
|
-
/**
|
|
95
|
-
* Receives CSS class declarations either as an object, string or array and returns an array of the class names.
|
|
96
|
-
*
|
|
97
|
-
* @hidden
|
|
98
|
-
*/
|
|
99
|
-
const parseCSSClassNames = (value) => {
|
|
100
|
-
if (Array.isArray(value)) {
|
|
101
|
-
return parseArrayClassNames(value);
|
|
102
|
-
}
|
|
103
|
-
if (isObject(value)) {
|
|
104
|
-
return parseObjectClassNames(value);
|
|
105
|
-
}
|
|
106
|
-
if (isString(value)) {
|
|
107
|
-
return parseStringClassNames(value);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
const parseObjectClassNames = (value) => {
|
|
111
|
-
const classes = [];
|
|
112
|
-
Object.keys(value).forEach((className) => {
|
|
113
|
-
const currentClassName = splitStringToArray(className);
|
|
114
|
-
if (value[className] && currentClassName.length) {
|
|
115
|
-
classes.push(...currentClassName);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
return classes;
|
|
119
|
-
};
|
|
120
|
-
const parseStringClassNames = (value) => {
|
|
121
|
-
const classes = [];
|
|
122
|
-
const classesArray = splitStringToArray(value);
|
|
123
|
-
classesArray.forEach((className) => {
|
|
124
|
-
classes.push(className);
|
|
125
|
-
});
|
|
126
|
-
return classes;
|
|
127
|
-
};
|
|
128
|
-
const parseArrayClassNames = (value) => {
|
|
129
|
-
const classes = [];
|
|
130
|
-
value.forEach((className) => {
|
|
131
|
-
const current = splitStringToArray(className);
|
|
132
|
-
if (current[0]) {
|
|
133
|
-
classes.push(...current);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
return classes;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* @hidden
|
|
141
|
-
*/
|
|
142
|
-
const setHTMLAttributes = (attributes, renderer, element, zone) => {
|
|
143
|
-
zone ? zone.onStable.pipe(take(1)).subscribe(() => {
|
|
144
|
-
applyAttributes(attributes, renderer, element);
|
|
145
|
-
}) : applyAttributes(attributes, renderer, element);
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* @hidden
|
|
149
|
-
*/
|
|
150
|
-
const removeHTMLAttributes = (attributes, renderer, element) => {
|
|
151
|
-
for (const attribute in attributes) {
|
|
152
|
-
if (attribute) {
|
|
153
|
-
renderer.removeAttribute(element, attribute);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* @hidden
|
|
159
|
-
*/
|
|
160
|
-
const parseAttributes = (target, source) => {
|
|
161
|
-
const targetObj = target;
|
|
162
|
-
Object.keys(source).forEach(key => {
|
|
163
|
-
delete targetObj[key];
|
|
164
|
-
});
|
|
165
|
-
return targetObj;
|
|
166
|
-
};
|
|
167
|
-
/**
|
|
168
|
-
* @hidden
|
|
169
|
-
*/
|
|
170
|
-
const applyAttributes = (attributes, renderer, element) => {
|
|
171
|
-
for (const attribute in attributes) {
|
|
172
|
-
if (attribute && isPresent(attributes[attribute])) {
|
|
173
|
-
renderer.setAttribute(element, attribute, attributes[attribute]);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* @hidden
|
|
180
|
-
*/
|
|
181
|
-
const isControlRequired = (control) => {
|
|
182
|
-
var _a;
|
|
183
|
-
if (!(control === null || control === void 0 ? void 0 : control.validator)) {
|
|
184
|
-
return false;
|
|
185
|
-
}
|
|
186
|
-
return (_a = control.validator(control)) === null || _a === void 0 ? void 0 : _a.hasOwnProperty('required');
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
class DraggableDirective {
|
|
190
|
-
constructor(element, ngZone) {
|
|
191
|
-
this.element = element;
|
|
192
|
-
this.ngZone = ngZone;
|
|
193
|
-
this.enableDrag = true;
|
|
194
|
-
this.kendoPress = new EventEmitter();
|
|
195
|
-
this.kendoDrag = new EventEmitter();
|
|
196
|
-
this.kendoRelease = new EventEmitter();
|
|
197
|
-
}
|
|
198
|
-
ngOnInit() {
|
|
199
|
-
this.toggleDraggable();
|
|
200
|
-
}
|
|
201
|
-
ngOnChanges(changes) {
|
|
202
|
-
if (isChanged('enableDrag', changes)) {
|
|
203
|
-
this.toggleDraggable();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
ngOnDestroy() {
|
|
207
|
-
this.destroyDraggable();
|
|
208
|
-
}
|
|
209
|
-
toggleDraggable() {
|
|
210
|
-
if (isDocumentAvailable()) {
|
|
211
|
-
this.destroyDraggable();
|
|
212
|
-
if (this.enableDrag) {
|
|
213
|
-
this.draggable = new Draggable({
|
|
214
|
-
drag: (e) => this.kendoDrag.next(e),
|
|
215
|
-
press: (e) => this.kendoPress.next(e),
|
|
216
|
-
release: (e) => this.kendoRelease.next(e)
|
|
217
|
-
});
|
|
218
|
-
this.ngZone.runOutsideAngular(() => { var _a; return (_a = this.draggable) === null || _a === void 0 ? void 0 : _a.bindTo(this.element.nativeElement); });
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
destroyDraggable() {
|
|
223
|
-
if (this.draggable) {
|
|
224
|
-
this.draggable.destroy();
|
|
225
|
-
this.draggable = undefined;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
DraggableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DraggableDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
230
|
-
DraggableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DraggableDirective, isStandalone: true, selector: "[kendoDraggable]", inputs: { enableDrag: "enableDrag" }, outputs: { kendoPress: "kendoPress", kendoDrag: "kendoDrag", kendoRelease: "kendoRelease" }, usesOnChanges: true, ngImport: i0 });
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DraggableDirective, decorators: [{
|
|
232
|
-
type: Directive,
|
|
233
|
-
args: [{
|
|
234
|
-
selector: '[kendoDraggable]',
|
|
235
|
-
standalone: true
|
|
236
|
-
}]
|
|
237
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { enableDrag: [{
|
|
238
|
-
type: Input
|
|
239
|
-
}], kendoPress: [{
|
|
240
|
-
type: Output
|
|
241
|
-
}], kendoDrag: [{
|
|
242
|
-
type: Output
|
|
243
|
-
}], kendoRelease: [{
|
|
244
|
-
type: Output
|
|
245
|
-
}] } });
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* @hidden
|
|
249
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
250
|
-
*/
|
|
251
|
-
class DraggableModule {
|
|
252
|
-
}
|
|
253
|
-
DraggableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DraggableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
254
|
-
DraggableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: DraggableModule, imports: [DraggableDirective], exports: [DraggableDirective] });
|
|
255
|
-
DraggableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DraggableModule });
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DraggableModule, decorators: [{
|
|
257
|
-
type: NgModule,
|
|
258
|
-
args: [{
|
|
259
|
-
exports: [DraggableDirective],
|
|
260
|
-
imports: [DraggableDirective]
|
|
261
|
-
}]
|
|
262
|
-
}] });
|
|
263
|
-
|
|
264
|
-
const closestInScope = (node, predicate, scope) => {
|
|
265
|
-
while (node && node !== scope && !predicate(node)) {
|
|
266
|
-
node = node.parentNode;
|
|
267
|
-
}
|
|
268
|
-
if (node !== scope) {
|
|
269
|
-
return node;
|
|
270
|
-
}
|
|
271
|
-
return undefined;
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
const closest = (node, predicate) => {
|
|
275
|
-
while (node && !predicate(node)) {
|
|
276
|
-
node = node.parentNode;
|
|
277
|
-
}
|
|
278
|
-
return node;
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
const contains = (parent, node, matchSelf = false) => {
|
|
282
|
-
const outside = !closest(node, (child) => child === parent);
|
|
283
|
-
if (outside) {
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
const el = closest(node, (child) => child === node);
|
|
287
|
-
return el && (matchSelf || el !== parent);
|
|
288
|
-
};
|
|
289
|
-
|
|
290
|
-
const findElement = (node, predicate, matchSelf = true) => {
|
|
291
|
-
if (!node) {
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
if (matchSelf && predicate(node)) {
|
|
295
|
-
return node;
|
|
296
|
-
}
|
|
297
|
-
node = node.firstChild;
|
|
298
|
-
while (node) {
|
|
299
|
-
if (node.nodeType === 1) {
|
|
300
|
-
const element = findElement(node, predicate);
|
|
301
|
-
if (element) {
|
|
302
|
-
return element;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
node = node.nextSibling;
|
|
306
|
-
}
|
|
307
|
-
};
|
|
308
|
-
|
|
309
|
-
const focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;
|
|
310
|
-
const isFocusable = (element) => {
|
|
311
|
-
if (!element.tagName) {
|
|
312
|
-
return false;
|
|
313
|
-
}
|
|
314
|
-
const tagName = element.tagName.toLowerCase();
|
|
315
|
-
const hasTabIndex = Boolean(element.getAttribute('tabIndex'));
|
|
316
|
-
const focusable = !element.disabled && focusableRegex.test(tagName);
|
|
317
|
-
return focusable || hasTabIndex;
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
const isVisible = (element) => {
|
|
321
|
-
const rect = element.getBoundingClientRect();
|
|
322
|
-
const hasSize = rect.width > 0 && rect.height > 0;
|
|
323
|
-
const hasPosition = rect.x !== 0 && rect.y !== 0;
|
|
324
|
-
// Elements can have zero size due to styling, but they will still count as visible.
|
|
325
|
-
// For example, the selection checkbox has no size, but is made visible through styling.
|
|
326
|
-
return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';
|
|
327
|
-
};
|
|
328
|
-
|
|
329
|
-
const isFocusableWithTabKey = (element, checkVisibility = true) => {
|
|
330
|
-
if (!isFocusable(element)) {
|
|
331
|
-
return false;
|
|
332
|
-
}
|
|
333
|
-
const tabIndex = element.getAttribute('tabIndex');
|
|
334
|
-
const visible = !checkVisibility || isVisible(element);
|
|
335
|
-
return visible && tabIndex !== '-1';
|
|
336
|
-
};
|
|
337
|
-
|
|
338
|
-
const findFocusableChild = (element, checkVisibility = true) => {
|
|
339
|
-
return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility), false);
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
const findFocusable = (element, checkVisibility = true) => {
|
|
343
|
-
return findElement(element, (node) => isFocusableWithTabKey(node, checkVisibility));
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
const toClassList = (classNames) => String(classNames).trim().split(' ');
|
|
347
|
-
const hasClasses = (element, classNames) => {
|
|
348
|
-
const namesList = toClassList(classNames);
|
|
349
|
-
return Boolean(toClassList(element.className).find((className) => namesList.indexOf(className) >= 0));
|
|
350
|
-
};
|
|
351
|
-
|
|
352
|
-
const matchesClasses = (classNames) => (element) => hasClasses(element, classNames);
|
|
353
|
-
|
|
354
|
-
const NODE_NAME_PREDICATES = {};
|
|
355
|
-
const matchesNodeName = (nodeName) => {
|
|
356
|
-
if (!NODE_NAME_PREDICATES[nodeName]) {
|
|
357
|
-
NODE_NAME_PREDICATES[nodeName] = (element) => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();
|
|
358
|
-
}
|
|
359
|
-
return NODE_NAME_PREDICATES[nodeName];
|
|
360
|
-
};
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Normalizes a scroll position value in RTL mode.
|
|
364
|
-
*/
|
|
365
|
-
function rtlScrollPosition(position, element, initial) {
|
|
366
|
-
let result = position;
|
|
367
|
-
if (initial < 0) {
|
|
368
|
-
result = -position;
|
|
369
|
-
}
|
|
370
|
-
else if (initial > 0) {
|
|
371
|
-
result = element.scrollWidth - element.offsetWidth - position;
|
|
372
|
-
}
|
|
373
|
-
return result;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
function closestBySelector(element, selector) {
|
|
377
|
-
if (element.closest) {
|
|
378
|
-
return element.closest(selector);
|
|
379
|
-
}
|
|
380
|
-
const matches = Element.prototype.matches ?
|
|
381
|
-
(el, sel) => el.matches(sel)
|
|
382
|
-
: (el, sel) => el.msMatchesSelector(sel);
|
|
383
|
-
let node = element;
|
|
384
|
-
while (node && !isDocumentNode(node)) {
|
|
385
|
-
if (matches(node, selector)) {
|
|
386
|
-
return node;
|
|
387
|
-
}
|
|
388
|
-
node = node.parentNode;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
const isDocumentNode = (container) => container.nodeType === 9;
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* @hidden
|
|
395
|
-
*/
|
|
396
|
-
class EventsOutsideAngularDirective {
|
|
397
|
-
constructor(element, ngZone, renderer) {
|
|
398
|
-
this.element = element;
|
|
399
|
-
this.ngZone = ngZone;
|
|
400
|
-
this.renderer = renderer;
|
|
401
|
-
this.events = {};
|
|
402
|
-
}
|
|
403
|
-
ngOnInit() {
|
|
404
|
-
if (!this.element || !this.element.nativeElement) {
|
|
405
|
-
return;
|
|
406
|
-
}
|
|
407
|
-
const events = this.events;
|
|
408
|
-
this.subscriptions = [];
|
|
409
|
-
this.ngZone.runOutsideAngular(() => {
|
|
410
|
-
var _a;
|
|
411
|
-
for (const name in events) {
|
|
412
|
-
if (Object.hasOwnProperty.call(events, name)) {
|
|
413
|
-
(_a = this.subscriptions) === null || _a === void 0 ? void 0 : _a.push(this.renderer.listen(this.element.nativeElement, name, this.scope ? events[name].bind(this.scope) : events[name]));
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
ngOnDestroy() {
|
|
419
|
-
if (this.subscriptions) {
|
|
420
|
-
for (let idx = 0; idx < this.subscriptions.length; idx++) {
|
|
421
|
-
this.subscriptions[idx]();
|
|
422
|
-
}
|
|
423
|
-
this.subscriptions = null;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
EventsOutsideAngularDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsOutsideAngularDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
428
|
-
EventsOutsideAngularDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: EventsOutsideAngularDirective, isStandalone: true, selector: "[kendoEventsOutsideAngular]", inputs: { events: ["kendoEventsOutsideAngular", "events"], scope: "scope" }, ngImport: i0 });
|
|
429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsOutsideAngularDirective, decorators: [{
|
|
430
|
-
type: Directive,
|
|
431
|
-
args: [{
|
|
432
|
-
selector: '[kendoEventsOutsideAngular]',
|
|
433
|
-
standalone: true
|
|
434
|
-
}]
|
|
435
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { events: [{
|
|
436
|
-
type: Input,
|
|
437
|
-
args: ['kendoEventsOutsideAngular']
|
|
438
|
-
}], scope: [{
|
|
439
|
-
type: Input
|
|
440
|
-
}] } });
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* @hidden
|
|
444
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
445
|
-
*/
|
|
446
|
-
class EventsModule {
|
|
447
|
-
}
|
|
448
|
-
EventsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
449
|
-
EventsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: EventsModule, imports: [EventsOutsideAngularDirective], exports: [EventsOutsideAngularDirective] });
|
|
450
|
-
EventsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsModule });
|
|
451
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EventsModule, decorators: [{
|
|
452
|
-
type: NgModule,
|
|
453
|
-
args: [{
|
|
454
|
-
imports: [EventsOutsideAngularDirective],
|
|
455
|
-
exports: [EventsOutsideAngularDirective]
|
|
456
|
-
}]
|
|
457
|
-
}] });
|
|
458
|
-
|
|
459
|
-
class ResizeService {
|
|
460
|
-
constructor(resizeBatchService) {
|
|
461
|
-
this.resizeBatchService = resizeBatchService;
|
|
462
|
-
this.resize = new EventEmitter();
|
|
463
|
-
this.acceptedSize = false;
|
|
464
|
-
this.state = 0 /* ServiceState.Initial */;
|
|
465
|
-
}
|
|
466
|
-
acceptSize(size = this.measure()) {
|
|
467
|
-
this.lastWidth = size.width;
|
|
468
|
-
this.lastHeight = size.height;
|
|
469
|
-
this.acceptedSize = true;
|
|
470
|
-
}
|
|
471
|
-
checkChanges() {
|
|
472
|
-
if (!isDocumentAvailable()) {
|
|
473
|
-
return;
|
|
474
|
-
}
|
|
475
|
-
if (this.state === 0 /* ServiceState.Initial */) {
|
|
476
|
-
this.state = 1 /* ServiceState.Initializing */;
|
|
477
|
-
// batch initial measure
|
|
478
|
-
this.resizeBatchService.schedule(this, this.init);
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
destroy() {
|
|
482
|
-
this.resizeBatchService.cancel(this);
|
|
483
|
-
}
|
|
484
|
-
checkSize() {
|
|
485
|
-
if (!this.parentElement) {
|
|
486
|
-
return false;
|
|
487
|
-
}
|
|
488
|
-
const { width, height } = this.measure();
|
|
489
|
-
const sameSize = width === this.lastWidth && height === this.lastHeight;
|
|
490
|
-
if (sameSize) {
|
|
491
|
-
return false;
|
|
492
|
-
}
|
|
493
|
-
this.lastWidth = width;
|
|
494
|
-
this.lastHeight = height;
|
|
495
|
-
this.acceptedSize = false;
|
|
496
|
-
this.resize.emit();
|
|
497
|
-
return true;
|
|
498
|
-
}
|
|
499
|
-
initSize() {
|
|
500
|
-
const size = this.measure();
|
|
501
|
-
this.lastWidth = size.width;
|
|
502
|
-
this.lastHeight = size.height;
|
|
503
|
-
}
|
|
504
|
-
measure() {
|
|
505
|
-
let width = 0;
|
|
506
|
-
let height = 0;
|
|
507
|
-
if (this.parentElement) {
|
|
508
|
-
height = this.parentElement.offsetHeight;
|
|
509
|
-
width = this.parentElement.offsetWidth;
|
|
510
|
-
}
|
|
511
|
-
return { height, width };
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
// eslint-disable import/no-deprecated
|
|
516
|
-
// TODO:NG13 CSP
|
|
517
|
-
const div = (style) => {
|
|
518
|
-
const el = document.createElement('div');
|
|
519
|
-
el.style.cssText = style;
|
|
520
|
-
return el;
|
|
521
|
-
};
|
|
522
|
-
const computedProp = (elem, prop) => getComputedStyle(elem, null).getPropertyValue(prop);
|
|
523
|
-
const WRAP_STYLE = 'position: absolute; display: block; left: 0; top: 0; right: 0; bottom: 0; z-index: -1;' +
|
|
524
|
-
'overflow: hidden; visibility: hidden;';
|
|
525
|
-
const EXPAND_CHILD_STYLE = 'position: absolute; left: 0; top: 0; transition: 0s;';
|
|
526
|
-
const SHRINK_CHILD_STYLE = EXPAND_CHILD_STYLE + 'width: 200%; height: 200%;';
|
|
527
|
-
class ResizeCompatService extends ResizeService {
|
|
528
|
-
constructor(resizeBatchService, element, ngZone) {
|
|
529
|
-
super(resizeBatchService);
|
|
530
|
-
this.element = element;
|
|
531
|
-
this.ngZone = ngZone;
|
|
532
|
-
}
|
|
533
|
-
checkChanges() {
|
|
534
|
-
if (this.state === 2 /* ServiceState.Initialized */) {
|
|
535
|
-
if (!this.resizeBatchService.isScheduled(this)) {
|
|
536
|
-
this.resizeBatchService.schedule(this, this.checkSize);
|
|
537
|
-
}
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
super.checkChanges();
|
|
541
|
-
}
|
|
542
|
-
destroy() {
|
|
543
|
-
var _a;
|
|
544
|
-
super.destroy();
|
|
545
|
-
if (this.subscription) {
|
|
546
|
-
this.subscription.unsubscribe();
|
|
547
|
-
}
|
|
548
|
-
if (this.expand) {
|
|
549
|
-
const element = (_a = this.element) === null || _a === void 0 ? void 0 : _a.nativeElement;
|
|
550
|
-
element.removeChild(this.expand);
|
|
551
|
-
element.removeChild(this.shrink);
|
|
552
|
-
this.expand.removeChild(this.expandChild);
|
|
553
|
-
this.expand = this.expandChild = this.shrink = this.element = null;
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
checkSize() {
|
|
557
|
-
if (super.checkSize()) {
|
|
558
|
-
this.reset();
|
|
559
|
-
return true;
|
|
560
|
-
}
|
|
561
|
-
return false;
|
|
562
|
-
}
|
|
563
|
-
init() {
|
|
564
|
-
var _a;
|
|
565
|
-
const parentElement = this.parentElement = (_a = this.element) === null || _a === void 0 ? void 0 : _a.nativeElement.parentElement;
|
|
566
|
-
if (computedProp(parentElement, 'position') === 'static') {
|
|
567
|
-
parentElement.style.position = 'relative';
|
|
568
|
-
}
|
|
569
|
-
this.state = 2 /* ServiceState.Initialized */;
|
|
570
|
-
this.render();
|
|
571
|
-
this.reset();
|
|
572
|
-
this.initSize();
|
|
573
|
-
this.subscribe();
|
|
574
|
-
}
|
|
575
|
-
render() {
|
|
576
|
-
var _a;
|
|
577
|
-
const element = (_a = this.element) === null || _a === void 0 ? void 0 : _a.nativeElement;
|
|
578
|
-
element.style.cssText = WRAP_STYLE;
|
|
579
|
-
element.setAttribute('dir', 'ltr');
|
|
580
|
-
this.expand = div(WRAP_STYLE);
|
|
581
|
-
this.expandChild = div(EXPAND_CHILD_STYLE);
|
|
582
|
-
this.expand.appendChild(this.expandChild);
|
|
583
|
-
element.appendChild(this.expand);
|
|
584
|
-
this.shrink = div(WRAP_STYLE);
|
|
585
|
-
const shrinkChild = div(SHRINK_CHILD_STYLE);
|
|
586
|
-
this.shrink.appendChild(shrinkChild);
|
|
587
|
-
element.appendChild(this.shrink);
|
|
588
|
-
}
|
|
589
|
-
reset() {
|
|
590
|
-
const expandChild = this.expandChild;
|
|
591
|
-
expandChild.style.width = 100000 + 'px';
|
|
592
|
-
expandChild.style.height = 100000 + 'px';
|
|
593
|
-
const expand = this.expand;
|
|
594
|
-
expand.scrollLeft = 100000;
|
|
595
|
-
expand.scrollTop = 100000;
|
|
596
|
-
const shrink = this.shrink;
|
|
597
|
-
shrink.scrollLeft = 100000;
|
|
598
|
-
shrink.scrollTop = 100000;
|
|
599
|
-
}
|
|
600
|
-
subscribe() {
|
|
601
|
-
this.ngZone.runOutsideAngular(() => {
|
|
602
|
-
this.subscription = merge(fromEvent(this.shrink, 'scroll'), fromEvent(this.expand, 'scroll'))
|
|
603
|
-
.subscribe(() => {
|
|
604
|
-
this.checkSize();
|
|
605
|
-
});
|
|
606
|
-
});
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
const HAS_OBSERVER = typeof ResizeObserver !== 'undefined';
|
|
611
|
-
/**
|
|
612
|
-
* @hidden
|
|
613
|
-
*/
|
|
614
|
-
class ResizeObserverService extends ResizeService {
|
|
615
|
-
constructor(resizeBatchService, element, ngZone) {
|
|
616
|
-
super(resizeBatchService);
|
|
617
|
-
this.element = element;
|
|
618
|
-
this.ngZone = ngZone;
|
|
619
|
-
}
|
|
620
|
-
static supported() {
|
|
621
|
-
return HAS_OBSERVER;
|
|
622
|
-
}
|
|
623
|
-
destroy() {
|
|
624
|
-
super.destroy();
|
|
625
|
-
if (this.resizeObserver) {
|
|
626
|
-
this.resizeObserver.disconnect();
|
|
627
|
-
this.resizeObserver = null;
|
|
628
|
-
}
|
|
629
|
-
this.parentElement = null;
|
|
630
|
-
}
|
|
631
|
-
init() {
|
|
632
|
-
this.parentElement = this.element.nativeElement.parentElement;
|
|
633
|
-
this.initSize();
|
|
634
|
-
this.state = 2 /* ServiceState.Initialized */;
|
|
635
|
-
this.ngZone.runOutsideAngular(() => {
|
|
636
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
637
|
-
this.checkSize();
|
|
638
|
-
});
|
|
639
|
-
this.resizeObserver.observe(this.parentElement);
|
|
640
|
-
});
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
/**
|
|
645
|
-
* @hidden
|
|
646
|
-
*/
|
|
647
|
-
class ResizeBatchService {
|
|
648
|
-
constructor(ngZone) {
|
|
649
|
-
this.ngZone = ngZone;
|
|
650
|
-
this.scheduled = [];
|
|
651
|
-
this.resolvedPromise = Promise.resolve(null);
|
|
652
|
-
this.flush = this.flush.bind(this);
|
|
653
|
-
}
|
|
654
|
-
schedule(instance, method) {
|
|
655
|
-
this.scheduled.push({ instance, method });
|
|
656
|
-
if (!this.subscription) {
|
|
657
|
-
this.ngZone.runOutsideAngular(() => {
|
|
658
|
-
this.subscription = from(this.resolvedPromise)
|
|
659
|
-
.subscribe(this.flush);
|
|
660
|
-
});
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
isScheduled(instance) {
|
|
664
|
-
return Boolean(this.scheduled.find(item => item.instance === instance));
|
|
665
|
-
}
|
|
666
|
-
cancel(instance) {
|
|
667
|
-
const scheduled = this.scheduled;
|
|
668
|
-
const count = scheduled.length;
|
|
669
|
-
for (let idx = 0; idx < count; idx++) {
|
|
670
|
-
if (scheduled[idx].instance === instance) {
|
|
671
|
-
scheduled.splice(idx, 1);
|
|
672
|
-
if (!scheduled.length) {
|
|
673
|
-
this.unsubscribe();
|
|
674
|
-
}
|
|
675
|
-
return;
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
ngOnDestroy() {
|
|
680
|
-
this.unsubscribe();
|
|
681
|
-
}
|
|
682
|
-
unsubscribe() {
|
|
683
|
-
if (this.subscription) {
|
|
684
|
-
this.subscription.unsubscribe();
|
|
685
|
-
this.subscription = null;
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
flush() {
|
|
689
|
-
this.scheduled.forEach(item => {
|
|
690
|
-
item.method.call(item.instance);
|
|
691
|
-
});
|
|
692
|
-
this.scheduled = [];
|
|
693
|
-
this.unsubscribe();
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
ResizeBatchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeBatchService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
697
|
-
ResizeBatchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeBatchService, providedIn: 'root' });
|
|
698
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeBatchService, decorators: [{
|
|
699
|
-
type: Injectable,
|
|
700
|
-
args: [{
|
|
701
|
-
providedIn: 'root'
|
|
702
|
-
}]
|
|
703
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
704
|
-
|
|
705
|
-
/**
|
|
706
|
-
* Emit up to 10 resize events per second by default.
|
|
707
|
-
* Chosen as a compromise between responsiveness and performance.
|
|
708
|
-
*/
|
|
709
|
-
const DEFAULT_RATE_LIMIT = 10;
|
|
710
|
-
/**
|
|
711
|
-
* Resize Sensor Component
|
|
712
|
-
*
|
|
713
|
-
* Triggers a "resize" event whenever the parent DOM element size changes.
|
|
714
|
-
*/
|
|
715
|
-
class ResizeSensorComponent {
|
|
716
|
-
constructor(resizeBatchService, element, ngZone) {
|
|
717
|
-
/**
|
|
718
|
-
* The maximum number of resize events to emit per second.
|
|
719
|
-
*
|
|
720
|
-
* Defaults to 10.
|
|
721
|
-
*/
|
|
722
|
-
this.rateLimit = DEFAULT_RATE_LIMIT;
|
|
723
|
-
/**
|
|
724
|
-
* Fires when the parent DOM element has been resized.
|
|
725
|
-
*/
|
|
726
|
-
this.resize = new EventEmitter();
|
|
727
|
-
const serviceType = ResizeObserverService.supported() ? ResizeObserverService : ResizeCompatService;
|
|
728
|
-
this.resizeService = new serviceType(resizeBatchService, element, ngZone);
|
|
729
|
-
const throttleTime = 1000 / (this.rateLimit || DEFAULT_RATE_LIMIT);
|
|
730
|
-
this.subscription = this.resizeService.resize
|
|
731
|
-
.pipe(auditTime(throttleTime))
|
|
732
|
-
.subscribe(() => {
|
|
733
|
-
if (!this.resizeService.acceptedSize) {
|
|
734
|
-
this.resize.emit();
|
|
735
|
-
}
|
|
736
|
-
});
|
|
737
|
-
}
|
|
738
|
-
ngAfterViewChecked() {
|
|
739
|
-
this.resizeService.checkChanges();
|
|
740
|
-
}
|
|
741
|
-
ngOnDestroy() {
|
|
742
|
-
this.subscription.unsubscribe();
|
|
743
|
-
this.resizeService.destroy();
|
|
744
|
-
}
|
|
745
|
-
acceptSize(size) {
|
|
746
|
-
this.resizeService.acceptSize(size);
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
ResizeSensorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorComponent, deps: [{ token: ResizeBatchService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
750
|
-
ResizeSensorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ResizeSensorComponent, isStandalone: true, selector: "kendo-resize-sensor", inputs: { rateLimit: "rateLimit" }, outputs: { resize: "resize" }, ngImport: i0, template: '', isInline: true });
|
|
751
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorComponent, decorators: [{
|
|
752
|
-
type: Component,
|
|
753
|
-
args: [{
|
|
754
|
-
selector: 'kendo-resize-sensor',
|
|
755
|
-
template: '',
|
|
756
|
-
standalone: true
|
|
757
|
-
}]
|
|
758
|
-
}], ctorParameters: function () { return [{ type: ResizeBatchService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rateLimit: [{
|
|
759
|
-
type: Input
|
|
760
|
-
}], resize: [{
|
|
761
|
-
type: Output
|
|
762
|
-
}] } });
|
|
763
|
-
|
|
764
|
-
/**
|
|
765
|
-
* @hidden
|
|
766
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
767
|
-
*/
|
|
768
|
-
class ResizeSensorModule {
|
|
769
|
-
}
|
|
770
|
-
ResizeSensorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
771
|
-
ResizeSensorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorModule, imports: [ResizeSensorComponent], exports: [ResizeSensorComponent] });
|
|
772
|
-
ResizeSensorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorModule, providers: [ResizeBatchService], imports: [ResizeSensorComponent] });
|
|
773
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ResizeSensorModule, decorators: [{
|
|
774
|
-
type: NgModule,
|
|
775
|
-
args: [{
|
|
776
|
-
imports: [ResizeSensorComponent],
|
|
777
|
-
exports: [ResizeSensorComponent],
|
|
778
|
-
providers: [ResizeBatchService]
|
|
779
|
-
}]
|
|
780
|
-
}] });
|
|
781
|
-
|
|
782
|
-
class KendoInput {
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
/**
|
|
786
|
-
* Enum with key codes.
|
|
787
|
-
*/
|
|
788
|
-
var Keys;
|
|
789
|
-
(function (Keys) {
|
|
790
|
-
Keys[Keys["Alt"] = 18] = "Alt";
|
|
791
|
-
Keys[Keys["ArrowDown"] = 40] = "ArrowDown";
|
|
792
|
-
Keys[Keys["ArrowLeft"] = 37] = "ArrowLeft";
|
|
793
|
-
Keys[Keys["ArrowRight"] = 39] = "ArrowRight";
|
|
794
|
-
Keys[Keys["ArrowUp"] = 38] = "ArrowUp";
|
|
795
|
-
Keys[Keys["Backspace"] = 8] = "Backspace";
|
|
796
|
-
Keys[Keys["Control"] = 17] = "Control";
|
|
797
|
-
Keys[Keys["Delete"] = 46] = "Delete";
|
|
798
|
-
Keys[Keys["Digit0"] = 48] = "Digit0";
|
|
799
|
-
Keys[Keys["Digit1"] = 49] = "Digit1";
|
|
800
|
-
Keys[Keys["Digit2"] = 50] = "Digit2";
|
|
801
|
-
Keys[Keys["Digit3"] = 51] = "Digit3";
|
|
802
|
-
Keys[Keys["Digit4"] = 52] = "Digit4";
|
|
803
|
-
Keys[Keys["Digit5"] = 53] = "Digit5";
|
|
804
|
-
Keys[Keys["Digit6"] = 54] = "Digit6";
|
|
805
|
-
Keys[Keys["Digit7"] = 55] = "Digit7";
|
|
806
|
-
Keys[Keys["Digit8"] = 56] = "Digit8";
|
|
807
|
-
Keys[Keys["Digit9"] = 57] = "Digit9";
|
|
808
|
-
Keys[Keys["End"] = 35] = "End";
|
|
809
|
-
Keys[Keys["Enter"] = 13] = "Enter";
|
|
810
|
-
Keys[Keys["Escape"] = 27] = "Escape";
|
|
811
|
-
Keys[Keys["F1"] = 112] = "F1";
|
|
812
|
-
Keys[Keys["F2"] = 113] = "F2";
|
|
813
|
-
Keys[Keys["F10"] = 121] = "F10";
|
|
814
|
-
Keys[Keys["Home"] = 36] = "Home";
|
|
815
|
-
Keys[Keys["Insert"] = 45] = "Insert";
|
|
816
|
-
Keys[Keys["KeyA"] = 65] = "KeyA";
|
|
817
|
-
Keys[Keys["KeyB"] = 66] = "KeyB";
|
|
818
|
-
Keys[Keys["KeyC"] = 67] = "KeyC";
|
|
819
|
-
Keys[Keys["KeyD"] = 68] = "KeyD";
|
|
820
|
-
Keys[Keys["KeyE"] = 69] = "KeyE";
|
|
821
|
-
Keys[Keys["KeyF"] = 70] = "KeyF";
|
|
822
|
-
Keys[Keys["KeyG"] = 71] = "KeyG";
|
|
823
|
-
Keys[Keys["KeyH"] = 72] = "KeyH";
|
|
824
|
-
Keys[Keys["KeyI"] = 73] = "KeyI";
|
|
825
|
-
Keys[Keys["KeyJ"] = 74] = "KeyJ";
|
|
826
|
-
Keys[Keys["KeyK"] = 75] = "KeyK";
|
|
827
|
-
Keys[Keys["KeyL"] = 76] = "KeyL";
|
|
828
|
-
Keys[Keys["KeyM"] = 77] = "KeyM";
|
|
829
|
-
Keys[Keys["KeyN"] = 78] = "KeyN";
|
|
830
|
-
Keys[Keys["KeyO"] = 79] = "KeyO";
|
|
831
|
-
Keys[Keys["KeyP"] = 80] = "KeyP";
|
|
832
|
-
Keys[Keys["KeyQ"] = 81] = "KeyQ";
|
|
833
|
-
Keys[Keys["KeyR"] = 82] = "KeyR";
|
|
834
|
-
Keys[Keys["KeyS"] = 83] = "KeyS";
|
|
835
|
-
Keys[Keys["KeyT"] = 84] = "KeyT";
|
|
836
|
-
Keys[Keys["KeyU"] = 85] = "KeyU";
|
|
837
|
-
Keys[Keys["KeyV"] = 86] = "KeyV";
|
|
838
|
-
Keys[Keys["KeyW"] = 87] = "KeyW";
|
|
839
|
-
Keys[Keys["KeyX"] = 88] = "KeyX";
|
|
840
|
-
Keys[Keys["KeyY"] = 89] = "KeyY";
|
|
841
|
-
Keys[Keys["KeyZ"] = 90] = "KeyZ";
|
|
842
|
-
Keys[Keys["NumpadDecimal"] = 110] = "NumpadDecimal";
|
|
843
|
-
Keys[Keys["PageDown"] = 34] = "PageDown";
|
|
844
|
-
Keys[Keys["PageUp"] = 33] = "PageUp";
|
|
845
|
-
Keys[Keys["Shift"] = 16] = "Shift";
|
|
846
|
-
Keys[Keys["Space"] = 32] = "Space";
|
|
847
|
-
Keys[Keys["Tab"] = 9] = "Tab";
|
|
848
|
-
})(Keys || (Keys = {}));
|
|
849
|
-
|
|
850
|
-
/**
|
|
851
|
-
* @hidden
|
|
852
|
-
*/
|
|
853
|
-
const focusableSelector = [
|
|
854
|
-
'a[href]:not([tabindex^="-"]):not([disabled])',
|
|
855
|
-
'area[href]:not([tabindex^="-"]):not([disabled])',
|
|
856
|
-
'input:not([tabindex^="-"]):not([disabled])',
|
|
857
|
-
'select:not([tabindex^="-"]):not([disabled])',
|
|
858
|
-
'textarea:not([tabindex^="-"]):not([disabled])',
|
|
859
|
-
'button:not([tabindex^="-"]):not([disabled])',
|
|
860
|
-
'iframe:not([tabindex^="-"]):not([disabled])',
|
|
861
|
-
'object:not([tabindex^="-"]):not([disabled])',
|
|
862
|
-
'embed:not([tabindex^="-"]):not([disabled])',
|
|
863
|
-
'*[tabindex]:not([tabindex^="-"]):not([disabled])',
|
|
864
|
-
'*[contenteditable]:not([tabindex^="-"]):not([disabled]):not([contenteditable="false"])'
|
|
865
|
-
].join(',');
|
|
866
|
-
|
|
867
|
-
/**
|
|
868
|
-
* @hidden
|
|
869
|
-
*/
|
|
870
|
-
const watermarkStyles = `
|
|
871
|
-
position: absolute;
|
|
872
|
-
width: 100%;
|
|
873
|
-
height: 100%;
|
|
874
|
-
top: 0;
|
|
875
|
-
left: 0;
|
|
876
|
-
right: 0;
|
|
877
|
-
bottom: 0;
|
|
878
|
-
opacity: 0.2;
|
|
879
|
-
zIndex: 101;
|
|
880
|
-
pointerEvents: none;
|
|
881
|
-
backgroundImage: url(\'data:image/png;base64,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\');
|
|
882
|
-
`;
|
|
883
|
-
/**
|
|
884
|
-
* @hidden
|
|
885
|
-
*/
|
|
886
|
-
const bannerStyles = {
|
|
887
|
-
display: 'flex',
|
|
888
|
-
justifyContent: 'center',
|
|
889
|
-
alignItems: 'center',
|
|
890
|
-
position: 'fixed',
|
|
891
|
-
top: '16px',
|
|
892
|
-
right: '16px',
|
|
893
|
-
padding: '12px',
|
|
894
|
-
borderRadius: '4px',
|
|
895
|
-
boxShadow: '0px 4px 5px 0px rgba(0, 0, 0, 0.04), 0px 2px 4px 0px rgba(0, 0, 0, 0.03)',
|
|
896
|
-
fontSize: '14px',
|
|
897
|
-
fontWeight: 400,
|
|
898
|
-
lineHeight: '20px',
|
|
899
|
-
backgroundColor: '#FFC000',
|
|
900
|
-
color: '#1E1E1E',
|
|
901
|
-
zIndex: 20000
|
|
902
|
-
};
|
|
903
|
-
/**
|
|
904
|
-
* @hidden
|
|
905
|
-
*/
|
|
906
|
-
const buttonStyles = {
|
|
907
|
-
display: 'inline-flex',
|
|
908
|
-
position: 'relative',
|
|
909
|
-
border: 'none',
|
|
910
|
-
borderRadius: '4px',
|
|
911
|
-
padding: '5px',
|
|
912
|
-
backgroundColor: 'transparent',
|
|
913
|
-
transition: 'color 0.2s ease-in-out',
|
|
914
|
-
outline: 'none',
|
|
915
|
-
cursor: 'pointer'
|
|
916
|
-
};
|
|
917
|
-
/**
|
|
918
|
-
* @hidden
|
|
919
|
-
*/
|
|
920
|
-
const licenseKeyUrl = 'https://www.telerik.com/kendo-angular-ui/components/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-banner';
|
|
921
|
-
|
|
922
|
-
let bannerPresentOnPage = false;
|
|
923
|
-
/**
|
|
924
|
-
* @hidden
|
|
925
|
-
*/
|
|
926
|
-
class WatermarkOverlayComponent {
|
|
927
|
-
constructor() {
|
|
928
|
-
this.watermarkStyle = watermarkStyles;
|
|
929
|
-
this.isOpen = true;
|
|
930
|
-
this.bannerMounted = false;
|
|
931
|
-
this.bannerStyles = bannerStyles;
|
|
932
|
-
this.buttonStyles = buttonStyles;
|
|
933
|
-
this.licenseKeyUrl = licenseKeyUrl;
|
|
934
|
-
}
|
|
935
|
-
ngOnInit() {
|
|
936
|
-
if (!bannerPresentOnPage) {
|
|
937
|
-
this.bannerMounted = true;
|
|
938
|
-
bannerPresentOnPage = true;
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
ngAfterViewInit() {
|
|
942
|
-
if (this.isBannerRendered) {
|
|
943
|
-
document.body.appendChild(this.banner.nativeElement);
|
|
944
|
-
}
|
|
945
|
-
}
|
|
946
|
-
ngOnDestroy() {
|
|
947
|
-
if (this.isBannerRendered) {
|
|
948
|
-
document.body.removeChild(this.banner.nativeElement);
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
closeBanner() {
|
|
952
|
-
this.isOpen = false;
|
|
953
|
-
}
|
|
954
|
-
get isBannerRendered() {
|
|
955
|
-
return isDocumentAvailable() && this.banner && this.banner.nativeElement;
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
WatermarkOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WatermarkOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
959
|
-
WatermarkOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WatermarkOverlayComponent, isStandalone: true, selector: "div[kendoWatermarkOverlay]", host: { properties: { "style": "this.watermarkStyle" } }, viewQueries: [{ propertyName: "banner", first: true, predicate: ["banner"], descendants: true }], ngImport: i0, template: `
|
|
960
|
-
<div #banner *ngIf="isOpen && bannerMounted" [ngStyle]="bannerStyles">
|
|
961
|
-
<span [ngStyle]="{ display: 'flex', alignSelf: 'center', marginRight: '8px' }">
|
|
962
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
963
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 1L0 15H16L8 1ZM7 6V11H9V6H7ZM7 14V12H9V14H7Z" fill="#1E1E1E"/>
|
|
964
|
-
</svg>
|
|
965
|
-
</span>
|
|
966
|
-
|
|
967
|
-
<span>No valid license found for Kendo UI for Angular. Learn how to activate your license.</span>
|
|
968
|
-
|
|
969
|
-
<div [ngStyle]="{ display: 'flex', alignItems: 'center', marginLeft: '24px' }">
|
|
970
|
-
<a [href]="licenseKeyUrl" [ngStyle]="{marginRight: '8px', display: 'flex'}">
|
|
971
|
-
<button title='Learn More' [ngStyle]="buttonStyles">
|
|
972
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
973
|
-
<path d="M15 8C15 11.8656 11.8656 15 8 15C4.13437 15 1 11.8656 1 8C1 4.13437 4.13437 1 8 1C11.8656 1 15 4.13437 15 8ZM14 8C14 4.6875 11.3125 2 8 2C4.6875 2 2 4.6875 2 8C2 11.3125 4.6875 14 8 14C11.3125 14 14 11.3125 14 8ZM11 6C11 7.4125 10.2687 8.05937 9.73125 8.53125C9.25937 8.94688 9 9.17813 9 10H7C7 8.275 7.84688 7.525 8.40938 7.03125C8.84062 6.65312 9 6.50938 9 6C9 5.45 8.55 5 8 5C7.45 5 7 5.45 7 6H5C5 4.34375 6.34375 3 8 3C9.65625 3 11 4.34375 11 6ZM9 13V11H7V13H9Z" fill="#1E1E1E"/>
|
|
974
|
-
</svg>
|
|
975
|
-
</button>
|
|
976
|
-
</a>
|
|
977
|
-
|
|
978
|
-
<button title='Close' [ngStyle]="buttonStyles" (click)="closeBanner()">
|
|
979
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
980
|
-
<path d="M13 4.41562L9.41563 8L13 11.5844L11.5844 13L8 9.41563L4.41562 13L3 11.5844L6.58437 8L3 4.41562L4.41562 3L8 6.58437L11.5844 3L13 4.41562Z" fill="#1E1E1E"/>
|
|
981
|
-
</svg>
|
|
982
|
-
</button>
|
|
983
|
-
</div>
|
|
984
|
-
</div>
|
|
985
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
986
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WatermarkOverlayComponent, decorators: [{
|
|
987
|
-
type: Component,
|
|
988
|
-
args: [{
|
|
989
|
-
selector: 'div[kendoWatermarkOverlay]',
|
|
990
|
-
template: `
|
|
991
|
-
<div #banner *ngIf="isOpen && bannerMounted" [ngStyle]="bannerStyles">
|
|
992
|
-
<span [ngStyle]="{ display: 'flex', alignSelf: 'center', marginRight: '8px' }">
|
|
993
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
994
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 1L0 15H16L8 1ZM7 6V11H9V6H7ZM7 14V12H9V14H7Z" fill="#1E1E1E"/>
|
|
995
|
-
</svg>
|
|
996
|
-
</span>
|
|
997
|
-
|
|
998
|
-
<span>No valid license found for Kendo UI for Angular. Learn how to activate your license.</span>
|
|
999
|
-
|
|
1000
|
-
<div [ngStyle]="{ display: 'flex', alignItems: 'center', marginLeft: '24px' }">
|
|
1001
|
-
<a [href]="licenseKeyUrl" [ngStyle]="{marginRight: '8px', display: 'flex'}">
|
|
1002
|
-
<button title='Learn More' [ngStyle]="buttonStyles">
|
|
1003
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
1004
|
-
<path d="M15 8C15 11.8656 11.8656 15 8 15C4.13437 15 1 11.8656 1 8C1 4.13437 4.13437 1 8 1C11.8656 1 15 4.13437 15 8ZM14 8C14 4.6875 11.3125 2 8 2C4.6875 2 2 4.6875 2 8C2 11.3125 4.6875 14 8 14C11.3125 14 14 11.3125 14 8ZM11 6C11 7.4125 10.2687 8.05937 9.73125 8.53125C9.25937 8.94688 9 9.17813 9 10H7C7 8.275 7.84688 7.525 8.40938 7.03125C8.84062 6.65312 9 6.50938 9 6C9 5.45 8.55 5 8 5C7.45 5 7 5.45 7 6H5C5 4.34375 6.34375 3 8 3C9.65625 3 11 4.34375 11 6ZM9 13V11H7V13H9Z" fill="#1E1E1E"/>
|
|
1005
|
-
</svg>
|
|
1006
|
-
</button>
|
|
1007
|
-
</a>
|
|
1008
|
-
|
|
1009
|
-
<button title='Close' [ngStyle]="buttonStyles" (click)="closeBanner()">
|
|
1010
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
|
|
1011
|
-
<path d="M13 4.41562L9.41563 8L13 11.5844L11.5844 13L8 9.41563L4.41562 13L3 11.5844L6.58437 8L3 4.41562L4.41562 3L8 6.58437L11.5844 3L13 4.41562Z" fill="#1E1E1E"/>
|
|
1012
|
-
</svg>
|
|
1013
|
-
</button>
|
|
1014
|
-
</div>
|
|
1015
|
-
</div>
|
|
1016
|
-
`,
|
|
1017
|
-
standalone: true,
|
|
1018
|
-
imports: [NgIf, NgStyle]
|
|
1019
|
-
}]
|
|
1020
|
-
}], propDecorators: { watermarkStyle: [{
|
|
1021
|
-
type: HostBinding,
|
|
1022
|
-
args: ['style']
|
|
1023
|
-
}], banner: [{
|
|
1024
|
-
type: ViewChild,
|
|
1025
|
-
args: ['banner']
|
|
1026
|
-
}] } });
|
|
1027
|
-
|
|
1028
|
-
/**
|
|
1029
|
-
* @hidden
|
|
1030
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
1031
|
-
*/
|
|
1032
|
-
class WatermarkModule {
|
|
1033
|
-
}
|
|
1034
|
-
WatermarkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WatermarkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1035
|
-
WatermarkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: WatermarkModule, imports: [WatermarkOverlayComponent], exports: [WatermarkOverlayComponent] });
|
|
1036
|
-
WatermarkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WatermarkModule, imports: [WatermarkOverlayComponent] });
|
|
1037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WatermarkModule, decorators: [{
|
|
1038
|
-
type: NgModule,
|
|
1039
|
-
args: [{
|
|
1040
|
-
exports: [WatermarkOverlayComponent],
|
|
1041
|
-
imports: [WatermarkOverlayComponent]
|
|
1042
|
-
}]
|
|
1043
|
-
}] });
|
|
1044
|
-
|
|
1045
|
-
const allowed = ['telerik.com', 'progress.com', 'stackblitz.io', 'csb.app'];
|
|
1046
|
-
/**
|
|
1047
|
-
* @hidden
|
|
1048
|
-
*/
|
|
1049
|
-
function shouldShowValidationUI(isPackageValid) {
|
|
1050
|
-
const skip = allowed.some((hostname) => { var _a; return (_a = globalThis.document) === null || _a === void 0 ? void 0 : _a.location.hostname.endsWith(hostname); });
|
|
1051
|
-
return !skip && !isPackageValid;
|
|
1052
|
-
}
|
|
1053
|
-
|
|
1054
|
-
/**
|
|
1055
|
-
* Specifies the adornments in the prefix container of the [Inputs](slug:adornments_textbox#toc-prefix-adornments) and [DropDowns](slug:adornments_multiselect#toc-prefix-adornments).
|
|
1056
|
-
* ```ts-no-run
|
|
1057
|
-
* _@Component({
|
|
1058
|
-
* selector: 'my-app',
|
|
1059
|
-
* template: `
|
|
1060
|
-
* <kendo-textbox>
|
|
1061
|
-
* <ng-template kendoPrefixTemplate>
|
|
1062
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1063
|
-
* </ng-template>
|
|
1064
|
-
* </kendo-textbox>
|
|
1065
|
-
*
|
|
1066
|
-
* <kendo-multiselect [data]="data" [(ngModel)]="value">
|
|
1067
|
-
* <ng-template kendoPrefixTemplate>
|
|
1068
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1069
|
-
* </ng-template>
|
|
1070
|
-
* </kendo-multiselect>
|
|
1071
|
-
* `
|
|
1072
|
-
* })
|
|
1073
|
-
* class AppComponent {}
|
|
1074
|
-
* ```
|
|
1075
|
-
*/
|
|
1076
|
-
class PrefixTemplateDirective {
|
|
1077
|
-
constructor(templateRef) {
|
|
1078
|
-
this.templateRef = templateRef;
|
|
1079
|
-
this._showSeparator = false;
|
|
1080
|
-
}
|
|
1081
|
-
/**
|
|
1082
|
-
* Sets the `showSeparator` attribute of the `prefixTemplate`.
|
|
1083
|
-
*
|
|
1084
|
-
* @default false
|
|
1085
|
-
*/
|
|
1086
|
-
set showSeparator(value) {
|
|
1087
|
-
this._showSeparator = value;
|
|
1088
|
-
}
|
|
1089
|
-
get showSeparator() {
|
|
1090
|
-
return this._showSeparator;
|
|
1091
|
-
}
|
|
1092
|
-
}
|
|
1093
|
-
PrefixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PrefixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1094
|
-
PrefixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: PrefixTemplateDirective, isStandalone: true, selector: "[kendoPrefixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
|
|
1095
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PrefixTemplateDirective, decorators: [{
|
|
1096
|
-
type: Directive,
|
|
1097
|
-
args: [{
|
|
1098
|
-
selector: '[kendoPrefixTemplate]',
|
|
1099
|
-
standalone: true
|
|
1100
|
-
}]
|
|
1101
|
-
}], ctorParameters: function () {
|
|
1102
|
-
return [{ type: i0.TemplateRef, decorators: [{
|
|
1103
|
-
type: Optional
|
|
1104
|
-
}] }];
|
|
1105
|
-
}, propDecorators: { showSeparator: [{
|
|
1106
|
-
type: Input
|
|
1107
|
-
}] } });
|
|
1108
|
-
|
|
1109
|
-
/**
|
|
1110
|
-
* Specifies the adornments in the suffix container of the [Inputs](slug:adornments_textbox#toc-suffix-adornments) and [DropDowns](slug:adornments_multiselect#toc-suffix-adornments).
|
|
1111
|
-
* ```ts-no-run
|
|
1112
|
-
* _@Component({
|
|
1113
|
-
* selector: 'my-app',
|
|
1114
|
-
* template: `
|
|
1115
|
-
* <kendo-textbox>
|
|
1116
|
-
* <ng-template kendoSuffixTemplate>
|
|
1117
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1118
|
-
* </ng-template>
|
|
1119
|
-
* </kendo-textbox>
|
|
1120
|
-
* `
|
|
1121
|
-
* <kendo-multiselect [data]="data" [(ngModel)]="value">
|
|
1122
|
-
* <ng-template kendoSuffixTemplate>
|
|
1123
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1124
|
-
* </ng-template>
|
|
1125
|
-
* </kendo-multiselect>
|
|
1126
|
-
* })
|
|
1127
|
-
* class AppComponent {}
|
|
1128
|
-
* ```
|
|
1129
|
-
*/
|
|
1130
|
-
class SuffixTemplateDirective {
|
|
1131
|
-
constructor(templateRef) {
|
|
1132
|
-
this.templateRef = templateRef;
|
|
1133
|
-
this._showSeparator = false;
|
|
1134
|
-
}
|
|
1135
|
-
/**
|
|
1136
|
-
* Sets the `showSeparator` attribute of the `suffixTemplate`.
|
|
1137
|
-
*
|
|
1138
|
-
* @default false
|
|
1139
|
-
*/
|
|
1140
|
-
set showSeparator(value) {
|
|
1141
|
-
this._showSeparator = value;
|
|
1142
|
-
}
|
|
1143
|
-
get showSeparator() {
|
|
1144
|
-
return this._showSeparator;
|
|
1145
|
-
}
|
|
1146
|
-
}
|
|
1147
|
-
SuffixTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuffixTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1148
|
-
SuffixTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: SuffixTemplateDirective, isStandalone: true, selector: "[kendoSuffixTemplate]", inputs: { showSeparator: "showSeparator" }, ngImport: i0 });
|
|
1149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SuffixTemplateDirective, decorators: [{
|
|
1150
|
-
type: Directive,
|
|
1151
|
-
args: [{
|
|
1152
|
-
selector: '[kendoSuffixTemplate]',
|
|
1153
|
-
standalone: true
|
|
1154
|
-
}]
|
|
1155
|
-
}], ctorParameters: function () {
|
|
1156
|
-
return [{ type: i0.TemplateRef, decorators: [{
|
|
1157
|
-
type: Optional
|
|
1158
|
-
}] }];
|
|
1159
|
-
}, propDecorators: { showSeparator: [{
|
|
1160
|
-
type: Input
|
|
1161
|
-
}] } });
|
|
1162
|
-
|
|
1163
|
-
/**
|
|
1164
|
-
* Specifies a separator in the content of the [Inputs]({% slug adornments_textbox %}#toc-separator) and [DropDowns]({% slug adornments_multiselect %}#toc-separator).
|
|
1165
|
-
* @example
|
|
1166
|
-
* ```ts-no-run
|
|
1167
|
-
* _@Component({
|
|
1168
|
-
* selector: 'my-app',
|
|
1169
|
-
* template: `
|
|
1170
|
-
* <kendo-textbox>
|
|
1171
|
-
* <ng-template kendoSuffixTemplate>
|
|
1172
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1173
|
-
* <kendo-separator></kendo-separator>
|
|
1174
|
-
* <button kendoButton look="clear" icon="image"></button>
|
|
1175
|
-
* </ng-template>
|
|
1176
|
-
* </kendo-textbox>
|
|
1177
|
-
* `
|
|
1178
|
-
* })
|
|
1179
|
-
* class AppComponent {}
|
|
1180
|
-
* ```
|
|
1181
|
-
*/
|
|
1182
|
-
class SeparatorComponent {
|
|
1183
|
-
constructor() {
|
|
1184
|
-
/**
|
|
1185
|
-
* Specifies the orientation of the separator. Applicable for the adornments of the [`TextAreaComponent`](slug:api_inputs_textareacomponent).
|
|
1186
|
-
*
|
|
1187
|
-
* @default 'vertical'
|
|
1188
|
-
*/
|
|
1189
|
-
this.orientation = 'vertical';
|
|
1190
|
-
/**
|
|
1191
|
-
* @hidden
|
|
1192
|
-
*/
|
|
1193
|
-
this.hostClass = true;
|
|
1194
|
-
}
|
|
1195
|
-
/**
|
|
1196
|
-
* @hidden
|
|
1197
|
-
*/
|
|
1198
|
-
get vertical() {
|
|
1199
|
-
return this.orientation === 'vertical';
|
|
1200
|
-
}
|
|
1201
|
-
/**
|
|
1202
|
-
* @hidden
|
|
1203
|
-
*/
|
|
1204
|
-
get horizontal() {
|
|
1205
|
-
return this.orientation === 'horizontal';
|
|
1206
|
-
}
|
|
1207
|
-
}
|
|
1208
|
-
SeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1209
|
-
SeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SeparatorComponent, isStandalone: true, selector: "kendo-separator", inputs: { orientation: "orientation" }, host: { properties: { "class.k-input-separator-vertical": "this.vertical", "class.k-input-separator-horizontal": "this.horizontal", "class.k-input-separator": "this.hostClass" } }, ngImport: i0, template: ``, isInline: true });
|
|
1210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SeparatorComponent, decorators: [{
|
|
1211
|
-
type: Component,
|
|
1212
|
-
args: [{
|
|
1213
|
-
selector: 'kendo-separator',
|
|
1214
|
-
template: ``,
|
|
1215
|
-
standalone: true
|
|
1216
|
-
}]
|
|
1217
|
-
}], propDecorators: { orientation: [{
|
|
1218
|
-
type: Input
|
|
1219
|
-
}], vertical: [{
|
|
1220
|
-
type: HostBinding,
|
|
1221
|
-
args: ['class.k-input-separator-vertical']
|
|
1222
|
-
}], horizontal: [{
|
|
1223
|
-
type: HostBinding,
|
|
1224
|
-
args: ['class.k-input-separator-horizontal']
|
|
1225
|
-
}], hostClass: [{
|
|
1226
|
-
type: HostBinding,
|
|
1227
|
-
args: ['class.k-input-separator']
|
|
1228
|
-
}] } });
|
|
1229
|
-
|
|
1230
|
-
/**
|
|
1231
|
-
* @hidden
|
|
1232
|
-
*/
|
|
1233
|
-
class TemplateContextDirective {
|
|
1234
|
-
constructor(viewContainerRef) {
|
|
1235
|
-
this.viewContainerRef = viewContainerRef;
|
|
1236
|
-
}
|
|
1237
|
-
set templateContext(context) {
|
|
1238
|
-
if (this.insertedViewRef) {
|
|
1239
|
-
this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.insertedViewRef));
|
|
1240
|
-
this.insertedViewRef = undefined;
|
|
1241
|
-
}
|
|
1242
|
-
if (context.templateRef) {
|
|
1243
|
-
this.insertedViewRef = this.viewContainerRef.createEmbeddedView(context.templateRef, context);
|
|
1244
|
-
}
|
|
1245
|
-
}
|
|
1246
|
-
}
|
|
1247
|
-
TemplateContextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TemplateContextDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1248
|
-
TemplateContextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TemplateContextDirective, isStandalone: true, selector: "[templateContext]", inputs: { templateContext: "templateContext" }, ngImport: i0 });
|
|
1249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TemplateContextDirective, decorators: [{
|
|
1250
|
-
type: Directive,
|
|
1251
|
-
args: [{
|
|
1252
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
1253
|
-
selector: '[templateContext]',
|
|
1254
|
-
standalone: true
|
|
1255
|
-
}]
|
|
1256
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateContext: [{
|
|
1257
|
-
type: Input
|
|
1258
|
-
}] } });
|
|
1259
|
-
|
|
1260
|
-
/**
|
|
1261
|
-
* @hidden
|
|
1262
|
-
*/
|
|
1263
|
-
class MultiTabStop {
|
|
1264
|
-
}
|
|
1265
|
-
|
|
1266
|
-
const tags = ['kendo-splitbutton', 'kendo-combobox', 'kendo-multicolumncombobox', 'kendo-datepicker', 'kendo-timepicker', 'kendo-datetimepicker'];
|
|
1267
|
-
/**
|
|
1268
|
-
* Includes the button that toggles the Popup in the tab sequence when applied
|
|
1269
|
-
* to a SplitButton, ComboBox, MultiComboBox, DatePicker, TimePicker, and DateTimePicker component.
|
|
1270
|
-
* ```ts-no-run
|
|
1271
|
-
* _@Component({
|
|
1272
|
-
* selector: 'my-app',
|
|
1273
|
-
* template: `
|
|
1274
|
-
* <kendo-combobox [data]="data"
|
|
1275
|
-
* kendoToggleButtonTabStop>
|
|
1276
|
-
* </kendo-combobox>
|
|
1277
|
-
*
|
|
1278
|
-
* <kendo-datepicker [(ngModel)]="value"
|
|
1279
|
-
* kendoToggleButtonTabStop>
|
|
1280
|
-
* </kendo-datepicker>
|
|
1281
|
-
* `
|
|
1282
|
-
* })
|
|
1283
|
-
* class AppComponent {}
|
|
1284
|
-
* ```
|
|
1285
|
-
*/
|
|
1286
|
-
class ToggleButtonTabStopDirective {
|
|
1287
|
-
/**
|
|
1288
|
-
* @hidden
|
|
1289
|
-
*/
|
|
1290
|
-
constructor(hostEl, renderer, zone, hostComponent) {
|
|
1291
|
-
this.hostEl = hostEl;
|
|
1292
|
-
this.renderer = renderer;
|
|
1293
|
-
this.zone = zone;
|
|
1294
|
-
this.hostComponent = hostComponent;
|
|
1295
|
-
/**
|
|
1296
|
-
* Defines the value of the `aria-label` attribute of the toggle button when active.
|
|
1297
|
-
*
|
|
1298
|
-
* @default "toggle popup"
|
|
1299
|
-
*/
|
|
1300
|
-
this.toggleButtonAriaLabel = 'toggle popup';
|
|
1301
|
-
this.sub = new Subscription();
|
|
1302
|
-
this.onFocus = () => {
|
|
1303
|
-
this.renderer.setStyle(this.button, 'box-shadow', 'inset 0 0 0 1px rgba(0, 0, 0, 0.08)');
|
|
1304
|
-
};
|
|
1305
|
-
this.onBlur = () => {
|
|
1306
|
-
this.renderer.removeStyle(this.button, 'box-shadow');
|
|
1307
|
-
};
|
|
1308
|
-
this.onClick = (e) => {
|
|
1309
|
-
const splitButtonToggleEnter = e instanceof KeyboardEvent && e.keyCode === Keys.Enter;
|
|
1310
|
-
const isClick = e instanceof PointerEvent;
|
|
1311
|
-
(splitButtonToggleEnter || isClick) && (this.focusButton = true);
|
|
1312
|
-
};
|
|
1313
|
-
this.onKeyDown = (e) => {
|
|
1314
|
-
if (e.keyCode === Keys.ArrowDown && e.altKey) {
|
|
1315
|
-
e.stopImmediatePropagation();
|
|
1316
|
-
this.focusButton = true;
|
|
1317
|
-
this.button.click();
|
|
1318
|
-
}
|
|
1319
|
-
};
|
|
1320
|
-
if (isDevMode() && tags.indexOf(hostEl.nativeElement.tagName.toLowerCase()) === -1) {
|
|
1321
|
-
console.warn(`The kendoToggleButtonTabStop directive can be applied to the following components only: ${tags}`);
|
|
1322
|
-
}
|
|
1323
|
-
}
|
|
1324
|
-
ngOnInit() {
|
|
1325
|
-
this.active = true;
|
|
1326
|
-
}
|
|
1327
|
-
ngAfterViewInit() {
|
|
1328
|
-
var _a, _b;
|
|
1329
|
-
if (!isDocumentAvailable()) {
|
|
1330
|
-
return;
|
|
1331
|
-
}
|
|
1332
|
-
this.isSplitButton = this.hostEl.nativeElement.classList.contains('k-split-button');
|
|
1333
|
-
if (this.active) {
|
|
1334
|
-
this.activateButton();
|
|
1335
|
-
}
|
|
1336
|
-
if (((_a = this.hostComponent) === null || _a === void 0 ? void 0 : _a.escape) instanceof EventEmitter) {
|
|
1337
|
-
this.sub = (_b = this.hostComponent) === null || _b === void 0 ? void 0 : _b.escape.subscribe(() => {
|
|
1338
|
-
this.returnFocusToToggleButton();
|
|
1339
|
-
});
|
|
1340
|
-
// Returns the focus to the toggle button when component is opened through it, and the Popup is closed
|
|
1341
|
-
// while the active element is within the component or popup.
|
|
1342
|
-
this.sub.add(this.hostComponent.close.subscribe((e) => {
|
|
1343
|
-
if (!e.isDefaultPrevented() && this.focusButton) {
|
|
1344
|
-
this.zone.onStable.pipe(take(1)).subscribe(() => {
|
|
1345
|
-
this.zone.runOutsideAngular(() => {
|
|
1346
|
-
setTimeout(() => this.focusButton = false);
|
|
1347
|
-
});
|
|
1348
|
-
});
|
|
1349
|
-
const mainFocusableElement = this.hostEl.nativeElement.querySelector('.k-split-button > .k-button:first-child, .k-input-inner');
|
|
1350
|
-
const optionsListContainer = document.getElementById(`${mainFocusableElement.getAttribute('aria-controls')}`);
|
|
1351
|
-
const inList = !!optionsListContainer && optionsListContainer.contains(document.activeElement);
|
|
1352
|
-
const inWrapper = this.hostEl.nativeElement.contains(document.activeElement);
|
|
1353
|
-
const focusInComponent = inList || inWrapper;
|
|
1354
|
-
if (focusInComponent) {
|
|
1355
|
-
this.returnFocusToToggleButton();
|
|
1356
|
-
}
|
|
1357
|
-
}
|
|
1358
|
-
}));
|
|
1359
|
-
}
|
|
1360
|
-
const close = this.hostComponent.close;
|
|
1361
|
-
}
|
|
1362
|
-
ngOnChanges(changes) {
|
|
1363
|
-
if (!isDocumentAvailable()) {
|
|
1364
|
-
return;
|
|
1365
|
-
}
|
|
1366
|
-
if (changes['active']) {
|
|
1367
|
-
changes['active'].currentValue ? this.activateButton() : this.deactivateButton();
|
|
1368
|
-
}
|
|
1369
|
-
if (changes['toggleButtonAriaLabel']) {
|
|
1370
|
-
this.button && this.renderer.setAttribute(this.button, 'aria-label', changes['toggleButtonAriaLabel'].currentValue);
|
|
1371
|
-
}
|
|
1372
|
-
}
|
|
1373
|
-
ngOnDestroy() {
|
|
1374
|
-
this.removeListeners();
|
|
1375
|
-
this.sub.unsubscribe();
|
|
1376
|
-
}
|
|
1377
|
-
activateButton() {
|
|
1378
|
-
var _a;
|
|
1379
|
-
const el = this.hostEl.nativeElement;
|
|
1380
|
-
const tabindex = (_a = el.querySelector('button:not([tabindex^="-"]), input:not([tabindex^="-"]')) === null || _a === void 0 ? void 0 : _a.getAttribute('tabindex');
|
|
1381
|
-
this.button = el.querySelector('.k-input-button, .k-split-button-arrow');
|
|
1382
|
-
this.button && this.renderer.setAttribute(this.button, 'tabindex', tabindex);
|
|
1383
|
-
this.button && this.renderer.setAttribute(this.button, 'aria-label', this.toggleButtonAriaLabel);
|
|
1384
|
-
this.button && this.renderer.removeAttribute(this.button, 'aria-hidden');
|
|
1385
|
-
if (!this.observer) {
|
|
1386
|
-
this.initializeObserver(el);
|
|
1387
|
-
}
|
|
1388
|
-
this.removeListeners();
|
|
1389
|
-
this.addListeners();
|
|
1390
|
-
}
|
|
1391
|
-
deactivateButton() {
|
|
1392
|
-
this.button && this.renderer.setAttribute(this.button, 'tabindex', '-1');
|
|
1393
|
-
this.button && this.renderer.setAttribute(this.button, 'aria-hidden', 'true');
|
|
1394
|
-
this.button && this.renderer.removeAttribute(this.button, 'aria-label');
|
|
1395
|
-
this.removeListeners();
|
|
1396
|
-
this.observer && this.observer.disconnect();
|
|
1397
|
-
this.observer = null;
|
|
1398
|
-
}
|
|
1399
|
-
addListeners() {
|
|
1400
|
-
if (this.button) {
|
|
1401
|
-
this.zone.runOutsideAngular(() => this.button.addEventListener('focus', this.onFocus));
|
|
1402
|
-
this.zone.runOutsideAngular(() => this.button.addEventListener('blur', this.onBlur));
|
|
1403
|
-
this.zone.runOutsideAngular(() => this.button.addEventListener('click', this.onClick));
|
|
1404
|
-
this.isSplitButton && this.zone.runOutsideAngular(() => this.button.addEventListener('keyup', this.onClick));
|
|
1405
|
-
this.zone.runOutsideAngular(() => this.button.addEventListener('keydown', this.onKeyDown, true));
|
|
1406
|
-
}
|
|
1407
|
-
}
|
|
1408
|
-
removeListeners() {
|
|
1409
|
-
if (this.button) {
|
|
1410
|
-
this.zone.runOutsideAngular(() => this.button.removeEventListener('focus', this.onFocus));
|
|
1411
|
-
this.zone.runOutsideAngular(() => this.button.removeEventListener('blur', this.onBlur));
|
|
1412
|
-
this.zone.runOutsideAngular(() => this.button.removeEventListener('click', this.onClick));
|
|
1413
|
-
this.isSplitButton && this.zone.runOutsideAngular(() => this.button.removeEventListener('keyup', this.onClick));
|
|
1414
|
-
this.zone.runOutsideAngular(() => this.button.removeEventListener('keydown', this.onKeyDown));
|
|
1415
|
-
}
|
|
1416
|
-
}
|
|
1417
|
-
focusToggleButton() {
|
|
1418
|
-
this.focusButton && this.zone.runOutsideAngular(() => this.button.focus());
|
|
1419
|
-
this.focusButton = false;
|
|
1420
|
-
}
|
|
1421
|
-
returnFocusToToggleButton() {
|
|
1422
|
-
if (this.isSplitButton) {
|
|
1423
|
-
this.zone.onStable.pipe(take(1)).subscribe(() => {
|
|
1424
|
-
this.focusToggleButton();
|
|
1425
|
-
});
|
|
1426
|
-
}
|
|
1427
|
-
else {
|
|
1428
|
-
this.focusToggleButton();
|
|
1429
|
-
}
|
|
1430
|
-
}
|
|
1431
|
-
// Keeps the `aria-controls` and `aria-expanded` attributes of the main focusable element of the component
|
|
1432
|
-
// and the toggle button element in sync.
|
|
1433
|
-
initializeObserver(element) {
|
|
1434
|
-
const mainFocusableElement = element.querySelector('.k-split-button > .k-button:first-child, .k-input-inner');
|
|
1435
|
-
const initialExpanded = mainFocusableElement.getAttribute('aria-expanded');
|
|
1436
|
-
const initialControls = mainFocusableElement.getAttribute('aria-controls');
|
|
1437
|
-
this.button && this.renderer.setAttribute(this.button, 'aria-expanded', initialExpanded);
|
|
1438
|
-
this.button && initialControls && this.renderer.setAttribute(this.button, 'aria-controls', initialControls);
|
|
1439
|
-
this.zone.runOutsideAngular(() => {
|
|
1440
|
-
const mutationConfig = { attributes: true };
|
|
1441
|
-
const callback = (mutationList) => {
|
|
1442
|
-
for (const mutation of mutationList) {
|
|
1443
|
-
if (mutation.attributeName === 'aria-expanded') {
|
|
1444
|
-
this.renderer.setAttribute(this.button, 'aria-expanded', mainFocusableElement.getAttribute('aria-expanded'));
|
|
1445
|
-
}
|
|
1446
|
-
else if (mutation.attributeName === 'aria-controls') {
|
|
1447
|
-
const controlsRef = mainFocusableElement.getAttribute('aria-controls');
|
|
1448
|
-
!this.isSplitButton && controlsRef ? this.renderer.setAttribute(this.button, 'aria-controls', controlsRef) : this.renderer.removeAttribute(this.button, 'aria-controls');
|
|
1449
|
-
}
|
|
1450
|
-
}
|
|
1451
|
-
};
|
|
1452
|
-
this.observer = new MutationObserver(callback);
|
|
1453
|
-
this.observer.observe(mainFocusableElement, mutationConfig);
|
|
1454
|
-
});
|
|
1455
|
-
}
|
|
1456
|
-
}
|
|
1457
|
-
ToggleButtonTabStopDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: MultiTabStop }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1458
|
-
ToggleButtonTabStopDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ToggleButtonTabStopDirective, isStandalone: true, selector: "[kendoToggleButtonTabStop]", inputs: { active: ["kendoToggleButtonTabStop", "active"], toggleButtonAriaLabel: "toggleButtonAriaLabel" }, usesOnChanges: true, ngImport: i0 });
|
|
1459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopDirective, decorators: [{
|
|
1460
|
-
type: Directive,
|
|
1461
|
-
args: [{
|
|
1462
|
-
selector: '[kendoToggleButtonTabStop]',
|
|
1463
|
-
standalone: true
|
|
1464
|
-
}]
|
|
1465
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: MultiTabStop }]; }, propDecorators: { active: [{
|
|
1466
|
-
type: Input,
|
|
1467
|
-
args: ['kendoToggleButtonTabStop']
|
|
1468
|
-
}], toggleButtonAriaLabel: [{
|
|
1469
|
-
type: Input
|
|
1470
|
-
}] } });
|
|
1471
|
-
|
|
1472
|
-
/**
|
|
1473
|
-
* @hidden
|
|
1474
|
-
*/
|
|
1475
|
-
const KENDO_ADORNMENTS = [
|
|
1476
|
-
PrefixTemplateDirective,
|
|
1477
|
-
SuffixTemplateDirective,
|
|
1478
|
-
SeparatorComponent
|
|
1479
|
-
];
|
|
1480
|
-
/**
|
|
1481
|
-
* @hidden
|
|
1482
|
-
*/
|
|
1483
|
-
const KENDO_COMMON = [
|
|
1484
|
-
...KENDO_ADORNMENTS,
|
|
1485
|
-
DraggableDirective,
|
|
1486
|
-
EventsOutsideAngularDirective,
|
|
1487
|
-
ResizeSensorComponent,
|
|
1488
|
-
ToggleButtonTabStopDirective,
|
|
1489
|
-
WatermarkOverlayComponent,
|
|
1490
|
-
];
|
|
1491
|
-
/**
|
|
1492
|
-
* @hidden
|
|
1493
|
-
*/
|
|
1494
|
-
const KENDO_DRAGGABLE = [
|
|
1495
|
-
DraggableDirective
|
|
1496
|
-
];
|
|
1497
|
-
/**
|
|
1498
|
-
* @hidden
|
|
1499
|
-
*/
|
|
1500
|
-
const KENDO_EVENTS = [
|
|
1501
|
-
EventsOutsideAngularDirective
|
|
1502
|
-
];
|
|
1503
|
-
/**
|
|
1504
|
-
* @hidden
|
|
1505
|
-
*/
|
|
1506
|
-
const KENDO_RESIZESENSOR = [
|
|
1507
|
-
ResizeSensorComponent
|
|
1508
|
-
];
|
|
1509
|
-
/**
|
|
1510
|
-
* @hidden
|
|
1511
|
-
*/
|
|
1512
|
-
const KENDO_TOGGLEBUTTONTABSTOP = [
|
|
1513
|
-
ToggleButtonTabStopDirective
|
|
1514
|
-
];
|
|
1515
|
-
/**
|
|
1516
|
-
* @hidden
|
|
1517
|
-
*/
|
|
1518
|
-
const KENDO_WATERMARK = [
|
|
1519
|
-
WatermarkOverlayComponent
|
|
1520
|
-
];
|
|
1521
|
-
/**
|
|
1522
|
-
* @hidden
|
|
1523
|
-
*/
|
|
1524
|
-
const KENDO_TEMPLATE_CONTEXT = [
|
|
1525
|
-
TemplateContextDirective
|
|
1526
|
-
];
|
|
1527
|
-
|
|
1528
|
-
/**
|
|
1529
|
-
* @hidden
|
|
1530
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
1531
|
-
*/
|
|
1532
|
-
class AdornmentsModule {
|
|
1533
|
-
}
|
|
1534
|
-
AdornmentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdornmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1535
|
-
AdornmentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AdornmentsModule, imports: [PrefixTemplateDirective, SuffixTemplateDirective, SeparatorComponent], exports: [PrefixTemplateDirective, SuffixTemplateDirective, SeparatorComponent] });
|
|
1536
|
-
AdornmentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdornmentsModule, imports: [SeparatorComponent] });
|
|
1537
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdornmentsModule, decorators: [{
|
|
1538
|
-
type: NgModule,
|
|
1539
|
-
args: [{
|
|
1540
|
-
imports: [...KENDO_ADORNMENTS],
|
|
1541
|
-
exports: [...KENDO_ADORNMENTS]
|
|
1542
|
-
}]
|
|
1543
|
-
}] });
|
|
1544
|
-
|
|
1545
|
-
class PreventableEvent {
|
|
1546
|
-
constructor() {
|
|
1547
|
-
this.prevented = false;
|
|
1548
|
-
}
|
|
1549
|
-
/**
|
|
1550
|
-
* Prevents the default action for a specified event.
|
|
1551
|
-
* In this way, the source component suppresses
|
|
1552
|
-
* the built-in behavior that follows the event.
|
|
1553
|
-
*/
|
|
1554
|
-
preventDefault() {
|
|
1555
|
-
this.prevented = true;
|
|
1556
|
-
}
|
|
1557
|
-
/**
|
|
1558
|
-
* Returns `true` if the event was prevented
|
|
1559
|
-
* by any of its subscribers.
|
|
1560
|
-
*
|
|
1561
|
-
* @returns `true` if the default action was prevented.
|
|
1562
|
-
* Otherwise, returns `false`.
|
|
1563
|
-
*/
|
|
1564
|
-
isDefaultPrevented() {
|
|
1565
|
-
return this.prevented;
|
|
1566
|
-
}
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
const canCreateElement = () => isDocumentAvailable() && document.createElement;
|
|
1570
|
-
const propName = '--kendo-scrollbar-width';
|
|
1571
|
-
/**
|
|
1572
|
-
* @hidden
|
|
1573
|
-
*/
|
|
1574
|
-
const scrollbarWidth = () => {
|
|
1575
|
-
let scrollbarWidth = 0;
|
|
1576
|
-
if (canCreateElement()) {
|
|
1577
|
-
const div = document.createElement('div');
|
|
1578
|
-
div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';
|
|
1579
|
-
div.innerHTML = ' ';
|
|
1580
|
-
document.body.appendChild(div);
|
|
1581
|
-
scrollbarWidth = div.offsetWidth - div.scrollWidth;
|
|
1582
|
-
document.body.removeChild(div);
|
|
1583
|
-
}
|
|
1584
|
-
return scrollbarWidth;
|
|
1585
|
-
};
|
|
1586
|
-
/**
|
|
1587
|
-
* @hidden
|
|
1588
|
-
*/
|
|
1589
|
-
class ScrollbarWidthService {
|
|
1590
|
-
constructor() {
|
|
1591
|
-
this.changes = new EventEmitter();
|
|
1592
|
-
if (typeof window !== 'undefined' && isDocumentAvailable()) {
|
|
1593
|
-
document.body.style.setProperty(propName, `${scrollbarWidth()}px`);
|
|
1594
|
-
}
|
|
1595
|
-
}
|
|
1596
|
-
}
|
|
1597
|
-
ScrollbarWidthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollbarWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1598
|
-
ScrollbarWidthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollbarWidthService, providedIn: 'root' });
|
|
1599
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScrollbarWidthService, decorators: [{
|
|
1600
|
-
type: Injectable,
|
|
1601
|
-
args: [{
|
|
1602
|
-
providedIn: 'root'
|
|
1603
|
-
}]
|
|
1604
|
-
}], ctorParameters: function () { return []; } });
|
|
1605
|
-
|
|
1606
|
-
/**
|
|
1607
|
-
* @hidden
|
|
1608
|
-
* IMPORTANT: NgModule export kept for backwards compatibility
|
|
1609
|
-
*/
|
|
1610
|
-
class ToggleButtonTabStopModule {
|
|
1611
|
-
}
|
|
1612
|
-
ToggleButtonTabStopModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1613
|
-
ToggleButtonTabStopModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopModule, imports: [ToggleButtonTabStopDirective], exports: [ToggleButtonTabStopDirective] });
|
|
1614
|
-
ToggleButtonTabStopModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopModule });
|
|
1615
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ToggleButtonTabStopModule, decorators: [{
|
|
1616
|
-
type: NgModule,
|
|
1617
|
-
args: [{
|
|
1618
|
-
imports: [ToggleButtonTabStopDirective],
|
|
1619
|
-
exports: [ToggleButtonTabStopDirective]
|
|
1620
|
-
}]
|
|
1621
|
-
}] });
|
|
1622
|
-
|
|
1623
|
-
/**
|
|
1624
|
-
* Generated bundle index. Do not edit.
|
|
1625
|
-
*/
|
|
1626
|
-
|
|
1627
|
-
export { AdornmentsModule, DraggableDirective, DraggableModule, EventsModule, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ResizeSensorModule, ScrollbarWidthService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, ToggleButtonTabStopModule, WatermarkModule, WatermarkOverlayComponent, anyChanged, applyAttributes, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, focusableSelector, guid, hasClasses, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isString, isVisible, matchesClasses, matchesNodeName, parseAttributes, parseCSSClassNames, removeHTMLAttributes, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, shouldShowValidationUI, splitStringToArray };
|
|
1628
|
-
|