primeng 17.14.0 → 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 (154) 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 +125 -125
  81. package/resources/components/divider/divider.css +1 -1
  82. package/resources/components/speeddial/speeddial.css +8 -0
  83. package/resources/themes/arya-blue/theme.css +144 -80
  84. package/resources/themes/arya-green/theme.css +144 -80
  85. package/resources/themes/arya-orange/theme.css +144 -80
  86. package/resources/themes/arya-purple/theme.css +144 -80
  87. package/resources/themes/aura-dark-amber/theme.css +144 -80
  88. package/resources/themes/aura-dark-blue/theme.css +144 -80
  89. package/resources/themes/aura-dark-cyan/theme.css +144 -80
  90. package/resources/themes/aura-dark-green/theme.css +144 -80
  91. package/resources/themes/aura-dark-indigo/theme.css +144 -80
  92. package/resources/themes/aura-dark-lime/theme.css +144 -80
  93. package/resources/themes/aura-dark-noir/theme.css +144 -80
  94. package/resources/themes/aura-dark-pink/theme.css +144 -80
  95. package/resources/themes/aura-dark-purple/theme.css +144 -80
  96. package/resources/themes/aura-dark-teal/theme.css +144 -80
  97. package/resources/themes/aura-light-amber/theme.css +144 -81
  98. package/resources/themes/aura-light-blue/theme.css +144 -81
  99. package/resources/themes/aura-light-cyan/theme.css +144 -81
  100. package/resources/themes/aura-light-green/theme.css +144 -81
  101. package/resources/themes/aura-light-indigo/theme.css +144 -81
  102. package/resources/themes/aura-light-lime/theme.css +144 -81
  103. package/resources/themes/aura-light-noir/theme.css +144 -81
  104. package/resources/themes/aura-light-pink/theme.css +144 -81
  105. package/resources/themes/aura-light-purple/theme.css +144 -81
  106. package/resources/themes/aura-light-teal/theme.css +144 -81
  107. package/resources/themes/bootstrap4-dark-blue/theme.css +144 -80
  108. package/resources/themes/bootstrap4-dark-purple/theme.css +144 -80
  109. package/resources/themes/bootstrap4-light-blue/theme.css +144 -80
  110. package/resources/themes/bootstrap4-light-purple/theme.css +144 -80
  111. package/resources/themes/fluent-light/theme.css +144 -80
  112. package/resources/themes/lara-dark-blue/theme.css +144 -80
  113. package/resources/themes/lara-dark-indigo/theme.css +144 -80
  114. package/resources/themes/lara-dark-purple/theme.css +144 -80
  115. package/resources/themes/lara-dark-teal/theme.css +144 -80
  116. package/resources/themes/lara-light-blue/theme.css +144 -80
  117. package/resources/themes/lara-light-indigo/theme.css +144 -80
  118. package/resources/themes/lara-light-purple/theme.css +144 -80
  119. package/resources/themes/lara-light-teal/theme.css +144 -80
  120. package/resources/themes/luna-amber/theme.css +144 -80
  121. package/resources/themes/luna-blue/theme.css +144 -80
  122. package/resources/themes/luna-green/theme.css +144 -80
  123. package/resources/themes/luna-pink/theme.css +144 -80
  124. package/resources/themes/md-dark-deeppurple/theme.css +144 -80
  125. package/resources/themes/md-dark-indigo/theme.css +144 -80
  126. package/resources/themes/md-light-deeppurple/theme.css +144 -80
  127. package/resources/themes/md-light-indigo/theme.css +144 -80
  128. package/resources/themes/mdc-dark-deeppurple/theme.css +144 -80
  129. package/resources/themes/mdc-dark-indigo/theme.css +144 -80
  130. package/resources/themes/mdc-light-deeppurple/theme.css +144 -80
  131. package/resources/themes/mdc-light-indigo/theme.css +144 -80
  132. package/resources/themes/mira/theme.css +144 -80
  133. package/resources/themes/nano/theme.css +144 -80
  134. package/resources/themes/nova/theme.css +144 -80
  135. package/resources/themes/nova-accent/theme.css +144 -80
  136. package/resources/themes/nova-alt/theme.css +144 -80
  137. package/resources/themes/rhea/theme.css +144 -80
  138. package/resources/themes/saga-blue/theme.css +144 -80
  139. package/resources/themes/saga-green/theme.css +144 -80
  140. package/resources/themes/saga-orange/theme.css +144 -80
  141. package/resources/themes/saga-purple/theme.css +144 -80
  142. package/resources/themes/soho-dark/theme.css +144 -80
  143. package/resources/themes/soho-light/theme.css +144 -80
  144. package/resources/themes/tailwind-light/theme.css +144 -80
  145. package/resources/themes/vela-blue/theme.css +144 -80
  146. package/resources/themes/vela-green/theme.css +144 -80
  147. package/resources/themes/vela-orange/theme.css +144 -80
  148. package/resources/themes/vela-purple/theme.css +144 -80
  149. package/resources/themes/viva-dark/theme.css +144 -80
  150. package/resources/themes/viva-light/theme.css +144 -80
  151. package/stepper/stepper.d.ts +0 -8
  152. package/table/columnfilter.interface.d.ts +213 -1
  153. package/table/table.d.ts +9 -5
  154. 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
  }]