@progress/kendo-angular-dropdowns 25.3.0-develop.9 → 25.3.1-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,8 +37,8 @@ const packageMetadata = {
37
37
  productName: 'Kendo UI for Angular',
38
38
  productCode: 'KENDOUIANGULAR',
39
39
  productCodes: ['KENDOUIANGULAR'],
40
- publishDate: 1791302004,
41
- version: '25.3.0-develop.9',
40
+ publishDate: 1791447311,
41
+ version: '25.3.1-develop.1',
42
42
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
43
43
  };
44
44
 
@@ -10120,6 +10120,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImpo
10120
10120
  args: ['attr.aria-orientation']
10121
10121
  }] } });
10122
10122
 
10123
+ const defaultTagMapper = (tags) => tags || [];
10123
10124
  const MULTISELECT_VALUE_ACCESSOR = {
10124
10125
  multi: true,
10125
10126
  provide: NG_VALUE_ACCESSOR,
@@ -10689,11 +10690,14 @@ class MultiSelectComponent {
10689
10690
  /**
10690
10691
  * Sets a function that transforms selected data items into display tags.
10691
10692
  * Use this to customize how selected items appear as tags.
10693
+ * An explicitly set numeric `summaryTagAfter` value takes precedence over the `tagMapper`.
10692
10694
  *
10693
10695
  * @default (tags) => tags || []
10694
10696
  */
10695
10697
  set tagMapper(fn) { this._tagMapper.set(fn); }
10696
- get tagMapper() { return this._tagMapper(); }
10698
+ get tagMapper() {
10699
+ return this.isCustomTagMapperActive ? this._tagMapper() : this.summaryTagMapper;
10700
+ }
10697
10701
  /**
10698
10702
  * Allows users to add custom values not present in the data source.
10699
10703
  * Set to `true` to enable custom value input.
@@ -10874,6 +10878,16 @@ class MultiSelectComponent {
10874
10878
  : pageData;
10875
10879
  return data;
10876
10880
  }
10881
+ get isCustomTagMapperActive() {
10882
+ return this._tagMapper() !== defaultTagMapper && !isPresent(this.summaryTagAfter);
10883
+ }
10884
+ get effectiveSummaryTagAfter() {
10885
+ if (this.summaryTagAfter !== undefined) {
10886
+ return this.summaryTagAfter;
10887
+ }
10888
+ const selectAllSummaryTagAfter = 10;
10889
+ return this.selectAll ? selectAllSummaryTagAfter : null;
10890
+ }
10877
10891
  _focusedTagIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedTagIndex" }] : []));
10878
10892
  constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, adaptiveService) {
10879
10893
  this.wrapper = wrapper;
@@ -11242,9 +11256,6 @@ class MultiSelectComponent {
11242
11256
  if (isChanged('valueNormalizer', changes)) {
11243
11257
  this.createCustomValueStream();
11244
11258
  }
11245
- if (anyChanged(['selectAll', 'summaryTagAfter'], changes, false)) {
11246
- this.refreshSummaryTagMapper();
11247
- }
11248
11259
  if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'selectAll', 'summaryTagAfter'], changes)) {
11249
11260
  this.setState(this.value);
11250
11261
  }
@@ -11372,7 +11383,7 @@ class MultiSelectComponent {
11372
11383
  _readonly = signal(false, ...(ngDevMode ? [{ debugName: "_readonly" }] : []));
11373
11384
  _filterable = signal(false, ...(ngDevMode ? [{ debugName: "_filterable" }] : []));
11374
11385
  _clearButton = signal(true, ...(ngDevMode ? [{ debugName: "_clearButton" }] : []));
11375
- _tagMapper = signal((tags) => tags || [], ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
11386
+ _tagMapper = signal(defaultTagMapper, ...(ngDevMode ? [{ debugName: "_tagMapper" }] : []));
11376
11387
  _allowCustom = signal(false, ...(ngDevMode ? [{ debugName: "_allowCustom" }] : []));
11377
11388
  _valueNormalizer = signal((text) => text.pipe(map((userInput) => {
11378
11389
  const comparer = (item) => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();
@@ -11403,6 +11414,18 @@ class MultiSelectComponent {
11403
11414
  direction;
11404
11415
  differ;
11405
11416
  valueChangeDetected;
11417
+ summaryTagMapper = (tags) => {
11418
+ const showAfter = this.effectiveSummaryTagAfter;
11419
+ if (!tags || showAfter === null) {
11420
+ return defaultTagMapper(tags);
11421
+ }
11422
+ if (tags.length > showAfter) {
11423
+ const result = tags.slice(0, showAfter);
11424
+ result.push(tags.slice(showAfter, tags.length));
11425
+ return result;
11426
+ }
11427
+ return tags.slice ? tags.slice() : tags;
11428
+ };
11406
11429
  subscribeEvents() {
11407
11430
  if (!isDocumentAvailable()) {
11408
11431
  return;
@@ -11949,6 +11972,9 @@ class MultiSelectComponent {
11949
11972
  });
11950
11973
  }
11951
11974
  buildTags(items) {
11975
+ if (this.isCustomTagMapperActive) {
11976
+ return this.tagMapper(items);
11977
+ }
11952
11978
  if (this.allowCustom && this.selectAll && this.valueField) {
11953
11979
  const data = this.getDataItems();
11954
11980
  const dataItemValues = new Set(data.map(item => getter(item, this.valueField)));
@@ -11963,10 +11989,9 @@ class MultiSelectComponent {
11963
11989
  customItems.push(item);
11964
11990
  }
11965
11991
  });
11966
- const hasExplicitSummaryTagAfter = this.summaryTagAfter !== undefined;
11967
11992
  const totalItems = listItems.length + customItems.length;
11968
11993
  const result = [];
11969
- const effectiveSummaryAfter = hasExplicitSummaryTagAfter ? this.summaryTagAfter : (this.selectAll ? 10 : null);
11994
+ const effectiveSummaryAfter = this.effectiveSummaryTagAfter;
11970
11995
  const shouldCreateSummaryTag = listItems.length > 0 &&
11971
11996
  (effectiveSummaryAfter !== null && totalItems > effectiveSummaryAfter);
11972
11997
  if (shouldCreateSummaryTag) {
@@ -11994,25 +12019,6 @@ class MultiSelectComponent {
11994
12019
  }
11995
12020
  return this.tagMapper(items);
11996
12021
  }
11997
- refreshSummaryTagMapper() {
11998
- const effectiveSummaryAfter = this.summaryTagAfter !== undefined
11999
- ? this.summaryTagAfter
12000
- : (this.selectAll ? 10 : null);
12001
- if (effectiveSummaryAfter !== null) {
12002
- const showAfter = effectiveSummaryAfter;
12003
- this.tagMapper = (tags) => {
12004
- if (tags.length > showAfter) {
12005
- const result = tags.slice(0, showAfter);
12006
- result.push(tags.slice(showAfter, tags.length));
12007
- return result;
12008
- }
12009
- return tags.slice ? tags.slice() : tags;
12010
- };
12011
- }
12012
- else {
12013
- this.tagMapper = (tags) => tags || [];
12014
- }
12015
- }
12016
12022
  emitValueChange() {
12017
12023
  this.onChangeCallback(this.value);
12018
12024
  this.valueChange.emit(this.value);
package/index.d.ts CHANGED
@@ -3244,6 +3244,7 @@ declare class MultiSelectComponent implements OnDestroy, OnChanges, OnInit, DoCh
3244
3244
  /**
3245
3245
  * Sets a function that transforms selected data items into display tags.
3246
3246
  * Use this to customize how selected items appear as tags.
3247
+ * An explicitly set numeric `summaryTagAfter` value takes precedence over the `tagMapper`.
3247
3248
  *
3248
3249
  * @default (tags) => tags || []
3249
3250
  */
@@ -3386,6 +3387,8 @@ declare class MultiSelectComponent implements OnDestroy, OnChanges, OnInit, DoCh
3386
3387
  private get isPartiallySelectedComputed();
3387
3388
  private get hasCustomValueItem();
3388
3389
  private get availableItemsForSelectAll();
3390
+ private get isCustomTagMapperActive();
3391
+ private get effectiveSummaryTagAfter();
3389
3392
  private _focusedTagIndex;
3390
3393
  constructor(wrapper: ElementRef, localization: LocalizationService, popupService: PopupService, dataService: DataService, selectionService: SelectionService, navigationService: NavigationService, disabledItemsService: DisabledItemsService, cdr: ChangeDetectorRef, differs: KeyValueDiffers, renderer: Renderer2, _zone: NgZone, injector: Injector, adaptiveService: AdaptiveService);
3391
3394
  get listContainerClasses(): any[];
@@ -3531,6 +3534,7 @@ declare class MultiSelectComponent implements OnDestroy, OnChanges, OnInit, DoCh
3531
3534
  private direction;
3532
3535
  private differ;
3533
3536
  private valueChangeDetected;
3537
+ private summaryTagMapper;
3534
3538
  private subscribeEvents;
3535
3539
  private subscribeTouchEvents;
3536
3540
  private unsubscribeEvents;
@@ -3580,7 +3584,6 @@ declare class MultiSelectComponent implements OnDestroy, OnChanges, OnInit, DoCh
3580
3584
  private destroyPopup;
3581
3585
  private createPopup;
3582
3586
  private buildTags;
3583
- private refreshSummaryTagMapper;
3584
3587
  private emitValueChange;
3585
3588
  private resolveDataItemFromTags;
3586
3589
  private firstFocusableIndex;
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1791302004,
11
- "version": "25.3.0-develop.9",
10
+ "publishDate": 1791447311,
11
+ "version": "25.3.1-develop.1",
12
12
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-dropdowns",
3
- "version": "25.3.0-develop.9",
3
+ "version": "25.3.1-develop.1",
4
4
  "description": "A wide variety of native Angular dropdown components including AutoComplete, ComboBox, DropDownList, DropDownTree, MultiColumnComboBox, MultiSelect, and MultiSelectTree ",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -132,7 +132,7 @@
132
132
  "package": {
133
133
  "productName": "Kendo UI for Angular",
134
134
  "productCode": "KENDOUIANGULAR",
135
- "publishDate": 1791302004,
135
+ "publishDate": 1791447311,
136
136
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
137
137
  }
138
138
  },
@@ -143,19 +143,19 @@
143
143
  "@angular/forms": "20 - 22",
144
144
  "@angular/platform-browser": "20 - 22",
145
145
  "@progress/kendo-licensing": "^1.11.0",
146
- "@progress/kendo-angular-common": "25.3.0-develop.9",
147
- "@progress/kendo-angular-utils": "25.3.0-develop.9",
148
- "@progress/kendo-angular-l10n": "25.3.0-develop.9",
149
- "@progress/kendo-angular-navigation": "25.3.0-develop.9",
150
- "@progress/kendo-angular-popup": "25.3.0-develop.9",
151
- "@progress/kendo-angular-icons": "25.3.0-develop.9",
152
- "@progress/kendo-angular-inputs": "25.3.0-develop.9",
153
- "@progress/kendo-angular-treeview": "25.3.0-develop.9",
146
+ "@progress/kendo-angular-common": "25.3.1-develop.1",
147
+ "@progress/kendo-angular-utils": "25.3.1-develop.1",
148
+ "@progress/kendo-angular-l10n": "25.3.1-develop.1",
149
+ "@progress/kendo-angular-navigation": "25.3.1-develop.1",
150
+ "@progress/kendo-angular-popup": "25.3.1-develop.1",
151
+ "@progress/kendo-angular-icons": "25.3.1-develop.1",
152
+ "@progress/kendo-angular-inputs": "25.3.1-develop.1",
153
+ "@progress/kendo-angular-treeview": "25.3.1-develop.1",
154
154
  "rxjs": "^6.5.3 || ^7.0.0"
155
155
  },
156
156
  "dependencies": {
157
157
  "tslib": "^2.3.1",
158
- "@progress/kendo-angular-schematics": "25.3.0-develop.9",
158
+ "@progress/kendo-angular-schematics": "25.3.1-develop.1",
159
159
  "@progress/kendo-common": "^1.0.1"
160
160
  },
161
161
  "schematics": "./schematics/collection.json",
@@ -9,9 +9,9 @@ const schematics_1 = require("@angular-devkit/schematics");
9
9
  function default_1(options) {
10
10
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'DropDownsModule', package: 'dropdowns', peerDependencies: {
11
11
  // peers of the treeview
12
- '@progress/kendo-angular-inputs': '25.3.0-develop.9',
12
+ '@progress/kendo-angular-inputs': '25.3.1-develop.1',
13
13
  // peers of inputs
14
- '@progress/kendo-angular-intl': '25.3.0-develop.9',
14
+ '@progress/kendo-angular-intl': '25.3.1-develop.1',
15
15
  '@progress/kendo-drawing': '^1.17.2',
16
16
  // Peer dependency of icons
17
17
  '@progress/kendo-svg-icons': '^4.0.0'