@progress/kendo-angular-dropdowns 17.1.2-develop.5 → 17.2.0-develop.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete.component.d.ts +5 -3
- package/comboboxes/combobox.component.d.ts +5 -3
- package/comboboxes/multicolumncombobox.component.d.ts +2 -1
- package/common/util.d.ts +2 -9
- package/dropdownlist/dropdownlist.component.d.ts +5 -3
- package/dropdowntrees/dropdowntree.component.d.ts +5 -3
- package/dropdowntrees/multiselecttree.component.d.ts +5 -3
- package/esm2022/autocomplete/autocomplete.component.mjs +14 -9
- package/esm2022/autocomplete/autocomplete.module.mjs +5 -2
- package/esm2022/comboboxes/combobox.component.mjs +16 -11
- package/esm2022/comboboxes/combobox.module.mjs +5 -2
- package/esm2022/comboboxes/multicolumncombobox.component.mjs +8 -6
- package/esm2022/common/util.mjs +0 -16
- package/esm2022/dropdownlist/dropdownlist.component.mjs +17 -12
- package/esm2022/dropdownlist/dropdownlist.module.mjs +5 -2
- package/esm2022/dropdowns.module.mjs +3 -2
- package/esm2022/dropdowntrees/dropdowntree.component.mjs +15 -10
- package/esm2022/dropdowntrees/dropdowntrees.module.mjs +5 -2
- package/esm2022/dropdowntrees/multiselecttree.component.mjs +14 -9
- package/esm2022/multiselect/multiselect.component.mjs +15 -10
- package/esm2022/multiselect/multiselect.module.mjs +5 -2
- package/esm2022/package-metadata.mjs +2 -2
- package/fesm2022/progress-kendo-angular-dropdowns.mjs +104 -90
- package/multiselect/multiselect.component.d.ts +5 -3
- package/package.json +9 -8
- package/schematics/ngAdd/index.js +2 -2
|
@@ -9,7 +9,8 @@ import { packageMetadata } from '../package-metadata';
|
|
|
9
9
|
import { merge, interval, Subscription } from 'rxjs';
|
|
10
10
|
import { concatMap, filter, map, skipWhile, take, takeUntil, tap } from 'rxjs/operators';
|
|
11
11
|
import { isDocumentAvailable, KendoInput, hasObservers, anyChanged, isChanged, EventsOutsideAngularDirective, ResizeSensorComponent, Keys, TemplateContextDirective } from '@progress/kendo-angular-common';
|
|
12
|
-
import {
|
|
12
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
13
|
+
import { isPresent, guid, getter, shuffleData, sameCharsOnly, matchText, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, updateActionSheetAdaptiveAppearance, setListBoxAriaLabelledBy, setActionSheetTitle, animationDuration } from '../common/util';
|
|
13
14
|
import { SelectionService } from '../common/selection/selection.service';
|
|
14
15
|
import { NavigationService, NavigationEvent } from '../common/navigation/navigation.service';
|
|
15
16
|
import { ItemTemplateDirective } from '../common/templates/item-template.directive';
|
|
@@ -44,7 +45,8 @@ import * as i3 from "../common/selection/selection.service";
|
|
|
44
45
|
import * as i4 from "../common/navigation/navigation.service";
|
|
45
46
|
import * as i5 from "../common/disabled-items/disabled-items.service";
|
|
46
47
|
import * as i6 from "../common/data.service";
|
|
47
|
-
import * as i7 from "@angular
|
|
48
|
+
import * as i7 from "@progress/kendo-angular-utils";
|
|
49
|
+
import * as i8 from "@angular/forms";
|
|
48
50
|
/**
|
|
49
51
|
* @hidden
|
|
50
52
|
*/
|
|
@@ -85,6 +87,7 @@ export class DropDownListComponent {
|
|
|
85
87
|
renderer;
|
|
86
88
|
cdr;
|
|
87
89
|
injector;
|
|
90
|
+
adaptiveService;
|
|
88
91
|
/**
|
|
89
92
|
* @hidden
|
|
90
93
|
*/
|
|
@@ -548,11 +551,12 @@ export class DropDownListComponent {
|
|
|
548
551
|
* @hidden
|
|
549
552
|
*/
|
|
550
553
|
onResize() {
|
|
551
|
-
|
|
554
|
+
const currentWindowSize = this.adaptiveService.size;
|
|
555
|
+
if (this.isAdaptiveModeEnabled && this.windowSize !== currentWindowSize) {
|
|
552
556
|
if (this.isOpen) {
|
|
553
557
|
this.togglePopup(false);
|
|
554
558
|
}
|
|
555
|
-
this.windowSize =
|
|
559
|
+
this.windowSize = currentWindowSize;
|
|
556
560
|
}
|
|
557
561
|
if (this.isOpen && !this.isActionSheetExpanded) {
|
|
558
562
|
const popupWrapper = this.popupRef.popupElement;
|
|
@@ -702,7 +706,7 @@ export class DropDownListComponent {
|
|
|
702
706
|
_size = 'medium';
|
|
703
707
|
_rounded = 'medium';
|
|
704
708
|
_fillMode = 'solid';
|
|
705
|
-
constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, injector) {
|
|
709
|
+
constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, injector, adaptiveService) {
|
|
706
710
|
this.wrapper = wrapper;
|
|
707
711
|
this.localization = localization;
|
|
708
712
|
this.popupService = popupService;
|
|
@@ -714,6 +718,7 @@ export class DropDownListComponent {
|
|
|
714
718
|
this.renderer = renderer;
|
|
715
719
|
this.cdr = cdr;
|
|
716
720
|
this.injector = injector;
|
|
721
|
+
this.adaptiveService = adaptiveService;
|
|
717
722
|
validatePackage(packageMetadata);
|
|
718
723
|
this.direction = localization.rtl ? 'rtl' : 'ltr';
|
|
719
724
|
this.data = [];
|
|
@@ -737,7 +742,7 @@ export class DropDownListComponent {
|
|
|
737
742
|
this.setComponentClasses();
|
|
738
743
|
}
|
|
739
744
|
ngAfterViewInit() {
|
|
740
|
-
this.windowSize =
|
|
745
|
+
this.windowSize = this.adaptiveService.size;
|
|
741
746
|
if (this.actionSheet && isDocumentAvailable()) {
|
|
742
747
|
// The following syntax is used as it does not violate CSP compliance
|
|
743
748
|
this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');
|
|
@@ -977,7 +982,7 @@ export class DropDownListComponent {
|
|
|
977
982
|
if (this.virtual) {
|
|
978
983
|
this.virtual.skip = 0;
|
|
979
984
|
}
|
|
980
|
-
this.windowSize =
|
|
985
|
+
this.windowSize = this.adaptiveService.size;
|
|
981
986
|
if (this.isAdaptive) {
|
|
982
987
|
this.openActionSheet();
|
|
983
988
|
return;
|
|
@@ -1416,7 +1421,7 @@ export class DropDownListComponent {
|
|
|
1416
1421
|
* @hidden
|
|
1417
1422
|
*/
|
|
1418
1423
|
handleClick() {
|
|
1419
|
-
this.windowSize =
|
|
1424
|
+
this.windowSize = this.adaptiveService.size;
|
|
1420
1425
|
if (this.isAdaptive) {
|
|
1421
1426
|
this.togglePopup(true);
|
|
1422
1427
|
}
|
|
@@ -1457,7 +1462,7 @@ export class DropDownListComponent {
|
|
|
1457
1462
|
this.closed.emit();
|
|
1458
1463
|
}
|
|
1459
1464
|
openActionSheet() {
|
|
1460
|
-
this.windowSize =
|
|
1465
|
+
this.windowSize = this.adaptiveService.size;
|
|
1461
1466
|
this.actionSheet.toggle(true);
|
|
1462
1467
|
this.cdr.detectChanges();
|
|
1463
1468
|
setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);
|
|
@@ -1471,7 +1476,7 @@ export class DropDownListComponent {
|
|
|
1471
1476
|
this.actionSheetSearchBar.focus();
|
|
1472
1477
|
}
|
|
1473
1478
|
}
|
|
1474
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: i3.SelectionService }, { token: i4.NavigationService }, { token: i5.DisabledItemsService }, { token: i6.DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
1479
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownListComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: i3.SelectionService }, { token: i4.NavigationService }, { token: i5.DisabledItemsService }, { token: i6.DataService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1475
1480
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropDownListComponent, isStandalone: true, selector: "kendo-dropdownlist", inputs: { customIconClass: "customIconClass", showStickyHeader: "showStickyHeader", icon: "icon", svgIcon: "svgIcon", loading: "loading", data: "data", value: "value", textField: "textField", valueField: "valueField", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle", popupSettings: "popupSettings", listHeight: "listHeight", defaultItem: "defaultItem", disabled: "disabled", itemDisabled: "itemDisabled", readonly: "readonly", filterable: "filterable", virtual: "virtual", ignoreCase: "ignoreCase", delay: "delay", valuePrimitive: "valuePrimitive", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", leftRightArrowsNavigation: "leftRightArrowsNavigation", focusableId: ["id", "focusableId"] }, outputs: { valueChange: "valueChange", filterChange: "filterChange", selectionChange: "selectionChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur" }, host: { listeners: { "keydown": "keydown($event)", "keypress": "keypress($event)", "click": "click()" }, properties: { "class.k-readonly": "this.readonly", "class.k-dropdownlist": "this.hostClasses", "class.k-picker": "this.hostClasses", "class.k-disabled": "this.isDisabledClass", "attr.aria-disabled": "this.isDisabledClass", "class.k-loading": "this.isLoading", "attr.id": "this.focusableId", "attr.dir": "this.dir", "attr.tabindex": "this.hostTabIndex", "attr.readonly": "this.readonlyAttr", "attr.aria-busy": "this.isBusy", "attr.role": "this.role", "attr.aria-haspopup": "this.haspopup", "attr.aria-invalid": "this.hostAriaInvalid" } }, providers: [
|
|
1476
1481
|
DROPDOWNLIST_VALUE_ACCESSOR,
|
|
1477
1482
|
DataService,
|
|
@@ -1657,7 +1662,7 @@ export class DropDownListComponent {
|
|
|
1657
1662
|
}">
|
|
1658
1663
|
</ng-template>
|
|
1659
1664
|
</ng-template>
|
|
1660
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type:
|
|
1665
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: FilterInputDirective, selector: "[filterInput]", inputs: ["filterInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "isMultiselect", "multipleSelection"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
|
|
1661
1666
|
}
|
|
1662
1667
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownListComponent, decorators: [{
|
|
1663
1668
|
type: Component,
|
|
@@ -1854,7 +1859,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1854
1859
|
standalone: true,
|
|
1855
1860
|
imports: [LocalizedMessagesDirective, NgIf, TemplateContextDirective, NgClass, EventsOutsideAngularDirective, IconWrapperComponent, NgTemplateOutlet, ResizeSensorComponent, ResponsiveRendererComponent, ReactiveFormsModule, FilterInputDirective, FormsModule, SelectableDirective, ListComponent]
|
|
1856
1861
|
}]
|
|
1857
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.SelectionService }, { type: i4.NavigationService }, { type: i5.DisabledItemsService }, { type: i6.DataService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }]; }, propDecorators: { customIconClass: [{
|
|
1862
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.SelectionService }, { type: i4.NavigationService }, { type: i5.DisabledItemsService }, { type: i6.DataService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i7.AdaptiveService }]; }, propDecorators: { customIconClass: [{
|
|
1858
1863
|
type: Input
|
|
1859
1864
|
}], responsiveRendererComponent: [{
|
|
1860
1865
|
type: ViewChild,
|
|
@@ -7,6 +7,7 @@ import { KENDO_DROPDOWNLIST } from '../directives';
|
|
|
7
7
|
import { ResizeBatchService } from '@progress/kendo-angular-common';
|
|
8
8
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
9
9
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
10
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "./dropdownlist.component";
|
|
12
13
|
import * as i2 from "../common/templates/fixed-group-template.directive";
|
|
@@ -41,7 +42,8 @@ export class DropDownListModule {
|
|
|
41
42
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownListModule, providers: [
|
|
42
43
|
PopupService,
|
|
43
44
|
ResizeBatchService,
|
|
44
|
-
IconsService
|
|
45
|
+
IconsService,
|
|
46
|
+
AdaptiveService
|
|
45
47
|
], imports: [i1.DropDownListComponent] });
|
|
46
48
|
}
|
|
47
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownListModule, decorators: [{
|
|
@@ -52,7 +54,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
52
54
|
providers: [
|
|
53
55
|
PopupService,
|
|
54
56
|
ResizeBatchService,
|
|
55
|
-
IconsService
|
|
57
|
+
IconsService,
|
|
58
|
+
AdaptiveService
|
|
56
59
|
]
|
|
57
60
|
}]
|
|
58
61
|
}] });
|
|
@@ -8,6 +8,7 @@ import { PopupService } from '@progress/kendo-angular-popup';
|
|
|
8
8
|
import { KENDO_ADORNMENTS, KENDO_TOGGLEBUTTONTABSTOP, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
9
9
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
10
10
|
import { DialogContainerService, DialogService, WindowContainerService, WindowService } from '@progress/kendo-angular-dialog';
|
|
11
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "./autocomplete/autocomplete.component";
|
|
13
14
|
import * as i2 from "./common/templates/fixed-group-template.directive";
|
|
@@ -75,13 +76,13 @@ import * as i31 from "./dropdowntrees/summary-tag/summary-tag.directive";
|
|
|
75
76
|
export class DropDownsModule {
|
|
76
77
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
77
78
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DropDownsModule, imports: [i1.AutoCompleteComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i11.ComboBoxComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective, i12.MultiColumnComboBoxComponent, i13.ComboBoxColumnComponent, i14.ColumnHeaderTemplateDirective, i15.ColumnCellTemplateDirective, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective, i16.DropDownListComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i18.MultiSelectComponent, i19.SummaryTagDirective, i20.CustomItemTemplateDirective, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i21.GroupTagTemplateDirective, i22.TagTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i23.DropDownTreeComponent, i24.DropDownTreeFlatBindingDirective, i25.DropDownTreeHierarchyBindingDirective, i26.DropDownTreesExpandDirective, i27.NodeTemplateDirective, i5.HeaderTemplateDirective, i3.FooterTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i9.CustomMessagesComponent, i28.MultiSelectTreeComponent, i29.MultiSelectTreeFlatBindingDirective, i30.MultiSelectTreeHierarchyBindingDirective, i26.DropDownTreesExpandDirective, i27.NodeTemplateDirective, i31.MultiSelectTreeSummaryTagDirective, i21.GroupTagTemplateDirective, i22.TagTemplateDirective, i5.HeaderTemplateDirective, i3.FooterTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i9.CustomMessagesComponent, i10.PrefixTemplateDirective, i10.SuffixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective], exports: [i1.AutoCompleteComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i11.ComboBoxComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective, i12.MultiColumnComboBoxComponent, i13.ComboBoxColumnComponent, i14.ColumnHeaderTemplateDirective, i15.ColumnCellTemplateDirective, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective, i16.DropDownListComponent, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i18.MultiSelectComponent, i19.SummaryTagDirective, i20.CustomItemTemplateDirective, i2.FixedGroupTemplateDirective, i3.FooterTemplateDirective, i4.GroupTemplateDirective, i21.GroupTagTemplateDirective, i22.TagTemplateDirective, i5.HeaderTemplateDirective, i6.ItemTemplateDirective, i7.NoDataTemplateDirective, i8.FilterDirective, i9.CustomMessagesComponent, i10.SuffixTemplateDirective, i10.PrefixTemplateDirective, i10.SeparatorComponent, i23.DropDownTreeComponent, i24.DropDownTreeFlatBindingDirective, i25.DropDownTreeHierarchyBindingDirective, i26.DropDownTreesExpandDirective, i27.NodeTemplateDirective, i5.HeaderTemplateDirective, i3.FooterTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i9.CustomMessagesComponent, i28.MultiSelectTreeComponent, i29.MultiSelectTreeFlatBindingDirective, i30.MultiSelectTreeHierarchyBindingDirective, i26.DropDownTreesExpandDirective, i27.NodeTemplateDirective, i31.MultiSelectTreeSummaryTagDirective, i21.GroupTagTemplateDirective, i22.TagTemplateDirective, i5.HeaderTemplateDirective, i3.FooterTemplateDirective, i17.ValueTemplateDirective, i7.NoDataTemplateDirective, i9.CustomMessagesComponent, i10.PrefixTemplateDirective, i10.SuffixTemplateDirective, i10.SeparatorComponent, i10.ToggleButtonTabStopDirective] });
|
|
78
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownsModule, providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService], imports: [i1.AutoCompleteComponent, i10.SeparatorComponent, i11.ComboBoxComponent, i10.SeparatorComponent, i12.MultiColumnComboBoxComponent, i10.SeparatorComponent, i16.DropDownListComponent, i18.MultiSelectComponent, i10.SeparatorComponent, i23.DropDownTreeComponent, i28.MultiSelectTreeComponent, i10.SeparatorComponent] });
|
|
79
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownsModule, providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, AdaptiveService], imports: [i1.AutoCompleteComponent, i10.SeparatorComponent, i11.ComboBoxComponent, i10.SeparatorComponent, i12.MultiColumnComboBoxComponent, i10.SeparatorComponent, i16.DropDownListComponent, i18.MultiSelectComponent, i10.SeparatorComponent, i23.DropDownTreeComponent, i28.MultiSelectTreeComponent, i10.SeparatorComponent] });
|
|
79
80
|
}
|
|
80
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownsModule, decorators: [{
|
|
81
82
|
type: NgModule,
|
|
82
83
|
args: [{
|
|
83
84
|
exports: [...KENDO_DROPDOWNS, ...KENDO_ADORNMENTS, ...KENDO_TOGGLEBUTTONTABSTOP],
|
|
84
85
|
imports: [...KENDO_DROPDOWNS, ...KENDO_ADORNMENTS, ...KENDO_TOGGLEBUTTONTABSTOP],
|
|
85
|
-
providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService]
|
|
86
|
+
providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, AdaptiveService]
|
|
86
87
|
}]
|
|
87
88
|
}] });
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, Output, NgZone, Renderer2, TemplateRef, ViewChild, ChangeDetectorRef, ContentChild, forwardRef, ViewContainerRef, isDevMode, Injector } from '@angular/core';
|
|
6
6
|
import { anyChanged, EventsOutsideAngularDirective, guid, hasObservers, isChanged, isDocumentAvailable, KendoInput, Keys, ResizeSensorComponent, TemplateContextDirective } from '@progress/kendo-angular-common';
|
|
7
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
7
8
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
8
9
|
import { TreeViewComponent, DataBoundComponent, ExpandableComponent, SelectDirective } from '@progress/kendo-angular-treeview';
|
|
9
10
|
import { getter, touchEnabled } from '@progress/kendo-common';
|
|
@@ -14,7 +15,7 @@ import { NavigationService } from '../common/navigation/navigation.service';
|
|
|
14
15
|
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
15
16
|
import { SelectionService } from '../common/selection/selection.service';
|
|
16
17
|
import { PreventableEvent } from '../common/models/preventable-event';
|
|
17
|
-
import { animationDuration, getFillModeClass, getRoundedClass, getSearchableItems, getSizeClass, inDropDown, isArray, isLetter, isPresent, isTruthy, isUntouched, noop, setActionSheetTitle, updateActionSheetAdaptiveAppearance
|
|
18
|
+
import { animationDuration, getFillModeClass, getRoundedClass, getSearchableItems, getSizeClass, inDropDown, isArray, isLetter, isPresent, isTruthy, isUntouched, noop, setActionSheetTitle, updateActionSheetAdaptiveAppearance } from '../common/util';
|
|
18
19
|
import { NoDataTemplateDirective } from '../common/templates/no-data-template.directive';
|
|
19
20
|
import { of, Subject, Subscription } from 'rxjs';
|
|
20
21
|
import { debounceTime, take, tap } from 'rxjs/operators';
|
|
@@ -33,6 +34,7 @@ import * as i0 from "@angular/core";
|
|
|
33
34
|
import * as i1 from "@progress/kendo-angular-popup";
|
|
34
35
|
import * as i2 from "../common/navigation/navigation.service";
|
|
35
36
|
import * as i3 from "@progress/kendo-angular-l10n";
|
|
37
|
+
import * as i4 from "@progress/kendo-angular-utils";
|
|
36
38
|
const DEFAULT_POPUP_SETTINGS = { animate: true };
|
|
37
39
|
const hasChildren = () => false;
|
|
38
40
|
const fetchChildren = () => of([]);
|
|
@@ -54,6 +56,7 @@ export class DropDownTreeComponent {
|
|
|
54
56
|
_zone;
|
|
55
57
|
cdr;
|
|
56
58
|
localization;
|
|
59
|
+
adaptiveService;
|
|
57
60
|
/**
|
|
58
61
|
* @hidden
|
|
59
62
|
*/
|
|
@@ -631,7 +634,7 @@ export class DropDownTreeComponent {
|
|
|
631
634
|
// Keep an instance of the last focused node for when the popup close is prevented
|
|
632
635
|
// in order to be able to properly restore the focus
|
|
633
636
|
lastNodeOnFocus;
|
|
634
|
-
constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization) {
|
|
637
|
+
constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization, adaptiveService) {
|
|
635
638
|
this.injector = injector;
|
|
636
639
|
this.wrapper = wrapper;
|
|
637
640
|
this.popupService = popupService;
|
|
@@ -640,6 +643,7 @@ export class DropDownTreeComponent {
|
|
|
640
643
|
this._zone = _zone;
|
|
641
644
|
this.cdr = cdr;
|
|
642
645
|
this.localization = localization;
|
|
646
|
+
this.adaptiveService = adaptiveService;
|
|
643
647
|
this.direction = localization.rtl ? 'rtl' : 'ltr';
|
|
644
648
|
this.subscribeEvents();
|
|
645
649
|
this.subscribeTouchEvents();
|
|
@@ -695,7 +699,7 @@ export class DropDownTreeComponent {
|
|
|
695
699
|
}
|
|
696
700
|
}
|
|
697
701
|
ngAfterViewInit() {
|
|
698
|
-
this.windowSize =
|
|
702
|
+
this.windowSize = this.adaptiveService.size;
|
|
699
703
|
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
|
|
700
704
|
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
|
|
701
705
|
if (this.actionSheet && isDocumentAvailable()) {
|
|
@@ -708,11 +712,12 @@ export class DropDownTreeComponent {
|
|
|
708
712
|
* @hidden
|
|
709
713
|
*/
|
|
710
714
|
onResize() {
|
|
711
|
-
|
|
715
|
+
const currentWindowSize = this.adaptiveService.size;
|
|
716
|
+
if (this.isAdaptiveModeEnabled && this.windowSize !== currentWindowSize) {
|
|
712
717
|
if (this.isOpen) {
|
|
713
718
|
this.togglePopup(false);
|
|
714
719
|
}
|
|
715
|
-
this.windowSize =
|
|
720
|
+
this.windowSize = currentWindowSize;
|
|
716
721
|
}
|
|
717
722
|
if (this.isOpen && !this.isActionSheetExpanded) {
|
|
718
723
|
const popupWrapper = this.popupRef.popupElement;
|
|
@@ -1079,7 +1084,7 @@ export class DropDownTreeComponent {
|
|
|
1079
1084
|
return eventArgs.isDefaultPrevented();
|
|
1080
1085
|
}
|
|
1081
1086
|
createPopup() {
|
|
1082
|
-
this.windowSize =
|
|
1087
|
+
this.windowSize = this.adaptiveService.size;
|
|
1083
1088
|
if (this.isAdaptive) {
|
|
1084
1089
|
this.openActionSheet();
|
|
1085
1090
|
this.cdr.detectChanges();
|
|
@@ -1141,7 +1146,7 @@ export class DropDownTreeComponent {
|
|
|
1141
1146
|
handleClick(e) {
|
|
1142
1147
|
// The check is needed otherwise when appended to the component, the popup reopens on click
|
|
1143
1148
|
// https://github.com/telerik/kendo-angular/issues/3738
|
|
1144
|
-
this.windowSize =
|
|
1149
|
+
this.windowSize = this.adaptiveService.size;
|
|
1145
1150
|
if (!this.isActionSheetExpanded) {
|
|
1146
1151
|
if ((this.popupRef && !this.popupRef.popupElement.contains(e.target))
|
|
1147
1152
|
|| (!this.popupRef && !e.target.className.includes('k-treeview-leaf'))) {
|
|
@@ -1316,7 +1321,7 @@ export class DropDownTreeComponent {
|
|
|
1316
1321
|
this.closed.emit();
|
|
1317
1322
|
}
|
|
1318
1323
|
openActionSheet() {
|
|
1319
|
-
this.windowSize =
|
|
1324
|
+
this.windowSize = this.adaptiveService.size;
|
|
1320
1325
|
this.isActionSheetExpanded = true;
|
|
1321
1326
|
this.actionSheet.toggle(true);
|
|
1322
1327
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
@@ -1327,7 +1332,7 @@ export class DropDownTreeComponent {
|
|
|
1327
1332
|
this.removeTreeViewFromTabOrder();
|
|
1328
1333
|
this.filterable && this.actionSheetSearchBar.focus();
|
|
1329
1334
|
}
|
|
1330
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1335
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i2.NavigationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.LocalizationService }, { token: i4.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1331
1336
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropDownTreeComponent, isStandalone: true, selector: "kendo-dropdowntree", inputs: { icon: "icon", svgIcon: "svgIcon", loading: "loading", clearButton: "clearButton", data: "data", value: "value", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", hasChildren: "hasChildren", fetchChildren: "fetchChildren", placeholder: "placeholder", popupSettings: "popupSettings", dataItem: "dataItem", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", itemDisabled: "itemDisabled", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", loadOnDemand: "loadOnDemand", filterable: "filterable", filter: "filter", focusableId: "focusableId", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle" }, outputs: { open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", onFocus: "focus", onBlur: "blur", valueChange: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.k-dropdowntree": "this.hostClasses", "class.k-picker": "this.hostClasses", "attr.readonly": "this.isReadonly", "attr.aria-invalid": "this.hostAriaInvalid", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.aria-busy": "this.isBusy", "attr.aria-controls": "this.hostAriaControls", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.isAriaExpanded", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-readonly": "this.readonly" } }, providers: [
|
|
1332
1337
|
DataService,
|
|
1333
1338
|
SelectionService,
|
|
@@ -1739,7 +1744,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1739
1744
|
standalone: true,
|
|
1740
1745
|
imports: [LocalizedMessagesDirective, NgIf, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, ResponsiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent]
|
|
1741
1746
|
}]
|
|
1742
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i2.NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }]; }, propDecorators: { icon: [{
|
|
1747
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i2.NavigationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.LocalizationService }, { type: i4.AdaptiveService }]; }, propDecorators: { icon: [{
|
|
1743
1748
|
type: Input
|
|
1744
1749
|
}], svgIcon: [{
|
|
1745
1750
|
type: Input
|
|
@@ -8,6 +8,7 @@ import { ResizeBatchService } from '@progress/kendo-angular-common';
|
|
|
8
8
|
import { DialogContainerService, DialogService, WindowContainerService, WindowService } from '@progress/kendo-angular-dialog';
|
|
9
9
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
10
10
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
11
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "./dropdowntree.component";
|
|
13
14
|
import * as i2 from "./data-binding/dropdowntree/flat-binding.directive";
|
|
@@ -54,7 +55,8 @@ export class DropDownTreesModule {
|
|
|
54
55
|
DialogContainerService,
|
|
55
56
|
DialogService,
|
|
56
57
|
WindowService,
|
|
57
|
-
WindowContainerService
|
|
58
|
+
WindowContainerService,
|
|
59
|
+
AdaptiveService
|
|
58
60
|
], imports: [i1.DropDownTreeComponent, i11.MultiSelectTreeComponent] });
|
|
59
61
|
}
|
|
60
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropDownTreesModule, decorators: [{
|
|
@@ -69,7 +71,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
69
71
|
DialogContainerService,
|
|
70
72
|
DialogService,
|
|
71
73
|
WindowService,
|
|
72
|
-
WindowContainerService
|
|
74
|
+
WindowContainerService,
|
|
75
|
+
AdaptiveService
|
|
73
76
|
]
|
|
74
77
|
}]
|
|
75
78
|
}] });
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Injector, Input, isDevMode, NgZone, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
6
6
|
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
7
|
import { anyChanged, guid, hasObservers, Keys, KendoInput, isDocumentAvailable, EventsOutsideAngularDirective, ResizeSensorComponent, TemplateContextDirective } from '@progress/kendo-angular-common';
|
|
8
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
8
9
|
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
9
10
|
import { NavigationService } from '../common/navigation/navigation.service';
|
|
10
11
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
@@ -16,7 +17,7 @@ import { PreventableEvent } from '../common/models/preventable-event';
|
|
|
16
17
|
import { NavigationAction } from '../common/navigation/navigation-action';
|
|
17
18
|
import { RemoveTagEvent } from '../common/models/remove-tag-event';
|
|
18
19
|
import { MultiSelectTreeMessages } from '../common/constants/error-messages';
|
|
19
|
-
import { animationDuration, fetchDescendentNodes, getFillModeClass, getRoundedClass, getSearchableItems, getSizeClass, hasProps, isArray, isLetter, isObject, isObjectArray, isPresent, isTruthy, isUntouched, noop, parseNumber, setActionSheetTitle, updateActionSheetAdaptiveAppearance, valueFrom
|
|
20
|
+
import { animationDuration, fetchDescendentNodes, getFillModeClass, getRoundedClass, getSearchableItems, getSizeClass, hasProps, isArray, isLetter, isObject, isObjectArray, isPresent, isTruthy, isUntouched, noop, parseNumber, setActionSheetTitle, updateActionSheetAdaptiveAppearance, valueFrom } from '../common/util';
|
|
20
21
|
import { HeaderTemplateDirective } from '../common/templates/header-template.directive';
|
|
21
22
|
import { FooterTemplateDirective } from '../common/templates/footer-template.directive';
|
|
22
23
|
import { NodeTemplateDirective } from './templates/node-template.directive';
|
|
@@ -41,6 +42,7 @@ import * as i1 from "@progress/kendo-angular-popup";
|
|
|
41
42
|
import * as i2 from "../common/navigation/navigation.service";
|
|
42
43
|
import * as i3 from "@progress/kendo-angular-l10n";
|
|
43
44
|
import * as i4 from "./lookup/lookup.service";
|
|
45
|
+
import * as i5 from "@progress/kendo-angular-utils";
|
|
44
46
|
const DEFAULT_POPUP_SETTINGS = { animate: true };
|
|
45
47
|
const DEFAULT_CHECKABLE_SETTINGS = { checkChildren: true, checkOnClick: true };
|
|
46
48
|
const hasChildren = () => false;
|
|
@@ -63,6 +65,7 @@ export class MultiSelectTreeComponent {
|
|
|
63
65
|
localization;
|
|
64
66
|
cdr;
|
|
65
67
|
lookup;
|
|
68
|
+
adaptiveService;
|
|
66
69
|
/**
|
|
67
70
|
* @hidden
|
|
68
71
|
*/
|
|
@@ -736,11 +739,12 @@ export class MultiSelectTreeComponent {
|
|
|
736
739
|
* @hidden
|
|
737
740
|
*/
|
|
738
741
|
onResize() {
|
|
739
|
-
|
|
742
|
+
const currentWindowSize = this.adaptiveService.size;
|
|
743
|
+
if (this.isAdaptiveModeEnabled && this.windowSize !== currentWindowSize) {
|
|
740
744
|
if (this.isOpen) {
|
|
741
745
|
this.togglePopup(false);
|
|
742
746
|
}
|
|
743
|
-
this.windowSize =
|
|
747
|
+
this.windowSize = currentWindowSize;
|
|
744
748
|
}
|
|
745
749
|
if (this.isOpen && !this.isActionSheetExpanded) {
|
|
746
750
|
const popupWrapper = this.popupRef.popupElement;
|
|
@@ -805,7 +809,7 @@ export class MultiSelectTreeComponent {
|
|
|
805
809
|
lastNodeOnFocus;
|
|
806
810
|
// Used as check to avoid unnecessary 'registerLookupItems()' calls upon initialization
|
|
807
811
|
isContentInit;
|
|
808
|
-
constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup) {
|
|
812
|
+
constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup, adaptiveService) {
|
|
809
813
|
this.injector = injector;
|
|
810
814
|
this.wrapper = wrapper;
|
|
811
815
|
this.popupService = popupService;
|
|
@@ -815,6 +819,7 @@ export class MultiSelectTreeComponent {
|
|
|
815
819
|
this.localization = localization;
|
|
816
820
|
this.cdr = cdr;
|
|
817
821
|
this.lookup = lookup;
|
|
822
|
+
this.adaptiveService = adaptiveService;
|
|
818
823
|
this.direction = localization.rtl ? 'rtl' : 'ltr';
|
|
819
824
|
this.subscribeEvents();
|
|
820
825
|
this.subscribeFocusEvents();
|
|
@@ -840,7 +845,7 @@ export class MultiSelectTreeComponent {
|
|
|
840
845
|
this._initiallyCheckedItems = [...this.checkedItems];
|
|
841
846
|
}
|
|
842
847
|
ngAfterViewInit() {
|
|
843
|
-
this.windowSize =
|
|
848
|
+
this.windowSize = this.adaptiveService.size;
|
|
844
849
|
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));
|
|
845
850
|
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
|
|
846
851
|
if (this.actionSheet && isDocumentAvailable()) {
|
|
@@ -1269,7 +1274,7 @@ export class MultiSelectTreeComponent {
|
|
|
1269
1274
|
return eventArgs.isDefaultPrevented();
|
|
1270
1275
|
}
|
|
1271
1276
|
createPopup() {
|
|
1272
|
-
this.windowSize =
|
|
1277
|
+
this.windowSize = this.adaptiveService.size;
|
|
1273
1278
|
if (this.isAdaptive) {
|
|
1274
1279
|
this.openActionSheet();
|
|
1275
1280
|
this.cdr.detectChanges();
|
|
@@ -1631,7 +1636,7 @@ export class MultiSelectTreeComponent {
|
|
|
1631
1636
|
this.closed.emit();
|
|
1632
1637
|
}
|
|
1633
1638
|
openActionSheet() {
|
|
1634
|
-
this.windowSize =
|
|
1639
|
+
this.windowSize = this.adaptiveService.size;
|
|
1635
1640
|
this.actionSheet.toggle(true);
|
|
1636
1641
|
this.title = setActionSheetTitle(this.wrapper, this.title);
|
|
1637
1642
|
this.cdr.detectChanges();
|
|
@@ -1640,7 +1645,7 @@ export class MultiSelectTreeComponent {
|
|
|
1640
1645
|
this.opened.emit();
|
|
1641
1646
|
this.filterable && this.actionSheetSearchBar.focus();
|
|
1642
1647
|
}
|
|
1643
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i0.Renderer2 }, { token: i2.NavigationService }, { token: i0.NgZone }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i4.MultiSelectTreeLookupService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1648
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.PopupService }, { token: i0.Renderer2 }, { token: i2.NavigationService }, { token: i0.NgZone }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i4.MultiSelectTreeLookupService }, { token: i5.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1644
1649
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectTreeComponent, isStandalone: true, selector: "kendo-multiselecttree", inputs: { adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle", tabindex: "tabindex", size: "size", rounded: "rounded", fillMode: "fillMode", popupSettings: "popupSettings", checkableSettings: "checkableSettings", data: "data", value: "value", dataItems: "dataItems", textField: "textField", valueField: "valueField", valueDepth: "valueDepth", loading: "loading", placeholder: "placeholder", listHeight: "listHeight", disabled: "disabled", readonly: "readonly", valuePrimitive: "valuePrimitive", loadOnDemand: "loadOnDemand", focusableId: "focusableId", clearButton: "clearButton", filterable: "filterable", checkAll: "checkAll", hasChildren: "hasChildren", fetchChildren: "fetchChildren", isNodeExpanded: "isNodeExpanded", isNodeVisible: "isNodeVisible", itemDisabled: "itemDisabled", tagMapper: "tagMapper" }, outputs: { onFocus: "focus", onBlur: "blur", open: "open", opened: "opened", close: "close", closed: "closed", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse", valueChange: "valueChange", removeTag: "removeTag", filterChange: "filterChange" }, host: { properties: { "class.k-multiselecttree": "this.hostClasses", "class.k-input": "this.hostClasses", "class.k-disabled": "this.isDisabled", "attr.aria-disabled": "this.isDisabled", "attr.aria-autocomplete": "this.hostAriaAutocomplete", "class.k-loading": "this.isLoading", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-busy": "this.isBusy", "attr.id": "this.id", "attr.dir": "this.direction", "attr.tabindex": "this.hostTabIndex", "attr.role": "this.role", "attr.aria-haspopup": "this.ariaHasPopup", "attr.readonly": "this.isReadonly", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-activedescendant": "this.ariaActiveDescendant", "class.k-readonly": "this.readonly" } }, providers: [
|
|
1645
1650
|
LocalizationService,
|
|
1646
1651
|
NavigationService,
|
|
@@ -2149,7 +2154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2149
2154
|
standalone: true,
|
|
2150
2155
|
imports: [LocalizedMessagesDirective, TagListComponent, NgIf, IconWrapperComponent, NgTemplateOutlet, ResponsiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent]
|
|
2151
2156
|
}]
|
|
2152
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i0.Renderer2 }, { type: i2.NavigationService }, { type: i0.NgZone }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i4.MultiSelectTreeLookupService }]; }, propDecorators: { hostClasses: [{
|
|
2157
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.PopupService }, { type: i0.Renderer2 }, { type: i2.NavigationService }, { type: i0.NgZone }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i4.MultiSelectTreeLookupService }, { type: i5.AdaptiveService }]; }, propDecorators: { hostClasses: [{
|
|
2153
2158
|
type: HostBinding,
|
|
2154
2159
|
args: ['class.k-multiselecttree']
|
|
2155
2160
|
}, {
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* Copyright © 2024 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, animationDuration, isTruthy,
|
|
5
|
+
import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, setListBoxAriaLabelledBy, 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, Injector } from '@angular/core';
|
|
8
8
|
import { Subscription, Subject, of, merge } from 'rxjs';
|
|
9
9
|
import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective, isControlRequired, SeparatorComponent, ResizeSensorComponent, Keys, TemplateContextDirective } from '@progress/kendo-angular-common';
|
|
10
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
10
11
|
import { catchError, filter, map, take, tap } from 'rxjs/operators';
|
|
11
12
|
import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
|
|
12
13
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
@@ -50,6 +51,7 @@ import * as i3 from "../common/data.service";
|
|
|
50
51
|
import * as i4 from "../common/selection/selection.service";
|
|
51
52
|
import * as i5 from "../common/navigation/navigation.service";
|
|
52
53
|
import * as i6 from "../common/disabled-items/disabled-items.service";
|
|
54
|
+
import * as i7 from "@progress/kendo-angular-utils";
|
|
53
55
|
const MULTISELECT_VALUE_ACCESSOR = {
|
|
54
56
|
multi: true,
|
|
55
57
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -89,6 +91,7 @@ export class MultiSelectComponent {
|
|
|
89
91
|
_zone;
|
|
90
92
|
injector;
|
|
91
93
|
hostElement;
|
|
94
|
+
adaptiveService;
|
|
92
95
|
/**
|
|
93
96
|
* @hidden
|
|
94
97
|
*/
|
|
@@ -277,11 +280,12 @@ export class MultiSelectComponent {
|
|
|
277
280
|
* @hidden
|
|
278
281
|
*/
|
|
279
282
|
onResize() {
|
|
280
|
-
|
|
283
|
+
const currentWindowSize = this.adaptiveService.size;
|
|
284
|
+
if (this.isAdaptiveModeEnabled && this.windowSize !== currentWindowSize) {
|
|
281
285
|
if (this.isOpen) {
|
|
282
286
|
this.togglePopup(false);
|
|
283
287
|
}
|
|
284
|
-
this.windowSize =
|
|
288
|
+
this.windowSize = currentWindowSize;
|
|
285
289
|
this.cdr.detectChanges();
|
|
286
290
|
}
|
|
287
291
|
if (this.isOpen && !this.isActionSheetExpanded) {
|
|
@@ -767,7 +771,7 @@ export class MultiSelectComponent {
|
|
|
767
771
|
_fillMode = 'solid';
|
|
768
772
|
_subtitle;
|
|
769
773
|
_valueHolder = [];
|
|
770
|
-
constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, hostElement) {
|
|
774
|
+
constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, hostElement, adaptiveService) {
|
|
771
775
|
this.wrapper = wrapper;
|
|
772
776
|
this.localization = localization;
|
|
773
777
|
this.popupService = popupService;
|
|
@@ -781,6 +785,7 @@ export class MultiSelectComponent {
|
|
|
781
785
|
this._zone = _zone;
|
|
782
786
|
this.injector = injector;
|
|
783
787
|
this.hostElement = hostElement;
|
|
788
|
+
this.adaptiveService = adaptiveService;
|
|
784
789
|
validatePackage(packageMetadata);
|
|
785
790
|
this.popupMouseDownHandler = this.onMouseDown.bind(this);
|
|
786
791
|
this.data = [];
|
|
@@ -1127,7 +1132,7 @@ export class MultiSelectComponent {
|
|
|
1127
1132
|
}
|
|
1128
1133
|
}
|
|
1129
1134
|
ngAfterViewInit() {
|
|
1130
|
-
this.windowSize =
|
|
1135
|
+
this.windowSize = this.adaptiveService.size;
|
|
1131
1136
|
this.cdr.detectChanges();
|
|
1132
1137
|
this.searchbar.setInputSize();
|
|
1133
1138
|
this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
|
|
@@ -1223,7 +1228,7 @@ export class MultiSelectComponent {
|
|
|
1223
1228
|
* @hidden
|
|
1224
1229
|
*/
|
|
1225
1230
|
handleClick() {
|
|
1226
|
-
this.windowSize =
|
|
1231
|
+
this.windowSize = this.adaptiveService.size;
|
|
1227
1232
|
if (this.isAdaptive) {
|
|
1228
1233
|
this.togglePopup(true);
|
|
1229
1234
|
}
|
|
@@ -1701,7 +1706,7 @@ export class MultiSelectComponent {
|
|
|
1701
1706
|
if (this.virtual) {
|
|
1702
1707
|
this.virtual.skip = 0;
|
|
1703
1708
|
}
|
|
1704
|
-
this.windowSize =
|
|
1709
|
+
this.windowSize = this.adaptiveService.size;
|
|
1705
1710
|
if (this.isAdaptive) {
|
|
1706
1711
|
this.openActionSheet();
|
|
1707
1712
|
return;
|
|
@@ -1797,7 +1802,7 @@ export class MultiSelectComponent {
|
|
|
1797
1802
|
this.closed.emit();
|
|
1798
1803
|
}
|
|
1799
1804
|
openActionSheet() {
|
|
1800
|
-
this.windowSize =
|
|
1805
|
+
this.windowSize = this.adaptiveService.size;
|
|
1801
1806
|
this.actionSheet.toggle(true);
|
|
1802
1807
|
// Stores the current value state until the user either accepts or cancels it
|
|
1803
1808
|
this._valueHolder = [...this.value];
|
|
@@ -1811,7 +1816,7 @@ export class MultiSelectComponent {
|
|
|
1811
1816
|
this.selectionService.focus(this.selectionService.focused);
|
|
1812
1817
|
this.actionSheetSearchBar.focus();
|
|
1813
1818
|
}
|
|
1814
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.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: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1819
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.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: i0.Injector }, { token: i0.ElementRef }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1815
1820
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectComponent, isStandalone: true, selector: "kendo-multiselect", inputs: { showStickyHeader: "showStickyHeader", 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", inputAttributes: "inputAttributes" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur", removeTag: "removeTag" }, host: { properties: { "class.k-readonly": "this.readonly", "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: [
|
|
1816
1821
|
MULTISELECT_VALUE_ACCESSOR,
|
|
1817
1822
|
DataService,
|
|
@@ -2248,7 +2253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2248
2253
|
standalone: true,
|
|
2249
2254
|
imports: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, TagListComponent, SearchBarComponent, IconWrapperComponent, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, NgClass, SelectableDirective, ListComponent]
|
|
2250
2255
|
}]
|
|
2251
|
-
}], 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: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { responsiveRendererComponent: [{
|
|
2256
|
+
}], 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: i0.Injector }, { type: i0.ElementRef }, { type: i7.AdaptiveService }]; }, propDecorators: { responsiveRendererComponent: [{
|
|
2252
2257
|
type: ViewChild,
|
|
2253
2258
|
args: [ResponsiveRendererComponent]
|
|
2254
2259
|
}], showStickyHeader: [{
|
|
@@ -7,6 +7,7 @@ import { KENDO_MULTISELECT } from '../directives';
|
|
|
7
7
|
import { KENDO_ADORNMENTS, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
8
8
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
9
9
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
10
|
+
import { AdaptiveService } from '@progress/kendo-angular-utils';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "./multiselect.component";
|
|
12
13
|
import * as i2 from "./summary-tag.directive";
|
|
@@ -51,7 +52,8 @@ export class MultiSelectModule {
|
|
|
51
52
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectModule, providers: [
|
|
52
53
|
PopupService,
|
|
53
54
|
ResizeBatchService,
|
|
54
|
-
IconsService
|
|
55
|
+
IconsService,
|
|
56
|
+
AdaptiveService
|
|
55
57
|
], imports: [i1.MultiSelectComponent, i14.SeparatorComponent, i14.SeparatorComponent] });
|
|
56
58
|
}
|
|
57
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectModule, decorators: [{
|
|
@@ -62,7 +64,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
62
64
|
providers: [
|
|
63
65
|
PopupService,
|
|
64
66
|
ResizeBatchService,
|
|
65
|
-
IconsService
|
|
67
|
+
IconsService,
|
|
68
|
+
AdaptiveService
|
|
66
69
|
]
|
|
67
70
|
}]
|
|
68
71
|
}] });
|