primevue 3.22.3 → 3.22.4

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 (194) hide show
  1. package/accordion/Accordion.vue +7 -3
  2. package/accordion/accordion.cjs.js +7 -3
  3. package/accordion/accordion.cjs.min.js +1 -1
  4. package/accordion/accordion.esm.js +8 -4
  5. package/accordion/accordion.esm.min.js +1 -1
  6. package/accordion/accordion.js +7 -3
  7. package/accordion/accordion.min.js +1 -1
  8. package/autocomplete/AutoComplete.vue +6 -3
  9. package/autocomplete/autocomplete.cjs.js +12 -9
  10. package/autocomplete/autocomplete.cjs.min.js +1 -1
  11. package/autocomplete/autocomplete.esm.js +13 -10
  12. package/autocomplete/autocomplete.esm.min.js +1 -1
  13. package/autocomplete/autocomplete.js +12 -9
  14. package/autocomplete/autocomplete.min.js +1 -1
  15. package/breadcrumb/Breadcrumb.vue +2 -2
  16. package/breadcrumb/breadcrumb.cjs.js +17 -10
  17. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  18. package/breadcrumb/breadcrumb.esm.js +17 -10
  19. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  20. package/breadcrumb/breadcrumb.js +17 -10
  21. package/breadcrumb/breadcrumb.min.js +1 -1
  22. package/cascadeselect/CascadeSelect.vue +6 -3
  23. package/cascadeselect/cascadeselect.cjs.js +9 -6
  24. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  25. package/cascadeselect/cascadeselect.esm.js +10 -7
  26. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  27. package/cascadeselect/cascadeselect.js +9 -6
  28. package/cascadeselect/cascadeselect.min.js +1 -1
  29. package/contextmenu/ContextMenu.vue +6 -3
  30. package/contextmenu/contextmenu.cjs.js +8 -5
  31. package/contextmenu/contextmenu.cjs.min.js +1 -1
  32. package/contextmenu/contextmenu.esm.js +9 -6
  33. package/contextmenu/contextmenu.esm.min.js +1 -1
  34. package/contextmenu/contextmenu.js +8 -5
  35. package/contextmenu/contextmenu.min.js +1 -1
  36. package/core/core.js +45 -33
  37. package/core/core.min.js +4 -4
  38. package/datatable/BodyCell.vue +4 -2
  39. package/datatable/datatable.cjs.js +4 -2
  40. package/datatable/datatable.cjs.min.js +1 -1
  41. package/datatable/datatable.esm.js +4 -2
  42. package/datatable/datatable.esm.min.js +1 -1
  43. package/datatable/datatable.js +4 -2
  44. package/datatable/datatable.min.js +1 -1
  45. package/dock/DockSub.vue +9 -3
  46. package/dock/dock.cjs.js +10 -4
  47. package/dock/dock.cjs.min.js +1 -1
  48. package/dock/dock.esm.js +11 -5
  49. package/dock/dock.esm.min.js +1 -1
  50. package/dock/dock.js +10 -4
  51. package/dock/dock.min.js +1 -1
  52. package/dropdown/Dropdown.vue +6 -3
  53. package/dropdown/dropdown.cjs.js +13 -10
  54. package/dropdown/dropdown.cjs.min.js +1 -1
  55. package/dropdown/dropdown.esm.js +14 -11
  56. package/dropdown/dropdown.esm.min.js +1 -1
  57. package/dropdown/dropdown.js +13 -10
  58. package/dropdown/dropdown.min.js +1 -1
  59. package/listbox/Listbox.vue +6 -3
  60. package/listbox/listbox.cjs.js +11 -8
  61. package/listbox/listbox.cjs.min.js +1 -1
  62. package/listbox/listbox.esm.js +12 -9
  63. package/listbox/listbox.esm.min.js +1 -1
  64. package/listbox/listbox.js +11 -8
  65. package/listbox/listbox.min.js +1 -1
  66. package/megamenu/MegaMenu.vue +7 -3
  67. package/megamenu/megamenu.cjs.js +10 -6
  68. package/megamenu/megamenu.cjs.min.js +1 -1
  69. package/megamenu/megamenu.esm.js +11 -7
  70. package/megamenu/megamenu.esm.min.js +1 -1
  71. package/megamenu/megamenu.js +10 -6
  72. package/megamenu/megamenu.min.js +1 -1
  73. package/menu/Menu.vue +8 -3
  74. package/menu/menu.cjs.js +13 -8
  75. package/menu/menu.cjs.min.js +1 -1
  76. package/menu/menu.esm.js +14 -9
  77. package/menu/menu.esm.min.js +1 -1
  78. package/menu/menu.js +13 -8
  79. package/menu/menu.min.js +1 -1
  80. package/menubar/Menubar.vue +7 -3
  81. package/menubar/menubar.cjs.js +10 -6
  82. package/menubar/menubar.cjs.min.js +1 -1
  83. package/menubar/menubar.esm.js +11 -7
  84. package/menubar/menubar.esm.min.js +1 -1
  85. package/menubar/menubar.js +10 -6
  86. package/menubar/menubar.min.js +1 -1
  87. package/multiselect/MultiSelect.vue +6 -3
  88. package/multiselect/multiselect.cjs.js +11 -8
  89. package/multiselect/multiselect.cjs.min.js +1 -1
  90. package/multiselect/multiselect.esm.js +12 -9
  91. package/multiselect/multiselect.esm.min.js +1 -1
  92. package/multiselect/multiselect.js +11 -8
  93. package/multiselect/multiselect.min.js +1 -1
  94. package/orderlist/OrderList.vue +8 -3
  95. package/orderlist/orderlist.cjs.js +11 -6
  96. package/orderlist/orderlist.cjs.min.js +1 -1
  97. package/orderlist/orderlist.esm.js +12 -7
  98. package/orderlist/orderlist.esm.min.js +1 -1
  99. package/orderlist/orderlist.js +11 -6
  100. package/orderlist/orderlist.min.js +1 -1
  101. package/package.json +1 -1
  102. package/panelmenu/PanelMenu.vue +9 -6
  103. package/panelmenu/PanelMenuList.vue +1 -1
  104. package/panelmenu/panelmenu.cjs.js +11 -8
  105. package/panelmenu/panelmenu.cjs.min.js +1 -1
  106. package/panelmenu/panelmenu.esm.js +11 -8
  107. package/panelmenu/panelmenu.esm.min.js +1 -1
  108. package/panelmenu/panelmenu.js +11 -8
  109. package/panelmenu/panelmenu.min.js +1 -1
  110. package/picklist/PickList.vue +8 -2
  111. package/picklist/picklist.cjs.js +8 -2
  112. package/picklist/picklist.cjs.min.js +1 -1
  113. package/picklist/picklist.esm.js +9 -3
  114. package/picklist/picklist.esm.min.js +1 -1
  115. package/picklist/picklist.js +8 -2
  116. package/picklist/picklist.min.js +1 -1
  117. package/rating/Rating.vue +9 -3
  118. package/rating/rating.cjs.js +11 -5
  119. package/rating/rating.cjs.min.js +1 -1
  120. package/rating/rating.esm.js +12 -6
  121. package/rating/rating.esm.min.js +1 -1
  122. package/rating/rating.js +11 -5
  123. package/rating/rating.min.js +1 -1
  124. package/resources/themes/arya-blue/theme.css +7 -0
  125. package/resources/themes/arya-green/theme.css +7 -0
  126. package/resources/themes/arya-orange/theme.css +7 -0
  127. package/resources/themes/arya-purple/theme.css +7 -0
  128. package/resources/themes/bootstrap4-dark-blue/theme.css +7 -0
  129. package/resources/themes/bootstrap4-dark-purple/theme.css +7 -0
  130. package/resources/themes/bootstrap4-light-blue/theme.css +7 -0
  131. package/resources/themes/bootstrap4-light-purple/theme.css +7 -0
  132. package/resources/themes/fluent-light/theme.css +7 -0
  133. package/resources/themes/lara-dark-blue/theme.css +7 -0
  134. package/resources/themes/lara-dark-indigo/theme.css +7 -0
  135. package/resources/themes/lara-dark-purple/theme.css +7 -0
  136. package/resources/themes/lara-dark-teal/theme.css +7 -0
  137. package/resources/themes/lara-light-blue/theme.css +7 -0
  138. package/resources/themes/lara-light-indigo/theme.css +7 -0
  139. package/resources/themes/lara-light-purple/theme.css +7 -0
  140. package/resources/themes/lara-light-teal/theme.css +7 -0
  141. package/resources/themes/luna-amber/theme.css +7 -0
  142. package/resources/themes/luna-blue/theme.css +7 -0
  143. package/resources/themes/luna-green/theme.css +7 -0
  144. package/resources/themes/luna-pink/theme.css +7 -0
  145. package/resources/themes/md-dark-deeppurple/theme.css +10 -2
  146. package/resources/themes/md-dark-indigo/theme.css +10 -2
  147. package/resources/themes/md-light-deeppurple/theme.css +10 -2
  148. package/resources/themes/md-light-indigo/theme.css +10 -2
  149. package/resources/themes/mdc-dark-deeppurple/theme.css +10 -2
  150. package/resources/themes/mdc-dark-indigo/theme.css +10 -2
  151. package/resources/themes/mdc-light-deeppurple/theme.css +10 -2
  152. package/resources/themes/mdc-light-indigo/theme.css +10 -2
  153. package/resources/themes/nova/theme.css +7 -0
  154. package/resources/themes/nova-accent/theme.css +7 -0
  155. package/resources/themes/nova-alt/theme.css +7 -0
  156. package/resources/themes/nova-vue/theme.css +7 -0
  157. package/resources/themes/rhea/theme.css +7 -0
  158. package/resources/themes/saga-blue/theme.css +7 -0
  159. package/resources/themes/saga-green/theme.css +7 -0
  160. package/resources/themes/saga-orange/theme.css +7 -0
  161. package/resources/themes/saga-purple/theme.css +7 -0
  162. package/resources/themes/tailwind-light/theme.css +7 -0
  163. package/resources/themes/vela-blue/theme.css +7 -0
  164. package/resources/themes/vela-green/theme.css +7 -0
  165. package/resources/themes/vela-orange/theme.css +7 -0
  166. package/resources/themes/vela-purple/theme.css +7 -0
  167. package/speeddial/SpeedDial.vue +6 -3
  168. package/speeddial/speeddial.cjs.js +11 -8
  169. package/speeddial/speeddial.cjs.min.js +1 -1
  170. package/speeddial/speeddial.esm.js +12 -9
  171. package/speeddial/speeddial.esm.min.js +1 -1
  172. package/speeddial/speeddial.js +11 -8
  173. package/speeddial/speeddial.min.js +1 -1
  174. package/tabview/TabView.vue +6 -3
  175. package/tabview/tabview.cjs.js +6 -3
  176. package/tabview/tabview.cjs.min.js +1 -1
  177. package/tabview/tabview.esm.js +7 -4
  178. package/tabview/tabview.esm.min.js +1 -1
  179. package/tabview/tabview.js +6 -3
  180. package/tabview/tabview.min.js +1 -1
  181. package/tieredmenu/TieredMenu.vue +7 -3
  182. package/tieredmenu/tieredmenu.cjs.js +10 -6
  183. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  184. package/tieredmenu/tieredmenu.esm.js +11 -7
  185. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  186. package/tieredmenu/tieredmenu.js +10 -6
  187. package/tieredmenu/tieredmenu.min.js +1 -1
  188. package/utils/utils.cjs.js +9 -9
  189. package/utils/utils.cjs.min.js +1 -1
  190. package/utils/utils.esm.js +9 -9
  191. package/utils/utils.esm.min.js +1 -1
  192. package/utils/utils.js +9 -9
  193. package/utils/utils.min.js +1 -1
  194. package/web-types.json +1 -1
@@ -1 +1 @@
1
- "use strict";var e=require("primevue/api"),t=require("primevue/ripple"),i=require("primevue/utils"),s=require("primevue/virtualscroller"),n=require("vue");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(t),a=o(s),r={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data:()=>({filterValue:null,focused:!1,focusedOptionIndex:-1}),watch:{options(){this.autoUpdateModel()}},mounted(){this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?i.ObjectUtils.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?i.ObjectUtils.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?i.ObjectUtils.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&i.ObjectUtils.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){i.DomHandler.focus(this.list);const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=i.ObjectUtils.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");i.DomHandler.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else i.DomHandler.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&i.ObjectUtils.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>i.ObjectUtils.equals(e,t,this.equalityKey))):i.ObjectUtils.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!i.ObjectUtils.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,s=i.DomHandler.findSingle(this.list,`li[id="${t}"]`);s?s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.FilterService.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return i.ObjectUtils.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return i.ObjectUtils.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},id(){return this.$attrs.id||i.UniqueComponentId()},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:l.default},components:{VirtualScroller:a.default}};const d=["id"],p=["tabindex"],c={key:0,class:"p-listbox-header"},u={class:"p-listbox-filter-container"},h=["placeholder","aria-owns","aria-activedescendant","tabindex"],f={role:"status","aria-live":"polite",class:"p-hidden-accessible"},O=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],b=["id"],m=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],x={key:0,class:"p-listbox-empty-message",role:"option"},g={key:1,class:"p-listbox-empty-message",role:"option"},y={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},I={role:"status","aria-live":"polite",class:"p-hidden-accessible"},S=["tabindex"];!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),r.render=function(e,t,i,s,o,l){const a=n.resolveComponent("VirtualScroller"),r=n.resolveDirective("ripple");return n.openBlock(),n.createElementBlock("div",{id:l.id,class:n.normalizeClass(l.containerClass),onFocusout:t[10]||(t[10]=(...e)=>l.onFocusout&&l.onFocusout(...e))},[n.createElementVNode("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>l.onFirstHiddenFocus&&l.onFirstHiddenFocus(...e))},null,40,p),n.renderSlot(e.$slots,"header",{value:i.modelValue,options:l.visibleOptions}),i.filter?(n.openBlock(),n.createElementBlock("div",c,[n.createElementVNode("div",u,[n.withDirectives(n.createElementVNode("input",n.mergeProps({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>o.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":l.id+"_list","aria-activedescendant":l.focusedOptionId,tabindex:i.disabled||o.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>l.onFilterChange&&l.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>l.onFilterBlur&&l.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>l.onFilterKeyDown&&l.onFilterKeyDown(...e))},i.filterInputProps),null,16,h),[[n.vModelText,o.filterValue]]),n.createElementVNode("span",{class:n.normalizeClass(["p-listbox-filter-icon",i.filterIcon])},null,2)]),n.createElementVNode("span",f,n.toDisplayString(l.filterResultMessageText),1)])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:n.normalizeStyle(i.listStyle)},[n.createVNode(a,n.mergeProps({ref:l.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:l.visibleOptions,tabindex:-1,disabled:l.virtualScrollerDisabled}),n.createSlots({content:n.withCtx((({styleClass:s,contentRef:a,items:d,getItemOptions:p,contentStyle:c,itemSize:u})=>[n.createElementVNode("ul",{ref:e=>l.listRef(e,a),id:l.id+"_list",class:n.normalizeClass(["p-listbox-list",s]),style:n.normalizeStyle(c),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":o.focused?l.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>l.onListFocus&&l.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>l.onListBlur&&l.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>l.onListKeyDown&&l.onListKeyDown(...e))},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(d,((i,s)=>(n.openBlock(),n.createElementBlock(n.Fragment,{key:l.getOptionRenderKey(i,l.getOptionIndex(s,p))},[l.isOptionGroup(i)?(n.openBlock(),n.createElementBlock("li",{key:0,id:l.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:"p-listbox-item-group",role:"option"},[n.renderSlot(e.$slots,"optiongroup",{option:i.optionGroup,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionGroupLabel(i.optionGroup)),1)]))],12,b)):n.withDirectives((n.openBlock(),n.createElementBlock("li",{key:1,id:l.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:n.normalizeClass(["p-listbox-item",{"p-highlight":l.isSelected(i),"p-focus":o.focusedOptionIndex===l.getOptionIndex(s,p),"p-disabled":l.isOptionDisabled(i)}]),role:"option","aria-label":l.getOptionLabel(i),"aria-selected":l.isSelected(i),"aria-disabled":l.isOptionDisabled(i),"aria-setsize":l.ariaSetSize,"aria-posinset":l.getAriaPosInset(l.getOptionIndex(s,p)),onClick:e=>l.onOptionSelect(e,i,l.getOptionIndex(s,p)),onMousedown:e=>l.onOptionMouseDown(e,l.getOptionIndex(s,p)),onMousemove:e=>l.onOptionMouseMove(e,l.getOptionIndex(s,p)),onTouchend:t[5]||(t[5]=e=>l.onOptionTouchEnd())},[n.renderSlot(e.$slots,"option",{option:i,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionLabel(i)),1)]))],46,m)),[[r]])],64)))),128)),o.filterValue&&(!d||d&&0===d.length)?(n.openBlock(),n.createElementBlock("li",x,[n.renderSlot(e.$slots,"emptyfilter",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("li",g,[n.renderSlot(e.$slots,"empty",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyMessageText),1)]))])):n.createCommentVNode("",!0)],46,O)])),_:2},[e.$slots.loader?{name:"loader",fn:n.withCtx((({options:t})=>[n.renderSlot(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),n.renderSlot(e.$slots,"footer",{value:i.modelValue,options:l.visibleOptions}),!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("span",y,n.toDisplayString(l.emptyMessageText),1)):n.createCommentVNode("",!0),n.createElementVNode("span",I,n.toDisplayString(l.selectedMessageText),1),n.createElementVNode("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>l.onLastHiddenFocus&&l.onLastHiddenFocus(...e))},null,40,S)],42,d)},module.exports=r;
1
+ "use strict";var e=require("primevue/api"),t=require("primevue/ripple"),i=require("primevue/utils"),s=require("primevue/virtualscroller"),n=require("vue");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(t),a=o(s),r={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data(){return{id:this.$attrs.id,filterValue:null,focused:!1,focusedOptionIndex:-1}},watch:{"$attrs.id":function(e){this.id=e||i.UniqueComponentId()},options(){this.autoUpdateModel()}},mounted(){this.id=this.id||i.UniqueComponentId(),this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?i.ObjectUtils.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?i.ObjectUtils.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?i.ObjectUtils.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&i.ObjectUtils.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){i.DomHandler.focus(this.list);const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=i.ObjectUtils.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");i.DomHandler.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else i.DomHandler.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&i.ObjectUtils.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>i.ObjectUtils.equals(e,t,this.equalityKey))):i.ObjectUtils.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!i.ObjectUtils.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,s=i.DomHandler.findSingle(this.list,`li[id="${t}"]`);s?s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.FilterService.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return i.ObjectUtils.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return i.ObjectUtils.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:l.default},components:{VirtualScroller:a.default}};const d=["id"],p=["tabindex"],c={key:0,class:"p-listbox-header"},u={class:"p-listbox-filter-container"},h=["placeholder","aria-owns","aria-activedescendant","tabindex"],f={role:"status","aria-live":"polite",class:"p-hidden-accessible"},O=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],b=["id"],m=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],x={key:0,class:"p-listbox-empty-message",role:"option"},g={key:1,class:"p-listbox-empty-message",role:"option"},y={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},I={role:"status","aria-live":"polite",class:"p-hidden-accessible"},S=["tabindex"];!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),r.render=function(e,t,i,s,o,l){const a=n.resolveComponent("VirtualScroller"),r=n.resolveDirective("ripple");return n.openBlock(),n.createElementBlock("div",{id:o.id,class:n.normalizeClass(l.containerClass),onFocusout:t[10]||(t[10]=(...e)=>l.onFocusout&&l.onFocusout(...e))},[n.createElementVNode("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>l.onFirstHiddenFocus&&l.onFirstHiddenFocus(...e))},null,40,p),n.renderSlot(e.$slots,"header",{value:i.modelValue,options:l.visibleOptions}),i.filter?(n.openBlock(),n.createElementBlock("div",c,[n.createElementVNode("div",u,[n.withDirectives(n.createElementVNode("input",n.mergeProps({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>o.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":o.id+"_list","aria-activedescendant":l.focusedOptionId,tabindex:i.disabled||o.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>l.onFilterChange&&l.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>l.onFilterBlur&&l.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>l.onFilterKeyDown&&l.onFilterKeyDown(...e))},i.filterInputProps),null,16,h),[[n.vModelText,o.filterValue]]),n.createElementVNode("span",{class:n.normalizeClass(["p-listbox-filter-icon",i.filterIcon])},null,2)]),n.createElementVNode("span",f,n.toDisplayString(l.filterResultMessageText),1)])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:n.normalizeStyle(i.listStyle)},[n.createVNode(a,n.mergeProps({ref:l.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:l.visibleOptions,tabindex:-1,disabled:l.virtualScrollerDisabled}),n.createSlots({content:n.withCtx((({styleClass:s,contentRef:a,items:d,getItemOptions:p,contentStyle:c,itemSize:u})=>[n.createElementVNode("ul",{ref:e=>l.listRef(e,a),id:o.id+"_list",class:n.normalizeClass(["p-listbox-list",s]),style:n.normalizeStyle(c),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":o.focused?l.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>l.onListFocus&&l.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>l.onListBlur&&l.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>l.onListKeyDown&&l.onListKeyDown(...e))},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(d,((i,s)=>(n.openBlock(),n.createElementBlock(n.Fragment,{key:l.getOptionRenderKey(i,l.getOptionIndex(s,p))},[l.isOptionGroup(i)?(n.openBlock(),n.createElementBlock("li",{key:0,id:o.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:"p-listbox-item-group",role:"option"},[n.renderSlot(e.$slots,"optiongroup",{option:i.optionGroup,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionGroupLabel(i.optionGroup)),1)]))],12,b)):n.withDirectives((n.openBlock(),n.createElementBlock("li",{key:1,id:o.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:n.normalizeClass(["p-listbox-item",{"p-highlight":l.isSelected(i),"p-focus":o.focusedOptionIndex===l.getOptionIndex(s,p),"p-disabled":l.isOptionDisabled(i)}]),role:"option","aria-label":l.getOptionLabel(i),"aria-selected":l.isSelected(i),"aria-disabled":l.isOptionDisabled(i),"aria-setsize":l.ariaSetSize,"aria-posinset":l.getAriaPosInset(l.getOptionIndex(s,p)),onClick:e=>l.onOptionSelect(e,i,l.getOptionIndex(s,p)),onMousedown:e=>l.onOptionMouseDown(e,l.getOptionIndex(s,p)),onMousemove:e=>l.onOptionMouseMove(e,l.getOptionIndex(s,p)),onTouchend:t[5]||(t[5]=e=>l.onOptionTouchEnd())},[n.renderSlot(e.$slots,"option",{option:i,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionLabel(i)),1)]))],46,m)),[[r]])],64)))),128)),o.filterValue&&(!d||d&&0===d.length)?(n.openBlock(),n.createElementBlock("li",x,[n.renderSlot(e.$slots,"emptyfilter",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("li",g,[n.renderSlot(e.$slots,"empty",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyMessageText),1)]))])):n.createCommentVNode("",!0)],46,O)])),_:2},[e.$slots.loader?{name:"loader",fn:n.withCtx((({options:t})=>[n.renderSlot(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),n.renderSlot(e.$slots,"footer",{value:i.modelValue,options:l.visibleOptions}),!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("span",y,n.toDisplayString(l.emptyMessageText),1)):n.createCommentVNode("",!0),n.createElementVNode("span",I,n.toDisplayString(l.selectedMessageText),1),n.createElementVNode("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>l.onLastHiddenFocus&&l.onLastHiddenFocus(...e))},null,40,S)],42,d)},module.exports=r;
@@ -1,6 +1,6 @@
1
1
  import { FilterService } from 'primevue/api';
2
2
  import Ripple from 'primevue/ripple';
3
- import { ObjectUtils, DomHandler, UniqueComponentId } from 'primevue/utils';
3
+ import { UniqueComponentId, ObjectUtils, DomHandler } from 'primevue/utils';
4
4
  import VirtualScroller from 'primevue/virtualscroller';
5
5
  import { resolveComponent, resolveDirective, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, withDirectives, mergeProps, vModelText, toDisplayString, createCommentVNode, normalizeStyle, createVNode, createSlots, withCtx, Fragment, renderList, createTextVNode } from 'vue';
6
6
 
@@ -90,17 +90,23 @@ var script = {
90
90
  focusOnHover: false,
91
91
  data() {
92
92
  return {
93
+ id: this.$attrs.id,
93
94
  filterValue: null,
94
95
  focused: false,
95
96
  focusedOptionIndex: -1
96
97
  };
97
98
  },
98
99
  watch: {
100
+ '$attrs.id': function (newValue) {
101
+ this.id = newValue || UniqueComponentId();
102
+ },
99
103
  options() {
100
104
  this.autoUpdateModel();
101
105
  }
102
106
  },
103
107
  mounted() {
108
+ this.id = this.id || UniqueComponentId();
109
+
104
110
  this.autoUpdateModel();
105
111
  },
106
112
  methods: {
@@ -635,9 +641,6 @@ var script = {
635
641
  selectedMessageText() {
636
642
  return this.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue.length : '1') : this.emptySelectionMessageText;
637
643
  },
638
- id() {
639
- return this.$attrs.id || UniqueComponentId();
640
- },
641
644
  focusedOptionId() {
642
645
  return this.focusedOptionIndex !== -1 ? `${this.id}_${this.focusedOptionIndex}` : null;
643
646
  },
@@ -700,7 +703,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
700
703
  const _directive_ripple = resolveDirective("ripple");
701
704
 
702
705
  return (openBlock(), createElementBlock("div", {
703
- id: $options.id,
706
+ id: $data.id,
704
707
  class: normalizeClass($options.containerClass),
705
708
  onFocusout: _cache[10] || (_cache[10] = (...args) => ($options.onFocusout && $options.onFocusout(...args)))
706
709
  }, [
@@ -727,7 +730,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
727
730
  placeholder: $props.filterPlaceholder,
728
731
  role: "searchbox",
729
732
  autocomplete: "off",
730
- "aria-owns": $options.id + '_list',
733
+ "aria-owns": $data.id + '_list',
731
734
  "aria-activedescendant": $options.focusedOptionId,
732
735
  tabindex: !$props.disabled && !$data.focused ? $props.tabindex : -1,
733
736
  onInput: _cache[2] || (_cache[2] = (...args) => ($options.onFilterChange && $options.onFilterChange(...args))),
@@ -757,7 +760,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
757
760
  content: withCtx(({ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }) => [
758
761
  createElementVNode("ul", {
759
762
  ref: (el) => $options.listRef(el, contentRef),
760
- id: $options.id + '_list',
763
+ id: $data.id + '_list',
761
764
  class: normalizeClass(['p-listbox-list', styleClass]),
762
765
  style: normalizeStyle(contentStyle),
763
766
  tabindex: -1,
@@ -778,7 +781,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
778
781
  ($options.isOptionGroup(option))
779
782
  ? (openBlock(), createElementBlock("li", {
780
783
  key: 0,
781
- id: $options.id + '_' + $options.getOptionIndex(i, getItemOptions),
784
+ id: $data.id + '_' + $options.getOptionIndex(i, getItemOptions),
782
785
  style: normalizeStyle({ height: itemSize ? itemSize + 'px' : undefined }),
783
786
  class: "p-listbox-item-group",
784
787
  role: "option"
@@ -792,7 +795,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
792
795
  ], 12, _hoisted_8))
793
796
  : withDirectives((openBlock(), createElementBlock("li", {
794
797
  key: 1,
795
- id: $options.id + '_' + $options.getOptionIndex(i, getItemOptions),
798
+ id: $data.id + '_' + $options.getOptionIndex(i, getItemOptions),
796
799
  style: normalizeStyle({ height: itemSize ? itemSize + 'px' : undefined }),
797
800
  class: normalizeClass(['p-listbox-item', { 'p-highlight': $options.isSelected(option), 'p-focus': $data.focusedOptionIndex === $options.getOptionIndex(i, getItemOptions), 'p-disabled': $options.isOptionDisabled(option) }]),
798
801
  role: "option",
@@ -1 +1 @@
1
- import{FilterService as e}from"primevue/api";import t from"primevue/ripple";import{ObjectUtils as i,DomHandler as s,UniqueComponentId as n}from"primevue/utils";import o from"primevue/virtualscroller";import{resolveComponent as l,resolveDirective as a,openBlock as r,createElementBlock as d,normalizeClass as p,createElementVNode as u,renderSlot as h,withDirectives as c,mergeProps as f,vModelText as O,toDisplayString as x,createCommentVNode as b,normalizeStyle as g,createVNode as m,createSlots as y,withCtx as I,Fragment as v,renderList as S,createTextVNode as F}from"vue";var K={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data:()=>({filterValue:null,focused:!1,focusedOptionIndex:-1}),watch:{options(){this.autoUpdateModel()}},mounted(){this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?i.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?i.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?i.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&i.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return i.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return i.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){s.focus(this.list);const e=s.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=i.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=s.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");s.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else s.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&i.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>i.equals(e,t,this.equalityKey))):i.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return i.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?i.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?i.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?i.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!i.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,i=s.findSingle(this.list,`li[id="${t}"]`);i?i.scrollIntoView&&i.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return i.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return i.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},id(){return this.$attrs.id||n()},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:t},components:{VirtualScroller:o}};const M=["id"],V=["tabindex"],L={key:0,class:"p-listbox-header"},w={class:"p-listbox-filter-container"},D=["placeholder","aria-owns","aria-activedescendant","tabindex"],T={role:"status","aria-live":"polite",class:"p-hidden-accessible"},$=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],E=["id"],k=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],R={key:0,class:"p-listbox-empty-message",role:"option"},H={key:1,class:"p-listbox-empty-message",role:"option"},A={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},G={role:"status","aria-live":"polite",class:"p-hidden-accessible"},C=["tabindex"];!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),K.render=function(e,t,i,s,n,o){const K=l("VirtualScroller"),P=a("ripple");return r(),d("div",{id:o.id,class:p(o.containerClass),onFocusout:t[10]||(t[10]=(...e)=>o.onFocusout&&o.onFocusout(...e))},[u("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>o.onFirstHiddenFocus&&o.onFirstHiddenFocus(...e))},null,40,V),h(e.$slots,"header",{value:i.modelValue,options:o.visibleOptions}),i.filter?(r(),d("div",L,[u("div",w,[c(u("input",f({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>n.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":o.id+"_list","aria-activedescendant":o.focusedOptionId,tabindex:i.disabled||n.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>o.onFilterChange&&o.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>o.onFilterBlur&&o.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>o.onFilterKeyDown&&o.onFilterKeyDown(...e))},i.filterInputProps),null,16,D),[[O,n.filterValue]]),u("span",{class:p(["p-listbox-filter-icon",i.filterIcon])},null,2)]),u("span",T,x(o.filterResultMessageText),1)])):b("",!0),u("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:g(i.listStyle)},[m(K,f({ref:o.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:o.visibleOptions,tabindex:-1,disabled:o.virtualScrollerDisabled}),y({content:I((({styleClass:s,contentRef:l,items:a,getItemOptions:f,contentStyle:O,itemSize:m})=>[u("ul",{ref:e=>o.listRef(e,l),id:o.id+"_list",class:p(["p-listbox-list",s]),style:g(O),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":n.focused?o.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>o.onListFocus&&o.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>o.onListBlur&&o.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>o.onListKeyDown&&o.onListKeyDown(...e))},[(r(!0),d(v,null,S(a,((i,s)=>(r(),d(v,{key:o.getOptionRenderKey(i,o.getOptionIndex(s,f))},[o.isOptionGroup(i)?(r(),d("li",{key:0,id:o.id+"_"+o.getOptionIndex(s,f),style:g({height:m?m+"px":void 0}),class:"p-listbox-item-group",role:"option"},[h(e.$slots,"optiongroup",{option:i.optionGroup,index:o.getOptionIndex(s,f)},(()=>[F(x(o.getOptionGroupLabel(i.optionGroup)),1)]))],12,E)):c((r(),d("li",{key:1,id:o.id+"_"+o.getOptionIndex(s,f),style:g({height:m?m+"px":void 0}),class:p(["p-listbox-item",{"p-highlight":o.isSelected(i),"p-focus":n.focusedOptionIndex===o.getOptionIndex(s,f),"p-disabled":o.isOptionDisabled(i)}]),role:"option","aria-label":o.getOptionLabel(i),"aria-selected":o.isSelected(i),"aria-disabled":o.isOptionDisabled(i),"aria-setsize":o.ariaSetSize,"aria-posinset":o.getAriaPosInset(o.getOptionIndex(s,f)),onClick:e=>o.onOptionSelect(e,i,o.getOptionIndex(s,f)),onMousedown:e=>o.onOptionMouseDown(e,o.getOptionIndex(s,f)),onMousemove:e=>o.onOptionMouseMove(e,o.getOptionIndex(s,f)),onTouchend:t[5]||(t[5]=e=>o.onOptionTouchEnd())},[h(e.$slots,"option",{option:i,index:o.getOptionIndex(s,f)},(()=>[F(x(o.getOptionLabel(i)),1)]))],46,k)),[[P]])],64)))),128)),n.filterValue&&(!a||a&&0===a.length)?(r(),d("li",R,[h(e.$slots,"emptyfilter",{},(()=>[F(x(o.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(r(),d("li",H,[h(e.$slots,"empty",{},(()=>[F(x(o.emptyMessageText),1)]))])):b("",!0)],46,$)])),_:2},[e.$slots.loader?{name:"loader",fn:I((({options:t})=>[h(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),h(e.$slots,"footer",{value:i.modelValue,options:o.visibleOptions}),!i.options||i.options&&0===i.options.length?(r(),d("span",A,x(o.emptyMessageText),1)):b("",!0),u("span",G,x(o.selectedMessageText),1),u("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>o.onLastHiddenFocus&&o.onLastHiddenFocus(...e))},null,40,C)],42,M)};export{K as default};
1
+ import{FilterService as e}from"primevue/api";import t from"primevue/ripple";import{UniqueComponentId as i,ObjectUtils as s,DomHandler as n}from"primevue/utils";import o from"primevue/virtualscroller";import{resolveComponent as l,resolveDirective as a,openBlock as r,createElementBlock as d,normalizeClass as p,createElementVNode as h,renderSlot as u,withDirectives as c,mergeProps as f,vModelText as O,toDisplayString as x,createCommentVNode as b,normalizeStyle as g,createVNode as m,createSlots as y,withCtx as I,Fragment as v,renderList as S,createTextVNode as F}from"vue";var K={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data(){return{id:this.$attrs.id,filterValue:null,focused:!1,focusedOptionIndex:-1}},watch:{"$attrs.id":function(e){this.id=e||i()},options(){this.autoUpdateModel()}},mounted(){this.id=this.id||i(),this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?s.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?s.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?s.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&s.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return s.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return s.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){n.focus(this.list);const e=n.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=s.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=n.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");n.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else n.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&s.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>s.equals(e,t,this.equalityKey))):s.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return s.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?s.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?s.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?s.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!s.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,i=n.findSingle(this.list,`li[id="${t}"]`);i?i.scrollIntoView&&i.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return s.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return s.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:t},components:{VirtualScroller:o}};const M=["id"],V=["tabindex"],L={key:0,class:"p-listbox-header"},w={class:"p-listbox-filter-container"},D=["placeholder","aria-owns","aria-activedescendant","tabindex"],T={role:"status","aria-live":"polite",class:"p-hidden-accessible"},$=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],E=["id"],k=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],R={key:0,class:"p-listbox-empty-message",role:"option"},H={key:1,class:"p-listbox-empty-message",role:"option"},A={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},G={role:"status","aria-live":"polite",class:"p-hidden-accessible"},C=["tabindex"];!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),K.render=function(e,t,i,s,n,o){const K=l("VirtualScroller"),P=a("ripple");return r(),d("div",{id:n.id,class:p(o.containerClass),onFocusout:t[10]||(t[10]=(...e)=>o.onFocusout&&o.onFocusout(...e))},[h("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>o.onFirstHiddenFocus&&o.onFirstHiddenFocus(...e))},null,40,V),u(e.$slots,"header",{value:i.modelValue,options:o.visibleOptions}),i.filter?(r(),d("div",L,[h("div",w,[c(h("input",f({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>n.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":n.id+"_list","aria-activedescendant":o.focusedOptionId,tabindex:i.disabled||n.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>o.onFilterChange&&o.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>o.onFilterBlur&&o.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>o.onFilterKeyDown&&o.onFilterKeyDown(...e))},i.filterInputProps),null,16,D),[[O,n.filterValue]]),h("span",{class:p(["p-listbox-filter-icon",i.filterIcon])},null,2)]),h("span",T,x(o.filterResultMessageText),1)])):b("",!0),h("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:g(i.listStyle)},[m(K,f({ref:o.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:o.visibleOptions,tabindex:-1,disabled:o.virtualScrollerDisabled}),y({content:I((({styleClass:s,contentRef:l,items:a,getItemOptions:f,contentStyle:O,itemSize:m})=>[h("ul",{ref:e=>o.listRef(e,l),id:n.id+"_list",class:p(["p-listbox-list",s]),style:g(O),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":n.focused?o.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>o.onListFocus&&o.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>o.onListBlur&&o.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>o.onListKeyDown&&o.onListKeyDown(...e))},[(r(!0),d(v,null,S(a,((i,s)=>(r(),d(v,{key:o.getOptionRenderKey(i,o.getOptionIndex(s,f))},[o.isOptionGroup(i)?(r(),d("li",{key:0,id:n.id+"_"+o.getOptionIndex(s,f),style:g({height:m?m+"px":void 0}),class:"p-listbox-item-group",role:"option"},[u(e.$slots,"optiongroup",{option:i.optionGroup,index:o.getOptionIndex(s,f)},(()=>[F(x(o.getOptionGroupLabel(i.optionGroup)),1)]))],12,E)):c((r(),d("li",{key:1,id:n.id+"_"+o.getOptionIndex(s,f),style:g({height:m?m+"px":void 0}),class:p(["p-listbox-item",{"p-highlight":o.isSelected(i),"p-focus":n.focusedOptionIndex===o.getOptionIndex(s,f),"p-disabled":o.isOptionDisabled(i)}]),role:"option","aria-label":o.getOptionLabel(i),"aria-selected":o.isSelected(i),"aria-disabled":o.isOptionDisabled(i),"aria-setsize":o.ariaSetSize,"aria-posinset":o.getAriaPosInset(o.getOptionIndex(s,f)),onClick:e=>o.onOptionSelect(e,i,o.getOptionIndex(s,f)),onMousedown:e=>o.onOptionMouseDown(e,o.getOptionIndex(s,f)),onMousemove:e=>o.onOptionMouseMove(e,o.getOptionIndex(s,f)),onTouchend:t[5]||(t[5]=e=>o.onOptionTouchEnd())},[u(e.$slots,"option",{option:i,index:o.getOptionIndex(s,f)},(()=>[F(x(o.getOptionLabel(i)),1)]))],46,k)),[[P]])],64)))),128)),n.filterValue&&(!a||a&&0===a.length)?(r(),d("li",R,[u(e.$slots,"emptyfilter",{},(()=>[F(x(o.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(r(),d("li",H,[u(e.$slots,"empty",{},(()=>[F(x(o.emptyMessageText),1)]))])):b("",!0)],46,$)])),_:2},[e.$slots.loader?{name:"loader",fn:I((({options:t})=>[u(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),u(e.$slots,"footer",{value:i.modelValue,options:o.visibleOptions}),!i.options||i.options&&0===i.options.length?(r(),d("span",A,x(o.emptyMessageText),1)):b("",!0),h("span",G,x(o.selectedMessageText),1),h("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>o.onLastHiddenFocus&&o.onLastHiddenFocus(...e))},null,40,C)],42,M)};export{K as default};
@@ -93,17 +93,23 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
93
93
  focusOnHover: false,
94
94
  data() {
95
95
  return {
96
+ id: this.$attrs.id,
96
97
  filterValue: null,
97
98
  focused: false,
98
99
  focusedOptionIndex: -1
99
100
  };
100
101
  },
101
102
  watch: {
103
+ '$attrs.id': function (newValue) {
104
+ this.id = newValue || utils.UniqueComponentId();
105
+ },
102
106
  options() {
103
107
  this.autoUpdateModel();
104
108
  }
105
109
  },
106
110
  mounted() {
111
+ this.id = this.id || utils.UniqueComponentId();
112
+
107
113
  this.autoUpdateModel();
108
114
  },
109
115
  methods: {
@@ -638,9 +644,6 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
638
644
  selectedMessageText() {
639
645
  return this.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue.length : '1') : this.emptySelectionMessageText;
640
646
  },
641
- id() {
642
- return this.$attrs.id || utils.UniqueComponentId();
643
- },
644
647
  focusedOptionId() {
645
648
  return this.focusedOptionIndex !== -1 ? `${this.id}_${this.focusedOptionIndex}` : null;
646
649
  },
@@ -703,7 +706,7 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
703
706
  const _directive_ripple = vue.resolveDirective("ripple");
704
707
 
705
708
  return (vue.openBlock(), vue.createElementBlock("div", {
706
- id: $options.id,
709
+ id: $data.id,
707
710
  class: vue.normalizeClass($options.containerClass),
708
711
  onFocusout: _cache[10] || (_cache[10] = (...args) => ($options.onFocusout && $options.onFocusout(...args)))
709
712
  }, [
@@ -730,7 +733,7 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
730
733
  placeholder: $props.filterPlaceholder,
731
734
  role: "searchbox",
732
735
  autocomplete: "off",
733
- "aria-owns": $options.id + '_list',
736
+ "aria-owns": $data.id + '_list',
734
737
  "aria-activedescendant": $options.focusedOptionId,
735
738
  tabindex: !$props.disabled && !$data.focused ? $props.tabindex : -1,
736
739
  onInput: _cache[2] || (_cache[2] = (...args) => ($options.onFilterChange && $options.onFilterChange(...args))),
@@ -760,7 +763,7 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
760
763
  content: vue.withCtx(({ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }) => [
761
764
  vue.createElementVNode("ul", {
762
765
  ref: (el) => $options.listRef(el, contentRef),
763
- id: $options.id + '_list',
766
+ id: $data.id + '_list',
764
767
  class: vue.normalizeClass(['p-listbox-list', styleClass]),
765
768
  style: vue.normalizeStyle(contentStyle),
766
769
  tabindex: -1,
@@ -781,7 +784,7 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
781
784
  ($options.isOptionGroup(option))
782
785
  ? (vue.openBlock(), vue.createElementBlock("li", {
783
786
  key: 0,
784
- id: $options.id + '_' + $options.getOptionIndex(i, getItemOptions),
787
+ id: $data.id + '_' + $options.getOptionIndex(i, getItemOptions),
785
788
  style: vue.normalizeStyle({ height: itemSize ? itemSize + 'px' : undefined }),
786
789
  class: "p-listbox-item-group",
787
790
  role: "option"
@@ -795,7 +798,7 @@ this.primevue.listbox = (function (api, Ripple, utils, VirtualScroller, vue) {
795
798
  ], 12, _hoisted_8))
796
799
  : vue.withDirectives((vue.openBlock(), vue.createElementBlock("li", {
797
800
  key: 1,
798
- id: $options.id + '_' + $options.getOptionIndex(i, getItemOptions),
801
+ id: $data.id + '_' + $options.getOptionIndex(i, getItemOptions),
799
802
  style: vue.normalizeStyle({ height: itemSize ? itemSize + 'px' : undefined }),
800
803
  class: vue.normalizeClass(['p-listbox-item', { 'p-highlight': $options.isSelected(option), 'p-focus': $data.focusedOptionIndex === $options.getOptionIndex(i, getItemOptions), 'p-disabled': $options.isOptionDisabled(option) }]),
801
804
  role: "option",
@@ -1 +1 @@
1
- this.primevue=this.primevue||{},this.primevue.listbox=function(e,t,i,s,n){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(t),a=o(s),r={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data:()=>({filterValue:null,focused:!1,focusedOptionIndex:-1}),watch:{options(){this.autoUpdateModel()}},mounted(){this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?i.ObjectUtils.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?i.ObjectUtils.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?i.ObjectUtils.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&i.ObjectUtils.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){i.DomHandler.focus(this.list);const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=i.ObjectUtils.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");i.DomHandler.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else i.DomHandler.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&i.ObjectUtils.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>i.ObjectUtils.equals(e,t,this.equalityKey))):i.ObjectUtils.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!i.ObjectUtils.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,s=i.DomHandler.findSingle(this.list,`li[id="${t}"]`);s?s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.FilterService.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return i.ObjectUtils.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return i.ObjectUtils.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},id(){return this.$attrs.id||i.UniqueComponentId()},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:l.default},components:{VirtualScroller:a.default}};const d=["id"],p=["tabindex"],c={key:0,class:"p-listbox-header"},u={class:"p-listbox-filter-container"},h=["placeholder","aria-owns","aria-activedescendant","tabindex"],f={role:"status","aria-live":"polite",class:"p-hidden-accessible"},O=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],b=["id"],m=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],x={key:0,class:"p-listbox-empty-message",role:"option"},g={key:1,class:"p-listbox-empty-message",role:"option"},y={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},I={role:"status","aria-live":"polite",class:"p-hidden-accessible"},S=["tabindex"];return function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),r.render=function(e,t,i,s,o,l){const a=n.resolveComponent("VirtualScroller"),r=n.resolveDirective("ripple");return n.openBlock(),n.createElementBlock("div",{id:l.id,class:n.normalizeClass(l.containerClass),onFocusout:t[10]||(t[10]=(...e)=>l.onFocusout&&l.onFocusout(...e))},[n.createElementVNode("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>l.onFirstHiddenFocus&&l.onFirstHiddenFocus(...e))},null,40,p),n.renderSlot(e.$slots,"header",{value:i.modelValue,options:l.visibleOptions}),i.filter?(n.openBlock(),n.createElementBlock("div",c,[n.createElementVNode("div",u,[n.withDirectives(n.createElementVNode("input",n.mergeProps({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>o.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":l.id+"_list","aria-activedescendant":l.focusedOptionId,tabindex:i.disabled||o.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>l.onFilterChange&&l.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>l.onFilterBlur&&l.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>l.onFilterKeyDown&&l.onFilterKeyDown(...e))},i.filterInputProps),null,16,h),[[n.vModelText,o.filterValue]]),n.createElementVNode("span",{class:n.normalizeClass(["p-listbox-filter-icon",i.filterIcon])},null,2)]),n.createElementVNode("span",f,n.toDisplayString(l.filterResultMessageText),1)])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:n.normalizeStyle(i.listStyle)},[n.createVNode(a,n.mergeProps({ref:l.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:l.visibleOptions,tabindex:-1,disabled:l.virtualScrollerDisabled}),n.createSlots({content:n.withCtx((({styleClass:s,contentRef:a,items:d,getItemOptions:p,contentStyle:c,itemSize:u})=>[n.createElementVNode("ul",{ref:e=>l.listRef(e,a),id:l.id+"_list",class:n.normalizeClass(["p-listbox-list",s]),style:n.normalizeStyle(c),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":o.focused?l.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>l.onListFocus&&l.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>l.onListBlur&&l.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>l.onListKeyDown&&l.onListKeyDown(...e))},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(d,((i,s)=>(n.openBlock(),n.createElementBlock(n.Fragment,{key:l.getOptionRenderKey(i,l.getOptionIndex(s,p))},[l.isOptionGroup(i)?(n.openBlock(),n.createElementBlock("li",{key:0,id:l.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:"p-listbox-item-group",role:"option"},[n.renderSlot(e.$slots,"optiongroup",{option:i.optionGroup,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionGroupLabel(i.optionGroup)),1)]))],12,b)):n.withDirectives((n.openBlock(),n.createElementBlock("li",{key:1,id:l.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:n.normalizeClass(["p-listbox-item",{"p-highlight":l.isSelected(i),"p-focus":o.focusedOptionIndex===l.getOptionIndex(s,p),"p-disabled":l.isOptionDisabled(i)}]),role:"option","aria-label":l.getOptionLabel(i),"aria-selected":l.isSelected(i),"aria-disabled":l.isOptionDisabled(i),"aria-setsize":l.ariaSetSize,"aria-posinset":l.getAriaPosInset(l.getOptionIndex(s,p)),onClick:e=>l.onOptionSelect(e,i,l.getOptionIndex(s,p)),onMousedown:e=>l.onOptionMouseDown(e,l.getOptionIndex(s,p)),onMousemove:e=>l.onOptionMouseMove(e,l.getOptionIndex(s,p)),onTouchend:t[5]||(t[5]=e=>l.onOptionTouchEnd())},[n.renderSlot(e.$slots,"option",{option:i,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionLabel(i)),1)]))],46,m)),[[r]])],64)))),128)),o.filterValue&&(!d||d&&0===d.length)?(n.openBlock(),n.createElementBlock("li",x,[n.renderSlot(e.$slots,"emptyfilter",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("li",g,[n.renderSlot(e.$slots,"empty",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyMessageText),1)]))])):n.createCommentVNode("",!0)],46,O)])),_:2},[e.$slots.loader?{name:"loader",fn:n.withCtx((({options:t})=>[n.renderSlot(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),n.renderSlot(e.$slots,"footer",{value:i.modelValue,options:l.visibleOptions}),!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("span",y,n.toDisplayString(l.emptyMessageText),1)):n.createCommentVNode("",!0),n.createElementVNode("span",I,n.toDisplayString(l.selectedMessageText),1),n.createElementVNode("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>l.onLastHiddenFocus&&l.onLastHiddenFocus(...e))},null,40,S)],42,d)},r}(primevue.api,primevue.ripple,primevue.utils,primevue.virtualscroller,Vue);
1
+ this.primevue=this.primevue||{},this.primevue.listbox=function(e,t,i,s,n){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(t),a=o(s),r={name:"Listbox",emits:["update:modelValue","change","focus","blur","filter"],props:{modelValue:null,options:Array,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,listStyle:null,disabled:Boolean,dataKey:null,multiple:Boolean,metaKeySelection:Boolean,filter:Boolean,filterPlaceholder:String,filterLocale:String,filterMatchMode:{type:String,default:"contains"},filterFields:{type:Array,default:null},filterInputProps:null,virtualScrollerOptions:{type:Object,default:null},autoOptionFocus:{type:Boolean,default:!0},selectOnFocus:{type:Boolean,default:!1},filterMessage:{type:String,default:null},selectionMessage:{type:String,default:null},emptySelectionMessage:{type:String,default:null},emptyFilterMessage:{type:String,default:null},emptyMessage:{type:String,default:null},filterIcon:{type:String,default:"pi pi-search"},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},list:null,virtualScroller:null,optionTouched:!1,startRangeIndex:-1,searchTimeout:null,searchValue:"",focusOnHover:!1,data(){return{id:this.$attrs.id,filterValue:null,focused:!1,focusedOptionIndex:-1}},watch:{"$attrs.id":function(e){this.id=e||i.UniqueComponentId()},options(){this.autoUpdateModel()}},mounted(){this.id=this.id||i.UniqueComponentId(),this.autoUpdateModel()},methods:{getOptionIndex(e,t){return this.virtualScrollerDisabled?e:t&&t(e).index},getOptionLabel(e){return this.optionLabel?i.ObjectUtils.resolveFieldData(e,this.optionLabel):e},getOptionValue(e){return this.optionValue?i.ObjectUtils.resolveFieldData(e,this.optionValue):e},getOptionRenderKey(e,t){return(this.dataKey?i.ObjectUtils.resolveFieldData(e,this.dataKey):this.getOptionLabel(e))+"_"+t},isOptionDisabled(e){return!!this.optionDisabled&&i.ObjectUtils.resolveFieldData(e,this.optionDisabled)},isOptionGroup(e){return this.optionGroupLabel&&e.optionGroup&&e.group},getOptionGroupLabel(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupLabel)},getOptionGroupChildren(e){return i.ObjectUtils.resolveFieldData(e,this.optionGroupChildren)},getAriaPosInset(e){return(this.optionGroupLabel?e-this.visibleOptions.slice(0,e).filter((e=>this.isOptionGroup(e))).length:e)+1},onFirstHiddenFocus(){i.DomHandler.focus(this.list);const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");this.$refs.lastHiddenFocusableElement.tabIndex=i.ObjectUtils.isEmpty(e)?-1:void 0,this.$refs.firstHiddenFocusableElement.tabIndex=-1},onLastHiddenFocus(e){if(e.relatedTarget===this.list){const e=i.DomHandler.getFirstFocusableElement(this.$el,":not(.p-hidden-focusable)");i.DomHandler.focus(e),this.$refs.firstHiddenFocusableElement.tabIndex=void 0}else i.DomHandler.focus(this.$refs.firstHiddenFocusableElement);this.$refs.lastHiddenFocusableElement.tabIndex=-1},onFocusout(e){!this.$el.contains(e.relatedTarget)&&this.$refs.lastHiddenFocusableElement&&this.$refs.firstHiddenFocusableElement&&(this.$refs.lastHiddenFocusableElement.tabIndex=this.$refs.firstHiddenFocusableElement.tabIndex=void 0)},onListFocus(e){this.focused=!0,this.focusedOptionIndex=-1!==this.focusedOptionIndex?this.focusedOptionIndex:this.autoOptionFocus?this.findFirstFocusedOptionIndex():-1,this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=this.startRangeIndex=-1,this.searchValue="",this.$emit("blur",e)},onListKeyDown(e){const t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"Home":this.onHomeKey(e);break;case"End":this.onEndKey(e);break;case"PageDown":this.onPageDownKey(e);break;case"PageUp":this.onPageUpKey(e);break;case"Enter":case"Space":this.onSpaceKey(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e);break;default:if(this.multiple&&"KeyA"===e.code&&t){const t=this.visibleOptions.filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,t),e.preventDefault();break}!t&&i.ObjectUtils.isPrintableCharacter(e.key)&&(this.searchOptions(e,e.key),e.preventDefault())}},onOptionSelect(e,t,i=-1){this.disabled||this.isOptionDisabled(t)||(this.multiple?this.onOptionSelectMultiple(e,t):this.onOptionSelectSingle(e,t),this.optionTouched=!1,-1!==i&&(this.focusedOptionIndex=i))},onOptionMouseDown(e,t){this.changeFocusedOptionIndex(e,t)},onOptionMouseMove(e,t){this.focusOnHover&&this.changeFocusedOptionIndex(e,t)},onOptionTouchEnd(){this.disabled||(this.optionTouched=!0)},onOptionSelectSingle(e,t){let i=this.isSelected(t),s=!1,n=null;if(!this.optionTouched&&this.metaKeySelection){let o=e.metaKey||e.ctrlKey;i?o&&(n=null,s=!0):(n=this.getOptionValue(t),s=!0)}else n=i?null:this.getOptionValue(t),s=!0;s&&this.updateModel(e,n)},onOptionSelectMultiple(e,t){let i=this.isSelected(t),s=null;if(!this.optionTouched&&this.metaKeySelection){let n=e.metaKey||e.ctrlKey;i?s=n?this.removeOption(t):[this.getOptionValue(t)]:(s=n&&this.modelValue||[],s=[...s,this.getOptionValue(t)])}else s=i?this.removeOption(t):[...this.modelValue||[],this.getOptionValue(t)];this.updateModel(e,s)},onOptionSelectRange(e,t=-1,i=-1){if(-1===t&&(t=this.findNearestSelectedOptionIndex(i,!0)),-1===i&&(i=this.findNearestSelectedOptionIndex(t)),-1!==t&&-1!==i){const s=Math.min(t,i),n=Math.max(t,i),o=this.visibleOptions.slice(s,n+1).filter((e=>this.isValidOption(e))).map((e=>this.getOptionValue(e)));this.updateModel(e,o)}},onFilterChange(e){this.$emit("filter",{originalEvent:e,value:e.target.value}),this.focusedOptionIndex=this.startRangeIndex=-1},onFilterBlur(){this.focusedOptionIndex=this.startRangeIndex=-1},onFilterKeyDown(e){switch(e.code){case"ArrowDown":this.onArrowDownKey(e);break;case"ArrowUp":this.onArrowUpKey(e);break;case"ArrowLeft":case"ArrowRight":this.onArrowLeftKey(e,!0);break;case"Home":this.onHomeKey(e,!0);break;case"End":this.onEndKey(e,!0);break;case"Enter":this.onEnterKey(e);break;case"ShiftLeft":case"ShiftRight":this.onShiftKey(e)}},onArrowDownKey(e){const t=-1!==this.focusedOptionIndex?this.findNextOptionIndex(this.focusedOptionIndex):this.findFirstFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,this.startRangeIndex,t),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowUpKey(e){const t=-1!==this.focusedOptionIndex?this.findPrevOptionIndex(this.focusedOptionIndex):this.findLastFocusedOptionIndex();this.multiple&&e.shiftKey&&this.onOptionSelectRange(e,t,this.startRangeIndex),this.changeFocusedOptionIndex(e,t),e.preventDefault()},onArrowLeftKey(e,t=!1){t&&(this.focusedOptionIndex=-1)},onHomeKey(e,t=!1){if(t)e.currentTarget.setSelectionRange(0,0),this.focusedOptionIndex=-1;else{let t=e.metaKey||e.ctrlKey,i=this.findFirstOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,i,this.startRangeIndex),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onEndKey(e,t=!1){if(t){const t=e.currentTarget,i=t.value.length;t.setSelectionRange(i,i),this.focusedOptionIndex=-1}else{let t=e.metaKey||e.ctrlKey,i=this.findLastOptionIndex();this.multiple&&e.shiftKey&&t&&this.onOptionSelectRange(e,this.startRangeIndex,i),this.changeFocusedOptionIndex(e,i)}e.preventDefault()},onPageUpKey(e){this.scrollInView(0),e.preventDefault()},onPageDownKey(e){this.scrollInView(this.visibleOptions.length-1),e.preventDefault()},onEnterKey(e){-1!==this.focusedOptionIndex&&(this.multiple&&e.shiftKey?this.onOptionSelectRange(e,this.focusedOptionIndex):this.onOptionSelect(e,this.visibleOptions[this.focusedOptionIndex])),e.preventDefault()},onSpaceKey(e){this.onEnterKey(e)},onShiftKey(){this.startRangeIndex=this.focusedOptionIndex},isOptionMatched(e){return this.isValidOption(e)&&this.getOptionLabel(e).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale))},isValidOption(e){return e&&!(this.isOptionDisabled(e)||this.isOptionGroup(e))},isValidSelectedOption(e){return this.isValidOption(e)&&this.isSelected(e)},isSelected(e){const t=this.getOptionValue(e);return this.multiple?(this.modelValue||[]).some((e=>i.ObjectUtils.equals(e,t,this.equalityKey))):i.ObjectUtils.equals(this.modelValue,t,this.equalityKey)},findFirstOptionIndex(){return this.visibleOptions.findIndex((e=>this.isValidOption(e)))},findLastOptionIndex(){return i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidOption(e)))},findNextOptionIndex(e){const t=e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidOption(e))):-1;return t>-1?t+e+1:e},findPrevOptionIndex(e){const t=e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidOption(e))):-1;return t>-1?t:e},findFirstSelectedOptionIndex(){return this.hasSelectedOption?this.visibleOptions.findIndex((e=>this.isValidSelectedOption(e))):-1},findLastSelectedOptionIndex(){return this.hasSelectedOption?i.ObjectUtils.findLastIndex(this.visibleOptions,(e=>this.isValidSelectedOption(e))):-1},findNextSelectedOptionIndex(e){const t=this.hasSelectedOption&&e<this.visibleOptions.length-1?this.visibleOptions.slice(e+1).findIndex((e=>this.isValidSelectedOption(e))):-1;return t>-1?t+e+1:-1},findPrevSelectedOptionIndex(e){const t=this.hasSelectedOption&&e>0?i.ObjectUtils.findLastIndex(this.visibleOptions.slice(0,e),(e=>this.isValidSelectedOption(e))):-1;return t>-1?t:-1},findNearestSelectedOptionIndex(e,t=!1){let i=-1;return this.hasSelectedOption&&(t?(i=this.findPrevSelectedOptionIndex(e),i=-1===i?this.findNextSelectedOptionIndex(e):i):(i=this.findNextSelectedOptionIndex(e),i=-1===i?this.findPrevSelectedOptionIndex(e):i)),i>-1?i:e},findFirstFocusedOptionIndex(){const e=this.findFirstSelectedOptionIndex();return e<0?this.findFirstOptionIndex():e},findLastFocusedOptionIndex(){const e=this.findLastSelectedOptionIndex();return e<0?this.findLastOptionIndex():e},searchOptions(e,t){this.searchValue=(this.searchValue||"")+t;let i=-1;-1!==this.focusedOptionIndex?(i=this.visibleOptions.slice(this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))),i=-1===i?this.visibleOptions.slice(0,this.focusedOptionIndex).findIndex((e=>this.isOptionMatched(e))):i+this.focusedOptionIndex):i=this.visibleOptions.findIndex((e=>this.isOptionMatched(e))),-1===i&&-1===this.focusedOptionIndex&&(i=this.findFirstFocusedOptionIndex()),-1!==i&&this.changeFocusedOptionIndex(e,i),this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout((()=>{this.searchValue="",this.searchTimeout=null}),500)},removeOption(e){return this.modelValue.filter((t=>!i.ObjectUtils.equals(t,this.getOptionValue(e),this.equalityKey)))},changeFocusedOptionIndex(e,t){this.focusedOptionIndex!==t&&(this.focusedOptionIndex=t,this.scrollInView(),this.selectOnFocus&&!this.multiple&&this.onOptionSelect(e,this.visibleOptions[t]))},scrollInView(e=-1){const t=-1!==e?`${this.id}_${e}`:this.focusedOptionId,s=i.DomHandler.findSingle(this.list,`li[id="${t}"]`);s?s.scrollIntoView&&s.scrollIntoView({block:"nearest",inline:"nearest"}):this.virtualScrollerDisabled||this.virtualScroller&&this.virtualScroller.scrollToIndex(-1!==e?e:this.focusedOptionIndex)},autoUpdateModel(){this.selectOnFocus&&this.autoOptionFocus&&!this.hasSelectedOption&&!this.multiple&&(this.focusedOptionIndex=this.findFirstFocusedOptionIndex(),this.onOptionSelect(null,this.visibleOptions[this.focusedOptionIndex]))},updateModel(e,t){this.$emit("update:modelValue",t),this.$emit("change",{originalEvent:e,value:t})},flatOptions(e){return(e||[]).reduce(((e,t,i)=>{e.push({optionGroup:t,group:!0,index:i});const s=this.getOptionGroupChildren(t);return s&&s.forEach((t=>e.push(t))),e}),[])},listRef(e,t){this.list=e,t&&t(e)},virtualScrollerRef(e){this.virtualScroller=e}},computed:{containerClass(){return["p-listbox p-component",{"p-focus":this.focused,"p-disabled":this.disabled}]},visibleOptions(){const t=this.optionGroupLabel?this.flatOptions(this.options):this.options||[];return this.filterValue?e.FilterService.filter(t,this.searchFields,this.filterValue,this.filterMatchMode,this.filterLocale):t},hasSelectedOption(){return i.ObjectUtils.isNotEmpty(this.modelValue)},equalityKey(){return this.optionValue?null:this.dataKey},searchFields(){return this.filterFields||[this.optionLabel]},filterResultMessageText(){return i.ObjectUtils.isNotEmpty(this.visibleOptions)?this.filterMessageText.replaceAll("{0}",this.visibleOptions.length):this.emptyFilterMessageText},filterMessageText(){return this.filterMessage||this.$primevue.config.locale.searchMessage||""},emptyFilterMessageText(){return this.emptyFilterMessage||this.$primevue.config.locale.emptySearchMessage||this.$primevue.config.locale.emptyFilterMessage||""},emptyMessageText(){return this.emptyMessage||this.$primevue.config.locale.emptyMessage||""},selectionMessageText(){return this.selectionMessage||this.$primevue.config.locale.selectionMessage||""},emptySelectionMessageText(){return this.emptySelectionMessage||this.$primevue.config.locale.emptySelectionMessage||""},selectedMessageText(){return this.hasSelectedOption?this.selectionMessageText.replaceAll("{0}",this.multiple?this.modelValue.length:"1"):this.emptySelectionMessageText},focusedOptionId(){return-1!==this.focusedOptionIndex?`${this.id}_${this.focusedOptionIndex}`:null},ariaSetSize(){return this.visibleOptions.filter((e=>!this.isOptionGroup(e))).length},virtualScrollerDisabled(){return!this.virtualScrollerOptions}},directives:{ripple:l.default},components:{VirtualScroller:a.default}};const d=["id"],p=["tabindex"],c={key:0,class:"p-listbox-header"},u={class:"p-listbox-filter-container"},h=["placeholder","aria-owns","aria-activedescendant","tabindex"],f={role:"status","aria-live":"polite",class:"p-hidden-accessible"},O=["id","aria-multiselectable","aria-label","aria-labelledby","aria-activedescendant","aria-disabled"],m=["id"],b=["id","aria-label","aria-selected","aria-disabled","aria-setsize","aria-posinset","onClick","onMousedown","onMousemove"],x={key:0,class:"p-listbox-empty-message",role:"option"},g={key:1,class:"p-listbox-empty-message",role:"option"},y={key:1,role:"status","aria-live":"polite",class:"p-hidden-accessible"},I={role:"status","aria-live":"polite",class:"p-hidden-accessible"},S=["tabindex"];return function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-listbox-list-wrapper {\n overflow: auto;\n}\n.p-listbox-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.p-listbox-item {\n cursor: pointer;\n position: relative;\n overflow: hidden;\n}\n.p-listbox-item-group {\n cursor: auto;\n}\n.p-listbox-filter-container {\n position: relative;\n}\n.p-listbox-filter-icon {\n position: absolute;\n top: 50%;\n margin-top: -0.5rem;\n}\n.p-listbox-filter {\n width: 100%;\n}\n"),r.render=function(e,t,i,s,o,l){const a=n.resolveComponent("VirtualScroller"),r=n.resolveDirective("ripple");return n.openBlock(),n.createElementBlock("div",{id:o.id,class:n.normalizeClass(l.containerClass),onFocusout:t[10]||(t[10]=(...e)=>l.onFocusout&&l.onFocusout(...e))},[n.createElementVNode("span",{ref:"firstHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[0]||(t[0]=(...e)=>l.onFirstHiddenFocus&&l.onFirstHiddenFocus(...e))},null,40,p),n.renderSlot(e.$slots,"header",{value:i.modelValue,options:l.visibleOptions}),i.filter?(n.openBlock(),n.createElementBlock("div",c,[n.createElementVNode("div",u,[n.withDirectives(n.createElementVNode("input",n.mergeProps({ref:"filterInput","onUpdate:modelValue":t[1]||(t[1]=e=>o.filterValue=e),type:"text",class:"p-listbox-filter p-inputtext p-component",placeholder:i.filterPlaceholder,role:"searchbox",autocomplete:"off","aria-owns":o.id+"_list","aria-activedescendant":l.focusedOptionId,tabindex:i.disabled||o.focused?-1:i.tabindex,onInput:t[2]||(t[2]=(...e)=>l.onFilterChange&&l.onFilterChange(...e)),onBlur:t[3]||(t[3]=(...e)=>l.onFilterBlur&&l.onFilterBlur(...e)),onKeydown:t[4]||(t[4]=(...e)=>l.onFilterKeyDown&&l.onFilterKeyDown(...e))},i.filterInputProps),null,16,h),[[n.vModelText,o.filterValue]]),n.createElementVNode("span",{class:n.normalizeClass(["p-listbox-filter-icon",i.filterIcon])},null,2)]),n.createElementVNode("span",f,n.toDisplayString(l.filterResultMessageText),1)])):n.createCommentVNode("",!0),n.createElementVNode("div",{ref:"listWrapper",class:"p-listbox-list-wrapper",style:n.normalizeStyle(i.listStyle)},[n.createVNode(a,n.mergeProps({ref:l.virtualScrollerRef},i.virtualScrollerOptions,{style:i.listStyle,items:l.visibleOptions,tabindex:-1,disabled:l.virtualScrollerDisabled}),n.createSlots({content:n.withCtx((({styleClass:s,contentRef:a,items:d,getItemOptions:p,contentStyle:c,itemSize:u})=>[n.createElementVNode("ul",{ref:e=>l.listRef(e,a),id:o.id+"_list",class:n.normalizeClass(["p-listbox-list",s]),style:n.normalizeStyle(c),tabindex:-1,role:"listbox","aria-multiselectable":i.multiple,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,"aria-activedescendant":o.focused?l.focusedOptionId:void 0,"aria-disabled":i.disabled,onFocus:t[6]||(t[6]=(...e)=>l.onListFocus&&l.onListFocus(...e)),onBlur:t[7]||(t[7]=(...e)=>l.onListBlur&&l.onListBlur(...e)),onKeydown:t[8]||(t[8]=(...e)=>l.onListKeyDown&&l.onListKeyDown(...e))},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(d,((i,s)=>(n.openBlock(),n.createElementBlock(n.Fragment,{key:l.getOptionRenderKey(i,l.getOptionIndex(s,p))},[l.isOptionGroup(i)?(n.openBlock(),n.createElementBlock("li",{key:0,id:o.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:"p-listbox-item-group",role:"option"},[n.renderSlot(e.$slots,"optiongroup",{option:i.optionGroup,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionGroupLabel(i.optionGroup)),1)]))],12,m)):n.withDirectives((n.openBlock(),n.createElementBlock("li",{key:1,id:o.id+"_"+l.getOptionIndex(s,p),style:n.normalizeStyle({height:u?u+"px":void 0}),class:n.normalizeClass(["p-listbox-item",{"p-highlight":l.isSelected(i),"p-focus":o.focusedOptionIndex===l.getOptionIndex(s,p),"p-disabled":l.isOptionDisabled(i)}]),role:"option","aria-label":l.getOptionLabel(i),"aria-selected":l.isSelected(i),"aria-disabled":l.isOptionDisabled(i),"aria-setsize":l.ariaSetSize,"aria-posinset":l.getAriaPosInset(l.getOptionIndex(s,p)),onClick:e=>l.onOptionSelect(e,i,l.getOptionIndex(s,p)),onMousedown:e=>l.onOptionMouseDown(e,l.getOptionIndex(s,p)),onMousemove:e=>l.onOptionMouseMove(e,l.getOptionIndex(s,p)),onTouchend:t[5]||(t[5]=e=>l.onOptionTouchEnd())},[n.renderSlot(e.$slots,"option",{option:i,index:l.getOptionIndex(s,p)},(()=>[n.createTextVNode(n.toDisplayString(l.getOptionLabel(i)),1)]))],46,b)),[[r]])],64)))),128)),o.filterValue&&(!d||d&&0===d.length)?(n.openBlock(),n.createElementBlock("li",x,[n.renderSlot(e.$slots,"emptyfilter",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyFilterMessageText),1)]))])):!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("li",g,[n.renderSlot(e.$slots,"empty",{},(()=>[n.createTextVNode(n.toDisplayString(l.emptyMessageText),1)]))])):n.createCommentVNode("",!0)],46,O)])),_:2},[e.$slots.loader?{name:"loader",fn:n.withCtx((({options:t})=>[n.renderSlot(e.$slots,"loader",{options:t})])),key:"0"}:void 0]),1040,["style","items","disabled"])],4),n.renderSlot(e.$slots,"footer",{value:i.modelValue,options:l.visibleOptions}),!i.options||i.options&&0===i.options.length?(n.openBlock(),n.createElementBlock("span",y,n.toDisplayString(l.emptyMessageText),1)):n.createCommentVNode("",!0),n.createElementVNode("span",I,n.toDisplayString(l.selectedMessageText),1),n.createElementVNode("span",{ref:"lastHiddenFocusableElement",role:"presentation","aria-hidden":"true",class:"p-hidden-accessible p-hidden-focusable",tabindex:i.disabled?-1:i.tabindex,onFocus:t[9]||(t[9]=(...e)=>l.onLastHiddenFocus&&l.onLastHiddenFocus(...e))},null,40,S)],42,d)},r}(primevue.api,primevue.ripple,primevue.utils,primevue.virtualscroller,Vue);
@@ -79,6 +79,7 @@ export default {
79
79
  searchValue: null,
80
80
  data() {
81
81
  return {
82
+ id: this.$attrs.id,
82
83
  focused: false,
83
84
  focusedItemInfo: { index: -1, key: '', parentKey: '' },
84
85
  activeItem: null,
@@ -86,6 +87,9 @@ export default {
86
87
  };
87
88
  },
88
89
  watch: {
90
+ '$attrs.id': function (newValue) {
91
+ this.id = newValue || UniqueComponentId();
92
+ },
89
93
  activeItem(newItem) {
90
94
  if (ObjectUtils.isNotEmpty(newItem)) {
91
95
  this.bindOutsideClickListener();
@@ -96,6 +100,9 @@ export default {
96
100
  }
97
101
  }
98
102
  },
103
+ mounted() {
104
+ this.id = this.id || UniqueComponentId();
105
+ },
99
106
  beforeUnmount() {
100
107
  this.unbindOutsideClickListener();
101
108
  this.unbindResizeListener();
@@ -603,9 +610,6 @@ export default {
603
610
  vertical() {
604
611
  return this.orientation === 'vertical';
605
612
  },
606
- id() {
607
- return this.$attrs.id || UniqueComponentId();
608
- },
609
613
  focusedItemId() {
610
614
  return ObjectUtils.isNotEmpty(this.focusedItemInfo.key) ? `${this.id}_${this.focusedItemInfo.key}` : null;
611
615
  }
@@ -370,6 +370,7 @@ var script = {
370
370
  searchValue: null,
371
371
  data() {
372
372
  return {
373
+ id: this.$attrs.id,
373
374
  focused: false,
374
375
  focusedItemInfo: { index: -1, key: '', parentKey: '' },
375
376
  activeItem: null,
@@ -377,6 +378,9 @@ var script = {
377
378
  };
378
379
  },
379
380
  watch: {
381
+ '$attrs.id': function (newValue) {
382
+ this.id = newValue || utils.UniqueComponentId();
383
+ },
380
384
  activeItem(newItem) {
381
385
  if (utils.ObjectUtils.isNotEmpty(newItem)) {
382
386
  this.bindOutsideClickListener();
@@ -387,6 +391,9 @@ var script = {
387
391
  }
388
392
  }
389
393
  },
394
+ mounted() {
395
+ this.id = this.id || utils.UniqueComponentId();
396
+ },
390
397
  beforeUnmount() {
391
398
  this.unbindOutsideClickListener();
392
399
  this.unbindResizeListener();
@@ -894,9 +901,6 @@ var script = {
894
901
  vertical() {
895
902
  return this.orientation === 'vertical';
896
903
  },
897
- id() {
898
- return this.$attrs.id || utils.UniqueComponentId();
899
- },
900
904
  focusedItemId() {
901
905
  return utils.ObjectUtils.isNotEmpty(this.focusedItemInfo.key) ? `${this.id}_${this.focusedItemInfo.key}` : null;
902
906
  }
@@ -921,7 +925,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
921
925
 
922
926
  return (vue.openBlock(), vue.createElementBlock("div", {
923
927
  ref: $options.containerRef,
924
- id: $options.id,
928
+ id: $data.id,
925
929
  class: vue.normalizeClass($options.containerClass)
926
930
  }, [
927
931
  (_ctx.$slots.start)
@@ -931,7 +935,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
931
935
  : vue.createCommentVNode("", true),
932
936
  vue.createVNode(_component_MegaMenuSub, {
933
937
  ref: $options.menubarRef,
934
- id: $options.id + '_list',
938
+ id: $data.id + '_list',
935
939
  class: "p-megamenu-root-list",
936
940
  tabindex: !$props.disabled ? $props.tabindex : -1,
937
941
  role: "menubar",
@@ -940,7 +944,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
940
944
  "aria-disabled": $props.disabled || undefined,
941
945
  "aria-orientation": $props.orientation,
942
946
  "aria-activedescendant": $data.focused ? $options.focusedItemId : undefined,
943
- menuId: $options.id,
947
+ menuId: $data.id,
944
948
  focusedItemId: $data.focused ? $options.focusedItemId : undefined,
945
949
  items: $options.processedItems,
946
950
  horizontal: $options.horizontal,