primeng 22.1.4 → 22.1.5

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 (190) hide show
  1. package/LICENSE.md +2 -0
  2. package/fesm2022/primeng-accordion.mjs +23 -23
  3. package/fesm2022/primeng-animateonscroll.mjs +7 -7
  4. package/fesm2022/primeng-api.mjs +31 -31
  5. package/fesm2022/primeng-autocomplete.mjs +54 -30
  6. package/fesm2022/primeng-autofocus.mjs +7 -7
  7. package/fesm2022/primeng-avatar.mjs +10 -10
  8. package/fesm2022/primeng-avatargroup.mjs +10 -10
  9. package/fesm2022/primeng-badge.mjs +14 -14
  10. package/fesm2022/primeng-base.mjs +3 -3
  11. package/fesm2022/primeng-basecomponent.mjs +6 -6
  12. package/fesm2022/primeng-baseeditableholder.mjs +3 -3
  13. package/fesm2022/primeng-baseinput.mjs +3 -3
  14. package/fesm2022/primeng-basemodelholder.mjs +3 -3
  15. package/fesm2022/primeng-bind.mjs +7 -7
  16. package/fesm2022/primeng-blockui.mjs +10 -10
  17. package/fesm2022/primeng-breadcrumb.mjs +14 -14
  18. package/fesm2022/primeng-button.mjs +19 -19
  19. package/fesm2022/primeng-buttongroup.mjs +14 -14
  20. package/fesm2022/primeng-card.mjs +10 -10
  21. package/fesm2022/primeng-carousel.mjs +31 -31
  22. package/fesm2022/primeng-cascadeselect.mjs +13 -13
  23. package/fesm2022/primeng-chart.mjs +10 -10
  24. package/fesm2022/primeng-checkbox.mjs +10 -10
  25. package/fesm2022/primeng-chip.mjs +10 -10
  26. package/fesm2022/primeng-classnames.mjs +7 -7
  27. package/fesm2022/primeng-colorpicker.mjs +10 -10
  28. package/fesm2022/primeng-commandmenu.mjs +10 -10
  29. package/fesm2022/primeng-compare.mjs +19 -19
  30. package/fesm2022/primeng-config.mjs +7 -7
  31. package/fesm2022/primeng-confirmdialog.mjs +10 -10
  32. package/fesm2022/primeng-confirmpopup.mjs +10 -10
  33. package/fesm2022/primeng-contextmenu.mjs +13 -13
  34. package/fesm2022/primeng-dataview.mjs +10 -10
  35. package/fesm2022/primeng-datepicker.mjs +13 -11
  36. package/fesm2022/primeng-dialog.mjs +10 -10
  37. package/fesm2022/primeng-divider.mjs +10 -10
  38. package/fesm2022/primeng-dock.mjs +10 -10
  39. package/fesm2022/primeng-dragdrop.mjs +10 -10
  40. package/fesm2022/primeng-drawer.mjs +14 -14
  41. package/fesm2022/primeng-dynamicdialog.mjs +16 -16
  42. package/fesm2022/primeng-editor.mjs +10 -10
  43. package/fesm2022/primeng-fieldset.mjs +10 -10
  44. package/fesm2022/primeng-fileupload.mjs +13 -13
  45. package/fesm2022/primeng-floatlabel.mjs +10 -10
  46. package/fesm2022/primeng-fluid.mjs +10 -10
  47. package/fesm2022/primeng-focustrap.mjs +7 -7
  48. package/fesm2022/primeng-galleria.mjs +22 -22
  49. package/fesm2022/primeng-gallery.mjs +75 -73
  50. package/fesm2022/primeng-iconfield.mjs +10 -10
  51. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -3
  52. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -3
  53. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -3
  54. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -3
  55. package/fesm2022/primeng-icons-angledown.mjs +3 -3
  56. package/fesm2022/primeng-icons-angleleft.mjs +3 -3
  57. package/fesm2022/primeng-icons-angleright.mjs +3 -3
  58. package/fesm2022/primeng-icons-angleup.mjs +3 -3
  59. package/fesm2022/primeng-icons-arrowdown.mjs +3 -3
  60. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -3
  61. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -3
  62. package/fesm2022/primeng-icons-arrowleft.mjs +3 -3
  63. package/fesm2022/primeng-icons-arrowright.mjs +3 -3
  64. package/fesm2022/primeng-icons-arrowup.mjs +3 -3
  65. package/fesm2022/primeng-icons-ban.mjs +3 -3
  66. package/fesm2022/primeng-icons-bars.mjs +3 -3
  67. package/fesm2022/primeng-icons-baseicon.mjs +6 -6
  68. package/fesm2022/primeng-icons-blank.mjs +3 -3
  69. package/fesm2022/primeng-icons-calendar.mjs +3 -3
  70. package/fesm2022/primeng-icons-caretleft.mjs +3 -3
  71. package/fesm2022/primeng-icons-caretright.mjs +3 -3
  72. package/fesm2022/primeng-icons-check.mjs +3 -3
  73. package/fesm2022/primeng-icons-chevrondown.mjs +3 -3
  74. package/fesm2022/primeng-icons-chevronleft.mjs +3 -3
  75. package/fesm2022/primeng-icons-chevronright.mjs +3 -3
  76. package/fesm2022/primeng-icons-chevronup.mjs +3 -3
  77. package/fesm2022/primeng-icons-exclamationtriangle.mjs +3 -3
  78. package/fesm2022/primeng-icons-eye.mjs +3 -3
  79. package/fesm2022/primeng-icons-eyeslash.mjs +3 -3
  80. package/fesm2022/primeng-icons-filter.mjs +3 -3
  81. package/fesm2022/primeng-icons-filterfill.mjs +3 -3
  82. package/fesm2022/primeng-icons-filterslash.mjs +3 -3
  83. package/fesm2022/primeng-icons-home.mjs +3 -3
  84. package/fesm2022/primeng-icons-infocircle.mjs +3 -3
  85. package/fesm2022/primeng-icons-minus.mjs +3 -3
  86. package/fesm2022/primeng-icons-pencil.mjs +3 -3
  87. package/fesm2022/primeng-icons-plus.mjs +3 -3
  88. package/fesm2022/primeng-icons-refresh.mjs +3 -3
  89. package/fesm2022/primeng-icons-search.mjs +3 -3
  90. package/fesm2022/primeng-icons-searchminus.mjs +3 -3
  91. package/fesm2022/primeng-icons-searchplus.mjs +3 -3
  92. package/fesm2022/primeng-icons-sortalt.mjs +3 -3
  93. package/fesm2022/primeng-icons-sortamountdown.mjs +3 -3
  94. package/fesm2022/primeng-icons-sortamountupalt.mjs +3 -3
  95. package/fesm2022/primeng-icons-spinner.mjs +3 -3
  96. package/fesm2022/primeng-icons-star.mjs +3 -3
  97. package/fesm2022/primeng-icons-starfill.mjs +3 -3
  98. package/fesm2022/primeng-icons-thlarge.mjs +3 -3
  99. package/fesm2022/primeng-icons-times.mjs +3 -3
  100. package/fesm2022/primeng-icons-timescircle.mjs +3 -3
  101. package/fesm2022/primeng-icons-trash.mjs +3 -3
  102. package/fesm2022/primeng-icons-undo.mjs +3 -3
  103. package/fesm2022/primeng-icons-upload.mjs +3 -3
  104. package/fesm2022/primeng-icons-windowmaximize.mjs +3 -3
  105. package/fesm2022/primeng-icons-windowminimize.mjs +3 -3
  106. package/fesm2022/primeng-iftalabel.mjs +10 -10
  107. package/fesm2022/primeng-image.mjs +10 -10
  108. package/fesm2022/primeng-imagecompare.mjs +10 -10
  109. package/fesm2022/primeng-inplace.mjs +16 -16
  110. package/fesm2022/primeng-inputcolor.mjs +43 -43
  111. package/fesm2022/primeng-inputgroup.mjs +14 -14
  112. package/fesm2022/primeng-inputgroupaddon.mjs +10 -10
  113. package/fesm2022/primeng-inputicon.mjs +10 -10
  114. package/fesm2022/primeng-inputmask.mjs +13 -13
  115. package/fesm2022/primeng-inputnumber.mjs +10 -10
  116. package/fesm2022/primeng-inputotp.mjs +10 -10
  117. package/fesm2022/primeng-inputpassword.mjs +10 -10
  118. package/fesm2022/primeng-inputtags.mjs +22 -18
  119. package/fesm2022/primeng-inputtext.mjs +10 -10
  120. package/fesm2022/primeng-isolation.mjs +9 -9
  121. package/fesm2022/primeng-keyfilter.mjs +7 -7
  122. package/fesm2022/primeng-knob.mjs +10 -10
  123. package/fesm2022/primeng-label.mjs +10 -10
  124. package/fesm2022/primeng-listbox.mjs +46 -34
  125. package/fesm2022/primeng-megamenu.mjs +13 -13
  126. package/fesm2022/primeng-menu.mjs +30 -24
  127. package/fesm2022/primeng-menubar.mjs +20 -20
  128. package/fesm2022/primeng-message.mjs +12 -10
  129. package/fesm2022/primeng-metergroup.mjs +13 -13
  130. package/fesm2022/primeng-motion.mjs +13 -13
  131. package/fesm2022/primeng-multiselect.mjs +61 -29
  132. package/fesm2022/primeng-orderlist.mjs +12 -10
  133. package/fesm2022/primeng-organizationchart.mjs +129 -31
  134. package/fesm2022/primeng-overlay.mjs +10 -10
  135. package/fesm2022/primeng-overlaybadge.mjs +10 -10
  136. package/fesm2022/primeng-paginator.mjs +16 -12
  137. package/fesm2022/primeng-panel.mjs +10 -10
  138. package/fesm2022/primeng-panelmenu.mjs +36 -28
  139. package/fesm2022/primeng-password.mjs +20 -20
  140. package/fesm2022/primeng-picklist.mjs +14 -10
  141. package/fesm2022/primeng-popover.mjs +10 -10
  142. package/fesm2022/primeng-progressbar.mjs +10 -10
  143. package/fesm2022/primeng-progressspinner.mjs +10 -10
  144. package/fesm2022/primeng-radiobutton.mjs +13 -13
  145. package/fesm2022/primeng-rating.mjs +10 -10
  146. package/fesm2022/primeng-ripple.mjs +14 -14
  147. package/fesm2022/primeng-scrollarea.mjs +25 -25
  148. package/fesm2022/primeng-scroller.mjs +16 -12
  149. package/fesm2022/primeng-scrollpanel.mjs +14 -14
  150. package/fesm2022/primeng-scrolltop.mjs +10 -10
  151. package/fesm2022/primeng-select.mjs +66 -36
  152. package/fesm2022/primeng-selectbutton.mjs +12 -10
  153. package/fesm2022/primeng-sidebar.mjs +83 -83
  154. package/fesm2022/primeng-skeleton.mjs +10 -10
  155. package/fesm2022/primeng-slider.mjs +10 -10
  156. package/fesm2022/primeng-speeddial.mjs +10 -10
  157. package/fesm2022/primeng-splitbutton.mjs +10 -10
  158. package/fesm2022/primeng-splitter.mjs +13 -13
  159. package/fesm2022/primeng-stepper.mjs +47 -47
  160. package/fesm2022/primeng-steps.mjs +10 -10
  161. package/fesm2022/primeng-styleclass.mjs +7 -7
  162. package/fesm2022/primeng-table.mjs +191 -105
  163. package/fesm2022/primeng-tabs.mjs +50 -34
  164. package/fesm2022/primeng-tag.mjs +10 -10
  165. package/fesm2022/primeng-terminal.mjs +15 -15
  166. package/fesm2022/primeng-textarea.mjs +10 -10
  167. package/fesm2022/primeng-tieredmenu.mjs +13 -13
  168. package/fesm2022/primeng-timeline.mjs +24 -18
  169. package/fesm2022/primeng-toast.mjs +13 -13
  170. package/fesm2022/primeng-togglebutton.mjs +14 -14
  171. package/fesm2022/primeng-toggleswitch.mjs +10 -10
  172. package/fesm2022/primeng-toolbar.mjs +10 -10
  173. package/fesm2022/primeng-tooltip.mjs +94 -80
  174. package/fesm2022/primeng-tree.mjs +131 -33
  175. package/fesm2022/primeng-treeselect.mjs +10 -10
  176. package/fesm2022/primeng-treetable.mjs +84 -62
  177. package/fesm2022/primeng-useid.mjs +3 -3
  178. package/fesm2022/primeng-usestyle.mjs +6 -6
  179. package/package.json +20 -20
  180. package/types/primeng-api.d.ts +7 -2
  181. package/types/primeng-motion.d.ts +0 -15
  182. package/types/primeng-scroller.d.ts +1 -0
  183. package/types/primeng-select.d.ts +3 -2
  184. package/types/primeng-stepper.d.ts +0 -95
  185. package/types/primeng-table.d.ts +2 -0
  186. package/types/primeng-tabs.d.ts +3 -76
  187. package/types/primeng-tooltip.d.ts +18 -7
  188. package/types/primeng-types-select.d.ts +4 -0
  189. package/types/primeng-utils.d.ts +0 -1
  190. package/types/primeng.d.ts +1 -2
@@ -6,7 +6,7 @@ import { NG_VALUE_ACCESSOR } from "@angular/forms";
6
6
  import { ChevronDown } from "@primeicons/angular/chevron-down";
7
7
  import { Search } from "@primeicons/angular/search";
8
8
  import { Times } from "@primeicons/angular/times";
9
- import { deepEquals, equals, findLastIndex, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, isEmpty, isNotEmpty, isPrintableCharacter, isScalar, resolveFieldData, scrollInView } from "@primeuix/utils";
9
+ import { deepEquals, equals, findLastIndex, findSingle, focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, isEmpty, isNotEmpty, isObject, isPrintableCharacter, isScalar, resolveFieldData, scrollInView } from "@primeuix/utils";
10
10
  import { FilterService, SharedModule, TranslationKeys } from "primeng/api";
11
11
  import { AutoFocus } from "primeng/autofocus";
12
12
  import { BaseComponent, PARENT_INSTANCE } from "primeng/basecomponent";
@@ -71,7 +71,7 @@ var SelectStyle = class SelectStyle extends BaseStyle {
71
71
  classes = classes;
72
72
  static ɵfac = i0.ɵɵngDeclareFactory({
73
73
  minVersion: "12.0.0",
74
- version: "22.2.3",
74
+ version: "22.2.5",
75
75
  ngImport: i0,
76
76
  type: SelectStyle,
77
77
  deps: null,
@@ -79,14 +79,14 @@ var SelectStyle = class SelectStyle extends BaseStyle {
79
79
  });
80
80
  static ɵprov = i0.ɵɵngDeclareInjectable({
81
81
  minVersion: "12.0.0",
82
- version: "22.2.3",
82
+ version: "22.2.5",
83
83
  ngImport: i0,
84
84
  type: SelectStyle
85
85
  });
86
86
  };
87
87
  i0.ɵɵngDeclareClassMetadata({
88
88
  minVersion: "12.0.0",
89
- version: "22.2.3",
89
+ version: "22.2.5",
90
90
  ngImport: i0,
91
91
  type: SelectStyle,
92
92
  decorators: [{ type: Injectable }]
@@ -164,7 +164,7 @@ var SelectItem = class SelectItem extends BaseComponent {
164
164
  }
165
165
  static ɵfac = i0.ɵɵngDeclareFactory({
166
166
  minVersion: "12.0.0",
167
- version: "22.2.3",
167
+ version: "22.2.5",
168
168
  ngImport: i0,
169
169
  type: SelectItem,
170
170
  deps: null,
@@ -172,7 +172,7 @@ var SelectItem = class SelectItem extends BaseComponent {
172
172
  });
173
173
  static ɵcmp = i0.ɵɵngDeclareComponent({
174
174
  minVersion: "17.0.0",
175
- version: "22.2.3",
175
+ version: "22.2.5",
176
176
  type: SelectItem,
177
177
  isStandalone: true,
178
178
  selector: "p-select-item",
@@ -350,7 +350,7 @@ var SelectItem = class SelectItem extends BaseComponent {
350
350
  };
351
351
  i0.ɵɵngDeclareClassMetadata({
352
352
  minVersion: "12.0.0",
353
- version: "22.2.3",
353
+ version: "22.2.5",
354
354
  ngImport: i0,
355
355
  type: SelectItem,
356
356
  decorators: [{
@@ -739,7 +739,8 @@ var Select = class Select extends BaseInput {
739
739
  emptyFilterMessageText = computed(() => this.emptyFilterMessage() || this.translation()?.emptySearchMessage || this.translation()?.emptyFilterMessage || "", ...ngDevMode ? [{ debugName: "emptyFilterMessageText" }] : /* istanbul ignore next */ []);
740
740
  filterResultMessageText = computed(() => {
741
741
  const count = this.visibleOptions()?.filter((option) => !this.isOptionGroup(option)).length ?? 0;
742
- return count ? this.filterMessageText().replaceAll("{0}", String(count)) : this.emptyFilterMessageText();
742
+ if (count) return this.filterMessageText().replaceAll("{0}", String(count));
743
+ return this._filterValue() ? this.emptyFilterMessageText() : this.emptyMessageLabel() || this.emptyFilterMessageText();
743
744
  }, ...ngDevMode ? [{ debugName: "filterResultMessageText" }] : /* istanbul ignore next */ []);
744
745
  selectionMessageText = computed(() => this.selectionMessage() || this.translation()?.selectionMessage || "", ...ngDevMode ? [{ debugName: "selectionMessageText" }] : /* istanbul ignore next */ []);
745
746
  emptySelectionMessageText = computed(() => this.emptySelectionMessage() || this.translation()?.emptySelectionMessage || "", ...ngDevMode ? [{ debugName: "emptySelectionMessageText" }] : /* istanbul ignore next */ []);
@@ -788,9 +789,16 @@ var Select = class Select extends BaseInput {
788
789
  const currentValue = this.modelValue();
789
790
  if (!Array.isArray(currentValue) || currentValue.length === 0) return this.placeholder() || "p-emptylabel";
790
791
  const options = this.getAllVisibleAndNonVisibleOptions();
792
+ const optionsByValue = /* @__PURE__ */ new Map();
793
+ options.forEach((option) => {
794
+ if (this.isOptionGroup(option)) return;
795
+ const value = this.getOptionValue(option);
796
+ if (!optionsByValue.has(value)) optionsByValue.set(value, option);
797
+ });
791
798
  return currentValue.map((val) => {
792
- const opt = options.find((o) => !this.isOptionGroup(o) && equals(val, this.getOptionValue(o), this.equalityKey()));
793
- return opt ? this.getOptionLabel(opt) : String(val);
799
+ const opt = optionsByValue.get(val) ?? options.find((o) => !this.isOptionGroup(o) && equals(val, this.getOptionValue(o), this.equalityKey()));
800
+ if (opt) return this.getOptionLabel(opt);
801
+ return isObject(val) ? this.getOptionLabel(val) : String(val);
794
802
  }).filter(Boolean).join(", ");
795
803
  }
796
804
  const options = this.getAllVisibleAndNonVisibleOptions();
@@ -807,8 +815,7 @@ var Select = class Select extends BaseInput {
807
815
  $ariaMultiselectable = computed(() => this.multiple() || void 0, ...ngDevMode ? [{ debugName: "$ariaMultiselectable" }] : /* istanbul ignore next */ []);
808
816
  $ariaReadonly = computed(() => this.readonly() || void 0, ...ngDevMode ? [{ debugName: "$ariaReadonly" }] : /* istanbul ignore next */ []);
809
817
  $placeholder = computed(() => {
810
- const modelVal = this.modelValue();
811
- return modelVal === void 0 || modelVal === null ? this.placeholder() : void 0;
818
+ return (this.modelValue() ?? "") === "" ? this.placeholder() : void 0;
812
819
  }, ...ngDevMode ? [{ debugName: "$placeholder" }] : /* istanbul ignore next */ []);
813
820
  $required = computed(() => this.required() ? "" : void 0, ...ngDevMode ? [{ debugName: "$required" }] : /* istanbul ignore next */ []);
814
821
  $readonly = computed(() => this.readonly() ? "" : void 0, ...ngDevMode ? [{ debugName: "$readonly" }] : /* istanbul ignore next */ []);
@@ -834,7 +841,14 @@ var Select = class Select extends BaseInput {
834
841
  $implicit: this.visibleOptions(),
835
842
  options: {}
836
843
  }), ...ngDevMode ? [{ debugName: "defaultBuildInItemsContext" }] : /* istanbul ignore next */ []);
837
- ariaSetSize = computed(() => this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length, ...ngDevMode ? [{ debugName: "ariaSetSize" }] : /* istanbul ignore next */ []);
844
+ ariaSetSize = computed(() => this.visibleOptions().length - this.groupIndexes().length, ...ngDevMode ? [{ debugName: "ariaSetSize" }] : /* istanbul ignore next */ []);
845
+ groupIndexes = computed(() => {
846
+ const indexes = [];
847
+ this.visibleOptions().forEach((option, index) => {
848
+ if (this.isOptionGroup(option)) indexes.push(index);
849
+ });
850
+ return indexes;
851
+ }, ...ngDevMode ? [{ debugName: "groupIndexes" }] : /* istanbul ignore next */ []);
838
852
  containerDataP = computed(() => this.cn({
839
853
  invalid: this.invalid(),
840
854
  disabled: this.$disabled(),
@@ -860,10 +874,11 @@ var Select = class Select extends BaseInput {
860
874
  const visibleOptions = this.visibleOptions();
861
875
  if (visibleOptions && isNotEmpty(visibleOptions)) {
862
876
  const selectedOptionIndex = this.findSelectedOptionIndex();
863
- if (selectedOptionIndex !== -1 || modelValue === void 0 || typeof modelValue === "string" && modelValue.length === 0 || this.isModelValueNotSet() || this.editable()) this.selectedOption.set(visibleOptions[selectedOptionIndex]);
877
+ if (selectedOptionIndex !== -1 || modelValue === void 0 || typeof modelValue === "string" && modelValue.length === 0 || this.isModelValueNotSet()) this.selectedOption.set(visibleOptions[selectedOptionIndex]);
864
878
  else {
865
879
  const disabledSelectedIndex = visibleOptions.findIndex((option) => this.isSelected(option));
866
880
  if (disabledSelectedIndex !== -1) this.selectedOption.set(visibleOptions[disabledSelectedIndex]);
881
+ else if (this.editable()) this.selectedOption.set(this.getAllVisibleAndNonVisibleOptions().find((option) => this.isSelected(option)));
867
882
  }
868
883
  }
869
884
  if (isEmpty(visibleOptions) && (modelValue === void 0 || this.isModelValueNotSet()) && isNotEmpty(this.selectedOption())) this.selectedOption.set(null);
@@ -978,7 +993,8 @@ var Select = class Select extends BaseInput {
978
993
  this.focusedOptionIndex.set(this.findSelectedOptionIndex());
979
994
  if (preventChange === false) this.onChange.emit({
980
995
  originalEvent: event,
981
- value
996
+ value,
997
+ option
982
998
  });
983
999
  }
984
1000
  if (isHide) this.hide(true);
@@ -1019,7 +1035,12 @@ var Select = class Select extends BaseInput {
1019
1035
  if (this.editable()) this.updateEditableLabel();
1020
1036
  }
1021
1037
  updateEditableLabel() {
1022
- if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = this.getOptionLabel(this.selectedOption()) || this.getValueLabel(this.modelValue()) || this.modelValue() || "";
1038
+ if (this.editableInputViewChild()) {
1039
+ const modelValue = this.modelValue();
1040
+ const optionLabel = this.getOptionLabel(this.selectedOption());
1041
+ const valueLabel = this.getValueLabel(modelValue);
1042
+ this.editableInputViewChild().nativeElement.value = optionLabel || valueLabel || (isObject(modelValue) ? "" : modelValue) || "";
1043
+ }
1023
1044
  }
1024
1045
  clearEditableLabel() {
1025
1046
  if (this.editableInputViewChild()) this.editableInputViewChild().nativeElement.value = "";
@@ -1064,7 +1085,7 @@ var Select = class Select extends BaseInput {
1064
1085
  return this.optionGroupChildren() !== void 0 && this.optionGroupChildren() !== null ? resolveFieldData(optionGroup, this.optionGroupChildren()) : optionGroup.items;
1065
1086
  }
1066
1087
  getAriaPosInset(index) {
1067
- return (this.optionGroupLabel() ? index - this.visibleOptions().slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;
1088
+ return index - this.groupIndexes().filter((groupIndex) => groupIndex < index).length + 1;
1068
1089
  }
1069
1090
  resetFilter() {
1070
1091
  this._filterValue.set(null);
@@ -1089,10 +1110,14 @@ var Select = class Select extends BaseInput {
1089
1110
  this.searchValue = "";
1090
1111
  if (!this.searchOptions(event, value, false)) this.focusedOptionIndex.set(-1);
1091
1112
  this.updateModel(value || null, event);
1113
+ const selectedIndex = this.findSelectedOptionIndex();
1114
+ const option = selectedIndex !== -1 ? this.visibleOptions()[selectedIndex] : null;
1115
+ clearTimeout(this.changeTimeout);
1092
1116
  this.changeTimeout = setTimeout(() => {
1093
1117
  this.onChange.emit({
1094
1118
  originalEvent: event,
1095
- value
1119
+ value,
1120
+ option
1096
1121
  });
1097
1122
  }, 1);
1098
1123
  if (!this.overlayVisible() && isNotEmpty(value)) this.show();
@@ -1476,10 +1501,10 @@ var Select = class Select extends BaseInput {
1476
1501
  return matched;
1477
1502
  }
1478
1503
  isOptionExactMatched(option) {
1479
- return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()) === (this.searchValue ?? "").toLocaleLowerCase(this.filterLocale());
1504
+ return this.isValidOption(option) && this.getOptionLabel(option)?.toString().toLocaleLowerCase(this.filterLocale()) === (this.searchValue ?? "").toLocaleLowerCase(this.filterLocale());
1480
1505
  }
1481
1506
  isOptionMatched(option) {
1482
- return this.isValidOption(option) && this.getOptionLabel(option).toString().toLocaleLowerCase(this.filterLocale()).startsWith((this.searchValue ?? "").toLocaleLowerCase(this.filterLocale()));
1507
+ return this.isValidOption(option) && this.getOptionLabel(option)?.toString().toLocaleLowerCase(this.filterLocale()).startsWith((this.searchValue ?? "").toLocaleLowerCase(this.filterLocale()));
1483
1508
  }
1484
1509
  onFilterInputChange(event) {
1485
1510
  let value = event.target.value;
@@ -1524,7 +1549,8 @@ var Select = class Select extends BaseInput {
1524
1549
  this.onModelTouched();
1525
1550
  this.onChange.emit({
1526
1551
  originalEvent: event,
1527
- value: this.value
1552
+ value: this.value,
1553
+ option: null
1528
1554
  });
1529
1555
  this.onClear.emit(event);
1530
1556
  this.resetFilter();
@@ -1537,7 +1563,7 @@ var Select = class Select extends BaseInput {
1537
1563
  }
1538
1564
  static ɵfac = i0.ɵɵngDeclareFactory({
1539
1565
  minVersion: "12.0.0",
1540
- version: "22.2.3",
1566
+ version: "22.2.5",
1541
1567
  ngImport: i0,
1542
1568
  type: Select,
1543
1569
  deps: [],
@@ -1545,7 +1571,7 @@ var Select = class Select extends BaseInput {
1545
1571
  });
1546
1572
  static ɵcmp = i0.ɵɵngDeclareComponent({
1547
1573
  minVersion: "17.0.0",
1548
- version: "22.2.3",
1574
+ version: "22.2.5",
1549
1575
  type: Select,
1550
1576
  isStandalone: true,
1551
1577
  selector: "p-select",
@@ -2178,7 +2204,7 @@ var Select = class Select extends BaseInput {
2178
2204
  [attr.aria-haspopup]="'listbox'"
2179
2205
  [attr.aria-expanded]="$ariaExpanded"
2180
2206
  [attr.aria-controls]="$ariaControls()"
2181
- [attr.placeholder]="$placeholder()"
2207
+ [attr.placeholder]="placeholder()"
2182
2208
  [attr.aria-label]="ariaLabel()"
2183
2209
  [attr.aria-labelledby]="ariaLabelledBy()"
2184
2210
  (input)="onEditableInput($event)"
@@ -2334,6 +2360,8 @@ var Select = class Select extends BaseInput {
2334
2360
  }
2335
2361
 
2336
2362
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2363
+ @let itemTemplateRef = itemTemplate();
2364
+ @let groupTemplateRef = groupTemplate();
2337
2365
  <ul
2338
2366
  #items
2339
2367
  [attr.id]="$id() + '_list'"
@@ -2347,10 +2375,10 @@ var Select = class Select extends BaseInput {
2347
2375
  @for (option of items; track trackOption(option, i); let i = $index) {
2348
2376
  @if (isOptionGroup(option)) {
2349
2377
  <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2350
- @if (!groupTemplate()) {
2378
+ @if (!groupTemplateRef) {
2351
2379
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2352
2380
  }
2353
- <ng-container *ngTemplateOutlet="groupTemplate(); context: getGroupContext(option.optionGroup)"></ng-container>
2381
+ <ng-container *ngTemplateOutlet="groupTemplateRef; context: getGroupContext(option.optionGroup)"></ng-container>
2354
2382
  </li>
2355
2383
  } @else {
2356
2384
  <p-select-item
@@ -2360,7 +2388,7 @@ var Select = class Select extends BaseInput {
2360
2388
  [selected]="isSelected(option)"
2361
2389
  [label]="getOptionLabel(option)"
2362
2390
  [disabled]="isOptionDisabled(option)"
2363
- [template]="itemTemplate()"
2391
+ [template]="itemTemplateRef"
2364
2392
  [focused]="isOptionFocused(i, scrollerOptions)"
2365
2393
  [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2366
2394
  [ariaSetSize]="ariaSetSize()"
@@ -2620,7 +2648,7 @@ var Select = class Select extends BaseInput {
2620
2648
  };
2621
2649
  i0.ɵɵngDeclareClassMetadata({
2622
2650
  minVersion: "12.0.0",
2623
- version: "22.2.3",
2651
+ version: "22.2.5",
2624
2652
  ngImport: i0,
2625
2653
  type: Select,
2626
2654
  decorators: [{
@@ -2696,7 +2724,7 @@ i0.ɵɵngDeclareClassMetadata({
2696
2724
  [attr.aria-haspopup]="'listbox'"
2697
2725
  [attr.aria-expanded]="$ariaExpanded"
2698
2726
  [attr.aria-controls]="$ariaControls()"
2699
- [attr.placeholder]="$placeholder()"
2727
+ [attr.placeholder]="placeholder()"
2700
2728
  [attr.aria-label]="ariaLabel()"
2701
2729
  [attr.aria-labelledby]="ariaLabelledBy()"
2702
2730
  (input)="onEditableInput($event)"
@@ -2852,6 +2880,8 @@ i0.ɵɵngDeclareClassMetadata({
2852
2880
  }
2853
2881
 
2854
2882
  <ng-template #buildInItems let-items let-scrollerOptions="options">
2883
+ @let itemTemplateRef = itemTemplate();
2884
+ @let groupTemplateRef = groupTemplate();
2855
2885
  <ul
2856
2886
  #items
2857
2887
  [attr.id]="$id() + '_list'"
@@ -2865,10 +2895,10 @@ i0.ɵɵngDeclareClassMetadata({
2865
2895
  @for (option of items; track trackOption(option, i); let i = $index) {
2866
2896
  @if (isOptionGroup(option)) {
2867
2897
  <li [class]="cx('optionGroup')" [attr.id]="$id() + '_' + getOptionIndex(i, scrollerOptions)" [style]="getItemSizeStyle(scrollerOptions)" role="presentation" [pBind]="ptm('optionGroup')">
2868
- @if (!groupTemplate()) {
2898
+ @if (!groupTemplateRef) {
2869
2899
  <span [class]="cx('optionGroupLabel')" [pBind]="ptm('optionGroupLabel')">{{ getOptionGroupLabel(option.optionGroup) }}</span>
2870
2900
  }
2871
- <ng-container *ngTemplateOutlet="groupTemplate(); context: getGroupContext(option.optionGroup)"></ng-container>
2901
+ <ng-container *ngTemplateOutlet="groupTemplateRef; context: getGroupContext(option.optionGroup)"></ng-container>
2872
2902
  </li>
2873
2903
  } @else {
2874
2904
  <p-select-item
@@ -2878,7 +2908,7 @@ i0.ɵɵngDeclareClassMetadata({
2878
2908
  [selected]="isSelected(option)"
2879
2909
  [label]="getOptionLabel(option)"
2880
2910
  [disabled]="isOptionDisabled(option)"
2881
- [template]="itemTemplate()"
2911
+ [template]="itemTemplateRef"
2882
2912
  [focused]="isOptionFocused(i, scrollerOptions)"
2883
2913
  [ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
2884
2914
  [ariaSetSize]="ariaSetSize()"
@@ -3583,7 +3613,7 @@ i0.ɵɵngDeclareClassMetadata({
3583
3613
  var SelectModule = class SelectModule {
3584
3614
  static ɵfac = i0.ɵɵngDeclareFactory({
3585
3615
  minVersion: "12.0.0",
3586
- version: "22.2.3",
3616
+ version: "22.2.5",
3587
3617
  ngImport: i0,
3588
3618
  type: SelectModule,
3589
3619
  deps: [],
@@ -3591,7 +3621,7 @@ var SelectModule = class SelectModule {
3591
3621
  });
3592
3622
  static ɵmod = i0.ɵɵngDeclareNgModule({
3593
3623
  minVersion: "14.0.0",
3594
- version: "22.2.3",
3624
+ version: "22.2.5",
3595
3625
  ngImport: i0,
3596
3626
  type: SelectModule,
3597
3627
  imports: [Select, SharedModule],
@@ -3599,7 +3629,7 @@ var SelectModule = class SelectModule {
3599
3629
  });
3600
3630
  static ɵinj = i0.ɵɵngDeclareInjector({
3601
3631
  minVersion: "12.0.0",
3602
- version: "22.2.3",
3632
+ version: "22.2.5",
3603
3633
  ngImport: i0,
3604
3634
  type: SelectModule,
3605
3635
  imports: [
@@ -3611,7 +3641,7 @@ var SelectModule = class SelectModule {
3611
3641
  };
3612
3642
  i0.ɵɵngDeclareClassMetadata({
3613
3643
  minVersion: "12.0.0",
3614
- version: "22.2.3",
3644
+ version: "22.2.5",
3615
3645
  ngImport: i0,
3616
3646
  type: SelectModule,
3617
3647
  decorators: [{
@@ -23,7 +23,7 @@ var SelectButtonStyle = class SelectButtonStyle extends BaseStyle {
23
23
  classes = classes;
24
24
  static ɵfac = i0.ɵɵngDeclareFactory({
25
25
  minVersion: "12.0.0",
26
- version: "22.2.3",
26
+ version: "22.2.5",
27
27
  ngImport: i0,
28
28
  type: SelectButtonStyle,
29
29
  deps: null,
@@ -31,14 +31,14 @@ var SelectButtonStyle = class SelectButtonStyle extends BaseStyle {
31
31
  });
32
32
  static ɵprov = i0.ɵɵngDeclareInjectable({
33
33
  minVersion: "12.0.0",
34
- version: "22.2.3",
34
+ version: "22.2.5",
35
35
  ngImport: i0,
36
36
  type: SelectButtonStyle
37
37
  });
38
38
  };
39
39
  i0.ɵɵngDeclareClassMetadata({
40
40
  minVersion: "12.0.0",
41
- version: "22.2.3",
41
+ version: "22.2.5",
42
42
  ngImport: i0,
43
43
  type: SelectButtonStyle,
44
44
  decorators: [{ type: Injectable }]
@@ -204,7 +204,7 @@ var SelectButton = class SelectButton extends BaseEditableHolder {
204
204
  }
205
205
  static ɵfac = i0.ɵɵngDeclareFactory({
206
206
  minVersion: "12.0.0",
207
- version: "22.2.3",
207
+ version: "22.2.5",
208
208
  ngImport: i0,
209
209
  type: SelectButton,
210
210
  deps: null,
@@ -212,7 +212,7 @@ var SelectButton = class SelectButton extends BaseEditableHolder {
212
212
  });
213
213
  static ɵcmp = i0.ɵɵngDeclareComponent({
214
214
  minVersion: "17.0.0",
215
- version: "22.2.3",
215
+ version: "22.2.5",
216
216
  type: SelectButton,
217
217
  isStandalone: true,
218
218
  selector: "p-selectbutton, p-select-button",
@@ -353,6 +353,7 @@ var SelectButton = class SelectButton extends BaseEditableHolder {
353
353
  [autofocus]="autofocus()"
354
354
  [class]="styleClass()"
355
355
  [ngModel]="isSelected(option)"
356
+ [ngModelOptions]="{ standalone: true }"
356
357
  [onLabel]="getOptionLabel(option)"
357
358
  [offLabel]="getOptionLabel(option)"
358
359
  [ariaLabel]="getOptionLabel(option)"
@@ -442,7 +443,7 @@ var SelectButton = class SelectButton extends BaseEditableHolder {
442
443
  };
443
444
  i0.ɵɵngDeclareClassMetadata({
444
445
  minVersion: "12.0.0",
445
- version: "22.2.3",
446
+ version: "22.2.5",
446
447
  ngImport: i0,
447
448
  type: SelectButton,
448
449
  decorators: [{
@@ -463,6 +464,7 @@ i0.ɵɵngDeclareClassMetadata({
463
464
  [autofocus]="autofocus()"
464
465
  [class]="styleClass()"
465
466
  [ngModel]="isSelected(option)"
467
+ [ngModelOptions]="{ standalone: true }"
466
468
  [onLabel]="getOptionLabel(option)"
467
469
  [offLabel]="getOptionLabel(option)"
468
470
  [ariaLabel]="getOptionLabel(option)"
@@ -638,7 +640,7 @@ i0.ɵɵngDeclareClassMetadata({
638
640
  var SelectButtonModule = class SelectButtonModule {
639
641
  static ɵfac = i0.ɵɵngDeclareFactory({
640
642
  minVersion: "12.0.0",
641
- version: "22.2.3",
643
+ version: "22.2.5",
642
644
  ngImport: i0,
643
645
  type: SelectButtonModule,
644
646
  deps: [],
@@ -646,7 +648,7 @@ var SelectButtonModule = class SelectButtonModule {
646
648
  });
647
649
  static ɵmod = i0.ɵɵngDeclareNgModule({
648
650
  minVersion: "14.0.0",
649
- version: "22.2.3",
651
+ version: "22.2.5",
650
652
  ngImport: i0,
651
653
  type: SelectButtonModule,
652
654
  imports: [SelectButton, SharedModule],
@@ -654,7 +656,7 @@ var SelectButtonModule = class SelectButtonModule {
654
656
  });
655
657
  static ɵinj = i0.ɵɵngDeclareInjector({
656
658
  minVersion: "12.0.0",
657
- version: "22.2.3",
659
+ version: "22.2.5",
658
660
  ngImport: i0,
659
661
  type: SelectButtonModule,
660
662
  imports: [
@@ -666,7 +668,7 @@ var SelectButtonModule = class SelectButtonModule {
666
668
  };
667
669
  i0.ɵɵngDeclareClassMetadata({
668
670
  minVersion: "12.0.0",
669
- version: "22.2.3",
671
+ version: "22.2.5",
670
672
  ngImport: i0,
671
673
  type: SelectButtonModule,
672
674
  decorators: [{