@progress/kendo-angular-dropdowns 14.4.0-develop.9 → 15.0.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ 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, Injector } from '@angular/core';
8
8
  import { Subscription, Subject, of, merge } from 'rxjs';
9
9
  import { catchError, filter, map, tap } from 'rxjs/operators';
10
- import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged } from '@progress/kendo-angular-common';
10
+ import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged, SuffixTemplateDirective, PrefixTemplateDirective } from '@progress/kendo-angular-common';
11
11
  import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
12
12
  import { validatePackage } from '@progress/kendo-licensing';
13
13
  import { packageMetadata } from '../package-metadata';
@@ -45,16 +45,17 @@ import * as i3 from "../common/data.service";
45
45
  import * as i4 from "../common/selection/selection.service";
46
46
  import * as i5 from "../common/navigation/navigation.service";
47
47
  import * as i6 from "../common/disabled-items/disabled-items.service";
48
- import * as i7 from "../common/taglist.component";
49
- import * as i8 from "../common/searchbar.component";
50
- import * as i9 from "@progress/kendo-angular-icons";
51
- import * as i10 from "@progress/kendo-angular-common";
48
+ import * as i7 from "@progress/kendo-angular-common";
49
+ import * as i8 from "../common/taglist.component";
50
+ import * as i9 from "../common/searchbar.component";
51
+ import * as i10 from "@progress/kendo-angular-icons";
52
52
  import * as i11 from "../common/action-sheet.component";
53
53
  import * as i12 from "../common/list.component";
54
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";
55
+ import * as i14 from "../common/shared-events.directive";
56
+ import * as i15 from "@angular/common";
57
+ import * as i16 from "../common/templates/template-context.directive";
58
+ import * as i17 from "../common/selection/selectable.directive";
58
59
  const MULTISELECT_VALUE_ACCESSOR = {
59
60
  multi: true,
60
61
  provide: NG_VALUE_ACCESSOR,
@@ -81,7 +82,7 @@ const DEFAULT_FILL_MODE = 'solid';
81
82
  * ```
82
83
  */
83
84
  export class MultiSelectComponent {
84
- constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled, injector) {
85
+ constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, touchEnabled, injector, hostElement) {
85
86
  this.wrapper = wrapper;
86
87
  this.localization = localization;
87
88
  this.popupService = popupService;
@@ -95,6 +96,7 @@ export class MultiSelectComponent {
95
96
  this._zone = _zone;
96
97
  this.touchEnabled = touchEnabled;
97
98
  this.injector = injector;
99
+ this.hostElement = hostElement;
98
100
  /**
99
101
  * @hidden
100
102
  */
@@ -271,6 +273,14 @@ export class MultiSelectComponent {
271
273
  * Fires each time the MultiSelect gets blurred.
272
274
  */
273
275
  this.onBlur = new EventEmitter();
276
+ /**
277
+ * Fires each time the user focuses the `input` element.
278
+ */
279
+ this.inputFocus = new EventEmitter();
280
+ /**
281
+ * Fires each time the `input` element gets blurred.
282
+ */
283
+ this.inputBlur = new EventEmitter();
274
284
  /**
275
285
  * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselecttree %}#toc-notifying-on-removing-group-tags)).
276
286
  * This event is preventable. If you cancel it, the tag will not be removed.
@@ -355,14 +365,12 @@ export class MultiSelectComponent {
355
365
  /**
356
366
  * @hidden
357
367
  */
358
- onSearchBarFocus() {
359
- if (!this.isFocused) {
360
- this.isFocused = true;
361
- if (hasObservers(this.onFocus)) {
362
- this._zone.run(() => {
363
- this.onFocus.emit();
364
- });
365
- }
368
+ handleInputFocus() {
369
+ this.handleFocus();
370
+ if (hasObservers(this.inputFocus)) {
371
+ this._zone.run(() => {
372
+ this.inputFocus.emit();
373
+ });
366
374
  }
367
375
  }
368
376
  /**
@@ -386,13 +394,53 @@ export class MultiSelectComponent {
386
394
  /**
387
395
  * @hidden
388
396
  */
389
- onSearchBarBlur() {
397
+ handleFocus() {
398
+ this._zone.run(() => {
399
+ if (!this.isFocused && hasObservers(this.onFocus)) {
400
+ this.onFocus.emit();
401
+ }
402
+ this.isFocused = true;
403
+ });
404
+ }
405
+ /**
406
+ * @hidden
407
+ */
408
+ handleBlur() {
390
409
  if (!this.isActionSheetExpanded) {
391
410
  if (!this.isFocused) {
392
411
  return;
393
412
  }
394
413
  this.isFocused = false;
395
414
  if (hasObservers(this.onBlur) ||
415
+ hasObservers(this.filterChange) ||
416
+ hasObservers(this.close) ||
417
+ isUntouched(this.wrapper.nativeElement)) {
418
+ this._zone.run(() => {
419
+ this.closePopup();
420
+ if (!(this.isOpen && this.allowCustom)) {
421
+ this.clearFilter();
422
+ }
423
+ this.onBlur.emit();
424
+ this.onTouchedCallback();
425
+ });
426
+ }
427
+ else {
428
+ if (!this.allowCustom) {
429
+ this.clearFilter();
430
+ }
431
+ this.closePopup();
432
+ }
433
+ }
434
+ }
435
+ /**
436
+ * @hidden
437
+ */
438
+ handleInputBlur() {
439
+ if (!this.isActionSheetExpanded) {
440
+ if (!this.isFocused) {
441
+ return;
442
+ }
443
+ if (hasObservers(this.inputBlur) ||
396
444
  hasObservers(this.filterChange) ||
397
445
  hasObservers(this.close) ||
398
446
  isUntouched(this.wrapper.nativeElement) ||
@@ -402,7 +450,7 @@ export class MultiSelectComponent {
402
450
  if (!(this.isOpen && this.allowCustom)) {
403
451
  this.clearFilter();
404
452
  }
405
- this.onBlur.emit();
453
+ this.inputBlur.emit();
406
454
  this.onTouchedCallback();
407
455
  });
408
456
  }
@@ -1028,7 +1076,7 @@ export class MultiSelectComponent {
1028
1076
  this.windowSize = windowSize();
1029
1077
  this.cdr.detectChanges();
1030
1078
  this.searchbar.setInputSize();
1031
- this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
1079
+ this.subs.add(this.renderer.listen(this.searchbar.input.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
1032
1080
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
1033
1081
  if (this.actionSheet && isDocumentAvailable()) {
1034
1082
  // The following syntax is used as it does not violate CSP compliance
@@ -1684,8 +1732,8 @@ export class MultiSelectComponent {
1684
1732
  this.actionSheetSearchBar.focus();
1685
1733
  }
1686
1734
  }
1687
- 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 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1688
- MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiSelectComponent, 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" }, 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: [
1735
+ 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 }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1736
+ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiSelectComponent, 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" }, 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-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
1689
1737
  MULTISELECT_VALUE_ACCESSOR,
1690
1738
  DataService,
1691
1739
  SelectionService,
@@ -1702,7 +1750,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
1702
1750
  {
1703
1751
  provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)
1704
1752
  }
1705
- ], 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: `
1753
+ ], 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 }, { propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, 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: `
1706
1754
  <ng-container kendoMultiSelectLocalizedMessages
1707
1755
  i18n-noDataText="kendo.multiselect.noDataText|The text displayed in the popup when there are no items"
1708
1756
  noDataText="NO DATA FOUND"
@@ -1720,69 +1768,89 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
1720
1768
  cancelButton="Cancel"
1721
1769
  >
1722
1770
  </ng-container>
1723
- <div class="k-input-values">
1724
- <kendo-taglist
1725
- [size]="size"
1726
- [rounded]="rounded"
1727
- [fillMode]="fillMode"
1728
- [id]="tagListId"
1729
- [tags]="tags"
1730
- [textField]="textField"
1731
- [valueField]="valueField"
1732
- [focused]="focusedTagIndex"
1733
- [disabled]="disabled"
1734
- [template]="tagTemplate"
1735
- [groupTemplate]="groupTagTemplate"
1736
- [tagPrefix]="tagPrefix"
1737
- [disabledIndices]="disabledIndices"
1738
- (removeTag)="handleRemoveTag($event)"
1739
- >
1740
- </kendo-taglist>
1741
- <kendo-searchbar
1742
- #searchbar
1743
- [ariaExpanded]="isOpen"
1744
- [ariaControls]="ariaControls"
1745
- [id]="focusableId"
1746
- [role]="'combobox'"
1747
- [tagListId]="tagListId"
1748
- [isLoading]="loading"
1749
- [isFilterable]="filterable"
1750
- [activeDescendant]="activeDescendant"
1751
- [userInput]="text"
1752
- [disabled]="disabled"
1753
- [readonly]="readonly || this.isAdaptive"
1754
- [tabIndex]="tabIndex"
1755
- [placeholder]="placeholder"
1756
- (onNavigate)="handleNavigate($event)"
1757
- (valueChange)="handleFilter($event)"
1758
- (onBlur)="onSearchBarBlur()"
1759
- (onFocus)="onSearchBarFocus()"
1760
- (click)="handleClick()"
1761
- >
1762
- </kendo-searchbar>
1763
- </div>
1764
1771
 
1765
- <span
1766
- *ngIf="!loading && !readonly && clearButton && (tags?.length || text?.length)"
1767
- class="k-clear-value"
1768
- [style.visibility]="clearButtonVisiblity"
1769
- [attr.title]="messageFor('clearTitle')"
1770
- role="button"
1771
- tabindex="-1"
1772
- (mousedown)="clearAll($event)"
1772
+ <ng-container
1773
+ kendoDropDownSharedEvents
1774
+ [hostElement]="hostElement"
1775
+ [(isFocused)]="isFocused"
1776
+ (handleBlur)="handleBlur()"
1777
+ (onFocus)="handleFocus()"
1773
1778
  >
1774
- <kendo-icon-wrapper
1775
- class="k-icon"
1776
- name="x"
1777
- [svgIcon]="xIcon"
1779
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
1780
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
1781
+ </ng-template>
1782
+ </span>
1783
+ <kendo-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-separator>
1784
+ <div class="k-input-values">
1785
+ <kendo-taglist
1786
+ [size]="size"
1787
+ [rounded]="rounded"
1788
+ [fillMode]="fillMode"
1789
+ [id]="tagListId"
1790
+ [tags]="tags"
1791
+ [textField]="textField"
1792
+ [valueField]="valueField"
1793
+ [focused]="focusedTagIndex"
1794
+ [disabled]="disabled"
1795
+ [template]="tagTemplate"
1796
+ [groupTemplate]="groupTagTemplate"
1797
+ [tagPrefix]="tagPrefix"
1798
+ [disabledIndices]="disabledIndices"
1799
+ (removeTag)="handleRemoveTag($event)"
1800
+ >
1801
+ </kendo-taglist>
1802
+ <kendo-searchbar
1803
+ #searchbar
1804
+ [ariaExpanded]="isOpen"
1805
+ [ariaControls]="ariaControls"
1806
+ [id]="focusableId"
1807
+ [role]="'combobox'"
1808
+ [tagListId]="tagListId"
1809
+ [isLoading]="loading"
1810
+ [isFilterable]="filterable"
1811
+ [activeDescendant]="activeDescendant"
1812
+ [userInput]="text"
1813
+ [disabled]="disabled"
1814
+ [readonly]="readonly || this.isAdaptive"
1815
+ [tabIndex]="tabIndex"
1816
+ [placeholder]="placeholder"
1817
+ (onNavigate)="handleNavigate($event)"
1818
+ (valueChange)="handleFilter($event)"
1819
+ (onBlur)="handleInputBlur()"
1820
+ (onFocus)="handleInputFocus()"
1821
+ (click)="handleClick()"
1822
+ >
1823
+ </kendo-searchbar>
1824
+ </div>
1825
+
1826
+ <span
1827
+ *ngIf="!loading && !readonly && clearButton && (tags?.length || text?.length)"
1828
+ class="k-clear-value"
1829
+ [style.visibility]="clearButtonVisiblity"
1830
+ [attr.title]="messageFor('clearTitle')"
1831
+ role="button"
1832
+ tabindex="-1"
1833
+ (mousedown)="clearAll($event)"
1778
1834
  >
1779
- </kendo-icon-wrapper>
1780
- </span>
1781
- <span
1782
- *ngIf="loading"
1783
- class="k-icon k-i-loading k-input-loading-icon"
1784
- >
1785
- </span>
1835
+ <kendo-icon-wrapper
1836
+ class="k-icon"
1837
+ name="x"
1838
+ [svgIcon]="xIcon"
1839
+ >
1840
+ </kendo-icon-wrapper>
1841
+ </span>
1842
+ <span
1843
+ *ngIf="loading"
1844
+ class="k-icon k-i-loading k-input-loading-icon"
1845
+ >
1846
+ </span>
1847
+ <kendo-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-separator>
1848
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
1849
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
1850
+ </ng-template>
1851
+ </span>
1852
+ </ng-container>
1853
+
1786
1854
  <ng-template #popupTemplate>
1787
1855
  <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1788
1856
  </ng-template>
@@ -1877,7 +1945,7 @@ MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
1877
1945
  }">
1878
1946
  </ng-template>
1879
1947
  </ng-template>
1880
- `, 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", "size"], 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", "showStickyHeader", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }], 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"] }] });
1948
+ `, isInline: true, components: [{ type: i7.SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { type: i8.TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { type: i9.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: i10.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i7.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", "showStickyHeader", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }], directives: [{ type: i13.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i14.SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i15.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i16.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i15.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i17.SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "isMultiselect", "multipleSelection"] }] });
1881
1949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
1882
1950
  type: Component,
1883
1951
  args: [{
@@ -1919,69 +1987,89 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1919
1987
  cancelButton="Cancel"
1920
1988
  >
1921
1989
  </ng-container>
1922
- <div class="k-input-values">
1923
- <kendo-taglist
1924
- [size]="size"
1925
- [rounded]="rounded"
1926
- [fillMode]="fillMode"
1927
- [id]="tagListId"
1928
- [tags]="tags"
1929
- [textField]="textField"
1930
- [valueField]="valueField"
1931
- [focused]="focusedTagIndex"
1932
- [disabled]="disabled"
1933
- [template]="tagTemplate"
1934
- [groupTemplate]="groupTagTemplate"
1935
- [tagPrefix]="tagPrefix"
1936
- [disabledIndices]="disabledIndices"
1937
- (removeTag)="handleRemoveTag($event)"
1938
- >
1939
- </kendo-taglist>
1940
- <kendo-searchbar
1941
- #searchbar
1942
- [ariaExpanded]="isOpen"
1943
- [ariaControls]="ariaControls"
1944
- [id]="focusableId"
1945
- [role]="'combobox'"
1946
- [tagListId]="tagListId"
1947
- [isLoading]="loading"
1948
- [isFilterable]="filterable"
1949
- [activeDescendant]="activeDescendant"
1950
- [userInput]="text"
1951
- [disabled]="disabled"
1952
- [readonly]="readonly || this.isAdaptive"
1953
- [tabIndex]="tabIndex"
1954
- [placeholder]="placeholder"
1955
- (onNavigate)="handleNavigate($event)"
1956
- (valueChange)="handleFilter($event)"
1957
- (onBlur)="onSearchBarBlur()"
1958
- (onFocus)="onSearchBarFocus()"
1959
- (click)="handleClick()"
1960
- >
1961
- </kendo-searchbar>
1962
- </div>
1963
1990
 
1964
- <span
1965
- *ngIf="!loading && !readonly && clearButton && (tags?.length || text?.length)"
1966
- class="k-clear-value"
1967
- [style.visibility]="clearButtonVisiblity"
1968
- [attr.title]="messageFor('clearTitle')"
1969
- role="button"
1970
- tabindex="-1"
1971
- (mousedown)="clearAll($event)"
1991
+ <ng-container
1992
+ kendoDropDownSharedEvents
1993
+ [hostElement]="hostElement"
1994
+ [(isFocused)]="isFocused"
1995
+ (handleBlur)="handleBlur()"
1996
+ (onFocus)="handleFocus()"
1972
1997
  >
1973
- <kendo-icon-wrapper
1974
- class="k-icon"
1975
- name="x"
1976
- [svgIcon]="xIcon"
1998
+ <span *ngIf="prefixTemplate" class="k-input-prefix k-input-prefix-horizontal">
1999
+ <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
2000
+ </ng-template>
2001
+ </span>
2002
+ <kendo-separator *ngIf="prefixTemplate && prefixTemplate.showSeparator"></kendo-separator>
2003
+ <div class="k-input-values">
2004
+ <kendo-taglist
2005
+ [size]="size"
2006
+ [rounded]="rounded"
2007
+ [fillMode]="fillMode"
2008
+ [id]="tagListId"
2009
+ [tags]="tags"
2010
+ [textField]="textField"
2011
+ [valueField]="valueField"
2012
+ [focused]="focusedTagIndex"
2013
+ [disabled]="disabled"
2014
+ [template]="tagTemplate"
2015
+ [groupTemplate]="groupTagTemplate"
2016
+ [tagPrefix]="tagPrefix"
2017
+ [disabledIndices]="disabledIndices"
2018
+ (removeTag)="handleRemoveTag($event)"
2019
+ >
2020
+ </kendo-taglist>
2021
+ <kendo-searchbar
2022
+ #searchbar
2023
+ [ariaExpanded]="isOpen"
2024
+ [ariaControls]="ariaControls"
2025
+ [id]="focusableId"
2026
+ [role]="'combobox'"
2027
+ [tagListId]="tagListId"
2028
+ [isLoading]="loading"
2029
+ [isFilterable]="filterable"
2030
+ [activeDescendant]="activeDescendant"
2031
+ [userInput]="text"
2032
+ [disabled]="disabled"
2033
+ [readonly]="readonly || this.isAdaptive"
2034
+ [tabIndex]="tabIndex"
2035
+ [placeholder]="placeholder"
2036
+ (onNavigate)="handleNavigate($event)"
2037
+ (valueChange)="handleFilter($event)"
2038
+ (onBlur)="handleInputBlur()"
2039
+ (onFocus)="handleInputFocus()"
2040
+ (click)="handleClick()"
2041
+ >
2042
+ </kendo-searchbar>
2043
+ </div>
2044
+
2045
+ <span
2046
+ *ngIf="!loading && !readonly && clearButton && (tags?.length || text?.length)"
2047
+ class="k-clear-value"
2048
+ [style.visibility]="clearButtonVisiblity"
2049
+ [attr.title]="messageFor('clearTitle')"
2050
+ role="button"
2051
+ tabindex="-1"
2052
+ (mousedown)="clearAll($event)"
1977
2053
  >
1978
- </kendo-icon-wrapper>
1979
- </span>
1980
- <span
1981
- *ngIf="loading"
1982
- class="k-icon k-i-loading k-input-loading-icon"
1983
- >
1984
- </span>
2054
+ <kendo-icon-wrapper
2055
+ class="k-icon"
2056
+ name="x"
2057
+ [svgIcon]="xIcon"
2058
+ >
2059
+ </kendo-icon-wrapper>
2060
+ </span>
2061
+ <span
2062
+ *ngIf="loading"
2063
+ class="k-icon k-i-loading k-input-loading-icon"
2064
+ >
2065
+ </span>
2066
+ <kendo-separator *ngIf="suffixTemplate && suffixTemplate.showSeparator"></kendo-separator>
2067
+ <span *ngIf="suffixTemplate" class="k-input-suffix k-input-suffix-horizontal">
2068
+ <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
2069
+ </ng-template>
2070
+ </span>
2071
+ </ng-container>
2072
+
1985
2073
  <ng-template #popupTemplate>
1986
2074
  <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1987
2075
  </ng-template>
@@ -2083,7 +2171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2083
2171
  }, {
2084
2172
  type: Inject,
2085
2173
  args: [TOUCH_ENABLED]
2086
- }] }, { type: i0.Injector }]; }, propDecorators: { responsiveRendererComponent: [{
2174
+ }] }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { responsiveRendererComponent: [{
2087
2175
  type: ViewChild,
2088
2176
  args: [ResponsiveRendererComponent]
2089
2177
  }], showStickyHeader: [{
@@ -2165,6 +2253,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2165
2253
  }], onBlur: [{
2166
2254
  type: Output,
2167
2255
  args: ['blur']
2256
+ }], inputFocus: [{
2257
+ type: Output
2258
+ }], inputBlur: [{
2259
+ type: Output
2168
2260
  }], removeTag: [{
2169
2261
  type: Output
2170
2262
  }], container: [{
@@ -2206,6 +2298,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2206
2298
  }], noDataTemplate: [{
2207
2299
  type: ContentChild,
2208
2300
  args: [NoDataTemplateDirective, { static: false }]
2301
+ }], suffixTemplate: [{
2302
+ type: ContentChild,
2303
+ args: [SuffixTemplateDirective]
2304
+ }], prefixTemplate: [{
2305
+ type: ContentChild,
2306
+ args: [PrefixTemplateDirective]
2209
2307
  }], hostClasses: [{
2210
2308
  type: HostBinding,
2211
2309
  args: ['class.k-multiselect']
@@ -10,6 +10,8 @@ import { SummaryTagDirective } from './summary-tag.directive';
10
10
  import { SharedModule } from '../common/shared.module';
11
11
  import { SharedDirectivesModule } from '../common/shared-directives.module';
12
12
  import { TOUCH_ENABLED } from '../common/constants/touch-enabled';
13
+ import { AdornmentsModule } from '@progress/kendo-angular-common';
14
+ import { SharedEventsModule } from '../common/shared-events.module';
13
15
  import * as i0 from "@angular/core";
14
16
  const MULTISELECT_DIRECTIVES = [
15
17
  MultiSelectComponent,
@@ -37,16 +39,16 @@ export class MultiSelectModule {
37
39
  MultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
38
40
  MultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelectComponent,
39
41
  SummaryTagDirective,
40
- CustomItemTemplateDirective], imports: [SharedModule], exports: [MultiSelectComponent,
42
+ CustomItemTemplateDirective], imports: [SharedModule, AdornmentsModule, SharedEventsModule], exports: [MultiSelectComponent,
41
43
  SummaryTagDirective,
42
- CustomItemTemplateDirective, SharedDirectivesModule] });
43
- MultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule], SharedDirectivesModule] });
44
+ CustomItemTemplateDirective, SharedDirectivesModule, AdornmentsModule] });
45
+ MultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectModule, providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }], imports: [[SharedModule, AdornmentsModule, SharedEventsModule], SharedDirectivesModule, AdornmentsModule] });
44
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiSelectModule, decorators: [{
45
47
  type: NgModule,
46
48
  args: [{
47
49
  declarations: [MULTISELECT_DIRECTIVES],
48
- exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule],
49
- imports: [SharedModule],
50
+ exports: [MULTISELECT_DIRECTIVES, SharedDirectivesModule, AdornmentsModule],
51
+ imports: [SharedModule, AdornmentsModule, SharedEventsModule],
50
52
  providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]
51
53
  }]
52
54
  }] });
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-dropdowns',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1705406728,
13
- version: '14.4.0-develop.9',
12
+ publishDate: 1706543975,
13
+ version: '15.0.0-develop.1',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
15
15
  };