primevue 3.15.0 → 3.16.2

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 (387) hide show
  1. package/autocomplete/AutoComplete.d.ts +182 -38
  2. package/autocomplete/AutoComplete.vue +636 -342
  3. package/autocomplete/autocomplete.cjs.js +745 -416
  4. package/autocomplete/autocomplete.cjs.min.js +1 -1
  5. package/autocomplete/autocomplete.esm.js +747 -418
  6. package/autocomplete/autocomplete.esm.min.js +1 -1
  7. package/autocomplete/autocomplete.js +745 -416
  8. package/autocomplete/autocomplete.min.js +1 -1
  9. package/button/Button.vue +4 -1
  10. package/button/button.cjs.js +5 -1
  11. package/button/button.cjs.min.js +1 -1
  12. package/button/button.esm.js +5 -1
  13. package/button/button.esm.min.js +1 -1
  14. package/button/button.js +5 -1
  15. package/button/button.min.js +1 -1
  16. package/calendar/Calendar.d.ts +51 -12
  17. package/calendar/Calendar.vue +259 -114
  18. package/calendar/calendar.cjs.js +414 -220
  19. package/calendar/calendar.cjs.min.js +1 -1
  20. package/calendar/calendar.esm.js +415 -221
  21. package/calendar/calendar.esm.min.js +1 -1
  22. package/calendar/calendar.js +414 -220
  23. package/calendar/calendar.min.js +1 -1
  24. package/carousel/Carousel.vue +25 -0
  25. package/carousel/carousel.cjs.js +25 -0
  26. package/carousel/carousel.cjs.min.js +1 -1
  27. package/carousel/carousel.esm.js +25 -0
  28. package/carousel/carousel.esm.min.js +1 -1
  29. package/carousel/carousel.js +25 -0
  30. package/carousel/carousel.min.js +1 -1
  31. package/cascadeselect/CascadeSelect.d.ts +97 -17
  32. package/cascadeselect/CascadeSelect.vue +560 -135
  33. package/cascadeselect/CascadeSelectSub.vue +48 -129
  34. package/cascadeselect/cascadeselect.cjs.js +670 -306
  35. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  36. package/cascadeselect/cascadeselect.esm.js +672 -308
  37. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  38. package/cascadeselect/cascadeselect.js +670 -306
  39. package/cascadeselect/cascadeselect.min.js +1 -1
  40. package/checkbox/Checkbox.d.ts +40 -4
  41. package/checkbox/Checkbox.vue +50 -13
  42. package/checkbox/checkbox.cjs.js +64 -23
  43. package/checkbox/checkbox.cjs.min.js +1 -1
  44. package/checkbox/checkbox.esm.js +65 -24
  45. package/checkbox/checkbox.esm.min.js +1 -1
  46. package/checkbox/checkbox.js +64 -23
  47. package/checkbox/checkbox.min.js +1 -1
  48. package/chips/Chips.d.ts +36 -12
  49. package/chips/Chips.vue +116 -22
  50. package/chips/chips.cjs.js +149 -37
  51. package/chips/chips.cjs.min.js +1 -1
  52. package/chips/chips.esm.js +150 -38
  53. package/chips/chips.esm.min.js +1 -1
  54. package/chips/chips.js +150 -39
  55. package/chips/chips.min.js +1 -1
  56. package/colorpicker/ColorPicker.d.ts +3 -6
  57. package/colorpicker/ColorPicker.vue +1 -5
  58. package/colorpicker/colorpicker.cjs.js +2 -7
  59. package/colorpicker/colorpicker.cjs.min.js +1 -1
  60. package/colorpicker/colorpicker.esm.js +2 -7
  61. package/colorpicker/colorpicker.esm.min.js +1 -1
  62. package/colorpicker/colorpicker.js +2 -7
  63. package/colorpicker/colorpicker.min.js +1 -1
  64. package/column/Column.d.ts +4 -0
  65. package/column/Column.vue +4 -0
  66. package/column/column.cjs.js +4 -0
  67. package/column/column.cjs.min.js +1 -1
  68. package/column/column.esm.js +4 -0
  69. package/column/column.esm.min.js +1 -1
  70. package/column/column.js +4 -0
  71. package/column/column.min.js +1 -1
  72. package/config/PrimeVue.d.ts +42 -0
  73. package/config/config.cjs.js +35 -4
  74. package/config/config.cjs.min.js +1 -1
  75. package/config/config.esm.js +35 -4
  76. package/config/config.esm.min.js +1 -1
  77. package/config/config.js +35 -4
  78. package/config/config.min.js +1 -1
  79. package/confirmdialog/ConfirmDialog.vue +4 -1
  80. package/confirmdialog/confirmdialog.cjs.js +6 -2
  81. package/confirmdialog/confirmdialog.cjs.min.js +1 -1
  82. package/confirmdialog/confirmdialog.esm.js +6 -2
  83. package/confirmdialog/confirmdialog.esm.min.js +1 -1
  84. package/confirmdialog/confirmdialog.js +6 -2
  85. package/confirmdialog/confirmdialog.min.js +1 -1
  86. package/contextmenu/ContextMenu.d.ts +1 -1
  87. package/contextmenu/ContextMenuSub.vue +3 -3
  88. package/contextmenu/contextmenu.cjs.js +14 -8
  89. package/contextmenu/contextmenu.cjs.min.js +1 -1
  90. package/contextmenu/contextmenu.esm.js +15 -9
  91. package/contextmenu/contextmenu.esm.min.js +1 -1
  92. package/contextmenu/contextmenu.js +14 -8
  93. package/contextmenu/contextmenu.min.js +1 -1
  94. package/core/core.js +1128 -772
  95. package/core/core.min.js +12 -12
  96. package/datatable/BodyCell.vue +11 -2
  97. package/datatable/DataTable.vue +23 -2
  98. package/datatable/datatable.cjs.js +34 -4
  99. package/datatable/datatable.cjs.min.js +1 -1
  100. package/datatable/datatable.esm.js +34 -4
  101. package/datatable/datatable.esm.min.js +1 -1
  102. package/datatable/datatable.js +34 -4
  103. package/datatable/datatable.min.js +1 -1
  104. package/dialog/Dialog.d.ts +5 -1
  105. package/dropdown/Dropdown.d.ts +92 -38
  106. package/dropdown/Dropdown.vue +538 -399
  107. package/dropdown/dropdown.cjs.js +657 -486
  108. package/dropdown/dropdown.cjs.min.js +1 -1
  109. package/dropdown/dropdown.esm.js +659 -488
  110. package/dropdown/dropdown.esm.min.js +1 -1
  111. package/dropdown/dropdown.js +657 -486
  112. package/dropdown/dropdown.min.js +1 -1
  113. package/editor/Editor.d.ts +32 -0
  114. package/editor/Editor.vue +15 -1
  115. package/editor/editor.cjs.js +15 -1
  116. package/editor/editor.cjs.min.js +1 -1
  117. package/editor/editor.esm.js +15 -1
  118. package/editor/editor.esm.min.js +1 -1
  119. package/editor/editor.js +15 -1
  120. package/editor/editor.min.js +1 -1
  121. package/inputmask/InputMask.vue +9 -6
  122. package/inputmask/inputmask.cjs.js +14 -6
  123. package/inputmask/inputmask.cjs.min.js +1 -1
  124. package/inputmask/inputmask.esm.js +15 -7
  125. package/inputmask/inputmask.esm.min.js +1 -1
  126. package/inputmask/inputmask.js +14 -6
  127. package/inputmask/inputmask.min.js +1 -1
  128. package/inputnumber/InputNumber.d.ts +31 -7
  129. package/inputnumber/InputNumber.vue +53 -20
  130. package/inputnumber/inputnumber.cjs.js +75 -29
  131. package/inputnumber/inputnumber.cjs.min.js +1 -1
  132. package/inputnumber/inputnumber.esm.js +76 -30
  133. package/inputnumber/inputnumber.esm.min.js +1 -1
  134. package/inputnumber/inputnumber.js +75 -29
  135. package/inputnumber/inputnumber.min.js +1 -1
  136. package/inputswitch/InputSwitch.d.ts +24 -8
  137. package/inputswitch/InputSwitch.vue +27 -12
  138. package/inputswitch/inputswitch.cjs.js +38 -20
  139. package/inputswitch/inputswitch.cjs.min.js +1 -1
  140. package/inputswitch/inputswitch.esm.js +39 -21
  141. package/inputswitch/inputswitch.esm.min.js +1 -1
  142. package/inputswitch/inputswitch.js +38 -20
  143. package/inputswitch/inputswitch.min.js +1 -1
  144. package/inputtext/InputText.vue +1 -2
  145. package/inputtext/inputtext.cjs.js +3 -4
  146. package/inputtext/inputtext.cjs.min.js +1 -1
  147. package/inputtext/inputtext.esm.js +4 -5
  148. package/inputtext/inputtext.esm.min.js +1 -1
  149. package/inputtext/inputtext.js +3 -4
  150. package/inputtext/inputtext.min.js +1 -1
  151. package/knob/Knob.d.ts +12 -0
  152. package/knob/Knob.vue +62 -2
  153. package/knob/knob.cjs.js +73 -5
  154. package/knob/knob.cjs.min.js +1 -1
  155. package/knob/knob.esm.js +73 -5
  156. package/knob/knob.esm.min.js +1 -1
  157. package/knob/knob.js +73 -5
  158. package/knob/knob.min.js +1 -1
  159. package/listbox/Listbox.d.ts +53 -7
  160. package/listbox/Listbox.vue +500 -135
  161. package/listbox/listbox.cjs.js +597 -193
  162. package/listbox/listbox.cjs.min.js +1 -1
  163. package/listbox/listbox.esm.js +599 -195
  164. package/listbox/listbox.esm.min.js +1 -1
  165. package/listbox/listbox.js +597 -193
  166. package/listbox/listbox.min.js +1 -1
  167. package/menu/Menu.d.ts +1 -1
  168. package/menu/Menuitem.vue +2 -2
  169. package/menu/menu.cjs.js +12 -6
  170. package/menu/menu.cjs.min.js +1 -1
  171. package/menu/menu.esm.js +13 -7
  172. package/menu/menu.esm.min.js +1 -1
  173. package/menu/menu.js +12 -6
  174. package/menu/menu.min.js +1 -1
  175. package/menubar/MenubarSub.vue +3 -3
  176. package/menubar/menubar.cjs.js +14 -8
  177. package/menubar/menubar.cjs.min.js +1 -1
  178. package/menubar/menubar.esm.js +15 -9
  179. package/menubar/menubar.esm.min.js +1 -1
  180. package/menubar/menubar.js +14 -8
  181. package/menubar/menubar.min.js +1 -1
  182. package/menuitem/MenuItem.d.ts +1 -1
  183. package/multiselect/MultiSelect.d.ts +111 -51
  184. package/multiselect/MultiSelect.vue +629 -338
  185. package/multiselect/multiselect.cjs.js +748 -428
  186. package/multiselect/multiselect.cjs.min.js +1 -1
  187. package/multiselect/multiselect.esm.js +750 -430
  188. package/multiselect/multiselect.esm.min.js +1 -1
  189. package/multiselect/multiselect.js +748 -428
  190. package/multiselect/multiselect.min.js +1 -1
  191. package/overlaypanel/OverlayPanel.d.ts +1 -1
  192. package/overlaypanel/OverlayPanel.vue +14 -2
  193. package/overlaypanel/overlaypanel.cjs.js +14 -2
  194. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  195. package/overlaypanel/overlaypanel.esm.js +14 -2
  196. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  197. package/overlaypanel/overlaypanel.js +14 -2
  198. package/overlaypanel/overlaypanel.min.js +1 -1
  199. package/package.json +2 -2
  200. package/paginator/Paginator.d.ts +2 -2
  201. package/password/Password.d.ts +36 -8
  202. package/password/Password.vue +50 -14
  203. package/password/password.cjs.js +69 -24
  204. package/password/password.cjs.min.js +1 -1
  205. package/password/password.esm.js +71 -26
  206. package/password/password.esm.min.js +1 -1
  207. package/password/password.js +69 -24
  208. package/password/password.min.js +1 -1
  209. package/picklist/PickList.d.ts +8 -0
  210. package/picklist/PickList.vue +10 -2
  211. package/picklist/picklist.cjs.js +68 -50
  212. package/picklist/picklist.cjs.min.js +1 -1
  213. package/picklist/picklist.esm.js +69 -51
  214. package/picklist/picklist.esm.min.js +1 -1
  215. package/picklist/picklist.js +68 -50
  216. package/picklist/picklist.min.js +1 -1
  217. package/portal/Portal.d.ts +1 -1
  218. package/radiobutton/RadioButton.d.ts +28 -4
  219. package/radiobutton/RadioButton.vue +36 -11
  220. package/radiobutton/radiobutton.cjs.js +49 -23
  221. package/radiobutton/radiobutton.cjs.min.js +1 -1
  222. package/radiobutton/radiobutton.esm.js +50 -24
  223. package/radiobutton/radiobutton.esm.min.js +1 -1
  224. package/radiobutton/radiobutton.js +49 -23
  225. package/radiobutton/radiobutton.min.js +1 -1
  226. package/rating/Rating.d.ts +4 -0
  227. package/rating/Rating.vue +61 -7
  228. package/rating/rating.cjs.js +90 -16
  229. package/rating/rating.cjs.min.js +1 -1
  230. package/rating/rating.esm.js +91 -17
  231. package/rating/rating.esm.min.js +1 -1
  232. package/rating/rating.js +90 -16
  233. package/rating/rating.min.js +1 -1
  234. package/resources/primevue.css +8 -0
  235. package/resources/primevue.min.css +1 -1
  236. package/resources/themes/arya-blue/theme.css +82 -40
  237. package/resources/themes/arya-green/theme.css +82 -40
  238. package/resources/themes/arya-orange/theme.css +82 -40
  239. package/resources/themes/arya-purple/theme.css +82 -40
  240. package/resources/themes/bootstrap4-dark-blue/theme.css +82 -40
  241. package/resources/themes/bootstrap4-dark-purple/theme.css +82 -40
  242. package/resources/themes/bootstrap4-light-blue/theme.css +82 -40
  243. package/resources/themes/bootstrap4-light-purple/theme.css +82 -40
  244. package/resources/themes/fluent-light/theme.css +82 -40
  245. package/resources/themes/lara-dark-blue/theme.css +82 -40
  246. package/resources/themes/lara-dark-indigo/theme.css +82 -40
  247. package/resources/themes/lara-dark-purple/theme.css +82 -40
  248. package/resources/themes/lara-dark-teal/theme.css +82 -40
  249. package/resources/themes/lara-light-blue/theme.css +82 -40
  250. package/resources/themes/lara-light-indigo/theme.css +82 -40
  251. package/resources/themes/lara-light-purple/theme.css +82 -40
  252. package/resources/themes/lara-light-teal/theme.css +82 -40
  253. package/resources/themes/luna-amber/theme.css +82 -40
  254. package/resources/themes/luna-blue/theme.css +82 -40
  255. package/resources/themes/luna-green/theme.css +82 -40
  256. package/resources/themes/luna-pink/theme.css +82 -40
  257. package/resources/themes/md-dark-deeppurple/theme.css +82 -40
  258. package/resources/themes/md-dark-indigo/theme.css +82 -40
  259. package/resources/themes/md-light-deeppurple/theme.css +82 -40
  260. package/resources/themes/md-light-indigo/theme.css +82 -40
  261. package/resources/themes/mdc-dark-deeppurple/theme.css +82 -40
  262. package/resources/themes/mdc-dark-indigo/theme.css +82 -40
  263. package/resources/themes/mdc-light-deeppurple/theme.css +82 -40
  264. package/resources/themes/mdc-light-indigo/theme.css +82 -40
  265. package/resources/themes/nova/theme.css +82 -40
  266. package/resources/themes/nova-accent/theme.css +82 -40
  267. package/resources/themes/nova-alt/theme.css +82 -40
  268. package/resources/themes/nova-vue/theme.css +82 -40
  269. package/resources/themes/rhea/theme.css +82 -40
  270. package/resources/themes/saga-blue/theme.css +82 -40
  271. package/resources/themes/saga-green/theme.css +82 -40
  272. package/resources/themes/saga-orange/theme.css +82 -40
  273. package/resources/themes/saga-purple/theme.css +82 -40
  274. package/resources/themes/tailwind-light/theme.css +82 -40
  275. package/resources/themes/vela-blue/theme.css +82 -40
  276. package/resources/themes/vela-green/theme.css +82 -40
  277. package/resources/themes/vela-orange/theme.css +82 -40
  278. package/resources/themes/vela-purple/theme.css +82 -40
  279. package/ripple/ripple.cjs.js +1 -0
  280. package/ripple/ripple.cjs.min.js +1 -1
  281. package/ripple/ripple.esm.js +1 -0
  282. package/ripple/ripple.esm.min.js +1 -1
  283. package/ripple/ripple.js +1 -0
  284. package/ripple/ripple.min.js +1 -1
  285. package/selectbutton/SelectButton.d.ts +6 -2
  286. package/selectbutton/SelectButton.vue +89 -12
  287. package/selectbutton/selectbutton.cjs.js +97 -22
  288. package/selectbutton/selectbutton.cjs.min.js +1 -1
  289. package/selectbutton/selectbutton.esm.js +99 -24
  290. package/selectbutton/selectbutton.esm.min.js +1 -1
  291. package/selectbutton/selectbutton.js +97 -22
  292. package/selectbutton/selectbutton.min.js +1 -1
  293. package/slider/Slider.d.ts +9 -1
  294. package/slider/Slider.vue +50 -34
  295. package/slider/slider.cjs.js +59 -38
  296. package/slider/slider.cjs.min.js +1 -1
  297. package/slider/slider.esm.js +59 -38
  298. package/slider/slider.esm.min.js +1 -1
  299. package/slider/slider.js +59 -38
  300. package/slider/slider.min.js +1 -1
  301. package/splitbutton/SplitButton.d.ts +1 -1
  302. package/splitter/Splitter.vue +30 -1
  303. package/splitter/splitter.cjs.js +30 -1
  304. package/splitter/splitter.cjs.min.js +1 -1
  305. package/splitter/splitter.esm.js +30 -1
  306. package/splitter/splitter.esm.min.js +1 -1
  307. package/splitter/splitter.js +30 -1
  308. package/splitter/splitter.min.js +1 -1
  309. package/textarea/Textarea.vue +1 -2
  310. package/textarea/textarea.cjs.js +3 -5
  311. package/textarea/textarea.cjs.min.js +1 -1
  312. package/textarea/textarea.esm.js +4 -6
  313. package/textarea/textarea.esm.min.js +1 -1
  314. package/textarea/textarea.js +3 -5
  315. package/textarea/textarea.min.js +1 -1
  316. package/tieredmenu/TieredMenu.d.ts +1 -1
  317. package/tieredmenu/TieredMenuSub.vue +3 -3
  318. package/tieredmenu/tieredmenu.cjs.js +14 -8
  319. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  320. package/tieredmenu/tieredmenu.esm.js +15 -9
  321. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  322. package/tieredmenu/tieredmenu.js +14 -8
  323. package/tieredmenu/tieredmenu.min.js +1 -1
  324. package/timeline/Timeline.d.ts +10 -1
  325. package/timeline/Timeline.vue +1 -1
  326. package/timeline/timeline.cjs.js +5 -1
  327. package/timeline/timeline.cjs.min.js +1 -1
  328. package/timeline/timeline.esm.js +5 -1
  329. package/timeline/timeline.esm.min.js +1 -1
  330. package/timeline/timeline.js +5 -1
  331. package/timeline/timeline.min.js +1 -1
  332. package/togglebutton/ToggleButton.d.ts +42 -0
  333. package/togglebutton/ToggleButton.vue +44 -7
  334. package/togglebutton/togglebutton.cjs.js +59 -13
  335. package/togglebutton/togglebutton.cjs.min.js +1 -1
  336. package/togglebutton/togglebutton.esm.js +60 -14
  337. package/togglebutton/togglebutton.esm.min.js +1 -1
  338. package/togglebutton/togglebutton.js +59 -13
  339. package/togglebutton/togglebutton.min.js +1 -1
  340. package/tooltip/tooltip.cjs.js +20 -11
  341. package/tooltip/tooltip.cjs.min.js +1 -1
  342. package/tooltip/tooltip.esm.js +21 -12
  343. package/tooltip/tooltip.esm.min.js +1 -1
  344. package/tooltip/tooltip.js +20 -11
  345. package/tooltip/tooltip.min.js +1 -1
  346. package/tree/Tree.vue +5 -1
  347. package/tree/TreeNode.vue +20 -19
  348. package/tree/tree.cjs.js +47 -32
  349. package/tree/tree.cjs.min.js +1 -1
  350. package/tree/tree.esm.js +47 -32
  351. package/tree/tree.esm.min.js +1 -1
  352. package/tree/tree.js +47 -32
  353. package/tree/tree.min.js +1 -1
  354. package/treeselect/TreeSelect.d.ts +26 -10
  355. package/treeselect/TreeSelect.vue +52 -29
  356. package/treeselect/treeselect.cjs.js +74 -41
  357. package/treeselect/treeselect.cjs.min.js +1 -1
  358. package/treeselect/treeselect.esm.js +76 -43
  359. package/treeselect/treeselect.esm.min.js +1 -1
  360. package/treeselect/treeselect.js +74 -41
  361. package/treeselect/treeselect.min.js +1 -1
  362. package/tristatecheckbox/TriStateCheckbox.d.ts +20 -4
  363. package/tristatecheckbox/TriStateCheckbox.vue +52 -15
  364. package/tristatecheckbox/tristatecheckbox.cjs.js +67 -26
  365. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  366. package/tristatecheckbox/tristatecheckbox.esm.js +68 -27
  367. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  368. package/tristatecheckbox/tristatecheckbox.js +67 -26
  369. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  370. package/utils/Utils.d.ts +3 -2
  371. package/utils/utils.cjs.js +239 -173
  372. package/utils/utils.cjs.min.js +1 -1
  373. package/utils/utils.esm.js +239 -173
  374. package/utils/utils.esm.min.js +1 -1
  375. package/utils/utils.js +239 -173
  376. package/utils/utils.min.js +1 -1
  377. package/vetur-attributes.json +612 -136
  378. package/vetur-tags.json +180 -59
  379. package/virtualscroller/VirtualScroller.d.ts +10 -0
  380. package/virtualscroller/VirtualScroller.vue +18 -17
  381. package/virtualscroller/virtualscroller.cjs.js +22 -20
  382. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  383. package/virtualscroller/virtualscroller.esm.js +22 -20
  384. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  385. package/virtualscroller/virtualscroller.js +22 -20
  386. package/virtualscroller/virtualscroller.min.js +1 -1
  387. package/web-types.json +1745 -338
@@ -1,149 +1,69 @@
1
- import { ObjectUtils, DomHandler, ZIndexUtils, ConnectedOverlayScrollHandler } from 'primevue/utils';
1
+ import { ObjectUtils, DomHandler, UniqueComponentId, ZIndexUtils, ConnectedOverlayScrollHandler } from 'primevue/utils';
2
2
  import OverlayEventBus from 'primevue/overlayeventbus';
3
3
  import Ripple from 'primevue/ripple';
4
- import { resolveComponent, resolveDirective, openBlock, createElementBlock, Fragment, renderList, normalizeClass, withDirectives, createBlock, resolveDynamicComponent, toDisplayString, createCommentVNode, createElementVNode, renderSlot, createTextVNode, createVNode, withCtx, Transition } from 'vue';
4
+ import { resolveComponent, resolveDirective, openBlock, createElementBlock, Fragment, renderList, normalizeClass, withDirectives, createBlock, resolveDynamicComponent, toDisplayString, createCommentVNode, createElementVNode, mergeProps, renderSlot, createTextVNode, createVNode, withCtx, Transition } from 'vue';
5
5
  import Portal from 'primevue/portal';
6
6
 
7
7
  var script$1 = {
8
8
  name: 'CascadeSelectSub',
9
- emits: ['option-select','optiongroup-select'],
9
+ emits: ['option-change'],
10
10
  props: {
11
- selectionPath: Array,
12
- level: Number,
11
+ selectId: String,
12
+ focusedOptionId: String,
13
13
  options: Array,
14
14
  optionLabel: String,
15
15
  optionValue: String,
16
+ optionDisabled: null,
16
17
  optionGroupLabel: String,
17
18
  optionGroupChildren: Array,
18
- parentActive: Boolean,
19
- dirty: Boolean,
20
- templates: null,
21
- root: Boolean
22
- },
23
- data() {
24
- return {
25
- activeOption: null
26
- }
19
+ activeOptionPath: Array,
20
+ level: Number,
21
+ templates: null
27
22
  },
28
23
  mounted() {
29
- if (this.selectionPath && this.options && !this.dirty) {
30
- for (let option of this.options) {
31
- if (this.selectionPath.includes(option)) {
32
- this.activeOption = option;
33
- break;
34
- }
35
- }
36
- }
37
-
38
- if (!this.root) {
24
+ if (ObjectUtils.isNotEmpty(this.parentKey)) {
39
25
  this.position();
40
26
  }
41
27
  },
42
- watch: {
43
- parentActive(newValue) {
44
- if (!newValue) {
45
- this.activeOption = null;
46
- }
47
- }
48
- },
49
28
  methods: {
50
- onOptionClick(event, option) {
51
- if (this.isOptionGroup(option)) {
52
- this.activeOption = (this.activeOption === option) ? null : option;
53
-
54
- this.$emit('optiongroup-select', {
55
- originalEvent: event,
56
- value: option
57
- });
58
- }
59
- else {
60
- this.$emit('option-select', {
61
- originalEvent: event,
62
- value: this.getOptionValue(option)
63
- });
64
- }
29
+ getOptionId(processedOption) {
30
+ return `${this.selectId}_${processedOption.key}`;
65
31
  },
66
- onOptionSelect(event) {
67
- this.$emit('option-select', event);
32
+ getOptionLabel(processedOption) {
33
+ return this.optionLabel ? ObjectUtils.resolveFieldData(processedOption.option, this.optionLabel) : processedOption.option;
68
34
  },
69
- onOptionGroupSelect(event) {
70
- this.$emit('optiongroup-select', event);
35
+ getOptionValue(processedOption) {
36
+ return this.optionValue ? ObjectUtils.resolveFieldData(processedOption.option, this.optionValue) : processedOption.option;
71
37
  },
72
- getOptionLabel(option) {
73
- return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
38
+ isOptionDisabled(processedOption) {
39
+ return this.optionDisabled ? ObjectUtils.resolveFieldData(processedOption.option, this.optionDisabled) : false;
74
40
  },
75
- getOptionValue(option) {
76
- return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
41
+ getOptionGroupLabel(processedOption) {
42
+ return this.optionGroupLabel ? ObjectUtils.resolveFieldData(processedOption.option, this.optionGroupLabel) : null;
77
43
  },
78
- getOptionGroupLabel(optionGroup) {
79
- return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;
44
+ getOptionGroupChildren(processedOption) {
45
+ return processedOption.children;
80
46
  },
81
- getOptionGroupChildren(optionGroup) {
82
- return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);
47
+ isOptionGroup(processedOption) {
48
+ return ObjectUtils.isNotEmpty(processedOption.children);
83
49
  },
84
- isOptionGroup(option) {
85
- return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);
50
+ isOptionSelected(processedOption) {
51
+ return !this.isOptionGroup(processedOption) && this.isOptionActive(processedOption);
86
52
  },
87
- getOptionLabelToRender(option) {
88
- return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);
53
+ isOptionActive(processedOption) {
54
+ return this.activeOptionPath.some(path => path.key === processedOption.key);
89
55
  },
90
- getItemClass(option) {
91
- return [
92
- 'p-cascadeselect-item', {
93
- 'p-cascadeselect-item-group': this.isOptionGroup(option),
94
- 'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)
95
- }
96
- ]
56
+ isOptionFocused(processedOption) {
57
+ return this.focusedOptionId === this.getOptionId(processedOption);
97
58
  },
98
- isOptionActive(option) {
99
- return this.activeOption === option;
59
+ getOptionLabelToRender(processedOption) {
60
+ return this.isOptionGroup(processedOption) ? this.getOptionGroupLabel(processedOption) : this.getOptionLabel(processedOption);
100
61
  },
101
- onKeyDown(event, option, index) {
102
- switch (event.key) {
103
- case 'Down':
104
- case 'ArrowDown':
105
- var nextItem = this.$el.children[index + 1];
106
- if (nextItem) {
107
- nextItem.children[0].focus();
108
- }
109
- break;
110
-
111
- case 'Up':
112
- case 'ArrowUp':
113
- var prevItem = this.$el.children[index - 1];
114
- if (prevItem) {
115
- prevItem.children[0].focus();
116
- }
117
- break;
118
-
119
- case 'Right':
120
- case 'ArrowRight':
121
- if (this.isOptionGroup(option)) {
122
- if (this.isOptionActive(option)) {
123
- event.currentTarget.nextElementSibling.children[0].children[0].focus();
124
- }
125
- else {
126
- this.activeOption = option;
127
- }
128
- }
129
- break;
130
-
131
- case 'Left':
132
- case 'ArrowLeft':
133
- this.activeOption = null;
134
-
135
- var parentList = event.currentTarget.parentElement.parentElement.previousElementSibling;
136
- if (parentList) {
137
- parentList.focus();
138
- }
139
- break;
140
-
141
- case 'Enter':
142
- this.onOptionClick(event, option);
143
- break;
144
- }
145
-
146
- event.preventDefault();
62
+ onOptionClick(event, processedOption) {
63
+ this.$emit('option-change', { originalEvent: event, processedOption, isFocus: true });
64
+ },
65
+ onOptionChange(event) {
66
+ this.$emit('option-change', event);
147
67
  },
148
68
  position() {
149
69
  const parentItem = this.$el.parentElement;
@@ -162,19 +82,17 @@ var script$1 = {
162
82
  }
163
83
  };
164
84
 
165
- const _hoisted_1$1 = {
166
- class: "p-cascadeselect-panel p-cascadeselect-items",
167
- role: "listbox",
168
- "aria-orientation": "horizontal"
169
- };
170
- const _hoisted_2$1 = ["onClick", "onKeydown"];
171
- const _hoisted_3$1 = {
85
+ const _hoisted_1$1 = { class: "p-cascadeselect-panel p-cascadeselect-items" };
86
+ const _hoisted_2$1 = ["id", "aria-label", "aria-selected", "aria-expanded", "aria-setsize", "aria-posinset", "aria-level"];
87
+ const _hoisted_3$1 = ["onClick"];
88
+ const _hoisted_4$1 = {
172
89
  key: 1,
173
90
  class: "p-cascadeselect-item-text"
174
91
  };
175
- const _hoisted_4$1 = {
92
+ const _hoisted_5$1 = {
176
93
  key: 2,
177
- class: "p-cascadeselect-group-icon pi pi-angle-right"
94
+ class: "p-cascadeselect-group-icon pi pi-angle-right",
95
+ "aria-hidden": "true"
178
96
  };
179
97
 
180
98
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
@@ -182,49 +100,55 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
182
100
  const _directive_ripple = resolveDirective("ripple");
183
101
 
184
102
  return (openBlock(), createElementBlock("ul", _hoisted_1$1, [
185
- (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option, i) => {
103
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (processedOption, index) => {
186
104
  return (openBlock(), createElementBlock("li", {
187
- key: $options.getOptionLabelToRender(option),
188
- class: normalizeClass($options.getItemClass(option)),
189
- role: "none"
105
+ key: $options.getOptionLabelToRender(processedOption),
106
+ id: $options.getOptionId(processedOption),
107
+ class: normalizeClass(['p-cascadeselect-item', {'p-cascadeselect-item-group': $options.isOptionGroup(processedOption), 'p-cascadeselect-item-active p-highlight': $options.isOptionActive(processedOption), 'p-focus': $options.isOptionFocused(processedOption), 'p-disabled': $options.isOptionDisabled(processedOption)}]),
108
+ role: "treeitem",
109
+ "aria-label": $options.getOptionLabelToRender(processedOption),
110
+ "aria-selected": $options.isOptionGroup(processedOption) ? undefined : $options.isOptionSelected(processedOption),
111
+ "aria-expanded": $options.isOptionGroup(processedOption) ? $options.isOptionActive(processedOption) : undefined,
112
+ "aria-setsize": processedOption.length,
113
+ "aria-posinset": index + 1,
114
+ "aria-level": $props.level + 1
190
115
  }, [
191
116
  withDirectives((openBlock(), createElementBlock("div", {
192
117
  class: "p-cascadeselect-item-content",
193
- onClick: $event => ($options.onOptionClick($event, option)),
194
- tabindex: "0",
195
- onKeydown: $event => ($options.onKeyDown($event, option, i))
118
+ onClick: $event => ($options.onOptionClick($event, processedOption))
196
119
  }, [
197
120
  ($props.templates['option'])
198
121
  ? (openBlock(), createBlock(resolveDynamicComponent($props.templates['option']), {
199
122
  key: 0,
200
- option: option
123
+ option: processedOption.option
201
124
  }, null, 8, ["option"]))
202
- : (openBlock(), createElementBlock("span", _hoisted_3$1, toDisplayString($options.getOptionLabelToRender(option)), 1)),
203
- ($options.isOptionGroup(option))
204
- ? (openBlock(), createElementBlock("span", _hoisted_4$1))
125
+ : (openBlock(), createElementBlock("span", _hoisted_4$1, toDisplayString($options.getOptionLabelToRender(processedOption)), 1)),
126
+ ($options.isOptionGroup(processedOption))
127
+ ? (openBlock(), createElementBlock("span", _hoisted_5$1))
205
128
  : createCommentVNode("", true)
206
- ], 40, _hoisted_2$1)), [
129
+ ], 8, _hoisted_3$1)), [
207
130
  [_directive_ripple]
208
131
  ]),
209
- ($options.isOptionGroup(option) && $options.isOptionActive(option))
132
+ ($options.isOptionGroup(processedOption) && $options.isOptionActive(processedOption))
210
133
  ? (openBlock(), createBlock(_component_CascadeSelectSub, {
211
134
  key: 0,
135
+ role: "group",
212
136
  class: "p-cascadeselect-sublist",
213
- selectionPath: $props.selectionPath,
214
- options: $options.getOptionGroupChildren(option),
137
+ selectId: $props.selectId,
138
+ focusedOptionId: $props.focusedOptionId,
139
+ options: $options.getOptionGroupChildren(processedOption),
140
+ activeOptionPath: $props.activeOptionPath,
141
+ level: $props.level + 1,
142
+ templates: $props.templates,
215
143
  optionLabel: $props.optionLabel,
216
144
  optionValue: $props.optionValue,
217
- level: $props.level + 1,
218
- onOptionSelect: $options.onOptionSelect,
219
- onOptiongroupSelect: $options.onOptionGroupSelect,
145
+ optionDisabled: $props.optionDisabled,
220
146
  optionGroupLabel: $props.optionGroupLabel,
221
147
  optionGroupChildren: $props.optionGroupChildren,
222
- parentActive: $options.isOptionActive(option),
223
- dirty: $props.dirty,
224
- templates: $props.templates
225
- }, null, 8, ["selectionPath", "options", "optionLabel", "optionValue", "level", "onOptionSelect", "onOptiongroupSelect", "optionGroupLabel", "optionGroupChildren", "parentActive", "dirty", "templates"]))
148
+ onOptionChange: $options.onOptionChange
149
+ }, null, 8, ["selectId", "focusedOptionId", "options", "activeOptionPath", "level", "templates", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "onOptionChange"]))
226
150
  : createCommentVNode("", true)
227
- ], 2))
151
+ ], 10, _hoisted_2$1))
228
152
  }), 128))
229
153
  ]))
230
154
  }
@@ -233,33 +157,29 @@ script$1.render = render$1;
233
157
 
234
158
  var script = {
235
159
  name: 'CascadeSelect',
236
- emits: ['update:modelValue','change','group-change', 'before-show','before-hide','hide','show'],
237
- data() {
238
- return {
239
- selectionPath: null,
240
- focused: false,
241
- overlayVisible: false,
242
- dirty: false
243
- };
244
- },
160
+ emits: ['update:modelValue', 'change', 'focus', 'blur', 'click', 'group-change', 'before-show', 'before-hide', 'hide', 'show'],
245
161
  props: {
246
162
  modelValue: null,
247
163
  options: Array,
248
- optionLabel: String,
249
- optionValue: String,
250
- optionGroupLabel: String,
251
- optionGroupChildren: Array,
164
+ optionLabel: null,
165
+ optionValue: null,
166
+ optionDisabled: null,
167
+ optionGroupLabel: null,
168
+ optionGroupChildren: null,
252
169
  placeholder: String,
253
170
  disabled: Boolean,
254
171
  dataKey: null,
255
- inputId: String,
256
- tabindex: String,
257
- ariaLabelledBy: null,
172
+ inputId: null,
173
+ inputStyle: null,
174
+ inputClass: null,
175
+ inputProps: null,
176
+ panelStyle: null,
177
+ panelClass: null,
178
+ panelProps: null,
258
179
  appendTo: {
259
180
  type: String,
260
181
  default: 'body'
261
182
  },
262
- panelClass: null,
263
183
  loading: {
264
184
  type: Boolean,
265
185
  default: false
@@ -267,12 +187,74 @@ var script = {
267
187
  loadingIcon: {
268
188
  type: String,
269
189
  default: 'pi pi-spinner pi-spin'
190
+ },
191
+ autoOptionFocus: {
192
+ type: Boolean,
193
+ default: true
194
+ },
195
+ searchLocale: {
196
+ type: String,
197
+ default: undefined
198
+ },
199
+ searchMessage: {
200
+ type: String,
201
+ default: null
202
+ },
203
+ selectionMessage: {
204
+ type: String,
205
+ default: null
206
+ },
207
+ emptySelectionMessage: {
208
+ type: String,
209
+ default: null
210
+ },
211
+ emptySearchMessage: {
212
+ type: String,
213
+ default: null
214
+ },
215
+ emptyMessage: {
216
+ type: String,
217
+ default: null
218
+ },
219
+ tabindex: {
220
+ type: Number,
221
+ default: 0
222
+ },
223
+ 'aria-labelledby': {
224
+ type: String,
225
+ default: null
226
+ },
227
+ 'aria-label': {
228
+ type: String,
229
+ default: null
270
230
  }
271
231
  },
272
232
  outsideClickListener: null,
273
233
  scrollHandler: null,
274
234
  resizeListener: null,
275
235
  overlay: null,
236
+ searchTimeout: null,
237
+ searchValue: null,
238
+ selectOnFocus: false,
239
+ focusOnHover: false,
240
+ data() {
241
+ return {
242
+ id: UniqueComponentId(),
243
+ focused: false,
244
+ focusedOptionInfo: { index: -1, level: 0, parentKey: '' },
245
+ activeOptionPath: [],
246
+ overlayVisible: false,
247
+ dirty: false
248
+ }
249
+ },
250
+ watch: {
251
+ options() {
252
+ this.autoUpdateModel();
253
+ }
254
+ },
255
+ mounted() {
256
+ this.id = this.$attrs.id || this.id;
257
+ },
276
258
  beforeUnmount() {
277
259
  this.unbindOutsideClickListener();
278
260
  this.unbindResizeListener();
@@ -287,107 +269,314 @@ var script = {
287
269
  this.overlay = null;
288
270
  }
289
271
  },
290
- mounted() {
291
- this.updateSelectionPath();
292
- },
293
- watch: {
294
- modelValue() {
295
- this.updateSelectionPath();
296
- }
297
- },
298
272
  methods: {
299
- onOptionSelect(event) {
300
- this.$emit('update:modelValue', event.value);
301
- this.$emit('change', event);
302
- this.hide();
303
- this.$refs.focusInput.focus();
304
- },
305
- onOptionGroupSelect(event) {
306
- this.dirty = true;
307
- this.$emit('group-change', event);
308
- },
309
273
  getOptionLabel(option) {
310
274
  return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
311
275
  },
312
276
  getOptionValue(option) {
313
277
  return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
314
278
  },
279
+ isOptionDisabled(option) {
280
+ return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : false;
281
+ },
282
+ getOptionGroupLabel(optionGroup) {
283
+ return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;
284
+ },
315
285
  getOptionGroupChildren(optionGroup, level) {
316
286
  return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);
317
287
  },
318
288
  isOptionGroup(option, level) {
319
289
  return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);
320
290
  },
321
- updateSelectionPath() {
322
- let path;
323
- if (this.modelValue != null && this.options) {
324
- for (let option of this.options) {
325
- path = this.findModelOptionInGroup(option, 0);
326
- if (path) {
327
- break;
328
- }
329
- }
330
- }
331
-
332
- this.selectionPath = path;
291
+ getProccessedOptionLabel(processedOption) {
292
+ const grouped = this.isProccessedOptionGroup(processedOption);
293
+ return grouped ? this.getOptionGroupLabel(processedOption.option, processedOption.level) : this.getOptionLabel(processedOption.option);
333
294
  },
334
- findModelOptionInGroup(option, level) {
335
- if (this.isOptionGroup(option, level)) {
336
- let selectedOption;
337
- for (let childOption of this.getOptionGroupChildren(option, level)) {
338
- selectedOption = this.findModelOptionInGroup(childOption, level + 1);
339
- if (selectedOption) {
340
- selectedOption.unshift(option);
341
- return selectedOption;
342
- }
343
- }
344
- }
345
- else if ((ObjectUtils.equals(this.modelValue, this.getOptionValue(option), this.dataKey))) {
346
- return [option];
347
- }
348
-
349
- return null;
295
+ isProccessedOptionGroup(processedOption) {
296
+ return ObjectUtils.isNotEmpty(processedOption.children);
350
297
  },
351
- show() {
298
+ show(isFocus) {
352
299
  this.$emit('before-show');
353
300
  this.overlayVisible = true;
301
+ this.activeOptionPath = this.findOptionPathByValue(this.modelValue);
302
+
303
+ if (this.hasSelectedOption && ObjectUtils.isNotEmpty(this.activeOptionPath)) {
304
+ const processedOption = this.activeOptionPath[this.activeOptionPath.length - 1];
305
+ this.focusedOptionInfo = { index: (this.autoOptionFocus ? processedOption.index : -1), level: processedOption.level, parentKey: processedOption.parentKey };
306
+ }
307
+ else {
308
+ this.focusedOptionInfo = { index: (this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1), level: 0, parentKey: '' };
309
+ }
310
+
311
+ isFocus && this.$refs.focusInput.focus();
354
312
  },
355
- hide() {
356
- this.$emit('before-hide');
357
- this.overlayVisible = false;
313
+ hide(isFocus) {
314
+ const _hide = () => {
315
+ this.$emit('before-hide');
316
+ this.overlayVisible = false;
317
+ this.activeOptionPath = [];
318
+ this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };
319
+
320
+ isFocus && this.$refs.focusInput.focus();
321
+ };
322
+
323
+ setTimeout(() => { _hide(); }, 0); // For ScreenReaders
358
324
  },
359
- onFocus() {
325
+ onFocus(event) {
360
326
  this.focused = true;
327
+ this.$emit('focus', event);
361
328
  },
362
- onBlur() {
329
+ onBlur(event) {
363
330
  this.focused = false;
331
+ this.focusedOptionInfo = { index: -1, level: 0, parentKey: '' };
332
+ this.searchValue = '';
333
+ this.$emit('blur', event);
364
334
  },
365
- onClick(event) {
335
+ onKeyDown(event) {
366
336
  if (this.disabled || this.loading) {
337
+ event.preventDefault();
367
338
  return;
368
339
  }
369
340
 
370
- if (!this.overlay || !this.overlay.contains(event.target)) {
371
- if (this.overlayVisible)
372
- this.hide();
373
- else
374
- this.show();
341
+ switch (event.code) {
342
+ case 'ArrowDown':
343
+ this.onArrowDownKey(event);
344
+ break;
345
+
346
+ case 'ArrowUp':
347
+ this.onArrowUpKey(event);
348
+ break;
349
+
350
+ case 'ArrowLeft':
351
+ this.onArrowLeftKey(event);
352
+ break;
353
+
354
+ case 'ArrowRight':
355
+ this.onArrowRightKey(event);
356
+ break;
357
+
358
+ case 'Home':
359
+ this.onHomeKey(event);
360
+ break;
361
+
362
+ case 'End':
363
+ this.onEndKey(event);
364
+ break;
365
+
366
+ case 'Space':
367
+ this.onSpaceKey(event);
368
+ break;
369
+
370
+ case 'Enter':
371
+ this.onEnterKey(event);
372
+ break;
373
+
374
+ case 'Escape':
375
+ this.onEscapeKey(event);
376
+ break;
377
+
378
+ case 'Tab':
379
+ this.onTabKey(event);
380
+ break;
381
+
382
+ case 'PageDown':
383
+ case 'PageUp':
384
+ case 'Backspace':
385
+ case 'ShiftLeft':
386
+ case 'ShiftRight':
387
+ //NOOP
388
+ break;
389
+
390
+ default:
391
+ if (ObjectUtils.isPrintableCharacter(event.key)) {
392
+ !this.overlayVisible && this.show();
393
+ this.searchOptions(event, event.key);
394
+ }
395
+
396
+ break;
397
+ }
398
+ },
399
+ onOptionChange(event) {
400
+ const { originalEvent, processedOption, isFocus } = event;
401
+ const { index, level, parentKey, children } = processedOption;
402
+ const grouped = ObjectUtils.isNotEmpty(children);
403
+
404
+ const activeOptionPath = this.activeOptionPath.filter(p => p.parentKey !== parentKey);
405
+ activeOptionPath.push(processedOption);
406
+
407
+ this.focusedOptionInfo = { index, level, parentKey };
408
+ this.activeOptionPath = activeOptionPath;
409
+
410
+ grouped ? this.onOptionGroupSelect(originalEvent, processedOption) : this.onOptionSelect(originalEvent, processedOption);
411
+ isFocus && this.$refs.focusInput.focus();
412
+ },
413
+ onOptionSelect(event, processedOption) {
414
+ const value = this.getOptionValue(processedOption.option);
415
+
416
+ this.activeOptionPath.forEach(p => p.selected = true);
417
+ this.updateModel(event, value);
418
+ this.hide(true);
419
+ },
420
+ onOptionGroupSelect(event, processedOption) {
421
+ this.dirty = true;
422
+ this.$emit('group-change', { originalEvent: event, value: processedOption.option });
423
+ },
424
+ onContainerClick(event) {
425
+ if (this.disabled || this.loading) {
426
+ return;
427
+ }
375
428
 
429
+ if (!this.overlay || !this.overlay.contains(event.target)) {
430
+ this.overlayVisible ? this.hide() : this.show();
376
431
  this.$refs.focusInput.focus();
377
432
  }
433
+
434
+ this.$emit('click', event);
435
+ },
436
+ onOverlayClick(event) {
437
+ OverlayEventBus.emit('overlay-click', {
438
+ originalEvent: event,
439
+ target: this.$el
440
+ });
441
+ },
442
+ onOverlayKeyDown(event) {
443
+ switch (event.code) {
444
+ case 'Escape':
445
+ this.onEscapeKey(event);
446
+ break;
447
+ }
448
+ },
449
+ onArrowDownKey(event) {
450
+ const optionIndex = this.focusedOptionInfo.index !== -1 ? this.findNextOptionIndex(this.focusedOptionInfo.index) : this.findFirstFocusedOptionIndex();
451
+
452
+ this.changeFocusedOptionIndex(event, optionIndex);
453
+
454
+ !this.overlayVisible && this.show();
455
+ event.preventDefault();
456
+ },
457
+ onArrowUpKey(event) {
458
+ if (event.altKey) {
459
+ if (this.focusedOptionInfo.index !== -1) {
460
+ const processedOption = this.visibleOptions[this.focusedOptionInfo.index];
461
+ const grouped = this.isProccessedOptionGroup(processedOption);
462
+ !grouped && this.onOptionChange({ originalEvent: event, processedOption });
463
+ }
464
+
465
+ this.overlayVisible && this.hide();
466
+ event.preventDefault();
467
+ }
468
+ else {
469
+ const optionIndex = this.focusedOptionInfo.index !== -1 ? this.findPrevOptionIndex(this.focusedOptionInfo.index) : this.findLastFocusedOptionIndex();
470
+
471
+ this.changeFocusedOptionIndex(event, optionIndex);
472
+
473
+ !this.overlayVisible && this.show();
474
+ event.preventDefault();
475
+ }
476
+ },
477
+ onArrowLeftKey(event) {
478
+ if (this.overlayVisible) {
479
+ const processedOption = this.visibleOptions[this.focusedOptionInfo.index];
480
+ const parentOption = this.activeOptionPath.find(p => p.key === processedOption.parentKey);
481
+ const matched = this.focusedOptionInfo.parentKey === '' || (parentOption && parentOption.key === this.focusedOptionInfo.parentKey);
482
+ const root = ObjectUtils.isEmpty(processedOption.parent);
483
+
484
+ if (matched) {
485
+ this.activeOptionPath = this.activeOptionPath.filter(p => p.parentKey !== this.focusedOptionInfo.parentKey);
486
+ }
487
+
488
+ if (!root) {
489
+ this.focusedOptionInfo = { index: -1, parentKey: parentOption ? parentOption.parentKey : '' };
490
+ this.searchValue = '';
491
+ this.onArrowDownKey(event);
492
+ }
493
+
494
+ event.preventDefault();
495
+ }
496
+ },
497
+ onArrowRightKey(event) {
498
+ if (this.overlayVisible) {
499
+ const processedOption = this.visibleOptions[this.focusedOptionInfo.index];
500
+ const grouped = this.isProccessedOptionGroup(processedOption);
501
+
502
+ if (grouped) {
503
+ const matched = this.activeOptionPath.some(p => processedOption.key === p.key);
504
+
505
+ if (matched) {
506
+ this.focusedOptionInfo = { index: -1, parentKey: processedOption.key };
507
+ this.searchValue = '';
508
+ this.onArrowDownKey(event);
509
+ }
510
+ else {
511
+ this.onOptionChange({ originalEvent: event, processedOption });
512
+ }
513
+ }
514
+
515
+ event.preventDefault();
516
+ }
517
+ },
518
+ onHomeKey(event) {
519
+ this.changeFocusedOptionIndex(event, this.findFirstOptionIndex());
520
+
521
+ !this.overlayVisible && this.show();
522
+ event.preventDefault();
523
+ },
524
+ onEndKey(event) {
525
+ this.changeFocusedOptionIndex(event, this.findLastOptionIndex());
526
+
527
+ !this.overlayVisible && this.show();
528
+ event.preventDefault();
529
+ },
530
+ onEnterKey(event) {
531
+ if (!this.overlayVisible) {
532
+ this.onArrowDownKey(event);
533
+ }
534
+ else {
535
+ if (this.focusedOptionInfo.index !== -1) {
536
+ const processedOption = this.visibleOptions[this.focusedOptionInfo.index];
537
+ const grouped = this.isProccessedOptionGroup(processedOption);
538
+
539
+ this.onOptionChange({ originalEvent: event, processedOption });
540
+ !grouped && this.hide();
541
+ }
542
+ }
543
+
544
+ event.preventDefault();
545
+ },
546
+ onSpaceKey(event) {
547
+ this.onEnterKey(event);
548
+ },
549
+ onEscapeKey(event) {
550
+ this.overlayVisible && this.hide(true);
551
+ event.preventDefault();
552
+ },
553
+ onTabKey(event) {
554
+ if (this.focusedOptionInfo.index !== -1) {
555
+ const processedOption = this.visibleOptions[this.focusedOptionInfo.index];
556
+ const grouped = this.isProccessedOptionGroup(processedOption);
557
+
558
+ !grouped && this.onOptionChange({ originalEvent: event, processedOption });
559
+ }
560
+
561
+ this.overlayVisible && this.hide();
378
562
  },
379
563
  onOverlayEnter(el) {
380
564
  ZIndexUtils.set('overlay', el, this.$primevue.config.zIndex.overlay);
381
565
  this.alignOverlay();
566
+ this.scrollInView();
567
+ },
568
+ onOverlayAfterEnter() {
382
569
  this.bindOutsideClickListener();
383
570
  this.bindScrollListener();
384
571
  this.bindResizeListener();
572
+
385
573
  this.$emit('show');
386
574
  },
387
575
  onOverlayLeave() {
388
576
  this.unbindOutsideClickListener();
389
577
  this.unbindScrollListener();
390
578
  this.unbindResizeListener();
579
+
391
580
  this.$emit('hide');
392
581
  this.overlay = null;
393
582
  this.dirty = false;
@@ -452,67 +641,168 @@ var script = {
452
641
  this.resizeListener = null;
453
642
  }
454
643
  },
455
- overlayRef(el) {
456
- this.overlay = el;
644
+ isOptionMatched(processedOption) {
645
+ return this.isValidOption(processedOption) && this.getProccessedOptionLabel(processedOption).toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));
457
646
  },
458
- onKeyDown(event) {
459
- switch(event.key) {
460
- case 'Down':
461
- case 'ArrowDown':
462
- if (this.overlayVisible) {
463
- DomHandler.findSingle(this.overlay, '.p-cascadeselect-item').children[0].focus();
464
- }
465
- else if (event.altKey && this.options && this.options.length) {
466
- this.show();
467
- }
468
- event.preventDefault();
469
- break;
647
+ isValidOption(processedOption) {
648
+ return !!processedOption && !this.isOptionDisabled(processedOption.option);
649
+ },
650
+ isValidSelectedOption(processedOption) {
651
+ return this.isValidOption(processedOption) && this.isSelected(processedOption);
652
+ },
653
+ isSelected(processedOption) {
654
+ return this.activeOptionPath.some(p => p.key === processedOption.key);
655
+ },
656
+ findFirstOptionIndex() {
657
+ return this.visibleOptions.findIndex(processedOption => this.isValidOption(processedOption));
658
+ },
659
+ findLastOptionIndex() {
660
+ return ObjectUtils.findLastIndex(this.visibleOptions, processedOption => this.isValidOption(processedOption));
661
+ },
662
+ findNextOptionIndex(index) {
663
+ const matchedOptionIndex = index < (this.visibleOptions.length - 1) ? this.visibleOptions.slice(index + 1).findIndex(processedOption => this.isValidOption(processedOption)) : -1;
664
+ return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
665
+ },
666
+ findPrevOptionIndex(index) {
667
+ const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions.slice(0, index), processedOption => this.isValidOption(processedOption)) : -1;
668
+ return matchedOptionIndex > -1 ? matchedOptionIndex : index;
669
+ },
670
+ findSelectedOptionIndex() {
671
+ return this.visibleOptions.findIndex(processedOption => this.isValidSelectedOption(processedOption));
672
+ },
673
+ findFirstFocusedOptionIndex() {
674
+ const selectedIndex = this.findSelectedOptionIndex();
675
+ return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
676
+ },
677
+ findLastFocusedOptionIndex() {
678
+ const selectedIndex = this.findSelectedOptionIndex();
679
+ return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
680
+ },
681
+ findOptionPathByValue(value, processedOptions, level = 0) {
682
+ processedOptions = processedOptions || (level === 0 && this.processedOptions);
470
683
 
471
- case 'Escape':
472
- if (this.overlayVisible) {
473
- this.hide();
474
- event.preventDefault();
475
- }
476
- break;
684
+ if (!processedOptions) return null;
685
+ if (ObjectUtils.isEmpty(value)) return [];
477
686
 
478
- case 'Tab':
479
- this.hide();
480
- break;
687
+ for (let i = 0; i < processedOptions.length; i++) {
688
+ const processedOption = processedOptions[i];
689
+
690
+ if (ObjectUtils.equals(value, this.getOptionValue(processedOption.option), this.equalityKey)) {
691
+ return [processedOption];
692
+ }
693
+
694
+ const matchedOptions = this.findOptionPathByValue(value, processedOption.children, level + 1);
695
+ if (matchedOptions) {
696
+ matchedOptions.unshift(processedOption);
697
+
698
+ return matchedOptions;
699
+ }
481
700
  }
482
701
  },
483
- onOverlayClick(event) {
484
- OverlayEventBus.emit('overlay-click', {
485
- originalEvent: event,
486
- target: this.$el
702
+ searchOptions(event, char) {
703
+ this.searchValue = (this.searchValue || '') + char;
704
+
705
+ let optionIndex = -1;
706
+ let matched = false;
707
+
708
+ if (this.focusedOptionInfo.index !== -1) {
709
+ optionIndex = this.visibleOptions.slice(this.focusedOptionInfo.index).findIndex(processedOption => this.isOptionMatched(processedOption));
710
+ optionIndex = optionIndex === -1 ? this.visibleOptions.slice(0, this.focusedOptionInfo.index).findIndex(processedOption => this.isOptionMatched(processedOption)) : optionIndex + this.focusedOptionInfo.index;
711
+ }
712
+ else {
713
+ optionIndex = this.visibleOptions.findIndex(processedOption => this.isOptionMatched(processedOption));
714
+ }
715
+
716
+ if (optionIndex !== -1) {
717
+ matched = true;
718
+ }
719
+
720
+ if (optionIndex === -1 && this.focusedOptionInfo.index === -1) {
721
+ optionIndex = this.findFirstFocusedOptionIndex();
722
+ }
723
+
724
+ if (optionIndex !== -1) {
725
+ this.changeFocusedOptionIndex(event, optionIndex);
726
+ }
727
+
728
+ if (this.searchTimeout) {
729
+ clearTimeout(this.searchTimeout);
730
+ }
731
+
732
+ this.searchTimeout = setTimeout(() => {
733
+ this.searchValue = '';
734
+ this.searchTimeout = null;
735
+ }, 500);
736
+
737
+ return matched;
738
+ },
739
+ changeFocusedOptionIndex(event, index) {
740
+ if (this.focusedOptionInfo.index !== index) {
741
+ this.focusedOptionInfo.index = index;
742
+ this.scrollInView();
743
+
744
+ if (this.selectOnFocus) {
745
+ this.updateModel(event, this.getOptionValue(this.visibleOptions[index]));
746
+ }
747
+ }
748
+ },
749
+ scrollInView(index = -1) {
750
+ const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
751
+ const element = DomHandler.findSingle(this.list, `li[id="${id}"]`);
752
+ if (element) {
753
+ element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
754
+ }
755
+ },
756
+ autoUpdateModel() {
757
+ if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption) {
758
+ this.focusedOptionInfo.index = this.findFirstFocusedOptionIndex();
759
+ const value = this.getOptionValue(this.visibleOptions[this.focusedOptionInfo.index]);
760
+ this.updateModel(null, value);
761
+ }
762
+ },
763
+ updateModel(event, value) {
764
+ this.$emit('update:modelValue', value);
765
+ this.$emit('change', { originalEvent: event, value });
766
+ },
767
+ createProcessedOptions(options, level = 0, parent = {}, parentKey = '') {
768
+ const processedOptions = [];
769
+
770
+ options && options.forEach((option, index) => {
771
+ const key = (parentKey !== '' ? parentKey + '_' : '') + index;
772
+ const newOption = {
773
+ option,
774
+ index,
775
+ level,
776
+ key,
777
+ parent,
778
+ parentKey
779
+ };
780
+
781
+ newOption['children'] = this.createProcessedOptions(this.getOptionGroupChildren(option, level), level + 1, newOption, key);
782
+ processedOptions.push(newOption);
487
783
  });
784
+
785
+ return processedOptions;
786
+ },
787
+ overlayRef(el) {
788
+ this.overlay = el;
488
789
  }
489
790
  },
490
791
  computed: {
491
792
  containerClass() {
492
- return [
493
- 'p-cascadeselect p-component p-inputwrapper',
494
- {
495
- 'p-disabled': this.disabled,
496
- 'p-focus': this.focused,
497
- 'p-inputwrapper-filled': this.modelValue,
498
- 'p-inputwrapper-focus': this.focused || this.overlayVisible
499
- }
500
- ];
793
+ return ['p-cascadeselect p-component p-inputwrapper', {
794
+ 'p-disabled': this.disabled,
795
+ 'p-focus': this.focused,
796
+ 'p-inputwrapper-filled': this.modelValue,
797
+ 'p-inputwrapper-focus': this.focused || this.overlayVisible,
798
+ 'p-overlay-open': this.overlayVisible
799
+ }];
501
800
  },
502
801
  labelClass() {
503
- return [
504
- 'p-cascadeselect-label',
505
- {
506
- 'p-placeholder': this.label === this.placeholder,
507
- 'p-cascadeselect-label-empty': !this.$slots['value'] && (this.label === 'p-emptylabel' || this.label.length === 0)
508
- }
509
- ];
510
- },
511
- label() {
512
- if (this.selectionPath)
513
- return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);
514
- else
515
- return this.placeholder||'p-emptylabel';
802
+ return ['p-cascadeselect-label', {
803
+ 'p-placeholder': this.label === this.placeholder,
804
+ 'p-cascadeselect-label-empty': !this.$slots['value'] && (this.label === 'p-emptylabel' || this.label.length === 0)
805
+ }];
516
806
  },
517
807
  panelStyleClass() {
518
808
  return ['p-cascadeselect-panel p-component', this.panelClass, {
@@ -522,6 +812,55 @@ var script = {
522
812
  },
523
813
  dropdownIconClass() {
524
814
  return ['p-cascadeselect-trigger-icon', this.loading ? this.loadingIcon : 'pi pi-chevron-down'];
815
+ },
816
+ hasSelectedOption() {
817
+ return ObjectUtils.isNotEmpty(this.modelValue);
818
+ },
819
+ label() {
820
+ const label = this.placeholder || 'p-emptylabel';
821
+
822
+ if (this.hasSelectedOption) {
823
+ const activeOptionPath = this.findOptionPathByValue(this.modelValue);
824
+ const processedOption = activeOptionPath.length ? activeOptionPath[activeOptionPath.length - 1] : null;
825
+
826
+ return processedOption ? this.getOptionLabel(processedOption.option) : label;
827
+ }
828
+
829
+ return label;
830
+ },
831
+ processedOptions() {
832
+ return this.createProcessedOptions(this.options || []);
833
+ },
834
+ visibleOptions() {
835
+ const processedOption = this.activeOptionPath.find(p => p.key === this.focusedOptionInfo.parentKey);
836
+ return processedOption ? processedOption.children : this.processedOptions;
837
+ },
838
+ equalityKey() {
839
+ return this.optionValue ? null : this.dataKey;
840
+ },
841
+ searchResultMessageText() {
842
+ return ObjectUtils.isNotEmpty(this.visibleOptions) ? this.searchMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptySearchMessageText;
843
+ },
844
+ searchMessageText() {
845
+ return this.searchMessage || this.$primevue.config.locale.searchMessage || '';
846
+ },
847
+ emptySearchMessageText() {
848
+ return this.emptySearchMessage || this.$primevue.config.locale.emptySearchMessage || '';
849
+ },
850
+ emptyMessageText() {
851
+ return this.emptyMessage || this.$primevue.config.locale.emptyMessage || '';
852
+ },
853
+ selectionMessageText() {
854
+ return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';
855
+ },
856
+ emptySelectionMessageText() {
857
+ return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';
858
+ },
859
+ selectedMessageText() {
860
+ return this.hasSelectedOption ? this.selectionMessageText.replaceAll('{0}', '1') : this.emptySelectionMessageText;
861
+ },
862
+ focusedOptionId() {
863
+ return this.focusedOptionInfo.index !== -1 ? `${this.id}${ObjectUtils.isNotEmpty(this.focusedOptionInfo.parentKey) ? '_' + this.focusedOptionInfo.parentKey : ''}_${this.focusedOptionInfo.index}` : null;
525
864
  }
526
865
  },
527
866
  components: {
@@ -531,9 +870,24 @@ var script = {
531
870
  };
532
871
 
533
872
  const _hoisted_1 = { class: "p-hidden-accessible" };
534
- const _hoisted_2 = ["id", "disabled", "tabindex", "aria-expanded", "aria-labelledby"];
535
- const _hoisted_3 = ["aria-expanded"];
536
- const _hoisted_4 = { class: "p-cascadeselect-items-wrapper" };
873
+ const _hoisted_2 = ["id", "disabled", "placeholder", "tabindex", "aria-label", "aria-labelledby", "aria-expanded", "aria-controls", "aria-activedescendant"];
874
+ const _hoisted_3 = {
875
+ class: "p-cascadeselect-trigger",
876
+ role: "button",
877
+ tabindex: "-1",
878
+ "aria-hidden": "true"
879
+ };
880
+ const _hoisted_4 = {
881
+ role: "status",
882
+ "aria-live": "polite",
883
+ class: "p-hidden-accessible"
884
+ };
885
+ const _hoisted_5 = { class: "p-cascadeselect-items-wrapper" };
886
+ const _hoisted_6 = {
887
+ role: "status",
888
+ "aria-live": "polite",
889
+ class: "p-hidden-accessible"
890
+ };
537
891
 
538
892
  function render(_ctx, _cache, $props, $setup, $data, $options) {
539
893
  const _component_CascadeSelectSub = resolveComponent("CascadeSelectSub");
@@ -542,23 +896,30 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
542
896
  return (openBlock(), createElementBlock("div", {
543
897
  ref: "container",
544
898
  class: normalizeClass($options.containerClass),
545
- onClick: _cache[4] || (_cache[4] = $event => ($options.onClick($event)))
899
+ onClick: _cache[5] || (_cache[5] = $event => ($options.onContainerClick($event)))
546
900
  }, [
547
901
  createElementVNode("div", _hoisted_1, [
548
- createElementVNode("input", {
902
+ createElementVNode("input", mergeProps({
549
903
  ref: "focusInput",
550
- type: "text",
551
904
  id: $props.inputId,
905
+ type: "text",
906
+ style: $props.inputStyle,
907
+ class: $props.inputClass,
552
908
  readonly: "",
553
909
  disabled: $props.disabled,
910
+ placeholder: $props.placeholder,
911
+ tabindex: !$props.disabled ? $props.tabindex : -1,
912
+ role: "combobox",
913
+ "aria-label": _ctx.ariaLabel,
914
+ "aria-labelledby": _ctx.ariaLabelledby,
915
+ "aria-haspopup": "tree",
916
+ "aria-expanded": $data.overlayVisible,
917
+ "aria-controls": $data.id + '_tree',
918
+ "aria-activedescendant": $data.focused ? $options.focusedOptionId : undefined,
554
919
  onFocus: _cache[0] || (_cache[0] = (...args) => ($options.onFocus && $options.onFocus(...args))),
555
920
  onBlur: _cache[1] || (_cache[1] = (...args) => ($options.onBlur && $options.onBlur(...args))),
556
- onKeydown: _cache[2] || (_cache[2] = (...args) => ($options.onKeyDown && $options.onKeyDown(...args))),
557
- tabindex: $props.tabindex,
558
- "aria-haspopup": "listbox",
559
- "aria-expanded": $data.overlayVisible,
560
- "aria-labelledby": $props.ariaLabelledBy
561
- }, null, 40, _hoisted_2)
921
+ onKeydown: _cache[2] || (_cache[2] = (...args) => ($options.onKeyDown && $options.onKeyDown(...args)))
922
+ }, $props.inputProps), null, 16, _hoisted_2)
562
923
  ]),
563
924
  createElementVNode("span", {
564
925
  class: normalizeClass($options.labelClass)
@@ -570,55 +931,58 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
570
931
  createTextVNode(toDisplayString($options.label), 1)
571
932
  ])
572
933
  ], 2),
573
- createElementVNode("div", {
574
- class: "p-cascadeselect-trigger",
575
- role: "button",
576
- "aria-haspopup": "listbox",
577
- "aria-expanded": $data.overlayVisible
578
- }, [
934
+ createElementVNode("div", _hoisted_3, [
579
935
  renderSlot(_ctx.$slots, "indicator", {}, () => [
580
936
  createElementVNode("span", {
581
937
  class: normalizeClass($options.dropdownIconClass)
582
938
  }, null, 2)
583
939
  ])
584
- ], 8, _hoisted_3),
940
+ ]),
941
+ createElementVNode("span", _hoisted_4, toDisplayString($options.searchResultMessageText), 1),
585
942
  createVNode(_component_Portal, { appendTo: $props.appendTo }, {
586
943
  default: withCtx(() => [
587
944
  createVNode(Transition, {
588
945
  name: "p-connected-overlay",
589
946
  onEnter: $options.onOverlayEnter,
947
+ onAfterEnter: $options.onOverlayAfterEnter,
590
948
  onLeave: $options.onOverlayLeave,
591
949
  onAfterLeave: $options.onOverlayAfterLeave
592
950
  }, {
593
951
  default: withCtx(() => [
594
952
  ($data.overlayVisible)
595
- ? (openBlock(), createElementBlock("div", {
953
+ ? (openBlock(), createElementBlock("div", mergeProps({
596
954
  key: 0,
597
955
  ref: $options.overlayRef,
598
- class: normalizeClass($options.panelStyleClass),
599
- onClick: _cache[3] || (_cache[3] = (...args) => ($options.onOverlayClick && $options.onOverlayClick(...args)))
600
- }, [
601
- createElementVNode("div", _hoisted_4, [
956
+ style: $props.panelStyle,
957
+ class: $options.panelStyleClass,
958
+ onClick: _cache[3] || (_cache[3] = (...args) => ($options.onOverlayClick && $options.onOverlayClick(...args))),
959
+ onKeydown: _cache[4] || (_cache[4] = (...args) => ($options.onOverlayKeyDown && $options.onOverlayKeyDown(...args)))
960
+ }, $props.panelProps), [
961
+ createElementVNode("div", _hoisted_5, [
602
962
  createVNode(_component_CascadeSelectSub, {
603
- options: $props.options,
604
- selectionPath: $data.selectionPath,
605
- optionLabel: $props.optionLabel,
606
- optionValue: $props.optionValue,
963
+ id: $data.id + '_tree',
964
+ role: "tree",
965
+ "aria-orientation": "horizontal",
966
+ selectId: $data.id,
967
+ focusedOptionId: $data.focused ? $options.focusedOptionId : undefined,
968
+ options: $options.processedOptions,
969
+ activeOptionPath: $data.activeOptionPath,
607
970
  level: 0,
608
971
  templates: _ctx.$slots,
972
+ optionLabel: $props.optionLabel,
973
+ optionValue: $props.optionValue,
974
+ optionDisabled: $props.optionDisabled,
609
975
  optionGroupLabel: $props.optionGroupLabel,
610
976
  optionGroupChildren: $props.optionGroupChildren,
611
- onOptionSelect: $options.onOptionSelect,
612
- onOptiongroupSelect: $options.onOptionGroupSelect,
613
- dirty: $data.dirty,
614
- root: true
615
- }, null, 8, ["options", "selectionPath", "optionLabel", "optionValue", "templates", "optionGroupLabel", "optionGroupChildren", "onOptionSelect", "onOptiongroupSelect", "dirty"])
977
+ onOptionChange: $options.onOptionChange
978
+ }, null, 8, ["id", "selectId", "focusedOptionId", "options", "activeOptionPath", "templates", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "onOptionChange"]),
979
+ createElementVNode("span", _hoisted_6, toDisplayString($options.selectedMessageText), 1)
616
980
  ])
617
- ], 2))
981
+ ], 16))
618
982
  : createCommentVNode("", true)
619
983
  ]),
620
984
  _: 1
621
- }, 8, ["onEnter", "onLeave", "onAfterLeave"])
985
+ }, 8, ["onEnter", "onAfterEnter", "onLeave", "onAfterLeave"])
622
986
  ]),
623
987
  _: 1
624
988
  }, 8, ["appendTo"])