primeng 17.14.1 → 17.15.0

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.
Files changed (86) hide show
  1. package/autocomplete/autocomplete.d.ts +7 -1
  2. package/badge/badge.d.ts +2 -2
  3. package/card/card.d.ts +5 -2
  4. package/checkbox/checkbox.d.ts +3 -2
  5. package/dom/domhandler.d.ts +2 -2
  6. package/dropdown/dropdown.interface.d.ts +1 -1
  7. package/esm2022/api/filterservice.mjs +6 -1
  8. package/esm2022/autocomplete/autocomplete.mjs +16 -5
  9. package/esm2022/badge/badge.mjs +3 -3
  10. package/esm2022/card/card.mjs +11 -5
  11. package/esm2022/checkbox/checkbox.mjs +16 -7
  12. package/esm2022/colorpicker/colorpicker.mjs +2 -1
  13. package/esm2022/confirmpopup/confirmpopup.mjs +2 -2
  14. package/esm2022/dialog/dialog.mjs +2 -2
  15. package/esm2022/divider/divider.mjs +2 -2
  16. package/esm2022/dom/domhandler.mjs +5 -3
  17. package/esm2022/dropdown/dropdown.interface.mjs +1 -1
  18. package/esm2022/dropdown/dropdown.mjs +2 -1
  19. package/esm2022/editor/editor.mjs +2 -4
  20. package/esm2022/fileupload/fileupload.mjs +6 -6
  21. package/esm2022/keyfilter/keyfilter.mjs +14 -13
  22. package/esm2022/menubar/menubar.mjs +1 -4
  23. package/esm2022/multiselect/multiselect.interface.mjs +1 -1
  24. package/esm2022/multiselect/multiselect.mjs +74 -16
  25. package/esm2022/overlaypanel/overlaypanel.mjs +2 -2
  26. package/esm2022/speeddial/speeddial.mjs +6 -8
  27. package/esm2022/stepper/stepper.mjs +1 -9
  28. package/esm2022/table/columnfilter.interface.mjs +1 -1
  29. package/esm2022/table/table.mjs +57 -16
  30. package/esm2022/tree/tree.mjs +105 -103
  31. package/esm2022/treeselect/treeselect.mjs +5 -5
  32. package/fesm2022/primeng-api.mjs +5 -0
  33. package/fesm2022/primeng-api.mjs.map +1 -1
  34. package/fesm2022/primeng-autocomplete.mjs +15 -4
  35. package/fesm2022/primeng-autocomplete.mjs.map +1 -1
  36. package/fesm2022/primeng-badge.mjs +2 -2
  37. package/fesm2022/primeng-badge.mjs.map +1 -1
  38. package/fesm2022/primeng-card.mjs +10 -4
  39. package/fesm2022/primeng-card.mjs.map +1 -1
  40. package/fesm2022/primeng-checkbox.mjs +15 -6
  41. package/fesm2022/primeng-checkbox.mjs.map +1 -1
  42. package/fesm2022/primeng-colorpicker.mjs +1 -0
  43. package/fesm2022/primeng-colorpicker.mjs.map +1 -1
  44. package/fesm2022/primeng-confirmpopup.mjs +1 -1
  45. package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
  46. package/fesm2022/primeng-dialog.mjs +1 -1
  47. package/fesm2022/primeng-dialog.mjs.map +1 -1
  48. package/fesm2022/primeng-divider.mjs +2 -2
  49. package/fesm2022/primeng-divider.mjs.map +1 -1
  50. package/fesm2022/primeng-dom.mjs +4 -2
  51. package/fesm2022/primeng-dom.mjs.map +1 -1
  52. package/fesm2022/primeng-dropdown.mjs +1 -0
  53. package/fesm2022/primeng-dropdown.mjs.map +1 -1
  54. package/fesm2022/primeng-editor.mjs +1 -3
  55. package/fesm2022/primeng-editor.mjs.map +1 -1
  56. package/fesm2022/primeng-fileupload.mjs +5 -5
  57. package/fesm2022/primeng-fileupload.mjs.map +1 -1
  58. package/fesm2022/primeng-keyfilter.mjs +13 -12
  59. package/fesm2022/primeng-keyfilter.mjs.map +1 -1
  60. package/fesm2022/primeng-menubar.mjs +0 -3
  61. package/fesm2022/primeng-menubar.mjs.map +1 -1
  62. package/fesm2022/primeng-multiselect.mjs +73 -15
  63. package/fesm2022/primeng-multiselect.mjs.map +1 -1
  64. package/fesm2022/primeng-overlaypanel.mjs +1 -1
  65. package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
  66. package/fesm2022/primeng-speeddial.mjs +5 -7
  67. package/fesm2022/primeng-speeddial.mjs.map +1 -1
  68. package/fesm2022/primeng-stepper.mjs +0 -8
  69. package/fesm2022/primeng-stepper.mjs.map +1 -1
  70. package/fesm2022/primeng-table.mjs +56 -15
  71. package/fesm2022/primeng-table.mjs.map +1 -1
  72. package/fesm2022/primeng-tree.mjs +104 -102
  73. package/fesm2022/primeng-tree.mjs.map +1 -1
  74. package/fesm2022/primeng-treeselect.mjs +4 -4
  75. package/fesm2022/primeng-treeselect.mjs.map +1 -1
  76. package/fileupload/fileupload.d.ts +9 -10
  77. package/keyfilter/keyfilter.d.ts +1 -1
  78. package/multiselect/multiselect.d.ts +9 -2
  79. package/multiselect/multiselect.interface.d.ts +28 -0
  80. package/package.json +53 -53
  81. package/resources/components/divider/divider.css +1 -1
  82. package/resources/components/speeddial/speeddial.css +8 -0
  83. package/stepper/stepper.d.ts +0 -8
  84. package/table/columnfilter.interface.d.ts +213 -1
  85. package/table/table.d.ts +9 -5
  86. package/treeselect/treeselect.d.ts +2 -2
@@ -22,6 +22,7 @@ import { TimesIcon } from 'primeng/icons/times';
22
22
  import { ChevronDownIcon } from 'primeng/icons/chevrondown';
23
23
  import * as i7 from 'primeng/autofocus';
24
24
  import { AutoFocusModule } from 'primeng/autofocus';
25
+ import { MinusIcon } from 'primeng/icons/minus';
25
26
 
26
27
  const MULTISELECT_VALUE_ACCESSOR = {
27
28
  provide: NG_VALUE_ACCESSOR,
@@ -40,6 +41,7 @@ class MultiSelectItem {
40
41
  ariaSetSize;
41
42
  template;
42
43
  checkIconTemplate;
44
+ itemCheckboxIconTemplate;
43
45
  onClick = new EventEmitter();
44
46
  onMouseEnter = new EventEmitter();
45
47
  onOptionClick(event) {
@@ -58,7 +60,7 @@ class MultiSelectItem {
58
60
  });
59
61
  }
60
62
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.1", type: MultiSelectItem, selector: "p-multiSelectItem", inputs: { id: "id", option: "option", selected: ["selected", "selected", booleanAttribute], label: "label", disabled: ["disabled", "disabled", booleanAttribute], itemSize: ["itemSize", "itemSize", numberAttribute], focused: ["focused", "focused", booleanAttribute], ariaPosInset: "ariaPosInset", ariaSetSize: "ariaSetSize", template: "template", checkIconTemplate: "checkIconTemplate" }, outputs: { onClick: "onClick", onMouseEnter: "onMouseEnter" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.1", type: MultiSelectItem, selector: "p-multiSelectItem", inputs: { id: "id", option: "option", selected: ["selected", "selected", booleanAttribute], label: "label", disabled: ["disabled", "disabled", booleanAttribute], itemSize: ["itemSize", "itemSize", numberAttribute], focused: ["focused", "focused", booleanAttribute], ariaPosInset: "ariaPosInset", ariaSetSize: "ariaSetSize", template: "template", checkIconTemplate: "checkIconTemplate", itemCheckboxIconTemplate: "itemCheckboxIconTemplate" }, outputs: { onClick: "onClick", onMouseEnter: "onMouseEnter" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
62
64
  <li
63
65
  pRipple
64
66
  role="option"
@@ -80,9 +82,10 @@ class MultiSelectItem {
80
82
  <div class="p-checkbox p-component">
81
83
  <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': selected }">
82
84
  <ng-container *ngIf="selected">
83
- <CheckIcon *ngIf="!checkIconTemplate" [styleClass]="'p-checkbox-icon'" [attr.aria-hidden]="true" />
85
+ <CheckIcon *ngIf="!checkIconTemplate || !itemCheckboxIconTemplate" [styleClass]="'p-checkbox-icon'" [attr.aria-hidden]="true" />
84
86
  <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
85
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
87
+ <ng-template *ngTemplateOutlet="checkIconTemplate && !itemCheckboxIconTemplate"></ng-template>
88
+ <ng-template *ngTemplateOutlet="itemCheckboxIconTemplate; context: { $implicit: selected }"></ng-template>
86
89
  </span>
87
90
  </ng-container>
88
91
  </div>
@@ -118,9 +121,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
118
121
  <div class="p-checkbox p-component">
119
122
  <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': selected }">
120
123
  <ng-container *ngIf="selected">
121
- <CheckIcon *ngIf="!checkIconTemplate" [styleClass]="'p-checkbox-icon'" [attr.aria-hidden]="true" />
124
+ <CheckIcon *ngIf="!checkIconTemplate || !itemCheckboxIconTemplate" [styleClass]="'p-checkbox-icon'" [attr.aria-hidden]="true" />
122
125
  <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
123
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
126
+ <ng-template *ngTemplateOutlet="checkIconTemplate && !itemCheckboxIconTemplate"></ng-template>
127
+ <ng-template *ngTemplateOutlet="itemCheckboxIconTemplate; context: { $implicit: selected }"></ng-template>
124
128
  </span>
125
129
  </ng-container>
126
130
  </div>
@@ -160,6 +164,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
160
164
  type: Input
161
165
  }], checkIconTemplate: [{
162
166
  type: Input
167
+ }], itemCheckboxIconTemplate: [{
168
+ type: Input
163
169
  }], onClick: [{
164
170
  type: Output
165
171
  }], onMouseEnter: [{
@@ -670,6 +676,7 @@ class MultiSelect {
670
676
  _placeholder = signal(undefined);
671
677
  _itemSize;
672
678
  _selectionLimit;
679
+ _disableTooltip = false;
673
680
  value;
674
681
  _filteredOptions;
675
682
  onModelChange = () => { };
@@ -692,6 +699,8 @@ class MultiSelect {
692
699
  closeIconTemplate;
693
700
  clearIconTemplate;
694
701
  dropdownIconTemplate;
702
+ itemCheckboxIconTemplate;
703
+ headerCheckboxIconTemplate;
695
704
  headerCheckboxFocus;
696
705
  filterOptions;
697
706
  preventModelTouched;
@@ -881,6 +890,10 @@ class MultiSelect {
881
890
  break;
882
891
  case 'checkicon':
883
892
  this.checkIconTemplate = item.template;
893
+ console.warn('checkicon is deprecated and will removed in v18. Use itemcheckboxicon or headercheckboxicon templates instead.');
894
+ break;
895
+ case 'headercheckboxicon':
896
+ this.headerCheckboxIconTemplate = item.template;
884
897
  break;
885
898
  case 'filtericon':
886
899
  this.filterIconTemplate = item.template;
@@ -897,6 +910,9 @@ class MultiSelect {
897
910
  case 'dropdownicon':
898
911
  this.dropdownIconTemplate = item.template;
899
912
  break;
913
+ case 'itemcheckboxicon':
914
+ this.itemCheckboxIconTemplate = item.template;
915
+ break;
900
916
  default:
901
917
  this.itemTemplate = item.template;
902
918
  break;
@@ -1417,6 +1433,10 @@ class MultiSelect {
1417
1433
  });
1418
1434
  }
1419
1435
  }
1436
+ if (this.partialSelected()) {
1437
+ this.selectedOptions = null;
1438
+ this.cd.markForCheck();
1439
+ }
1420
1440
  this.onChange.emit({ originalEvent: event, value: this.value });
1421
1441
  DomHandler.focus(this.headerCheckboxViewChild?.nativeElement);
1422
1442
  this.headerCheckboxFocus = true;
@@ -1467,6 +1487,9 @@ class MultiSelect {
1467
1487
  allSelected() {
1468
1488
  return this.selectAll !== null ? this.selectAll : ObjectUtils.isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));
1469
1489
  }
1490
+ partialSelected() {
1491
+ return this.selectedOptions && this.selectedOptions.length > 0 && this.selectedOptions.length < this.options.length;
1492
+ }
1470
1493
  /**
1471
1494
  * Displays the panel.
1472
1495
  * @group Method
@@ -1546,8 +1569,13 @@ class MultiSelect {
1546
1569
  this.updateModel(null, event);
1547
1570
  this.selectedOptions = null;
1548
1571
  this.onClear.emit();
1572
+ this._disableTooltip = true;
1549
1573
  event.stopPropagation();
1550
1574
  }
1575
+ labelContainerMouseLeave() {
1576
+ if (this._disableTooltip)
1577
+ this._disableTooltip = false;
1578
+ }
1551
1579
  removeOption(optionValue, event) {
1552
1580
  let value = this.modelValue().filter((val) => !ObjectUtils.equals(val, optionValue, this.equalityKey()));
1553
1581
  this.updateModel(value, event);
@@ -1683,7 +1711,15 @@ class MultiSelect {
1683
1711
  [autofocus]="autofocus"
1684
1712
  />
1685
1713
  </div>
1686
- <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
1714
+ <div
1715
+ class="p-multiselect-label-container"
1716
+ [pTooltip]="tooltip"
1717
+ (mouseleave)="labelContainerMouseLeave()"
1718
+ [tooltipDisabled]="_disableTooltip"
1719
+ [tooltipPosition]="tooltipPosition"
1720
+ [positionStyle]="tooltipPositionStyle"
1721
+ [tooltipStyleClass]="tooltipStyleClass"
1722
+ >
1687
1723
  <div [ngClass]="labelClass">
1688
1724
  <ng-container *ngIf="!selectedItemsTemplate">
1689
1725
  <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
@@ -1776,11 +1812,17 @@ class MultiSelect {
1776
1812
  [attr.aria-checked]="allSelected()"
1777
1813
  [ngClass]="{ 'p-highlight': allSelected(), 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled }"
1778
1814
  >
1779
- <ng-container *ngIf="allSelected()">
1780
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
1815
+ <ng-container *ngIf="allSelected() || partialSelected()">
1816
+ <ng-container *ngIf="!checkIconTemplate && !headerCheckboxIconTemplate">
1817
+ <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="allSelected()" [attr.aria-hidden]="true" />
1818
+ </ng-container>
1819
+
1781
1820
  <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1782
1821
  <ng-template *ngTemplateOutlet="checkIconTemplate; context: { $implicit: allSelected() }"></ng-template>
1783
1822
  </span>
1823
+ <span *ngIf="headerCheckboxIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1824
+ <ng-template *ngTemplateOutlet="headerCheckboxIconTemplate; context: { $implicit: allSelected(), partialSelected: partialSelected() }"></ng-template>
1825
+ </span>
1784
1826
  </ng-container>
1785
1827
  </div>
1786
1828
  </div>
@@ -1862,6 +1904,7 @@ class MultiSelect {
1862
1904
  [disabled]="isOptionDisabled(option)"
1863
1905
  [template]="itemTemplate"
1864
1906
  [checkIconTemplate]="checkIconTemplate"
1907
+ [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
1865
1908
  [itemSize]="scrollerOptions.itemSize"
1866
1909
  [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
1867
1910
  [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
@@ -1905,7 +1948,7 @@ class MultiSelect {
1905
1948
  </ng-template>
1906
1949
  </p-overlay>
1907
1950
  </div>
1908
- `, isInline: true, styles: ["@layer primeng{.p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer;display:flex}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => i4.Overlay), selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i0.forwardRef(() => i3.PrimeTemplate), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i5.Tooltip), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i0.forwardRef(() => i2.Ripple), selector: "[pRipple]" }, { kind: "component", type: i0.forwardRef(() => i6.Scroller), selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "directive", type: i0.forwardRef(() => i7.AutoFocus), selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(() => TimesCircleIcon), selector: "TimesCircleIcon" }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronDownIcon), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(() => MultiSelectItem), selector: "p-multiSelectItem", inputs: ["id", "option", "selected", "label", "disabled", "itemSize", "focused", "ariaPosInset", "ariaSetSize", "template", "checkIconTemplate"], outputs: ["onClick", "onMouseEnter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1951
+ `, isInline: true, styles: ["@layer primeng{.p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer;display:flex}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:400;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}.p-multiselect-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-multiselect-clearable{position:relative}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => i4.Overlay), selector: "p-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "directive", type: i0.forwardRef(() => i3.PrimeTemplate), selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i5.Tooltip), selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i0.forwardRef(() => i2.Ripple), selector: "[pRipple]" }, { kind: "component", type: i0.forwardRef(() => i6.Scroller), selector: "p-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "directive", type: i0.forwardRef(() => i7.AutoFocus), selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(() => TimesCircleIcon), selector: "TimesCircleIcon" }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronDownIcon), selector: "ChevronDownIcon" }, { kind: "component", type: i0.forwardRef(() => MultiSelectItem), selector: "p-multiSelectItem", inputs: ["id", "option", "selected", "label", "disabled", "itemSize", "focused", "ariaPosInset", "ariaSetSize", "template", "checkIconTemplate", "itemCheckboxIconTemplate"], outputs: ["onClick", "onMouseEnter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1909
1952
  }
1910
1953
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelect, decorators: [{
1911
1954
  type: Component,
@@ -1935,7 +1978,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
1935
1978
  [autofocus]="autofocus"
1936
1979
  />
1937
1980
  </div>
1938
- <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
1981
+ <div
1982
+ class="p-multiselect-label-container"
1983
+ [pTooltip]="tooltip"
1984
+ (mouseleave)="labelContainerMouseLeave()"
1985
+ [tooltipDisabled]="_disableTooltip"
1986
+ [tooltipPosition]="tooltipPosition"
1987
+ [positionStyle]="tooltipPositionStyle"
1988
+ [tooltipStyleClass]="tooltipStyleClass"
1989
+ >
1939
1990
  <div [ngClass]="labelClass">
1940
1991
  <ng-container *ngIf="!selectedItemsTemplate">
1941
1992
  <ng-container *ngIf="display === 'comma'">{{ label() || 'empty' }}</ng-container>
@@ -2028,11 +2079,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
2028
2079
  [attr.aria-checked]="allSelected()"
2029
2080
  [ngClass]="{ 'p-highlight': allSelected(), 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled }"
2030
2081
  >
2031
- <ng-container *ngIf="allSelected()">
2032
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
2082
+ <ng-container *ngIf="allSelected() || partialSelected()">
2083
+ <ng-container *ngIf="!checkIconTemplate && !headerCheckboxIconTemplate">
2084
+ <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="allSelected()" [attr.aria-hidden]="true" />
2085
+ </ng-container>
2086
+
2033
2087
  <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
2034
2088
  <ng-template *ngTemplateOutlet="checkIconTemplate; context: { $implicit: allSelected() }"></ng-template>
2035
2089
  </span>
2090
+ <span *ngIf="headerCheckboxIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
2091
+ <ng-template *ngTemplateOutlet="headerCheckboxIconTemplate; context: { $implicit: allSelected(), partialSelected: partialSelected() }"></ng-template>
2092
+ </span>
2036
2093
  </ng-container>
2037
2094
  </div>
2038
2095
  </div>
@@ -2114,6 +2171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
2114
2171
  [disabled]="isOptionDisabled(option)"
2115
2172
  [template]="itemTemplate"
2116
2173
  [checkIconTemplate]="checkIconTemplate"
2174
+ [itemCheckboxIconTemplate]="itemCheckboxIconTemplate"
2117
2175
  [itemSize]="scrollerOptions.itemSize"
2118
2176
  [focused]="focusedOptionIndex() === getOptionIndex(i, scrollerOptions)"
2119
2177
  [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
@@ -2374,13 +2432,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
2374
2432
  }] } });
2375
2433
  class MultiSelectModule {
2376
2434
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2377
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon], exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule] });
2378
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon, OverlayModule, SharedModule, ScrollerModule] });
2435
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon, MinusIcon], exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule] });
2436
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon, MinusIcon, OverlayModule, SharedModule, ScrollerModule] });
2379
2437
  }
2380
2438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: MultiSelectModule, decorators: [{
2381
2439
  type: NgModule,
2382
2440
  args: [{
2383
- imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon],
2441
+ imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule, CheckIcon, SearchIcon, TimesCircleIcon, TimesIcon, ChevronDownIcon, CheckIcon, MinusIcon],
2384
2442
  exports: [MultiSelect, OverlayModule, SharedModule, ScrollerModule],
2385
2443
  declarations: [MultiSelect, MultiSelectItem]
2386
2444
  }]