@progress/kendo-angular-dropdowns 12.0.0-develop.1 → 12.0.0-develop.10
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/autocomplete/autocomplete.component.d.ts +82 -20
- package/comboboxes/combobox.component.d.ts +76 -8
- package/comboboxes/multicolumncombobox.component.d.ts +4 -0
- package/common/action-sheet.component.d.ts +43 -0
- package/common/list.component.d.ts +2 -1
- package/common/localization/messages.d.ts +9 -1
- package/common/selection/selectable.directive.d.ts +2 -1
- package/common/shared.module.d.ts +11 -7
- package/common/util.d.ts +39 -2
- package/dropdownlist/dropdownlist.component.d.ts +78 -9
- package/dropdowntrees/dropdowntree.component.d.ts +80 -8
- package/dropdowntrees/multiselecttree.component.d.ts +90 -6
- package/esm2020/autocomplete/autocomplete.component.mjs +294 -116
- package/esm2020/comboboxes/combobox.component.mjs +251 -60
- package/esm2020/comboboxes/multicolumncombobox.component.mjs +110 -119
- package/esm2020/common/action-sheet.component.mjs +243 -0
- package/esm2020/common/list.component.mjs +11 -2
- package/esm2020/common/localization/messages.mjs +5 -1
- package/esm2020/common/selection/selectable.directive.mjs +3 -3
- package/esm2020/common/shared.module.mjs +13 -6
- package/esm2020/common/util.mjs +68 -2
- package/esm2020/dropdownlist/dropdownlist.component.mjs +245 -64
- package/esm2020/dropdowntrees/dropdowntree.component.mjs +254 -56
- package/esm2020/dropdowntrees/multiselecttree.component.mjs +291 -55
- package/esm2020/index.mjs +1 -0
- package/esm2020/multiselect/multiselect.component.mjs +320 -88
- package/esm2020/package-metadata.mjs +2 -2
- package/fesm2015/progress-kendo-angular-dropdowns.mjs +2085 -552
- package/fesm2020/progress-kendo-angular-dropdowns.mjs +2054 -545
- package/index.d.ts +2 -0
- package/multiselect/multiselect.component.d.ts +87 -10
- package/package.json +9 -8
- package/schematics/ngAdd/index.js +2 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright © 2023 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass } from '../common/util';
|
|
5
|
+
import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, windowSize, setListBoxAriaLabelLebBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance } from '../common/util';
|
|
6
6
|
import { SearchBarComponent } from '../common/searchbar.component';
|
|
7
7
|
import { ViewChild, Renderer2, ViewContainerRef, Component, HostBinding, Input, ElementRef, TemplateRef, Output, EventEmitter, isDevMode, forwardRef, ContentChild, ChangeDetectorRef, KeyValueDiffers, NgZone, Optional, Inject } from '@angular/core';
|
|
8
8
|
import { Subscription, Subject, of, merge } from 'rxjs';
|
|
@@ -37,6 +37,7 @@ import { ListComponent } from '../common/list.component';
|
|
|
37
37
|
import { normalizeCheckboxesSettings } from '../common/models/checkboxes-settings';
|
|
38
38
|
import { normalizeVirtualizationSettings } from '../common/models/virtualization-settings';
|
|
39
39
|
import { plusIcon, xIcon } from '@progress/kendo-svg-icons';
|
|
40
|
+
import { ResponsiveRendererComponent } from '../common/action-sheet.component';
|
|
40
41
|
import * as i0 from "@angular/core";
|
|
41
42
|
import * as i1 from "@progress/kendo-angular-l10n";
|
|
42
43
|
import * as i2 from "@progress/kendo-angular-popup";
|
|
@@ -47,12 +48,13 @@ import * as i6 from "../common/disabled-items/disabled-items.service";
|
|
|
47
48
|
import * as i7 from "../common/taglist.component";
|
|
48
49
|
import * as i8 from "../common/searchbar.component";
|
|
49
50
|
import * as i9 from "@progress/kendo-angular-icons";
|
|
50
|
-
import * as i10 from "
|
|
51
|
-
import * as i11 from "
|
|
52
|
-
import * as i12 from "../common/
|
|
53
|
-
import * as i13 from "
|
|
54
|
-
import * as i14 from "
|
|
55
|
-
import * as i15 from "../common/
|
|
51
|
+
import * as i10 from "@progress/kendo-angular-common";
|
|
52
|
+
import * as i11 from "../common/action-sheet.component";
|
|
53
|
+
import * as i12 from "../common/list.component";
|
|
54
|
+
import * as i13 from "../common/localization/localized-messages.directive";
|
|
55
|
+
import * as i14 from "@angular/common";
|
|
56
|
+
import * as i15 from "../common/templates/template-context.directive";
|
|
57
|
+
import * as i16 from "../common/selection/selectable.directive";
|
|
56
58
|
const MULTISELECT_VALUE_ACCESSOR = {
|
|
57
59
|
multi: true,
|
|
58
60
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -92,6 +94,10 @@ export class MultiSelectComponent {
|
|
|
92
94
|
this.renderer = renderer;
|
|
93
95
|
this._zone = _zone;
|
|
94
96
|
this.touchEnabled = touchEnabled;
|
|
97
|
+
/**
|
|
98
|
+
* @hidden
|
|
99
|
+
*/
|
|
100
|
+
this.animationDuration = animationDuration;
|
|
95
101
|
/**
|
|
96
102
|
* @hidden
|
|
97
103
|
*/
|
|
@@ -119,6 +125,15 @@ export class MultiSelectComponent {
|
|
|
119
125
|
* Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
|
|
120
126
|
*/
|
|
121
127
|
this.tabindex = 0;
|
|
128
|
+
/**
|
|
129
|
+
* Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
|
|
130
|
+
*/
|
|
131
|
+
this.adaptiveMode = 'none';
|
|
132
|
+
/**
|
|
133
|
+
* Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
|
|
134
|
+
* By default the ActionSheet title uses the text provided for the label of the AutoComplete.
|
|
135
|
+
*/
|
|
136
|
+
this.title = '';
|
|
122
137
|
/**
|
|
123
138
|
* Sets the disabled state of the component.
|
|
124
139
|
*/
|
|
@@ -131,13 +146,7 @@ export class MultiSelectComponent {
|
|
|
131
146
|
* Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.
|
|
132
147
|
*/
|
|
133
148
|
this.filterable = false;
|
|
134
|
-
|
|
135
|
-
* Sets the height of the suggestions list. By default, `listHeight` is 200px.
|
|
136
|
-
*
|
|
137
|
-
* > The `listHeight` property affects only the list of suggestions and not the whole popup container.
|
|
138
|
-
* > To set the height of the popup container, use `popupSettings.height`.
|
|
139
|
-
*/
|
|
140
|
-
this.listHeight = 200;
|
|
149
|
+
this._listHeight = 200;
|
|
141
150
|
/**
|
|
142
151
|
* If set to `true`, renders a button on hovering over the component.
|
|
143
152
|
* Clicking this button resets the value of the component to an empty array and triggers the `change` event.
|
|
@@ -260,6 +269,10 @@ export class MultiSelectComponent {
|
|
|
260
269
|
*/
|
|
261
270
|
this.removeTag = new EventEmitter();
|
|
262
271
|
this.hostClasses = true;
|
|
272
|
+
/**
|
|
273
|
+
* @hidden
|
|
274
|
+
*/
|
|
275
|
+
this.windowSize = 'large';
|
|
263
276
|
this.initialized = false;
|
|
264
277
|
this._size = 'medium';
|
|
265
278
|
this._rounded = 'medium';
|
|
@@ -274,7 +287,7 @@ export class MultiSelectComponent {
|
|
|
274
287
|
this._isFocused = false;
|
|
275
288
|
this.selectedDataItems = [];
|
|
276
289
|
this.customValueSubject = new Subject();
|
|
277
|
-
this.
|
|
290
|
+
this.subs = new Subscription();
|
|
278
291
|
validatePackage(packageMetadata);
|
|
279
292
|
this.popupMouseDownHandler = this.onMouseDown.bind(this);
|
|
280
293
|
this.data = [];
|
|
@@ -282,6 +295,18 @@ export class MultiSelectComponent {
|
|
|
282
295
|
this.subscribeEvents();
|
|
283
296
|
this.subscribeTouchEvents();
|
|
284
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* @hidden
|
|
300
|
+
*/
|
|
301
|
+
get actionSheet() {
|
|
302
|
+
return this.responsiveRendererComponent?.actionSheet;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* @hidden
|
|
306
|
+
*/
|
|
307
|
+
get actionSheetSearchBar() {
|
|
308
|
+
return this.responsiveRendererComponent?.actionSheetSearchBar;
|
|
309
|
+
}
|
|
285
310
|
/**
|
|
286
311
|
* @hidden
|
|
287
312
|
*/
|
|
@@ -324,6 +349,16 @@ export class MultiSelectComponent {
|
|
|
324
349
|
}
|
|
325
350
|
}
|
|
326
351
|
}
|
|
352
|
+
/**
|
|
353
|
+
* @hidden
|
|
354
|
+
*/
|
|
355
|
+
onAdaptiveTextBoxChange(text) {
|
|
356
|
+
if (this.filterable) {
|
|
357
|
+
this.filterChange.emit(text);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
this.searchTextAndFocus(text);
|
|
361
|
+
}
|
|
327
362
|
/**
|
|
328
363
|
* Blurs the MultiSelect.
|
|
329
364
|
*/
|
|
@@ -336,28 +371,30 @@ export class MultiSelectComponent {
|
|
|
336
371
|
* @hidden
|
|
337
372
|
*/
|
|
338
373
|
onSearchBarBlur() {
|
|
339
|
-
if (!this.
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
hasObservers(this.
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
this.
|
|
349
|
-
|
|
374
|
+
if (!this.isActionSheetExpanded) {
|
|
375
|
+
if (!this.isFocused) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
this.isFocused = false;
|
|
379
|
+
if (hasObservers(this.onBlur) ||
|
|
380
|
+
hasObservers(this.filterChange) ||
|
|
381
|
+
hasObservers(this.close) ||
|
|
382
|
+
isUntouched(this.wrapper.nativeElement)) {
|
|
383
|
+
this._zone.run(() => {
|
|
384
|
+
this.closePopup();
|
|
385
|
+
if (!(this.isOpen && this.allowCustom)) {
|
|
386
|
+
this.clearFilter();
|
|
387
|
+
}
|
|
388
|
+
this.onBlur.emit();
|
|
389
|
+
this.onTouchedCallback();
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
if (!this.allowCustom) {
|
|
350
394
|
this.clearFilter();
|
|
351
395
|
}
|
|
352
|
-
this.
|
|
353
|
-
this.onTouchedCallback();
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
if (!this.allowCustom) {
|
|
358
|
-
this.clearFilter();
|
|
396
|
+
this.closePopup();
|
|
359
397
|
}
|
|
360
|
-
this.closePopup();
|
|
361
398
|
}
|
|
362
399
|
}
|
|
363
400
|
/**
|
|
@@ -370,7 +407,14 @@ export class MultiSelectComponent {
|
|
|
370
407
|
* @hidden
|
|
371
408
|
*/
|
|
372
409
|
onResize() {
|
|
373
|
-
if (this.
|
|
410
|
+
if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {
|
|
411
|
+
if (this.isOpen) {
|
|
412
|
+
this.togglePopup(false);
|
|
413
|
+
}
|
|
414
|
+
this.windowSize = windowSize();
|
|
415
|
+
this.cdr.detectChanges();
|
|
416
|
+
}
|
|
417
|
+
if (this.isOpen && !this.isActionSheetExpanded) {
|
|
374
418
|
const popupWrapper = this.popupRef.popupElement;
|
|
375
419
|
const { min, max } = this.width;
|
|
376
420
|
popupWrapper.style.minWidth = min;
|
|
@@ -511,6 +555,22 @@ export class MultiSelectComponent {
|
|
|
511
555
|
get placeholder() {
|
|
512
556
|
return this.selectedDataItems.length ? '' : this._placeholder;
|
|
513
557
|
}
|
|
558
|
+
/**
|
|
559
|
+
* Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
|
|
560
|
+
* By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.
|
|
561
|
+
*/
|
|
562
|
+
set subtitle(_subtitle) {
|
|
563
|
+
this._subtitle = _subtitle;
|
|
564
|
+
}
|
|
565
|
+
get subtitle() {
|
|
566
|
+
return this._subtitle || this.placeholder;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* @hidden
|
|
570
|
+
*/
|
|
571
|
+
get isAdaptiveModeEnabled() {
|
|
572
|
+
return this.adaptiveMode === 'auto';
|
|
573
|
+
}
|
|
514
574
|
/**
|
|
515
575
|
* Defines a Boolean function that is executed for each data item in the component
|
|
516
576
|
* ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.
|
|
@@ -555,6 +615,24 @@ export class MultiSelectComponent {
|
|
|
555
615
|
get popupSettings() {
|
|
556
616
|
return this._popupSettings;
|
|
557
617
|
}
|
|
618
|
+
/**
|
|
619
|
+
* Sets the height of the options list in the popup. By default, `listHeight` is 200px.
|
|
620
|
+
*
|
|
621
|
+
* > The `listHeight` property affects only the list of options and not the whole popup container.
|
|
622
|
+
* > To set the height of the popup container, use `popupSettings.height`.
|
|
623
|
+
*
|
|
624
|
+
* > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.
|
|
625
|
+
*/
|
|
626
|
+
set listHeight(_listHeight) {
|
|
627
|
+
this._listHeight = _listHeight;
|
|
628
|
+
}
|
|
629
|
+
;
|
|
630
|
+
get listHeight() {
|
|
631
|
+
if (this.isAdaptive) {
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
return this._listHeight;
|
|
635
|
+
}
|
|
558
636
|
/**
|
|
559
637
|
* Specifies the type of the selected value.
|
|
560
638
|
* If set to `true`, the selected value has to be of the primitive type
|
|
@@ -578,6 +656,19 @@ export class MultiSelectComponent {
|
|
|
578
656
|
get isLoading() {
|
|
579
657
|
return this.loading;
|
|
580
658
|
}
|
|
659
|
+
/**
|
|
660
|
+
* @hidden
|
|
661
|
+
*/
|
|
662
|
+
get isActionSheetExpanded() {
|
|
663
|
+
return this.actionSheet?.expanded;
|
|
664
|
+
}
|
|
665
|
+
;
|
|
666
|
+
/**
|
|
667
|
+
* @hidden
|
|
668
|
+
*/
|
|
669
|
+
get isAdaptive() {
|
|
670
|
+
return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
|
|
671
|
+
}
|
|
581
672
|
get listContainerClasses() {
|
|
582
673
|
const containerClasses = ['k-list-container', 'k-reset'];
|
|
583
674
|
if (this.popupSettings.popupClass) {
|
|
@@ -628,6 +719,21 @@ export class MultiSelectComponent {
|
|
|
628
719
|
return 'visible';
|
|
629
720
|
}
|
|
630
721
|
}
|
|
722
|
+
/**
|
|
723
|
+
* @hidden
|
|
724
|
+
*/
|
|
725
|
+
applyValue() {
|
|
726
|
+
this.value = this._valueHolder;
|
|
727
|
+
this.emitValueChange();
|
|
728
|
+
this.togglePopup(false);
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* @hidden
|
|
732
|
+
*/
|
|
733
|
+
cancelValue() {
|
|
734
|
+
this._valueHolder = [];
|
|
735
|
+
this.togglePopup(false);
|
|
736
|
+
}
|
|
631
737
|
/**
|
|
632
738
|
* @hidden
|
|
633
739
|
*/
|
|
@@ -659,8 +765,12 @@ export class MultiSelectComponent {
|
|
|
659
765
|
event.added.forEach((itemIndex) => {
|
|
660
766
|
const dataItem = this.dataService.itemAt(itemIndex);
|
|
661
767
|
const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;
|
|
768
|
+
this._valueHolder = this.value.filter(filter);
|
|
662
769
|
if (newItem) {
|
|
663
|
-
this.
|
|
770
|
+
this._valueHolder = [...this.value, newItem];
|
|
771
|
+
if (!this.isAdaptive) {
|
|
772
|
+
this.value = this._valueHolder;
|
|
773
|
+
}
|
|
664
774
|
}
|
|
665
775
|
});
|
|
666
776
|
}
|
|
@@ -668,7 +778,10 @@ export class MultiSelectComponent {
|
|
|
668
778
|
event.removed.forEach((itemIndex) => {
|
|
669
779
|
const dataItem = this.dataService.itemAt(itemIndex);
|
|
670
780
|
const filter = (item) => getter(item, this.valueField) !== getter(dataItem, this.valueField);
|
|
671
|
-
this.
|
|
781
|
+
this._valueHolder = this.value.filter(filter);
|
|
782
|
+
if (!this.isAdaptive) {
|
|
783
|
+
this.value = this._valueHolder;
|
|
784
|
+
}
|
|
672
785
|
});
|
|
673
786
|
this.cdr.detectChanges();
|
|
674
787
|
}
|
|
@@ -683,17 +796,25 @@ export class MultiSelectComponent {
|
|
|
683
796
|
if (isPresent(event.added)) {
|
|
684
797
|
const dataItem = this.dataService.itemAt(event.added);
|
|
685
798
|
const newItem = (this.valuePrimitive && isPresent(dataItem) && isPresent(dataItem[this.valueField])) ? dataItem[this.valueField] : dataItem;
|
|
686
|
-
this.
|
|
799
|
+
this._valueHolder = [...this.value, newItem];
|
|
800
|
+
if (!this.isAdaptive) {
|
|
801
|
+
this.value = this._valueHolder;
|
|
802
|
+
}
|
|
687
803
|
}
|
|
688
804
|
if (isPresent(event.removed)) {
|
|
689
805
|
const dataItem = this.dataService.itemAt(event.removed);
|
|
690
806
|
const filter = (item) => getter(item, this.valueField) !== getter(dataItem, this.valueField);
|
|
691
|
-
this.
|
|
807
|
+
this._valueHolder = this.value.filter(filter);
|
|
808
|
+
if (!this.isAdaptive) {
|
|
809
|
+
this.value = this._valueHolder;
|
|
810
|
+
}
|
|
692
811
|
this.selectionService.focused = event.removed;
|
|
693
812
|
this.cdr.detectChanges();
|
|
694
813
|
}
|
|
695
814
|
}
|
|
696
|
-
this.
|
|
815
|
+
if (!this.isAdaptive) {
|
|
816
|
+
this.emitValueChange();
|
|
817
|
+
}
|
|
697
818
|
}
|
|
698
819
|
/**
|
|
699
820
|
* @hidden
|
|
@@ -778,6 +899,9 @@ export class MultiSelectComponent {
|
|
|
778
899
|
const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;
|
|
779
900
|
const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;
|
|
780
901
|
const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;
|
|
902
|
+
if (event.keyCode === Keys.Backspace && this.isActionSheetExpanded) {
|
|
903
|
+
return;
|
|
904
|
+
}
|
|
781
905
|
if (deleteTag) {
|
|
782
906
|
this.handleBackspace();
|
|
783
907
|
return;
|
|
@@ -795,7 +919,8 @@ export class MultiSelectComponent {
|
|
|
795
919
|
originalEvent: eventData
|
|
796
920
|
});
|
|
797
921
|
if (action !== NavigationAction.Undefined &&
|
|
798
|
-
((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)
|
|
922
|
+
((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter) &&
|
|
923
|
+
(!this.isActionSheetExpanded && action === NavigationAction.Tab)) {
|
|
799
924
|
event.preventDefault();
|
|
800
925
|
}
|
|
801
926
|
}
|
|
@@ -852,11 +977,11 @@ export class MultiSelectComponent {
|
|
|
852
977
|
ngOnInit() {
|
|
853
978
|
this.renderer.removeAttribute(this.wrapper.nativeElement, "tabindex");
|
|
854
979
|
this.createCustomValueStream();
|
|
855
|
-
this.
|
|
980
|
+
this.subs.add(this.localization
|
|
856
981
|
.changes.subscribe(({ rtl }) => {
|
|
857
982
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
858
983
|
this.cdr.markForCheck();
|
|
859
|
-
});
|
|
984
|
+
}));
|
|
860
985
|
this.setState(this.value);
|
|
861
986
|
this.setComponentClasses();
|
|
862
987
|
this.initialized = true;
|
|
@@ -875,18 +1000,21 @@ export class MultiSelectComponent {
|
|
|
875
1000
|
}
|
|
876
1001
|
}
|
|
877
1002
|
ngAfterViewInit() {
|
|
1003
|
+
this.windowSize = windowSize();
|
|
1004
|
+
this.cdr.detectChanges();
|
|
878
1005
|
this.searchbar.setInputSize();
|
|
879
|
-
this.
|
|
880
|
-
this.
|
|
1006
|
+
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
|
|
1007
|
+
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
|
|
1008
|
+
this.renderer.setAttribute(this.actionSheet?.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
|
|
881
1009
|
}
|
|
882
1010
|
ngOnDestroy() {
|
|
883
1011
|
this._toggle(false);
|
|
884
1012
|
this.unsubscribeEvents();
|
|
885
1013
|
}
|
|
886
1014
|
/**
|
|
887
|
-
* Toggles the visibility of the popup
|
|
1015
|
+
* Toggles the visibility of the popup or actionSheet
|
|
888
1016
|
* ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).
|
|
889
|
-
* If you use the `toggle` method to open or close the popup, the respective `open` and `close` events will not be fired.
|
|
1017
|
+
* If you use the `toggle` method to open or close the popup or actionSheet, the respective `open` and `close` events will not be fired.
|
|
890
1018
|
*
|
|
891
1019
|
* @param open - The state of the popup.
|
|
892
1020
|
*/
|
|
@@ -900,10 +1028,10 @@ export class MultiSelectComponent {
|
|
|
900
1028
|
});
|
|
901
1029
|
}
|
|
902
1030
|
/**
|
|
903
|
-
* Returns the current open state
|
|
1031
|
+
* Returns the current open state. Returns `true` if the popup or actionSheet is open.
|
|
904
1032
|
*/
|
|
905
1033
|
get isOpen() {
|
|
906
|
-
return this._open;
|
|
1034
|
+
return isTruthy(this._open || this.isActionSheetExpanded);
|
|
907
1035
|
}
|
|
908
1036
|
/**
|
|
909
1037
|
* Resets the value of the MultiSelect.
|
|
@@ -952,6 +1080,15 @@ export class MultiSelectComponent {
|
|
|
952
1080
|
this.tags = this.tagMapper(this.selectedDataItems.slice(0));
|
|
953
1081
|
this.cdr.markForCheck();
|
|
954
1082
|
}
|
|
1083
|
+
/**
|
|
1084
|
+
* @hidden
|
|
1085
|
+
*/
|
|
1086
|
+
handleClick() {
|
|
1087
|
+
this.windowSize = windowSize();
|
|
1088
|
+
if (this.isAdaptive) {
|
|
1089
|
+
this.togglePopup(true);
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
955
1092
|
set isFocused(isFocused) {
|
|
956
1093
|
this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');
|
|
957
1094
|
this._isFocused = isFocused;
|
|
@@ -990,7 +1127,7 @@ export class MultiSelectComponent {
|
|
|
990
1127
|
this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);
|
|
991
1128
|
}
|
|
992
1129
|
})
|
|
993
|
-
].forEach(s => this.
|
|
1130
|
+
].forEach(s => this.subs.add(s));
|
|
994
1131
|
}
|
|
995
1132
|
subscribeTouchEvents() {
|
|
996
1133
|
if (!isDocumentAvailable() || !this.touchEnabled) {
|
|
@@ -1014,13 +1151,10 @@ export class MultiSelectComponent {
|
|
|
1014
1151
|
if (!isDocumentAvailable()) {
|
|
1015
1152
|
return;
|
|
1016
1153
|
}
|
|
1017
|
-
this.
|
|
1154
|
+
this.subs.unsubscribe();
|
|
1018
1155
|
if (this.customValueSubscription) {
|
|
1019
1156
|
this.customValueSubscription.unsubscribe();
|
|
1020
1157
|
}
|
|
1021
|
-
if (this.localizationChangeSubscription) {
|
|
1022
|
-
this.localizationChangeSubscription.unsubscribe();
|
|
1023
|
-
}
|
|
1024
1158
|
if (this.touchstartDisposeHandler) {
|
|
1025
1159
|
this.touchstartDisposeHandler();
|
|
1026
1160
|
}
|
|
@@ -1135,7 +1269,7 @@ export class MultiSelectComponent {
|
|
|
1135
1269
|
}
|
|
1136
1270
|
handleItemChange(event) {
|
|
1137
1271
|
this.change(event);
|
|
1138
|
-
if (this.autoClose && !event.preventClosingPopup) {
|
|
1272
|
+
if (this.autoClose && !event.preventClosingPopup && !this.isActionSheetExpanded) {
|
|
1139
1273
|
this.togglePopup(false);
|
|
1140
1274
|
}
|
|
1141
1275
|
if (this.autoClose || !this.filterable) {
|
|
@@ -1143,21 +1277,23 @@ export class MultiSelectComponent {
|
|
|
1143
1277
|
}
|
|
1144
1278
|
}
|
|
1145
1279
|
handleMousedown(event) {
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
if (
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
this.
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1280
|
+
if (!this.isActionSheetExpanded) {
|
|
1281
|
+
const inputElement = this.searchbar.input.nativeElement;
|
|
1282
|
+
if (event.button === 0) {
|
|
1283
|
+
if (this.isFocused && this.isOpen && event.target === inputElement) {
|
|
1284
|
+
return;
|
|
1285
|
+
}
|
|
1286
|
+
if (!this.touchEnabled || (this.touchEnabled && event.target.tagName !== 'SPAN')) {
|
|
1287
|
+
this.searchbar.focus();
|
|
1288
|
+
}
|
|
1289
|
+
// The check is needed otherwise when appended to the component, the popup reopens on click
|
|
1290
|
+
// https://github.com/telerik/kendo-angular/issues/3738
|
|
1291
|
+
if ((this.popupRef && this.popupRef.popupElement.contains(event.target))) {
|
|
1292
|
+
return;
|
|
1293
|
+
}
|
|
1294
|
+
event.preventDefault();
|
|
1295
|
+
this.togglePopup(!this.isOpen);
|
|
1158
1296
|
}
|
|
1159
|
-
event.preventDefault();
|
|
1160
|
-
this.togglePopup(!this.isOpen);
|
|
1161
1297
|
}
|
|
1162
1298
|
}
|
|
1163
1299
|
handleKeydown(event) {
|
|
@@ -1186,7 +1322,7 @@ export class MultiSelectComponent {
|
|
|
1186
1322
|
else {
|
|
1187
1323
|
service.add(focusedIndex);
|
|
1188
1324
|
}
|
|
1189
|
-
if (this.autoClose) {
|
|
1325
|
+
if (this.autoClose && !this.isActionSheetExpanded) {
|
|
1190
1326
|
this.togglePopup(false);
|
|
1191
1327
|
}
|
|
1192
1328
|
if (this.autoClose || !this.filterable) {
|
|
@@ -1357,6 +1493,9 @@ export class MultiSelectComponent {
|
|
|
1357
1493
|
this.togglePopup(true);
|
|
1358
1494
|
this.focusedTagIndex = undefined;
|
|
1359
1495
|
}
|
|
1496
|
+
/**
|
|
1497
|
+
* @hidden
|
|
1498
|
+
*/
|
|
1360
1499
|
togglePopup(open) {
|
|
1361
1500
|
const isDisabled = this.disabled || this.readonly;
|
|
1362
1501
|
const sameState = this.isOpen === open;
|
|
@@ -1381,6 +1520,10 @@ export class MultiSelectComponent {
|
|
|
1381
1520
|
_toggle(open) {
|
|
1382
1521
|
this._open = open;
|
|
1383
1522
|
this.destroyPopup();
|
|
1523
|
+
if (this.isActionSheetExpanded) {
|
|
1524
|
+
this.closeActionSheet();
|
|
1525
|
+
this.focus();
|
|
1526
|
+
}
|
|
1384
1527
|
if (this._open) {
|
|
1385
1528
|
this.createPopup();
|
|
1386
1529
|
}
|
|
@@ -1397,6 +1540,11 @@ export class MultiSelectComponent {
|
|
|
1397
1540
|
if (this.virtual) {
|
|
1398
1541
|
this.virtual.skip = 0;
|
|
1399
1542
|
}
|
|
1543
|
+
this.windowSize = windowSize();
|
|
1544
|
+
if (this.isAdaptive) {
|
|
1545
|
+
this.openActionSheet();
|
|
1546
|
+
return;
|
|
1547
|
+
}
|
|
1400
1548
|
const horizontalAlign = this.direction === "rtl" ? "right" : "left";
|
|
1401
1549
|
const anchorPosition = { horizontal: horizontalAlign, vertical: "bottom" };
|
|
1402
1550
|
const popupPosition = { horizontal: horizontalAlign, vertical: "top" };
|
|
@@ -1428,7 +1576,9 @@ export class MultiSelectComponent {
|
|
|
1428
1576
|
}
|
|
1429
1577
|
this.popupRef.popupOpen.subscribe(() => {
|
|
1430
1578
|
this.cdr.detectChanges();
|
|
1579
|
+
setListBoxAriaLabelLebBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1431
1580
|
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
1581
|
+
this.selectionService.focus(this.selectionService.focused);
|
|
1432
1582
|
this.opened.emit();
|
|
1433
1583
|
});
|
|
1434
1584
|
this.popupRef.popupClose.subscribe(() => {
|
|
@@ -1482,9 +1632,28 @@ export class MultiSelectComponent {
|
|
|
1482
1632
|
this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
|
|
1483
1633
|
}
|
|
1484
1634
|
}
|
|
1635
|
+
closeActionSheet() {
|
|
1636
|
+
this.actionSheet.toggle(false);
|
|
1637
|
+
this.actionSheetSearchBar.value = '';
|
|
1638
|
+
this.filterable && this.filterChange.emit('');
|
|
1639
|
+
this.closed.emit();
|
|
1640
|
+
}
|
|
1641
|
+
openActionSheet() {
|
|
1642
|
+
this.windowSize = windowSize();
|
|
1643
|
+
this.actionSheet.toggle(true);
|
|
1644
|
+
this.cdr.detectChanges();
|
|
1645
|
+
setListBoxAriaLabelLebBy(this.optionsList, this.searchbar.input, this.renderer);
|
|
1646
|
+
this.title = setActionSheetTitle(this.searchbar.input, this.title);
|
|
1647
|
+
updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
|
|
1648
|
+
this.cdr.detectChanges();
|
|
1649
|
+
this.opened.emit();
|
|
1650
|
+
this.optionsList.scrollToItem(this.selectionService.focused);
|
|
1651
|
+
this.selectionService.focus(this.selectionService.focused);
|
|
1652
|
+
this.actionSheetSearchBar.focus();
|
|
1653
|
+
}
|
|
1485
1654
|
}
|
|
1486
1655
|
MultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: i3.DataService }, { token: i4.SelectionService }, { token: i5.NavigationService }, { token: i6.DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1487
|
-
MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiSelectComponent, selector: "kendo-multiselect", inputs: { focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", removeTag: "removeTag" }, host: { properties: { "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
|
|
1656
|
+
MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiSelectComponent, selector: "kendo-multiselect", inputs: { focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", removeTag: "removeTag" }, host: { properties: { "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
|
|
1488
1657
|
MULTISELECT_VALUE_ACCESSOR,
|
|
1489
1658
|
DataService,
|
|
1490
1659
|
SelectionService,
|
|
@@ -1501,7 +1670,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1501
1670
|
{
|
|
1502
1671
|
provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)
|
|
1503
1672
|
}
|
|
1504
|
-
], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "customItemTemplate", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "tagTemplate", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: "groupTagTemplate", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], exportAs: ["kendoMultiSelect"], usesOnChanges: true, ngImport: i0, template: `
|
|
1673
|
+
], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "customItemTemplate", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "tagTemplate", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: "groupTagTemplate", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "responsiveRendererComponent", first: true, predicate: ResponsiveRendererComponent, descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], exportAs: ["kendoMultiSelect"], usesOnChanges: true, ngImport: i0, template: `
|
|
1505
1674
|
<ng-container kendoMultiSelectLocalizedMessages
|
|
1506
1675
|
i18n-noDataText="kendo.multiselect.noDataText|The text displayed in the popup when there are no items"
|
|
1507
1676
|
noDataText="NO DATA FOUND"
|
|
@@ -1511,6 +1680,12 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1511
1680
|
|
|
1512
1681
|
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1513
1682
|
popupLabel="Options list"
|
|
1683
|
+
|
|
1684
|
+
i18n-applyButton="kendo.multiselect.applyButton|The text of the Apply button in the action sheet"
|
|
1685
|
+
applyButton="Apply"
|
|
1686
|
+
|
|
1687
|
+
i18n-cancelButton="kendo.multiselect.cancelButton|The text of the Cancel button in the action sheet"
|
|
1688
|
+
cancelButton="Cancel"
|
|
1514
1689
|
>
|
|
1515
1690
|
</ng-container>
|
|
1516
1691
|
<kendo-taglist
|
|
@@ -1541,13 +1716,14 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1541
1716
|
[activeDescendant]="activeDescendant"
|
|
1542
1717
|
[userInput]="text"
|
|
1543
1718
|
[disabled]="disabled"
|
|
1544
|
-
[readonly]="readonly"
|
|
1719
|
+
[readonly]="readonly || this.isAdaptive"
|
|
1545
1720
|
[tabIndex]="tabIndex"
|
|
1546
1721
|
[placeholder]="placeholder"
|
|
1547
1722
|
(onNavigate)="handleNavigate($event)"
|
|
1548
1723
|
(valueChange)="handleFilter($event)"
|
|
1549
1724
|
(onBlur)="onSearchBarBlur()"
|
|
1550
1725
|
(onFocus)="onSearchBarFocus()"
|
|
1726
|
+
(click)="handleClick()"
|
|
1551
1727
|
>
|
|
1552
1728
|
</kendo-searchbar>
|
|
1553
1729
|
</kendo-taglist>
|
|
@@ -1574,6 +1750,29 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1574
1750
|
>
|
|
1575
1751
|
</span>
|
|
1576
1752
|
<ng-template #popupTemplate>
|
|
1753
|
+
<ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
|
|
1754
|
+
</ng-template>
|
|
1755
|
+
<kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
|
|
1756
|
+
<ng-container #container></ng-container>
|
|
1757
|
+
|
|
1758
|
+
<!--adaptive rendering-->
|
|
1759
|
+
<responsive-renderer
|
|
1760
|
+
[sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
|
|
1761
|
+
[isActionSheetExpanded]="isActionSheetExpanded"
|
|
1762
|
+
[title]="title"
|
|
1763
|
+
[showTextInput]="true"
|
|
1764
|
+
[showActionButtons]="true"
|
|
1765
|
+
[subtitle]="subtitle"
|
|
1766
|
+
(closePopup)="togglePopup(false)"
|
|
1767
|
+
(textInputChange)="onAdaptiveTextBoxChange($event)"
|
|
1768
|
+
[placeholder]="placeholder"
|
|
1769
|
+
(navigate)="handleNavigate($event)"
|
|
1770
|
+
(onApply)="applyValue()"
|
|
1771
|
+
(onCancel)="cancelValue()"
|
|
1772
|
+
>
|
|
1773
|
+
</responsive-renderer>
|
|
1774
|
+
|
|
1775
|
+
<ng-template #sharedPopupActionSheetTemplate>
|
|
1577
1776
|
<!--header template-->
|
|
1578
1777
|
<ng-template *ngIf="headerTemplate"
|
|
1579
1778
|
[templateContext]="{
|
|
@@ -1612,17 +1811,18 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1612
1811
|
[data]="data"
|
|
1613
1812
|
[textField]="textField"
|
|
1614
1813
|
[valueField]="valueField"
|
|
1615
|
-
[height]="listHeight"
|
|
1616
1814
|
[template]="template"
|
|
1617
1815
|
[groupTemplate]="groupTemplate"
|
|
1618
1816
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
1817
|
+
[height]="listHeight"
|
|
1619
1818
|
[show]="isOpen"
|
|
1620
1819
|
[multipleSelection]="true"
|
|
1621
1820
|
[virtual]="virtual"
|
|
1622
1821
|
(pageChange)="pageChange($event)"
|
|
1623
1822
|
[checkboxes]="checkboxes"
|
|
1624
1823
|
[isMultiselect]="true"
|
|
1625
|
-
|
|
1824
|
+
[isActionSheetExpanded]="isActionSheetExpanded"
|
|
1825
|
+
>
|
|
1626
1826
|
</kendo-list>
|
|
1627
1827
|
<!--no data template-->
|
|
1628
1828
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -1642,11 +1842,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
1642
1842
|
}">
|
|
1643
1843
|
</ng-template>
|
|
1644
1844
|
</ng-template>
|
|
1645
|
-
|
|
1646
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
1647
|
-
</ng-template>
|
|
1648
|
-
<ng-container #container></ng-container>
|
|
1649
|
-
`, isInline: true, components: [{ type: i7.TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: i8.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i10.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i11.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i12.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i15.SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "multipleSelection"] }] });
|
|
1845
|
+
`, isInline: true, components: [{ type: i7.TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: i8.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i9.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i11.ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { type: i12.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }], directives: [{ type: i13.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i16.SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "isMultiselect", "multipleSelection"] }] });
|
|
1650
1846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
|
1651
1847
|
type: Component,
|
|
1652
1848
|
args: [{
|
|
@@ -1680,6 +1876,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1680
1876
|
|
|
1681
1877
|
i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
|
|
1682
1878
|
popupLabel="Options list"
|
|
1879
|
+
|
|
1880
|
+
i18n-applyButton="kendo.multiselect.applyButton|The text of the Apply button in the action sheet"
|
|
1881
|
+
applyButton="Apply"
|
|
1882
|
+
|
|
1883
|
+
i18n-cancelButton="kendo.multiselect.cancelButton|The text of the Cancel button in the action sheet"
|
|
1884
|
+
cancelButton="Cancel"
|
|
1683
1885
|
>
|
|
1684
1886
|
</ng-container>
|
|
1685
1887
|
<kendo-taglist
|
|
@@ -1710,13 +1912,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1710
1912
|
[activeDescendant]="activeDescendant"
|
|
1711
1913
|
[userInput]="text"
|
|
1712
1914
|
[disabled]="disabled"
|
|
1713
|
-
[readonly]="readonly"
|
|
1915
|
+
[readonly]="readonly || this.isAdaptive"
|
|
1714
1916
|
[tabIndex]="tabIndex"
|
|
1715
1917
|
[placeholder]="placeholder"
|
|
1716
1918
|
(onNavigate)="handleNavigate($event)"
|
|
1717
1919
|
(valueChange)="handleFilter($event)"
|
|
1718
1920
|
(onBlur)="onSearchBarBlur()"
|
|
1719
1921
|
(onFocus)="onSearchBarFocus()"
|
|
1922
|
+
(click)="handleClick()"
|
|
1720
1923
|
>
|
|
1721
1924
|
</kendo-searchbar>
|
|
1722
1925
|
</kendo-taglist>
|
|
@@ -1743,6 +1946,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1743
1946
|
>
|
|
1744
1947
|
</span>
|
|
1745
1948
|
<ng-template #popupTemplate>
|
|
1949
|
+
<ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
|
|
1950
|
+
</ng-template>
|
|
1951
|
+
<kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
|
|
1952
|
+
<ng-container #container></ng-container>
|
|
1953
|
+
|
|
1954
|
+
<!--adaptive rendering-->
|
|
1955
|
+
<responsive-renderer
|
|
1956
|
+
[sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
|
|
1957
|
+
[isActionSheetExpanded]="isActionSheetExpanded"
|
|
1958
|
+
[title]="title"
|
|
1959
|
+
[showTextInput]="true"
|
|
1960
|
+
[showActionButtons]="true"
|
|
1961
|
+
[subtitle]="subtitle"
|
|
1962
|
+
(closePopup)="togglePopup(false)"
|
|
1963
|
+
(textInputChange)="onAdaptiveTextBoxChange($event)"
|
|
1964
|
+
[placeholder]="placeholder"
|
|
1965
|
+
(navigate)="handleNavigate($event)"
|
|
1966
|
+
(onApply)="applyValue()"
|
|
1967
|
+
(onCancel)="cancelValue()"
|
|
1968
|
+
>
|
|
1969
|
+
</responsive-renderer>
|
|
1970
|
+
|
|
1971
|
+
<ng-template #sharedPopupActionSheetTemplate>
|
|
1746
1972
|
<!--header template-->
|
|
1747
1973
|
<ng-template *ngIf="headerTemplate"
|
|
1748
1974
|
[templateContext]="{
|
|
@@ -1781,17 +2007,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1781
2007
|
[data]="data"
|
|
1782
2008
|
[textField]="textField"
|
|
1783
2009
|
[valueField]="valueField"
|
|
1784
|
-
[height]="listHeight"
|
|
1785
2010
|
[template]="template"
|
|
1786
2011
|
[groupTemplate]="groupTemplate"
|
|
1787
2012
|
[fixedGroupTemplate]="fixedGroupTemplate"
|
|
2013
|
+
[height]="listHeight"
|
|
1788
2014
|
[show]="isOpen"
|
|
1789
2015
|
[multipleSelection]="true"
|
|
1790
2016
|
[virtual]="virtual"
|
|
1791
2017
|
(pageChange)="pageChange($event)"
|
|
1792
2018
|
[checkboxes]="checkboxes"
|
|
1793
2019
|
[isMultiselect]="true"
|
|
1794
|
-
|
|
2020
|
+
[isActionSheetExpanded]="isActionSheetExpanded"
|
|
2021
|
+
>
|
|
1795
2022
|
</kendo-list>
|
|
1796
2023
|
<!--no data template-->
|
|
1797
2024
|
<div class="k-no-data" *ngIf="data.length === 0">
|
|
@@ -1811,10 +2038,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1811
2038
|
}">
|
|
1812
2039
|
</ng-template>
|
|
1813
2040
|
</ng-template>
|
|
1814
|
-
<ng-template [ngIf]="isOpen">
|
|
1815
|
-
<kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
|
|
1816
|
-
</ng-template>
|
|
1817
|
-
<ng-container #container></ng-container>
|
|
1818
2041
|
`
|
|
1819
2042
|
}]
|
|
1820
2043
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.DataService }, { type: i4.SelectionService }, { type: i5.NavigationService }, { type: i6.DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
@@ -1822,7 +2045,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1822
2045
|
}, {
|
|
1823
2046
|
type: Inject,
|
|
1824
2047
|
args: [TOUCH_ENABLED]
|
|
1825
|
-
}] }]; }, propDecorators: {
|
|
2048
|
+
}] }]; }, propDecorators: { responsiveRendererComponent: [{
|
|
2049
|
+
type: ViewChild,
|
|
2050
|
+
args: [ResponsiveRendererComponent]
|
|
2051
|
+
}], focusableId: [{
|
|
1826
2052
|
type: Input
|
|
1827
2053
|
}], autoClose: [{
|
|
1828
2054
|
type: Input
|
|
@@ -1849,6 +2075,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
1849
2075
|
type: Input
|
|
1850
2076
|
}], placeholder: [{
|
|
1851
2077
|
type: Input
|
|
2078
|
+
}], adaptiveMode: [{
|
|
2079
|
+
type: Input
|
|
2080
|
+
}], title: [{
|
|
2081
|
+
type: Input
|
|
2082
|
+
}], subtitle: [{
|
|
2083
|
+
type: Input
|
|
1852
2084
|
}], disabled: [{
|
|
1853
2085
|
type: Input
|
|
1854
2086
|
}], itemDisabled: [{
|