primevue 3.17.0 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/LICENSE.md +1 -1
  2. package/accordion/Accordion.vue +4 -4
  3. package/accordion/accordion.cjs.js +4 -4
  4. package/accordion/accordion.cjs.min.js +1 -1
  5. package/accordion/accordion.esm.js +4 -4
  6. package/accordion/accordion.esm.min.js +1 -1
  7. package/accordion/accordion.js +5 -5
  8. package/accordion/accordion.min.js +1 -1
  9. package/api/api.cjs.js +24 -2
  10. package/api/api.cjs.min.js +1 -1
  11. package/api/api.esm.js +24 -2
  12. package/api/api.esm.min.js +1 -1
  13. package/api/api.js +24 -2
  14. package/api/api.min.js +1 -1
  15. package/autocomplete/AutoComplete.d.ts +10 -0
  16. package/autocomplete/AutoComplete.vue +14 -6
  17. package/autocomplete/autocomplete.cjs.js +18 -10
  18. package/autocomplete/autocomplete.cjs.min.js +1 -1
  19. package/autocomplete/autocomplete.esm.js +16 -8
  20. package/autocomplete/autocomplete.esm.min.js +1 -1
  21. package/autocomplete/autocomplete.js +17 -9
  22. package/autocomplete/autocomplete.min.js +1 -1
  23. package/breadcrumb/Breadcrumb.d.ts +9 -1
  24. package/breadcrumb/Breadcrumb.vue +14 -5
  25. package/breadcrumb/BreadcrumbItem.vue +9 -3
  26. package/breadcrumb/breadcrumb.cjs.js +25 -14
  27. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  28. package/breadcrumb/breadcrumb.esm.js +25 -14
  29. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  30. package/breadcrumb/breadcrumb.js +25 -14
  31. package/breadcrumb/breadcrumb.min.js +1 -1
  32. package/button/Button.vue +6 -3
  33. package/button/button.cjs.js +6 -3
  34. package/button/button.cjs.min.js +1 -1
  35. package/button/button.esm.js +6 -3
  36. package/button/button.esm.min.js +1 -1
  37. package/button/button.js +6 -3
  38. package/button/button.min.js +1 -1
  39. package/calendar/Calendar.vue +71 -26
  40. package/calendar/calendar.cjs.js +140 -95
  41. package/calendar/calendar.cjs.min.js +1 -1
  42. package/calendar/calendar.esm.js +138 -93
  43. package/calendar/calendar.esm.min.js +1 -1
  44. package/calendar/calendar.js +139 -94
  45. package/calendar/calendar.min.js +1 -1
  46. package/cascadeselect/CascadeSelect.d.ts +10 -0
  47. package/cascadeselect/CascadeSelect.vue +13 -4
  48. package/cascadeselect/CascadeSelectSub.vue +18 -13
  49. package/cascadeselect/cascadeselect.cjs.js +39 -26
  50. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  51. package/cascadeselect/cascadeselect.esm.js +38 -25
  52. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  53. package/cascadeselect/cascadeselect.js +39 -26
  54. package/cascadeselect/cascadeselect.min.js +1 -1
  55. package/config/PrimeVue.d.ts +4 -1
  56. package/config/config.cjs.js +5 -2
  57. package/config/config.cjs.min.js +1 -1
  58. package/config/config.esm.js +5 -2
  59. package/config/config.esm.min.js +1 -1
  60. package/config/config.js +6 -3
  61. package/config/config.min.js +1 -1
  62. package/contextmenu/ContextMenu.d.ts +41 -2
  63. package/contextmenu/ContextMenu.vue +440 -33
  64. package/contextmenu/ContextMenuSub.vue +119 -98
  65. package/contextmenu/contextmenu.cjs.js +619 -194
  66. package/contextmenu/contextmenu.cjs.min.js +1 -1
  67. package/contextmenu/contextmenu.esm.js +620 -195
  68. package/contextmenu/contextmenu.esm.min.js +1 -1
  69. package/contextmenu/contextmenu.js +620 -195
  70. package/contextmenu/contextmenu.min.js +1 -1
  71. package/core/core.js +1369 -675
  72. package/core/core.min.js +10 -10
  73. package/datatable/DataTable.d.ts +1 -2
  74. package/datatable/DataTable.vue +3 -3
  75. package/datatable/datatable.cjs.js +2334 -2334
  76. package/datatable/datatable.cjs.min.js +1 -1
  77. package/datatable/datatable.esm.js +2319 -2319
  78. package/datatable/datatable.esm.min.js +1 -1
  79. package/datatable/datatable.js +2319 -2319
  80. package/datatable/datatable.min.js +1 -1
  81. package/dock/Dock.d.ts +33 -2
  82. package/dock/Dock.vue +18 -2
  83. package/dock/DockSub.vue +206 -53
  84. package/dock/dock.cjs.js +261 -90
  85. package/dock/dock.cjs.min.js +1 -1
  86. package/dock/dock.esm.js +261 -90
  87. package/dock/dock.esm.min.js +1 -1
  88. package/dock/dock.js +262 -92
  89. package/dock/dock.min.js +1 -1
  90. package/dropdown/Dropdown.d.ts +15 -0
  91. package/dropdown/Dropdown.vue +19 -7
  92. package/dropdown/dropdown.cjs.js +37 -24
  93. package/dropdown/dropdown.cjs.min.js +1 -1
  94. package/dropdown/dropdown.esm.js +36 -23
  95. package/dropdown/dropdown.esm.min.js +1 -1
  96. package/dropdown/dropdown.js +36 -23
  97. package/dropdown/dropdown.min.js +1 -1
  98. package/fileupload/FileContent.vue +51 -0
  99. package/fileupload/FileUpload.d.ts +21 -1
  100. package/fileupload/FileUpload.vue +62 -48
  101. package/fileupload/fileupload.cjs.js +214 -115
  102. package/fileupload/fileupload.cjs.min.js +1 -1
  103. package/fileupload/fileupload.esm.js +214 -115
  104. package/fileupload/fileupload.esm.min.js +1 -1
  105. package/fileupload/fileupload.js +214 -115
  106. package/fileupload/fileupload.min.js +1 -1
  107. package/galleria/GalleriaThumbnails.vue +2 -2
  108. package/galleria/galleria.cjs.js +1 -1
  109. package/galleria/galleria.cjs.min.js +1 -1
  110. package/galleria/galleria.esm.js +1 -1
  111. package/galleria/galleria.esm.min.js +1 -1
  112. package/galleria/galleria.js +1 -1
  113. package/galleria/galleria.min.js +1 -1
  114. package/inlinemessage/inlinemessage.cjs.js +1 -2
  115. package/inlinemessage/inlinemessage.cjs.min.js +1 -1
  116. package/inlinemessage/inlinemessage.esm.js +1 -2
  117. package/inlinemessage/inlinemessage.esm.min.js +1 -1
  118. package/inlinemessage/inlinemessage.js +1 -2
  119. package/inlinemessage/inlinemessage.min.js +1 -1
  120. package/inputnumber/InputNumber.vue +11 -4
  121. package/inputnumber/inputnumber.cjs.js +12 -5
  122. package/inputnumber/inputnumber.cjs.min.js +1 -1
  123. package/inputnumber/inputnumber.esm.js +11 -4
  124. package/inputnumber/inputnumber.esm.min.js +1 -1
  125. package/inputnumber/inputnumber.js +12 -6
  126. package/inputnumber/inputnumber.min.js +1 -1
  127. package/listbox/Listbox.d.ts +5 -0
  128. package/listbox/Listbox.vue +5 -1
  129. package/listbox/listbox.cjs.js +25 -20
  130. package/listbox/listbox.cjs.min.js +1 -1
  131. package/listbox/listbox.esm.js +25 -20
  132. package/listbox/listbox.esm.min.js +1 -1
  133. package/listbox/listbox.js +25 -20
  134. package/listbox/listbox.min.js +1 -1
  135. package/megamenu/MegaMenu.d.ts +29 -2
  136. package/megamenu/MegaMenu.vue +486 -228
  137. package/megamenu/MegaMenuSub.vue +231 -0
  138. package/megamenu/megamenu.cjs.js +818 -377
  139. package/megamenu/megamenu.cjs.min.js +1 -1
  140. package/megamenu/megamenu.esm.js +820 -379
  141. package/megamenu/megamenu.esm.min.js +1 -1
  142. package/megamenu/megamenu.js +818 -377
  143. package/megamenu/megamenu.min.js +1 -1
  144. package/menu/Menu.d.ts +25 -2
  145. package/menu/Menu.vue +182 -18
  146. package/menu/Menuitem.vue +35 -28
  147. package/menu/menu.cjs.js +293 -114
  148. package/menu/menu.cjs.min.js +1 -1
  149. package/menu/menu.esm.js +293 -114
  150. package/menu/menu.esm.min.js +1 -1
  151. package/menu/menu.js +293 -114
  152. package/menu/menu.min.js +1 -1
  153. package/menubar/Menubar.d.ts +14 -2
  154. package/menubar/Menubar.vue +526 -15
  155. package/menubar/MenubarSub.vue +105 -238
  156. package/menubar/menubar.cjs.js +691 -316
  157. package/menubar/menubar.cjs.min.js +1 -1
  158. package/menubar/menubar.esm.js +693 -318
  159. package/menubar/menubar.esm.min.js +1 -1
  160. package/menubar/menubar.js +691 -316
  161. package/menubar/menubar.min.js +1 -1
  162. package/multiselect/MultiSelect.d.ts +25 -0
  163. package/multiselect/MultiSelect.vue +31 -11
  164. package/multiselect/multiselect.cjs.js +58 -37
  165. package/multiselect/multiselect.cjs.min.js +1 -1
  166. package/multiselect/multiselect.esm.js +57 -36
  167. package/multiselect/multiselect.esm.min.js +1 -1
  168. package/multiselect/multiselect.js +57 -36
  169. package/multiselect/multiselect.min.js +1 -1
  170. package/package.json +3 -3
  171. package/paginator/Paginator.d.ts +2 -2
  172. package/paginator/Paginator.vue +118 -23
  173. package/paginator/paginator.cjs.js +277 -182
  174. package/paginator/paginator.cjs.min.js +1 -1
  175. package/paginator/paginator.esm.js +278 -183
  176. package/paginator/paginator.esm.min.js +1 -1
  177. package/paginator/paginator.js +278 -184
  178. package/paginator/paginator.min.js +1 -1
  179. package/panelmenu/PanelMenu.d.ts +32 -1
  180. package/panelmenu/PanelMenu.vue +189 -83
  181. package/panelmenu/PanelMenuList.vue +335 -0
  182. package/panelmenu/PanelMenuSub.vue +124 -85
  183. package/panelmenu/panelmenu.cjs.js +1383 -285
  184. package/panelmenu/panelmenu.cjs.min.js +1 -1
  185. package/panelmenu/panelmenu.esm.js +1380 -286
  186. package/panelmenu/panelmenu.esm.min.js +1 -1
  187. package/panelmenu/panelmenu.js +1383 -286
  188. package/panelmenu/panelmenu.min.js +1 -1
  189. package/password/Password.vue +5 -4
  190. package/password/password.cjs.js +6 -5
  191. package/password/password.cjs.min.js +1 -1
  192. package/password/password.esm.js +5 -4
  193. package/password/password.esm.min.js +1 -1
  194. package/password/password.js +6 -5
  195. package/password/password.min.js +1 -1
  196. package/resources/primevue.css +21 -2
  197. package/resources/primevue.min.css +1 -1
  198. package/resources/themes/arya-blue/theme.css +317 -270
  199. package/resources/themes/arya-green/theme.css +317 -270
  200. package/resources/themes/arya-orange/theme.css +317 -270
  201. package/resources/themes/arya-purple/theme.css +317 -270
  202. package/resources/themes/bootstrap4-dark-blue/theme.css +332 -285
  203. package/resources/themes/bootstrap4-dark-purple/theme.css +332 -285
  204. package/resources/themes/bootstrap4-light-blue/theme.css +345 -298
  205. package/resources/themes/bootstrap4-light-purple/theme.css +345 -298
  206. package/resources/themes/fluent-light/theme.css +327 -280
  207. package/resources/themes/lara-dark-blue/theme.css +320 -273
  208. package/resources/themes/lara-dark-indigo/theme.css +320 -273
  209. package/resources/themes/lara-dark-purple/theme.css +320 -273
  210. package/resources/themes/lara-dark-teal/theme.css +320 -273
  211. package/resources/themes/lara-light-blue/theme.css +344 -297
  212. package/resources/themes/lara-light-indigo/theme.css +344 -297
  213. package/resources/themes/lara-light-purple/theme.css +344 -297
  214. package/resources/themes/lara-light-teal/theme.css +344 -297
  215. package/resources/themes/luna-amber/theme.css +348 -301
  216. package/resources/themes/luna-blue/theme.css +348 -301
  217. package/resources/themes/luna-green/theme.css +348 -301
  218. package/resources/themes/luna-pink/theme.css +348 -301
  219. package/resources/themes/md-dark-deeppurple/theme.css +367 -298
  220. package/resources/themes/md-dark-indigo/theme.css +367 -298
  221. package/resources/themes/md-light-deeppurple/theme.css +367 -298
  222. package/resources/themes/md-light-indigo/theme.css +367 -298
  223. package/resources/themes/mdc-dark-deeppurple/theme.css +367 -298
  224. package/resources/themes/mdc-dark-indigo/theme.css +367 -298
  225. package/resources/themes/mdc-light-deeppurple/theme.css +367 -298
  226. package/resources/themes/mdc-light-indigo/theme.css +367 -298
  227. package/resources/themes/nova/theme.css +312 -265
  228. package/resources/themes/nova-accent/theme.css +312 -265
  229. package/resources/themes/nova-alt/theme.css +312 -265
  230. package/resources/themes/nova-vue/theme.css +312 -265
  231. package/resources/themes/rhea/theme.css +312 -265
  232. package/resources/themes/saga-blue/theme.css +324 -277
  233. package/resources/themes/saga-green/theme.css +324 -277
  234. package/resources/themes/saga-orange/theme.css +324 -277
  235. package/resources/themes/saga-purple/theme.css +324 -277
  236. package/resources/themes/tailwind-light/theme.css +336 -289
  237. package/resources/themes/vela-blue/theme.css +324 -277
  238. package/resources/themes/vela-green/theme.css +324 -277
  239. package/resources/themes/vela-orange/theme.css +324 -277
  240. package/resources/themes/vela-purple/theme.css +324 -277
  241. package/ripple/ripple.cjs.js +12 -0
  242. package/ripple/ripple.cjs.min.js +1 -1
  243. package/ripple/ripple.esm.js +12 -0
  244. package/ripple/ripple.esm.min.js +1 -1
  245. package/ripple/ripple.js +12 -0
  246. package/ripple/ripple.min.js +1 -1
  247. package/speeddial/SpeedDial.vue +21 -16
  248. package/speeddial/speeddial.cjs.js +34 -27
  249. package/speeddial/speeddial.cjs.min.js +1 -1
  250. package/speeddial/speeddial.esm.js +34 -27
  251. package/speeddial/speeddial.esm.min.js +1 -1
  252. package/speeddial/speeddial.js +34 -27
  253. package/speeddial/speeddial.min.js +1 -1
  254. package/steps/Steps.vue +108 -9
  255. package/steps/steps.cjs.js +111 -20
  256. package/steps/steps.cjs.min.js +1 -1
  257. package/steps/steps.esm.js +112 -21
  258. package/steps/steps.esm.min.js +1 -1
  259. package/steps/steps.js +111 -20
  260. package/steps/steps.min.js +1 -1
  261. package/styleclass/styleclass.cjs.js +1 -1
  262. package/styleclass/styleclass.cjs.min.js +1 -1
  263. package/styleclass/styleclass.esm.js +1 -1
  264. package/styleclass/styleclass.esm.min.js +1 -1
  265. package/styleclass/styleclass.js +1 -1
  266. package/styleclass/styleclass.min.js +1 -1
  267. package/tabmenu/TabMenu.d.ts +9 -1
  268. package/tabmenu/TabMenu.vue +135 -6
  269. package/tabmenu/tabmenu.cjs.js +137 -17
  270. package/tabmenu/tabmenu.cjs.min.js +1 -1
  271. package/tabmenu/tabmenu.esm.js +137 -17
  272. package/tabmenu/tabmenu.esm.min.js +1 -1
  273. package/tabmenu/tabmenu.js +138 -18
  274. package/tabmenu/tabmenu.min.js +1 -1
  275. package/tabview/TabView.vue +2 -2
  276. package/tabview/tabview.cjs.js +2 -2
  277. package/tabview/tabview.cjs.min.js +1 -1
  278. package/tabview/tabview.esm.js +2 -2
  279. package/tabview/tabview.esm.min.js +1 -1
  280. package/tabview/tabview.js +3 -3
  281. package/tabview/tabview.min.js +1 -1
  282. package/tieredmenu/TieredMenu.d.ts +46 -3
  283. package/tieredmenu/TieredMenu.vue +482 -48
  284. package/tieredmenu/TieredMenuSub.vue +111 -204
  285. package/tieredmenu/tieredmenu.cjs.js +656 -320
  286. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  287. package/tieredmenu/tieredmenu.esm.js +657 -321
  288. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  289. package/tieredmenu/tieredmenu.js +657 -321
  290. package/tieredmenu/tieredmenu.min.js +1 -1
  291. package/toast/Toast.vue +5 -3
  292. package/toast/ToastMessage.vue +5 -3
  293. package/toast/toast.cjs.js +19 -15
  294. package/toast/toast.cjs.min.js +1 -1
  295. package/toast/toast.esm.js +18 -14
  296. package/toast/toast.esm.min.js +1 -1
  297. package/toast/toast.js +19 -15
  298. package/toast/toast.min.js +1 -1
  299. package/togglebutton/ToggleButton.vue +42 -7
  300. package/togglebutton/togglebutton.cjs.js +42 -6
  301. package/togglebutton/togglebutton.cjs.min.js +1 -1
  302. package/togglebutton/togglebutton.esm.js +42 -6
  303. package/togglebutton/togglebutton.esm.min.js +1 -1
  304. package/togglebutton/togglebutton.js +42 -6
  305. package/togglebutton/togglebutton.min.js +1 -1
  306. package/tree/Tree.d.ts +8 -0
  307. package/utils/Utils.d.ts +3 -0
  308. package/utils/utils.cjs.js +26 -0
  309. package/utils/utils.cjs.min.js +1 -1
  310. package/utils/utils.esm.js +26 -0
  311. package/utils/utils.esm.min.js +1 -1
  312. package/utils/utils.js +26 -0
  313. package/utils/utils.min.js +1 -1
  314. package/vetur-attributes.json +175 -3
  315. package/vetur-tags.json +54 -11
  316. package/web-types.json +675 -51
package/dock/dock.esm.js CHANGED
@@ -1,10 +1,16 @@
1
1
  import Ripple from 'primevue/ripple';
2
2
  import Tooltip from 'primevue/tooltip';
3
+ import { ObjectUtils, DomHandler, UniqueComponentId } from 'primevue/utils';
3
4
  import { resolveComponent, resolveDirective, openBlock, createElementBlock, createElementVNode, Fragment, renderList, normalizeClass, createBlock, withCtx, withDirectives, resolveDynamicComponent, normalizeStyle, createVNode } from 'vue';
4
5
 
5
6
  var script$1 = {
6
7
  name: 'DockSub',
8
+ emits: ['focus', 'blur'],
7
9
  props: {
10
+ position: {
11
+ type: String,
12
+ default: 'bottom'
13
+ },
8
14
  model: {
9
15
  type: Array,
10
16
  default: null
@@ -17,42 +23,161 @@ var script$1 = {
17
23
  type: Boolean,
18
24
  default: true
19
25
  },
20
- tooltipOptions: null
26
+ tooltipOptions: null,
27
+ menuId: {
28
+ type: String,
29
+ default: null
30
+ },
31
+ tabindex: {
32
+ type: Number,
33
+ default: 0
34
+ },
35
+ 'aria-label': {
36
+ type: String,
37
+ default: null
38
+ },
39
+ 'aria-labelledby': {
40
+ type: String,
41
+ default: null
42
+ }
21
43
  },
22
44
  data() {
23
45
  return {
24
- currentIndex: -3
46
+ currentIndex: -3,
47
+ focused: false,
48
+ focusedOptionIndex: -1
25
49
  };
26
50
  },
27
51
  methods: {
52
+ getItemId(index) {
53
+ return `${this.id}_${index}`;
54
+ },
55
+ getItemProp(processedItem, name) {
56
+ return processedItem && processedItem.item ? ObjectUtils.getItemValue(processedItem.item[name]) : undefined;
57
+ },
58
+ isSameMenuItem(event) {
59
+ return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('.p-menuitem')));
60
+ },
28
61
  onListMouseLeave() {
29
62
  this.currentIndex = -3;
30
63
  },
31
64
  onItemMouseEnter(index) {
32
65
  this.currentIndex = index;
33
66
  },
34
- onItemClick(event, item, navigate) {
35
- if (this.disabled(item)) {
36
- event.preventDefault();
67
+ onItemActionClick(event, navigate) {
68
+ navigate && navigate(event);
69
+ },
70
+ onItemClick(event, processedItem) {
71
+ if (this.isSameMenuItem(event)) {
72
+ const command = this.getItemProp(processedItem, 'command');
37
73
 
38
- return;
74
+ command && command({ originalEvent: event, item: processedItem.item });
39
75
  }
76
+ },
77
+ onListFocus(event) {
78
+ this.focused = true;
79
+ this.changeFocusedOptionIndex(0);
80
+ this.$emit('focus', event);
81
+ },
82
+ onListBlur(event) {
83
+ this.focused = false;
84
+ this.focusedOptionIndex = -1;
85
+ this.$emit('blur', event);
86
+ },
87
+ onListKeyDown(event) {
88
+ switch (event.code) {
89
+ case 'ArrowDown': {
90
+ if (this.position === 'left' || this.position === 'right') this.onArrowDownKey();
91
+ event.preventDefault();
92
+ break;
93
+ }
40
94
 
41
- if (item.command) {
42
- item.command({
43
- originalEvent: event,
44
- item: item
45
- });
46
- }
95
+ case 'ArrowUp': {
96
+ if (this.position === 'left' || this.position === 'right') this.onArrowUpKey();
97
+ event.preventDefault();
98
+ break;
99
+ }
100
+
101
+ case 'ArrowRight': {
102
+ if (this.position === 'top' || this.position === 'bottom') this.onArrowDownKey();
103
+ event.preventDefault();
104
+ break;
105
+ }
106
+
107
+ case 'ArrowLeft': {
108
+ if (this.position === 'top' || this.position === 'bottom') this.onArrowUpKey();
109
+ event.preventDefault();
110
+ break;
111
+ }
112
+
113
+ case 'Home': {
114
+ this.onHomeKey();
115
+ event.preventDefault();
116
+ break;
117
+ }
118
+
119
+ case 'End': {
120
+ this.onEndKey();
121
+ event.preventDefault();
122
+ break;
123
+ }
47
124
 
48
- if (item.to && navigate) {
49
- navigate(event);
125
+ case 'Enter':
126
+
127
+ case 'Space': {
128
+ this.onSpaceKey(event);
129
+ event.preventDefault();
130
+ break;
131
+ }
50
132
  }
51
133
  },
52
- itemClass(index) {
134
+ onArrowDownKey() {
135
+ const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex);
136
+
137
+ this.changeFocusedOptionIndex(optionIndex);
138
+ },
139
+ onArrowUpKey() {
140
+ const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex);
141
+
142
+ this.changeFocusedOptionIndex(optionIndex);
143
+ },
144
+ onHomeKey() {
145
+ this.changeFocusedOptionIndex(0);
146
+ },
147
+ onEndKey() {
148
+ this.changeFocusedOptionIndex(DomHandler.find(this.$refs.list, 'li.p-dock-item:not(.p-disabled)').length - 1);
149
+ },
150
+ onSpaceKey() {
151
+ const element = DomHandler.findSingle(this.$refs.list, `li[id="${`${this.focusedOptionIndex}`}"]`);
152
+ const anchorElement = element && DomHandler.findSingle(element, '.p-dock-link');
153
+
154
+ anchorElement ? anchorElement.click() : element && element.click();
155
+ },
156
+ findNextOptionIndex(index) {
157
+ const menuitems = DomHandler.find(this.$refs.list, 'li.p-dock-item:not(.p-disabled)');
158
+ const matchedOptionIndex = [...menuitems].findIndex((link) => link.id === index);
159
+
160
+ return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;
161
+ },
162
+ findPrevOptionIndex(index) {
163
+ const menuitems = DomHandler.find(this.$refs.list, 'li.p-dock-item:not(.p-disabled)');
164
+ const matchedOptionIndex = [...menuitems].findIndex((link) => link.id === index);
165
+
166
+ return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;
167
+ },
168
+ changeFocusedOptionIndex(index) {
169
+ const menuitems = DomHandler.find(this.$refs.list, 'li.p-dock-item:not(.p-disabled)');
170
+
171
+ let order = index >= menuitems.length ? menuitems.length - 1 : index < 0 ? 0 : index;
172
+
173
+ this.focusedOptionIndex = menuitems[order].getAttribute('id');
174
+ },
175
+ itemClass(item, index, id) {
53
176
  return [
54
177
  'p-dock-item',
55
178
  {
179
+ 'p-focus': id === this.focusedOptionIndex,
180
+ 'p-disabled': this.disabled(item),
56
181
  'p-dock-item-second-prev': this.currentIndex - 2 === index,
57
182
  'p-dock-item-prev': this.currentIndex - 1 === index,
58
183
  'p-dock-item-current': this.currentIndex === index,
@@ -61,11 +186,10 @@ var script$1 = {
61
186
  }
62
187
  ];
63
188
  },
64
- linkClass(item, routerProps) {
189
+ linkClass(routerProps) {
65
190
  return [
66
- 'p-dock-action',
191
+ 'p-dock-link',
67
192
  {
68
- 'p-disabled': this.disabled(item),
69
193
  'router-link-active': routerProps && routerProps.isActive,
70
194
  'router-link-active-exact': this.exact && routerProps && routerProps.isExactActive
71
195
  }
@@ -75,6 +199,14 @@ var script$1 = {
75
199
  return typeof item.disabled === 'function' ? item.disabled() : item.disabled;
76
200
  }
77
201
  },
202
+ computed: {
203
+ id() {
204
+ return this.menuId || UniqueComponentId();
205
+ },
206
+ focusedOptionId() {
207
+ return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;
208
+ }
209
+ },
78
210
  directives: {
79
211
  ripple: Ripple,
80
212
  tooltip: Tooltip
@@ -82,9 +214,11 @@ var script$1 = {
82
214
  };
83
215
 
84
216
  const _hoisted_1 = { class: "p-dock-list-container" };
85
- const _hoisted_2 = ["onMouseenter"];
86
- const _hoisted_3 = ["href", "target", "onClick"];
87
- const _hoisted_4 = ["href", "target", "onClick", "tabindex"];
217
+ const _hoisted_2 = ["id", "aria-orientation", "aria-activedescendant", "tabindex", "aria-label", "aria-labelledby"];
218
+ const _hoisted_3 = ["id", "aria-label", "aria-disabled", "onClick", "onMouseenter"];
219
+ const _hoisted_4 = { class: "p-menuitem-content" };
220
+ const _hoisted_5 = ["href", "target", "onClick"];
221
+ const _hoisted_6 = ["href", "target"];
88
222
 
89
223
  function render$1(_ctx, _cache, $props, $setup, $data, $options) {
90
224
  const _component_router_link = resolveComponent("router-link");
@@ -94,81 +228,97 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
94
228
  return (openBlock(), createElementBlock("div", _hoisted_1, [
95
229
  createElementVNode("ul", {
96
230
  ref: "list",
231
+ id: $options.id,
97
232
  class: "p-dock-list",
98
233
  role: "menu",
99
- onMouseleave: _cache[0] || (_cache[0] = (...args) => ($options.onListMouseLeave && $options.onListMouseLeave(...args)))
234
+ "aria-orientation": $props.position === 'bottom' || $props.position === 'top' ? 'horizontal' : 'vertical',
235
+ "aria-activedescendant": $data.focused ? $options.focusedOptionId : undefined,
236
+ tabindex: $props.tabindex,
237
+ "aria-label": _ctx.ariaLabel,
238
+ "aria-labelledby": _ctx.ariaLabelledby,
239
+ onFocus: _cache[0] || (_cache[0] = (...args) => ($options.onListFocus && $options.onListFocus(...args))),
240
+ onBlur: _cache[1] || (_cache[1] = (...args) => ($options.onListBlur && $options.onListBlur(...args))),
241
+ onKeydown: _cache[2] || (_cache[2] = (...args) => ($options.onListKeyDown && $options.onListKeyDown(...args))),
242
+ onMouseleave: _cache[3] || (_cache[3] = (...args) => ($options.onListMouseLeave && $options.onListMouseLeave(...args)))
100
243
  }, [
101
- (openBlock(true), createElementBlock(Fragment, null, renderList($props.model, (item, index) => {
244
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.model, (processedItem, index) => {
102
245
  return (openBlock(), createElementBlock("li", {
103
246
  key: index,
104
- class: normalizeClass($options.itemClass(index)),
105
- role: "none",
247
+ id: $options.getItemId(index),
248
+ class: normalizeClass($options.itemClass(processedItem, index, $options.getItemId(index))),
249
+ role: "menuitem",
250
+ "aria-label": processedItem.label,
251
+ "aria-disabled": $options.disabled(processedItem),
252
+ onClick: $event => ($options.onItemClick($event, processedItem)),
106
253
  onMouseenter: $event => ($options.onItemMouseEnter(index))
107
254
  }, [
108
- (!$props.templates['item'])
109
- ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
110
- (item.to && !$options.disabled(item))
111
- ? (openBlock(), createBlock(_component_router_link, {
112
- key: 0,
113
- to: item.to,
114
- custom: ""
115
- }, {
116
- default: withCtx(({ navigate, href, isActive, isExactActive }) => [
117
- withDirectives((openBlock(), createElementBlock("a", {
118
- href: href,
119
- role: "menuitem",
120
- class: normalizeClass($options.linkClass(item, { isActive, isExactActive })),
121
- target: item.target,
122
- onClick: $event => ($options.onItemClick($event, item, navigate))
123
- }, [
124
- (!$props.templates['icon'])
125
- ? withDirectives((openBlock(), createElementBlock("span", {
126
- key: 0,
127
- class: normalizeClass(['p-dock-action-icon', item.icon])
128
- }, null, 2)), [
129
- [_directive_ripple]
130
- ])
131
- : (openBlock(), createBlock(resolveDynamicComponent($props.templates['icon']), {
132
- key: 1,
133
- item: item
134
- }, null, 8, ["item"]))
135
- ], 10, _hoisted_3)), [
136
- [_directive_tooltip, { value: item.label, disabled: !$props.tooltipOptions }, $props.tooltipOptions]
137
- ])
138
- ]),
139
- _: 2
140
- }, 1032, ["to"]))
141
- : withDirectives((openBlock(), createElementBlock("a", {
142
- key: 1,
143
- href: item.url,
144
- role: "menuitem",
145
- class: normalizeClass($options.linkClass(item)),
146
- target: item.target,
147
- onClick: $event => ($options.onItemClick($event, item)),
148
- tabindex: $options.disabled(item) ? null : '0'
149
- }, [
150
- (!$props.templates['icon'])
151
- ? withDirectives((openBlock(), createElementBlock("span", {
152
- key: 0,
153
- class: normalizeClass(['p-dock-action-icon', item.icon])
154
- }, null, 2)), [
155
- [_directive_ripple]
255
+ createElementVNode("div", _hoisted_4, [
256
+ (!$props.templates['item'])
257
+ ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
258
+ (processedItem.to && !$options.disabled(processedItem))
259
+ ? (openBlock(), createBlock(_component_router_link, {
260
+ key: 0,
261
+ to: processedItem.to,
262
+ custom: ""
263
+ }, {
264
+ default: withCtx(({ navigate, href, isActive, isExactActive }) => [
265
+ withDirectives((openBlock(), createElementBlock("a", {
266
+ href: href,
267
+ class: normalizeClass($options.linkClass({ isActive, isExactActive })),
268
+ target: processedItem.target,
269
+ tabindex: "-1",
270
+ "aria-hidden": "true",
271
+ onClick: $event => ($options.onItemActionClick($event, processedItem, navigate))
272
+ }, [
273
+ (!$props.templates['icon'])
274
+ ? withDirectives((openBlock(), createElementBlock("span", {
275
+ key: 0,
276
+ class: normalizeClass(['p-dock-icon', processedItem.icon])
277
+ }, null, 2)), [
278
+ [_directive_ripple]
279
+ ])
280
+ : (openBlock(), createBlock(resolveDynamicComponent($props.templates['icon']), {
281
+ key: 1,
282
+ item: processedItem
283
+ }, null, 8, ["item"]))
284
+ ], 10, _hoisted_5)), [
285
+ [_directive_tooltip, { value: processedItem.label, disabled: !$props.tooltipOptions }, $props.tooltipOptions]
156
286
  ])
157
- : (openBlock(), createBlock(resolveDynamicComponent($props.templates['icon']), {
158
- key: 1,
159
- item: item
160
- }, null, 8, ["item"]))
161
- ], 10, _hoisted_4)), [
162
- [_directive_tooltip, { value: item.label, disabled: !$props.tooltipOptions }, $props.tooltipOptions]
163
- ])
164
- ], 64))
165
- : (openBlock(), createBlock(resolveDynamicComponent($props.templates['item']), {
166
- key: 1,
167
- item: item
168
- }, null, 8, ["item"]))
169
- ], 42, _hoisted_2))
287
+ ]),
288
+ _: 2
289
+ }, 1032, ["to"]))
290
+ : withDirectives((openBlock(), createElementBlock("a", {
291
+ key: 1,
292
+ href: processedItem.url,
293
+ class: normalizeClass($options.linkClass()),
294
+ target: processedItem.target,
295
+ tabindex: "-1",
296
+ "aria-hidden": "true"
297
+ }, [
298
+ (!$props.templates['icon'])
299
+ ? withDirectives((openBlock(), createElementBlock("span", {
300
+ key: 0,
301
+ class: normalizeClass(['p-dock-icon', processedItem.icon])
302
+ }, null, 2)), [
303
+ [_directive_ripple]
304
+ ])
305
+ : (openBlock(), createBlock(resolveDynamicComponent($props.templates['icon']), {
306
+ key: 1,
307
+ item: processedItem
308
+ }, null, 8, ["item"]))
309
+ ], 10, _hoisted_6)), [
310
+ [_directive_tooltip, { value: processedItem.label, disabled: !$props.tooltipOptions }, $props.tooltipOptions]
311
+ ])
312
+ ], 64))
313
+ : (openBlock(), createBlock(resolveDynamicComponent($props.templates['item']), {
314
+ key: 1,
315
+ item: processedItem,
316
+ index: index
317
+ }, null, 8, ["item", "index"]))
318
+ ])
319
+ ], 42, _hoisted_3))
170
320
  }), 128))
171
- ], 544)
321
+ ], 40, _hoisted_2)
172
322
  ]))
173
323
  }
174
324
 
@@ -188,6 +338,22 @@ var script = {
188
338
  exact: {
189
339
  type: Boolean,
190
340
  default: true
341
+ },
342
+ menuId: {
343
+ type: String,
344
+ default: null
345
+ },
346
+ tabindex: {
347
+ type: Number,
348
+ default: 0
349
+ },
350
+ 'aria-label': {
351
+ type: String,
352
+ default: null
353
+ },
354
+ 'aria-labelledby': {
355
+ type: String,
356
+ default: null
191
357
  }
192
358
  },
193
359
  computed: {
@@ -211,8 +377,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
211
377
  model: $props.model,
212
378
  templates: _ctx.$slots,
213
379
  exact: $props.exact,
214
- tooltipOptions: $props.tooltipOptions
215
- }, null, 8, ["model", "templates", "exact", "tooltipOptions"])
380
+ tooltipOptions: $props.tooltipOptions,
381
+ position: $props.position,
382
+ menuId: $props.menuId,
383
+ "aria-label": _ctx.ariaLabel,
384
+ "aria-labelledby": _ctx.ariaLabelledby,
385
+ tabindex: $props.tabindex
386
+ }, null, 8, ["model", "templates", "exact", "tooltipOptions", "position", "menuId", "aria-label", "aria-labelledby", "tabindex"])
216
387
  ], 6))
217
388
  }
218
389
 
@@ -243,7 +414,7 @@ function styleInject(css, ref) {
243
414
  }
244
415
  }
245
416
 
246
- var css_248z = "\n.p-dock {\n position: absolute;\n z-index: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n pointer-events: none;\n}\n.p-dock-list-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n pointer-events: auto;\n}\n.p-dock-list {\n margin: 0;\n padding: 0;\n list-style: none;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.p-dock-item {\n -webkit-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: transform;\n}\n.p-dock-action {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n.p-dock-item-second-prev,\n.p-dock-item-second-next {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n.p-dock-item-prev,\n.p-dock-item-next {\n -webkit-transform: scale(1.4);\n transform: scale(1.4);\n}\n.p-dock-item-current {\n -webkit-transform: scale(1.6);\n transform: scale(1.6);\n z-index: 1;\n}\n\n/* Position */\n/* top */\n.p-dock-top {\n left: 0;\n top: 0;\n width: 100%;\n}\n.p-dock-top .p-dock-item {\n -webkit-transform-origin: center top;\n transform-origin: center top;\n}\n\n/* bottom */\n.p-dock-bottom {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.p-dock-bottom .p-dock-item {\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n/* right */\n.p-dock-right {\n right: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-right .p-dock-item {\n -webkit-transform-origin: center right;\n transform-origin: center right;\n}\n.p-dock-right .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n/* left */\n.p-dock-left {\n left: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-left .p-dock-item {\n -webkit-transform-origin: center left;\n transform-origin: center left;\n}\n.p-dock-left .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n";
417
+ var css_248z = "\n.p-dock {\n position: absolute;\n z-index: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n pointer-events: none;\n}\n.p-dock-list-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n pointer-events: auto;\n}\n.p-dock-list {\n margin: 0;\n padding: 0;\n list-style: none;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.p-dock-item {\n -webkit-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: transform;\n}\n.p-dock-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n.p-dock-item-second-prev,\n.p-dock-item-second-next {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n.p-dock-item-prev,\n.p-dock-item-next {\n -webkit-transform: scale(1.4);\n transform: scale(1.4);\n}\n.p-dock-item-current {\n -webkit-transform: scale(1.6);\n transform: scale(1.6);\n z-index: 1;\n}\n\n/* Position */\n/* top */\n.p-dock-top {\n left: 0;\n top: 0;\n width: 100%;\n}\n.p-dock-top .p-dock-item {\n -webkit-transform-origin: center top;\n transform-origin: center top;\n}\n\n/* bottom */\n.p-dock-bottom {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.p-dock-bottom .p-dock-item {\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n/* right */\n.p-dock-right {\n right: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-right .p-dock-item {\n -webkit-transform-origin: center right;\n transform-origin: center right;\n}\n.p-dock-right .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n/* left */\n.p-dock-left {\n left: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-left .p-dock-item {\n -webkit-transform-origin: center left;\n transform-origin: center left;\n}\n.p-dock-left .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n";
247
418
  styleInject(css_248z);
248
419
 
249
420
  script.render = render;
@@ -1 +1 @@
1
- import e from"primevue/ripple";import t from"primevue/tooltip";import{resolveComponent as n,resolveDirective as i,openBlock as o,createElementBlock as l,createElementVNode as r,Fragment as s,renderList as c,normalizeClass as a,createBlock as d,withCtx as p,withDirectives as m,resolveDynamicComponent as k,normalizeStyle as u,createVNode as f}from"vue";var b={name:"DockSub",props:{model:{type:Array,default:null},templates:{type:null,default:null},exact:{type:Boolean,default:!0},tooltipOptions:null},data:()=>({currentIndex:-3}),methods:{onListMouseLeave(){this.currentIndex=-3},onItemMouseEnter(e){this.currentIndex=e},onItemClick(e,t,n){this.disabled(t)?e.preventDefault():(t.command&&t.command({originalEvent:e,item:t}),t.to&&n&&n(e))},itemClass(e){return["p-dock-item",{"p-dock-item-second-prev":this.currentIndex-2===e,"p-dock-item-prev":this.currentIndex-1===e,"p-dock-item-current":this.currentIndex===e,"p-dock-item-next":this.currentIndex+1===e,"p-dock-item-second-next":this.currentIndex+2===e}]},linkClass(e,t){return["p-dock-action",{"p-disabled":this.disabled(e),"router-link-active":t&&t.isActive,"router-link-active-exact":this.exact&&t&&t.isExactActive}]},disabled:e=>"function"==typeof e.disabled?e.disabled():e.disabled},directives:{ripple:e,tooltip:t}};const x={class:"p-dock-list-container"},h=["onMouseenter"],y=["href","target","onClick"],g=["href","target","onClick","tabindex"];b.render=function(e,t,u,f,b,v){const w=n("router-link"),C=i("ripple"),I=i("tooltip");return o(),l("div",x,[r("ul",{ref:"list",class:"p-dock-list",role:"menu",onMouseleave:t[0]||(t[0]=(...e)=>v.onListMouseLeave&&v.onListMouseLeave(...e))},[(o(!0),l(s,null,c(u.model,((e,t)=>(o(),l("li",{key:t,class:a(v.itemClass(t)),role:"none",onMouseenter:e=>v.onItemMouseEnter(t)},[u.templates.item?(o(),d(k(u.templates.item),{key:1,item:e},null,8,["item"])):(o(),l(s,{key:0},[e.to&&!v.disabled(e)?(o(),d(w,{key:0,to:e.to,custom:""},{default:p((({navigate:t,href:n,isActive:i,isExactActive:r})=>[m((o(),l("a",{href:n,role:"menuitem",class:a(v.linkClass(e,{isActive:i,isExactActive:r})),target:e.target,onClick:n=>v.onItemClick(n,e,t)},[u.templates.icon?(o(),d(k(u.templates.icon),{key:1,item:e},null,8,["item"])):m((o(),l("span",{key:0,class:a(["p-dock-action-icon",e.icon])},null,2)),[[C]])],10,y)),[[I,{value:e.label,disabled:!u.tooltipOptions},u.tooltipOptions]])])),_:2},1032,["to"])):m((o(),l("a",{key:1,href:e.url,role:"menuitem",class:a(v.linkClass(e)),target:e.target,onClick:t=>v.onItemClick(t,e),tabindex:v.disabled(e)?null:"0"},[u.templates.icon?(o(),d(k(u.templates.icon),{key:1,item:e},null,8,["item"])):m((o(),l("span",{key:0,class:a(["p-dock-action-icon",e.icon])},null,2)),[[C]])],10,g)),[[I,{value:e.label,disabled:!u.tooltipOptions},u.tooltipOptions]])],64))],42,h)))),128))],544)])};var v={name:"Dock",props:{position:{type:String,default:"bottom"},model:null,class:null,style:null,tooltipOptions:null,exact:{type:Boolean,default:!0}},computed:{containerClass(){return["p-dock p-component",`p-dock-${this.position}`,this.class]}},components:{DockSub:b}};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("\n.p-dock {\n position: absolute;\n z-index: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n pointer-events: none;\n}\n.p-dock-list-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n pointer-events: auto;\n}\n.p-dock-list {\n margin: 0;\n padding: 0;\n list-style: none;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.p-dock-item {\n -webkit-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: transform;\n}\n.p-dock-action {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n.p-dock-item-second-prev,\n.p-dock-item-second-next {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n.p-dock-item-prev,\n.p-dock-item-next {\n -webkit-transform: scale(1.4);\n transform: scale(1.4);\n}\n.p-dock-item-current {\n -webkit-transform: scale(1.6);\n transform: scale(1.6);\n z-index: 1;\n}\n\n/* Position */\n/* top */\n.p-dock-top {\n left: 0;\n top: 0;\n width: 100%;\n}\n.p-dock-top .p-dock-item {\n -webkit-transform-origin: center top;\n transform-origin: center top;\n}\n\n/* bottom */\n.p-dock-bottom {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.p-dock-bottom .p-dock-item {\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n/* right */\n.p-dock-right {\n right: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-right .p-dock-item {\n -webkit-transform-origin: center right;\n transform-origin: center right;\n}\n.p-dock-right .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n/* left */\n.p-dock-left {\n left: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-left .p-dock-item {\n -webkit-transform-origin: center left;\n transform-origin: center left;\n}\n.p-dock-left .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n"),v.render=function(e,t,i,r,s,c){const d=n("DockSub");return o(),l("div",{class:a(c.containerClass),style:u(i.style)},[f(d,{model:i.model,templates:e.$slots,exact:i.exact,tooltipOptions:i.tooltipOptions},null,8,["model","templates","exact","tooltipOptions"])],6)};export{v as default};
1
+ import e from"primevue/ripple";import t from"primevue/tooltip";import{ObjectUtils as n,DomHandler as i,UniqueComponentId as o}from"primevue/utils";import{resolveComponent as l,resolveDirective as s,openBlock as r,createElementBlock as a,createElementVNode as d,Fragment as c,renderList as p,normalizeClass as u,createBlock as m,withCtx as f,withDirectives as b,resolveDynamicComponent as k,normalizeStyle as x,createVNode as h}from"vue";var y={name:"DockSub",emits:["focus","blur"],props:{position:{type:String,default:"bottom"},model:{type:Array,default:null},templates:{type:null,default:null},exact:{type:Boolean,default:!0},tooltipOptions:null,menuId:{type:String,default:null},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},data:()=>({currentIndex:-3,focused:!1,focusedOptionIndex:-1}),methods:{getItemId(e){return`${this.id}_${e}`},getItemProp:(e,t)=>e&&e.item?n.getItemValue(e.item[t]):void 0,isSameMenuItem:e=>e.currentTarget&&(e.currentTarget.isSameNode(e.target)||e.currentTarget.isSameNode(e.target.closest(".p-menuitem"))),onListMouseLeave(){this.currentIndex=-3},onItemMouseEnter(e){this.currentIndex=e},onItemActionClick(e,t){t&&t(e)},onItemClick(e,t){if(this.isSameMenuItem(e)){const n=this.getItemProp(t,"command");n&&n({originalEvent:e,item:t.item})}},onListFocus(e){this.focused=!0,this.changeFocusedOptionIndex(0),this.$emit("focus",e)},onListBlur(e){this.focused=!1,this.focusedOptionIndex=-1,this.$emit("blur",e)},onListKeyDown(e){switch(e.code){case"ArrowDown":"left"!==this.position&&"right"!==this.position||this.onArrowDownKey(),e.preventDefault();break;case"ArrowUp":"left"!==this.position&&"right"!==this.position||this.onArrowUpKey(),e.preventDefault();break;case"ArrowRight":"top"!==this.position&&"bottom"!==this.position||this.onArrowDownKey(),e.preventDefault();break;case"ArrowLeft":"top"!==this.position&&"bottom"!==this.position||this.onArrowUpKey(),e.preventDefault();break;case"Home":this.onHomeKey(),e.preventDefault();break;case"End":this.onEndKey(),e.preventDefault();break;case"Enter":case"Space":this.onSpaceKey(e),e.preventDefault()}},onArrowDownKey(){const e=this.findNextOptionIndex(this.focusedOptionIndex);this.changeFocusedOptionIndex(e)},onArrowUpKey(){const e=this.findPrevOptionIndex(this.focusedOptionIndex);this.changeFocusedOptionIndex(e)},onHomeKey(){this.changeFocusedOptionIndex(0)},onEndKey(){this.changeFocusedOptionIndex(i.find(this.$refs.list,"li.p-dock-item:not(.p-disabled)").length-1)},onSpaceKey(){const e=i.findSingle(this.$refs.list,`li[id="${this.focusedOptionIndex}"]`),t=e&&i.findSingle(e,".p-dock-link");t?t.click():e&&e.click()},findNextOptionIndex(e){const t=[...i.find(this.$refs.list,"li.p-dock-item:not(.p-disabled)")].findIndex((t=>t.id===e));return t>-1?t+1:0},findPrevOptionIndex(e){const t=[...i.find(this.$refs.list,"li.p-dock-item:not(.p-disabled)")].findIndex((t=>t.id===e));return t>-1?t-1:0},changeFocusedOptionIndex(e){const t=i.find(this.$refs.list,"li.p-dock-item:not(.p-disabled)");let n=e>=t.length?t.length-1:e<0?0:e;this.focusedOptionIndex=t[n].getAttribute("id")},itemClass(e,t,n){return["p-dock-item",{"p-focus":n===this.focusedOptionIndex,"p-disabled":this.disabled(e),"p-dock-item-second-prev":this.currentIndex-2===t,"p-dock-item-prev":this.currentIndex-1===t,"p-dock-item-current":this.currentIndex===t,"p-dock-item-next":this.currentIndex+1===t,"p-dock-item-second-next":this.currentIndex+2===t}]},linkClass(e){return["p-dock-link",{"router-link-active":e&&e.isActive,"router-link-active-exact":this.exact&&e&&e.isExactActive}]},disabled:e=>"function"==typeof e.disabled?e.disabled():e.disabled},computed:{id(){return this.menuId||o()},focusedOptionId(){return-1!==this.focusedOptionIndex?this.focusedOptionIndex:null}},directives:{ripple:e,tooltip:t}};const g={class:"p-dock-list-container"},v=["id","aria-orientation","aria-activedescendant","tabindex","aria-label","aria-labelledby"],I=["id","aria-label","aria-disabled","onClick","onMouseenter"],w={class:"p-menuitem-content"},O=["href","target","onClick"],S=["href","target"];y.render=function(e,t,n,i,o,x){const h=l("router-link"),y=s("ripple"),A=s("tooltip");return r(),a("div",g,[d("ul",{ref:"list",id:x.id,class:"p-dock-list",role:"menu","aria-orientation":"bottom"===n.position||"top"===n.position?"horizontal":"vertical","aria-activedescendant":o.focused?x.focusedOptionId:void 0,tabindex:n.tabindex,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,onFocus:t[0]||(t[0]=(...e)=>x.onListFocus&&x.onListFocus(...e)),onBlur:t[1]||(t[1]=(...e)=>x.onListBlur&&x.onListBlur(...e)),onKeydown:t[2]||(t[2]=(...e)=>x.onListKeyDown&&x.onListKeyDown(...e)),onMouseleave:t[3]||(t[3]=(...e)=>x.onListMouseLeave&&x.onListMouseLeave(...e))},[(r(!0),a(c,null,p(n.model,((e,t)=>(r(),a("li",{key:t,id:x.getItemId(t),class:u(x.itemClass(e,t,x.getItemId(t))),role:"menuitem","aria-label":e.label,"aria-disabled":x.disabled(e),onClick:t=>x.onItemClick(t,e),onMouseenter:e=>x.onItemMouseEnter(t)},[d("div",w,[n.templates.item?(r(),m(k(n.templates.item),{key:1,item:e,index:t},null,8,["item","index"])):(r(),a(c,{key:0},[e.to&&!x.disabled(e)?(r(),m(h,{key:0,to:e.to,custom:""},{default:f((({navigate:t,href:i,isActive:o,isExactActive:l})=>[b((r(),a("a",{href:i,class:u(x.linkClass({isActive:o,isExactActive:l})),target:e.target,tabindex:"-1","aria-hidden":"true",onClick:n=>x.onItemActionClick(n,e,t)},[n.templates.icon?(r(),m(k(n.templates.icon),{key:1,item:e},null,8,["item"])):b((r(),a("span",{key:0,class:u(["p-dock-icon",e.icon])},null,2)),[[y]])],10,O)),[[A,{value:e.label,disabled:!n.tooltipOptions},n.tooltipOptions]])])),_:2},1032,["to"])):b((r(),a("a",{key:1,href:e.url,class:u(x.linkClass()),target:e.target,tabindex:"-1","aria-hidden":"true"},[n.templates.icon?(r(),m(k(n.templates.icon),{key:1,item:e},null,8,["item"])):b((r(),a("span",{key:0,class:u(["p-dock-icon",e.icon])},null,2)),[[y]])],10,S)),[[A,{value:e.label,disabled:!n.tooltipOptions},n.tooltipOptions]])],64))])],42,I)))),128))],40,v)])};var A={name:"Dock",props:{position:{type:String,default:"bottom"},model:null,class:null,style:null,tooltipOptions:null,exact:{type:Boolean,default:!0},menuId:{type:String,default:null},tabindex:{type:Number,default:0},"aria-label":{type:String,default:null},"aria-labelledby":{type:String,default:null}},computed:{containerClass(){return["p-dock p-component",`p-dock-${this.position}`,this.class]}},components:{DockSub:y}};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("\n.p-dock {\n position: absolute;\n z-index: 1;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n pointer-events: none;\n}\n.p-dock-list-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n pointer-events: auto;\n}\n.p-dock-list {\n margin: 0;\n padding: 0;\n list-style: none;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.p-dock-item {\n -webkit-transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: transform;\n}\n.p-dock-link {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n.p-dock-item-second-prev,\n.p-dock-item-second-next {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n.p-dock-item-prev,\n.p-dock-item-next {\n -webkit-transform: scale(1.4);\n transform: scale(1.4);\n}\n.p-dock-item-current {\n -webkit-transform: scale(1.6);\n transform: scale(1.6);\n z-index: 1;\n}\n\n/* Position */\n/* top */\n.p-dock-top {\n left: 0;\n top: 0;\n width: 100%;\n}\n.p-dock-top .p-dock-item {\n -webkit-transform-origin: center top;\n transform-origin: center top;\n}\n\n/* bottom */\n.p-dock-bottom {\n left: 0;\n bottom: 0;\n width: 100%;\n}\n.p-dock-bottom .p-dock-item {\n -webkit-transform-origin: center bottom;\n transform-origin: center bottom;\n}\n\n/* right */\n.p-dock-right {\n right: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-right .p-dock-item {\n -webkit-transform-origin: center right;\n transform-origin: center right;\n}\n.p-dock-right .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n/* left */\n.p-dock-left {\n left: 0;\n top: 0;\n height: 100%;\n}\n.p-dock-left .p-dock-item {\n -webkit-transform-origin: center left;\n transform-origin: center left;\n}\n.p-dock-left .p-dock-list {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n"),A.render=function(e,t,n,i,o,s){const d=l("DockSub");return r(),a("div",{class:u(s.containerClass),style:x(n.style)},[h(d,{model:n.model,templates:e.$slots,exact:n.exact,tooltipOptions:n.tooltipOptions,position:n.position,menuId:n.menuId,"aria-label":e.ariaLabel,"aria-labelledby":e.ariaLabelledby,tabindex:n.tabindex},null,8,["model","templates","exact","tooltipOptions","position","menuId","aria-label","aria-labelledby","tabindex"])],6)};export{A as default};