primereact 9.1.0 → 9.2.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 (261) hide show
  1. package/accordion/package.json +7 -0
  2. package/api/api.d.ts +2 -2
  3. package/api/package.json +7 -0
  4. package/autocomplete/autocomplete.cjs.js +1 -0
  5. package/autocomplete/autocomplete.cjs.min.js +1 -1
  6. package/autocomplete/autocomplete.esm.js +1 -0
  7. package/autocomplete/autocomplete.esm.min.js +1 -1
  8. package/autocomplete/autocomplete.js +1 -0
  9. package/autocomplete/autocomplete.min.js +1 -1
  10. package/autocomplete/package.json +7 -0
  11. package/avatar/avatar.cjs.js +2 -2
  12. package/avatar/avatar.cjs.min.js +1 -1
  13. package/avatar/avatar.esm.js +2 -2
  14. package/avatar/avatar.esm.min.js +1 -1
  15. package/avatar/avatar.js +2 -2
  16. package/avatar/avatar.min.js +1 -1
  17. package/avatar/package.json +7 -0
  18. package/avatargroup/package.json +7 -0
  19. package/badge/package.json +7 -0
  20. package/blockui/package.json +7 -0
  21. package/breadcrumb/package.json +7 -0
  22. package/button/package.json +7 -0
  23. package/calendar/calendar.cjs.js +2 -2
  24. package/calendar/calendar.cjs.min.js +1 -1
  25. package/calendar/calendar.esm.js +2 -2
  26. package/calendar/calendar.esm.min.js +1 -1
  27. package/calendar/calendar.js +2 -2
  28. package/calendar/calendar.min.js +1 -1
  29. package/calendar/package.json +7 -0
  30. package/card/package.json +7 -0
  31. package/carousel/package.json +7 -0
  32. package/cascadeselect/package.json +7 -0
  33. package/chart/package.json +7 -0
  34. package/checkbox/package.json +7 -0
  35. package/chip/package.json +7 -0
  36. package/chips/package.json +7 -0
  37. package/colorpicker/package.json +7 -0
  38. package/column/package.json +7 -0
  39. package/columngroup/package.json +7 -0
  40. package/confirmdialog/package.json +7 -0
  41. package/confirmpopup/package.json +7 -0
  42. package/contextmenu/contextmenu.cjs.js +61 -18
  43. package/contextmenu/contextmenu.cjs.min.js +1 -1
  44. package/contextmenu/contextmenu.d.ts +9 -0
  45. package/contextmenu/contextmenu.esm.js +63 -20
  46. package/contextmenu/contextmenu.esm.min.js +1 -1
  47. package/contextmenu/contextmenu.js +61 -18
  48. package/contextmenu/contextmenu.min.js +1 -1
  49. package/contextmenu/package.json +7 -0
  50. package/core/core.js +226 -115
  51. package/core/core.min.js +4 -4
  52. package/csstransition/package.json +7 -0
  53. package/datascroller/package.json +7 -0
  54. package/datatable/datatable.cjs.js +84 -79
  55. package/datatable/datatable.cjs.min.js +1 -1
  56. package/datatable/datatable.d.ts +2 -11
  57. package/datatable/datatable.esm.js +85 -80
  58. package/datatable/datatable.esm.min.js +1 -1
  59. package/datatable/datatable.js +84 -79
  60. package/datatable/datatable.min.css +1 -1
  61. package/datatable/datatable.min.js +1 -1
  62. package/datatable/package.json +7 -0
  63. package/dataview/package.json +7 -0
  64. package/deferredcontent/package.json +7 -0
  65. package/dialog/package.json +7 -0
  66. package/divider/package.json +7 -0
  67. package/dock/package.json +7 -0
  68. package/dropdown/dropdown.cjs.js +1 -0
  69. package/dropdown/dropdown.cjs.min.js +1 -1
  70. package/dropdown/dropdown.esm.js +1 -0
  71. package/dropdown/dropdown.esm.min.js +1 -1
  72. package/dropdown/dropdown.js +1 -0
  73. package/dropdown/dropdown.min.js +1 -1
  74. package/dropdown/package.json +7 -0
  75. package/editor/package.json +7 -0
  76. package/fieldset/package.json +7 -0
  77. package/fileupload/package.json +7 -0
  78. package/galleria/package.json +7 -0
  79. package/hooks/hooks.cjs.js +34 -2
  80. package/hooks/hooks.cjs.min.js +1 -1
  81. package/hooks/hooks.d.ts +13 -0
  82. package/hooks/hooks.esm.js +34 -3
  83. package/hooks/hooks.esm.min.js +1 -1
  84. package/hooks/hooks.js +34 -2
  85. package/hooks/hooks.min.js +1 -1
  86. package/hooks/package.json +7 -0
  87. package/image/package.json +7 -0
  88. package/inplace/package.json +7 -0
  89. package/inputmask/package.json +7 -0
  90. package/inputnumber/package.json +7 -0
  91. package/inputswitch/package.json +7 -0
  92. package/inputtext/inputtext.min.css +1 -1
  93. package/inputtext/package.json +7 -0
  94. package/inputtextarea/package.json +7 -0
  95. package/keyfilter/package.json +7 -0
  96. package/knob/package.json +7 -0
  97. package/listbox/listbox.cjs.js +5 -4
  98. package/listbox/listbox.cjs.min.js +1 -1
  99. package/listbox/listbox.esm.js +5 -4
  100. package/listbox/listbox.esm.min.js +1 -1
  101. package/listbox/listbox.js +5 -4
  102. package/listbox/listbox.min.js +1 -1
  103. package/listbox/package.json +7 -0
  104. package/megamenu/megamenu.cjs.js +91 -6
  105. package/megamenu/megamenu.cjs.min.js +1 -1
  106. package/megamenu/megamenu.d.ts +9 -0
  107. package/megamenu/megamenu.esm.js +93 -8
  108. package/megamenu/megamenu.esm.min.js +1 -1
  109. package/megamenu/megamenu.js +91 -6
  110. package/megamenu/megamenu.min.css +1 -1
  111. package/megamenu/megamenu.min.js +1 -1
  112. package/megamenu/package.json +7 -0
  113. package/mention/package.json +7 -0
  114. package/menu/package.json +7 -0
  115. package/menubar/package.json +7 -0
  116. package/menuitem/package.json +4 -0
  117. package/message/package.json +7 -0
  118. package/messages/package.json +7 -0
  119. package/multiselect/multiselect.cjs.js +1 -0
  120. package/multiselect/multiselect.cjs.min.js +1 -1
  121. package/multiselect/multiselect.esm.js +1 -0
  122. package/multiselect/multiselect.esm.min.js +1 -1
  123. package/multiselect/multiselect.js +1 -0
  124. package/multiselect/multiselect.min.js +1 -1
  125. package/multiselect/package.json +7 -0
  126. package/multistatecheckbox/package.json +7 -0
  127. package/orderlist/package.json +7 -0
  128. package/organizationchart/package.json +7 -0
  129. package/overlaypanel/package.json +7 -0
  130. package/overlayservice/package.json +7 -0
  131. package/package.json +1 -1
  132. package/paginator/package.json +7 -0
  133. package/panel/package.json +7 -0
  134. package/panelmenu/package.json +7 -0
  135. package/password/package.json +7 -0
  136. package/picklist/package.json +7 -0
  137. package/portal/package.json +6 -0
  138. package/primereact.all.cjs.js +554 -244
  139. package/primereact.all.cjs.min.js +1 -1
  140. package/primereact.all.esm.js +554 -245
  141. package/primereact.all.esm.min.js +1 -1
  142. package/primereact.all.js +554 -244
  143. package/primereact.all.min.js +1 -1
  144. package/progressbar/package.json +7 -0
  145. package/progressspinner/package.json +7 -0
  146. package/radiobutton/package.json +7 -0
  147. package/rating/package.json +7 -0
  148. package/resources/primereact.css +781 -832
  149. package/resources/primereact.min.css +1 -1
  150. package/resources/themes/arya-blue/theme.css +130 -2
  151. package/resources/themes/arya-green/theme.css +130 -2
  152. package/resources/themes/arya-orange/theme.css +130 -2
  153. package/resources/themes/arya-purple/theme.css +130 -2
  154. package/resources/themes/bootstrap4-dark-blue/theme.css +131 -2
  155. package/resources/themes/bootstrap4-dark-purple/theme.css +131 -2
  156. package/resources/themes/bootstrap4-light-blue/theme.css +131 -2
  157. package/resources/themes/bootstrap4-light-purple/theme.css +131 -2
  158. package/resources/themes/fluent-light/theme.css +131 -2
  159. package/resources/themes/lara-dark-blue/theme.css +131 -2
  160. package/resources/themes/lara-dark-indigo/theme.css +131 -2
  161. package/resources/themes/lara-dark-purple/theme.css +131 -2
  162. package/resources/themes/lara-dark-teal/theme.css +131 -2
  163. package/resources/themes/lara-light-blue/theme.css +131 -2
  164. package/resources/themes/lara-light-indigo/theme.css +131 -2
  165. package/resources/themes/lara-light-purple/theme.css +131 -2
  166. package/resources/themes/lara-light-teal/theme.css +131 -2
  167. package/resources/themes/luna-amber/theme.css +131 -2
  168. package/resources/themes/luna-blue/theme.css +131 -2
  169. package/resources/themes/luna-green/theme.css +131 -2
  170. package/resources/themes/luna-pink/theme.css +131 -2
  171. package/resources/themes/md-dark-deeppurple/theme.css +131 -2
  172. package/resources/themes/md-dark-indigo/theme.css +131 -2
  173. package/resources/themes/md-light-deeppurple/theme.css +131 -2
  174. package/resources/themes/md-light-indigo/theme.css +131 -2
  175. package/resources/themes/mdc-dark-deeppurple/theme.css +131 -2
  176. package/resources/themes/mdc-dark-indigo/theme.css +131 -2
  177. package/resources/themes/mdc-light-deeppurple/theme.css +131 -2
  178. package/resources/themes/mdc-light-indigo/theme.css +131 -2
  179. package/resources/themes/mira/theme.css +131 -2
  180. package/resources/themes/nano/theme.css +131 -2
  181. package/resources/themes/nova/theme.css +131 -2
  182. package/resources/themes/nova-accent/theme.css +131 -2
  183. package/resources/themes/nova-alt/theme.css +131 -2
  184. package/resources/themes/rhea/theme.css +131 -2
  185. package/resources/themes/saga-blue/theme.css +131 -2
  186. package/resources/themes/saga-green/theme.css +131 -2
  187. package/resources/themes/saga-orange/theme.css +131 -2
  188. package/resources/themes/saga-purple/theme.css +131 -2
  189. package/resources/themes/soho-dark/theme.css +131 -2
  190. package/resources/themes/soho-light/theme.css +131 -2
  191. package/resources/themes/tailwind-light/theme.css +131 -2
  192. package/resources/themes/vela-blue/theme.css +131 -2
  193. package/resources/themes/vela-green/theme.css +131 -2
  194. package/resources/themes/vela-orange/theme.css +131 -2
  195. package/resources/themes/vela-purple/theme.css +131 -2
  196. package/resources/themes/viva-dark/theme.css +131 -2
  197. package/resources/themes/viva-light/theme.css +131 -2
  198. package/ripple/package.json +7 -0
  199. package/row/package.json +7 -0
  200. package/scrollpanel/package.json +7 -0
  201. package/scrolltop/package.json +7 -0
  202. package/selectbutton/package.json +7 -0
  203. package/selectitem/package.json +4 -0
  204. package/sidebar/package.json +7 -0
  205. package/skeleton/package.json +7 -0
  206. package/slidemenu/package.json +7 -0
  207. package/slider/package.json +7 -0
  208. package/speeddial/package.json +7 -0
  209. package/splitbutton/package.json +7 -0
  210. package/splitter/package.json +7 -0
  211. package/steps/package.json +7 -0
  212. package/styleclass/package.json +7 -0
  213. package/tabmenu/package.json +7 -0
  214. package/tabview/package.json +7 -0
  215. package/tag/package.json +7 -0
  216. package/terminal/package.json +7 -0
  217. package/terminalservice/package.json +7 -0
  218. package/tieredmenu/package.json +7 -0
  219. package/tieredmenu/tieredmenu.cjs.js +69 -9
  220. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  221. package/tieredmenu/tieredmenu.d.ts +9 -0
  222. package/tieredmenu/tieredmenu.esm.js +71 -11
  223. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  224. package/tieredmenu/tieredmenu.js +69 -9
  225. package/tieredmenu/tieredmenu.min.js +1 -1
  226. package/timeline/package.json +7 -0
  227. package/toast/package.json +7 -0
  228. package/toast/toast.min.css +1 -1
  229. package/togglebutton/package.json +7 -0
  230. package/toolbar/package.json +7 -0
  231. package/tooltip/package.json +7 -0
  232. package/tree/package.json +7 -0
  233. package/treenode/package.json +4 -0
  234. package/treeselect/package.json +7 -0
  235. package/treetable/package.json +7 -0
  236. package/treetable/treetable.cjs.js +12 -9
  237. package/treetable/treetable.cjs.min.js +1 -1
  238. package/treetable/treetable.d.ts +0 -5
  239. package/treetable/treetable.esm.js +12 -9
  240. package/treetable/treetable.esm.min.js +1 -1
  241. package/treetable/treetable.js +12 -9
  242. package/treetable/treetable.min.css +1 -1
  243. package/treetable/treetable.min.js +1 -1
  244. package/tristatecheckbox/package.json +7 -0
  245. package/utils/package.json +7 -0
  246. package/utils/utils.cjs.js +14 -9
  247. package/utils/utils.cjs.min.js +1 -1
  248. package/utils/utils.esm.js +14 -9
  249. package/utils/utils.esm.min.js +1 -1
  250. package/utils/utils.js +14 -9
  251. package/utils/utils.min.js +1 -1
  252. package/virtualscroller/package.json +7 -0
  253. package/virtualscroller/virtualscroller.cjs.js +177 -104
  254. package/virtualscroller/virtualscroller.cjs.min.js +1 -1
  255. package/virtualscroller/virtualscroller.d.ts +20 -0
  256. package/virtualscroller/virtualscroller.esm.js +177 -104
  257. package/virtualscroller/virtualscroller.esm.min.js +1 -1
  258. package/virtualscroller/virtualscroller.js +177 -104
  259. package/virtualscroller/virtualscroller.min.css +1 -1
  260. package/virtualscroller/virtualscroller.min.js +1 -1
  261. package/web-types.json +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./scrollpanel.cjs.js",
3
+ "module": "./scrollpanel.esm.js",
4
+ "unpkg": "./scrollpanel.min.js",
5
+ "types": "./scrollpanel.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./scrolltop.cjs.js",
3
+ "module": "./scrolltop.esm.js",
4
+ "unpkg": "./scrolltop.min.js",
5
+ "types": "./scrolltop.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./selectbutton.cjs.js",
3
+ "module": "./selectbutton.esm.js",
4
+ "unpkg": "./selectbutton.min.js",
5
+ "types": "./selectbutton.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "types": "./selectitem.d.ts",
3
+ "sideEffects": false
4
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./sidebar.cjs.js",
3
+ "module": "./sidebar.esm.js",
4
+ "unpkg": "./sidebar.min.js",
5
+ "types": "./sidebar.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./skeleton.cjs.js",
3
+ "module": "./skeleton.esm.js",
4
+ "unpkg": "./skeleton.min.js",
5
+ "types": "./skeleton.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./slidemenu.cjs.js",
3
+ "module": "./slidemenu.esm.js",
4
+ "unpkg": "./slidemenu.min.js",
5
+ "types": "./slidemenu.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./slider.cjs.js",
3
+ "module": "./slider.esm.js",
4
+ "unpkg": "./slider.min.js",
5
+ "types": "./slider.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./speeddial.cjs.js",
3
+ "module": "./speeddial.esm.js",
4
+ "unpkg": "./speeddial.min.js",
5
+ "types": "./speeddial.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./splitbutton.cjs.js",
3
+ "module": "./splitbutton.esm.js",
4
+ "unpkg": "./splitbutton.min.js",
5
+ "types": "./splitbutton.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./splitter.cjs.js",
3
+ "module": "./splitter.esm.js",
4
+ "unpkg": "./splitter.min.js",
5
+ "types": "./splitter.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./steps.cjs.js",
3
+ "module": "./steps.esm.js",
4
+ "unpkg": "./steps.min.js",
5
+ "types": "./steps.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./styleclass.cjs.js",
3
+ "module": "./styleclass.esm.js",
4
+ "unpkg": "./styleclass.min.js",
5
+ "types": "./styleclass.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./tabmenu.cjs.js",
3
+ "module": "./tabmenu.esm.js",
4
+ "unpkg": "./tabmenu.min.js",
5
+ "types": "./tabmenu.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./tabview.cjs.js",
3
+ "module": "./tabview.esm.js",
4
+ "unpkg": "./tabview.min.js",
5
+ "types": "./tabview.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./tag.cjs.js",
3
+ "module": "./tag.esm.js",
4
+ "unpkg": "./tag.min.js",
5
+ "types": "./tag.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./terminal.cjs.js",
3
+ "module": "./terminal.esm.js",
4
+ "unpkg": "./terminal.min.js",
5
+ "types": "./terminal.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./terminalservice.cjs.js",
3
+ "module": "./terminalservice.esm.js",
4
+ "unpkg": "./terminalservice.min.js",
5
+ "types": "./terminalservice.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "main": "./tieredmenu.cjs.js",
3
+ "module": "./tieredmenu.esm.js",
4
+ "unpkg": "./tieredmenu.min.js",
5
+ "types": "./tieredmenu.d.ts",
6
+ "sideEffects": false
7
+ }
@@ -114,6 +114,8 @@ var TieredMenuBase = {
114
114
  className: null,
115
115
  autoZIndex: true,
116
116
  baseZIndex: 0,
117
+ breakpoint: undefined,
118
+ scrollHeight: '400px',
117
119
  appendTo: null,
118
120
  transitionOptions: null,
119
121
  onShow: null,
@@ -137,13 +139,20 @@ var TieredMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
137
139
  var _useEventListener = hooks.useEventListener({
138
140
  type: 'click',
139
141
  listener: function listener(event) {
140
- if (elementRef.current && !elementRef.current.contains(event.target)) {
142
+ if (!props.isMobileMode && elementRef.current && !elementRef.current.contains(event.target)) {
141
143
  setActiveItemState(null);
142
144
  }
143
145
  }
144
146
  }),
145
147
  _useEventListener2 = _slicedToArray(_useEventListener, 1),
146
148
  bindDocumentClickListener = _useEventListener2[0];
149
+ var _useResizeListener = hooks.useResizeListener({
150
+ listener: function listener() {
151
+ !props.isMobileMode && setActiveItemState(null);
152
+ }
153
+ }),
154
+ _useResizeListener2 = _slicedToArray(_useResizeListener, 1),
155
+ bindDocumentResizeListener = _useResizeListener2[0];
147
156
  var position = function position() {
148
157
  if (elementRef.current) {
149
158
  var parentItem = elementRef.current.parentElement;
@@ -163,7 +172,7 @@ var TieredMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
163
172
  }
164
173
  };
165
174
  var onItemMouseEnter = function onItemMouseEnter(event, item) {
166
- if (item.disabled) {
175
+ if (item.disabled || props.isMobileMode) {
167
176
  event.preventDefault();
168
177
  return;
169
178
  }
@@ -189,7 +198,7 @@ var TieredMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
189
198
  item: item
190
199
  });
191
200
  }
192
- if (props.root) {
201
+ if (props.root || props.isMobileMode) {
193
202
  if (item.items) {
194
203
  if (activeItemState && item === activeItemState) setActiveItemState(null);else setActiveItemState(item);
195
204
  }
@@ -244,21 +253,27 @@ var TieredMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
244
253
  return prevItem ? utils.DomHandler.hasClass(prevItem, 'p-disabled') || !utils.DomHandler.hasClass(prevItem, 'p-menuitem') ? findPrevItem(prevItem) : prevItem : null;
245
254
  };
246
255
  var onLeafClick = function onLeafClick(event) {
247
- setActiveItemState(null);
248
- props.onLeafClick && props.onLeafClick(event);
249
- props.onHide && props.onHide(event);
256
+ if (!props.isMobileMode || props.popup) {
257
+ setActiveItemState(null);
258
+ props.onLeafClick && props.onLeafClick(event);
259
+ props.onHide && props.onHide(event);
260
+ }
250
261
  };
251
262
  hooks.useMountEffect(function () {
252
263
  bindDocumentClickListener();
264
+ bindDocumentResizeListener();
253
265
  });
254
266
  hooks.useUpdateEffect(function () {
255
267
  if (!props.parentActive) {
256
268
  setActiveItemState(null);
257
269
  }
258
- if (!props.root && props.parentActive) {
270
+ if (!props.root && props.parentActive && !props.isMobileMode) {
259
271
  position();
260
272
  }
261
273
  }, [props.parentActive]);
274
+ hooks.useUpdateEffect(function () {
275
+ props.onItemToggle && props.onItemToggle();
276
+ }, [activeItemState]);
262
277
  var createSeparator = function createSeparator(index) {
263
278
  var key = 'separator_' + index;
264
279
  return /*#__PURE__*/React__namespace.createElement("li", {
@@ -275,7 +290,9 @@ var TieredMenuSub = /*#__PURE__*/React__namespace.memo(function (props) {
275
290
  onLeafClick: onLeafClick,
276
291
  popup: props.popup,
277
292
  onKeyDown: onChildItemKeyDown,
278
- parentActive: item === activeItemState
293
+ parentActive: item === activeItemState,
294
+ isMobileMode: props.isMobileMode,
295
+ onItemToggle: props.onItemToggle
279
296
  });
280
297
  }
281
298
  return null;
@@ -385,8 +402,14 @@ var TieredMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespa
385
402
  _React$useState2 = _slicedToArray(_React$useState, 2),
386
403
  visibleState = _React$useState2[0],
387
404
  setVisibleState = _React$useState2[1];
405
+ var _React$useState3 = React__namespace.useState(null),
406
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
407
+ attributeSelectorState = _React$useState4[0],
408
+ setAttributeSelectorState = _React$useState4[1];
388
409
  var menuRef = React__namespace.useRef(null);
389
410
  var targetRef = React__namespace.useRef(null);
411
+ var styleElementRef = React__namespace.useRef(null);
412
+ var isMobileMode = hooks.useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
390
413
  var _useOverlayListener = hooks.useOverlayListener({
391
414
  target: targetRef,
392
415
  overlay: menuRef,
@@ -424,11 +447,31 @@ var TieredMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespa
424
447
  props.onHide && props.onHide(event);
425
448
  }
426
449
  };
450
+ var onItemToggle = function onItemToggle() {
451
+ if (props.popup && isMobileMode) {
452
+ utils.DomHandler.absolutePosition(menuRef.current, targetRef.current);
453
+ }
454
+ };
455
+ var createStyle = function createStyle() {
456
+ if (!styleElementRef.current) {
457
+ styleElementRef.current = utils.DomHandler.createInlineStyle(PrimeReact__default["default"].nonce);
458
+ var selector = "".concat(attributeSelectorState);
459
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-tieredmenu[").concat(selector, "] > ul {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n }\n\n .p-tieredmenu[").concat(selector, "] .p-submenu-list {\n position: relative;\n }\n\n .p-tieredmenu[").concat(selector, "] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-tieredmenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-tieredmenu[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n }\n\n ").concat(!props.popup ? ".p-tieredmenu[".concat(selector, "] { width: 100%; }") : '', "\n}\n");
460
+ styleElementRef.current.innerHTML = innerHTML;
461
+ }
462
+ };
463
+ var destroyStyle = function destroyStyle() {
464
+ styleElementRef.current = utils.DomHandler.removeInlineStyle(styleElementRef.current);
465
+ };
427
466
  var onEnter = function onEnter() {
428
467
  if (props.autoZIndex) {
429
468
  utils.ZIndexUtils.set('menu', menuRef.current, PrimeReact__default["default"].autoZIndex, props.baseZIndex || PrimeReact__default["default"].zIndex['menu']);
430
469
  }
431
470
  utils.DomHandler.absolutePosition(menuRef.current, targetRef.current);
471
+ if (attributeSelectorState && props.breakpoint) {
472
+ menuRef.current.setAttribute(attributeSelectorState, '');
473
+ createStyle();
474
+ }
432
475
  };
433
476
  var onEntered = function onEntered() {
434
477
  bindOverlayListener();
@@ -439,7 +482,22 @@ var TieredMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespa
439
482
  };
440
483
  var onExited = function onExited() {
441
484
  utils.ZIndexUtils.clear(menuRef.current);
485
+ destroyStyle();
442
486
  };
487
+ hooks.useMountEffect(function () {
488
+ if (props.breakpoint) {
489
+ !attributeSelectorState && setAttributeSelectorState(utils.UniqueComponentId());
490
+ }
491
+ });
492
+ hooks.useUpdateEffect(function () {
493
+ if (attributeSelectorState && menuRef.current) {
494
+ menuRef.current.setAttribute(attributeSelectorState, '');
495
+ createStyle();
496
+ }
497
+ return function () {
498
+ destroyStyle();
499
+ };
500
+ }, [attributeSelectorState, props.breakpoint]);
443
501
  hooks.useUnmountEffect(function () {
444
502
  utils.ZIndexUtils.clear(menuRef.current);
445
503
  });
@@ -487,7 +545,9 @@ var TieredMenu = /*#__PURE__*/React__namespace.memo( /*#__PURE__*/React__namespa
487
545
  model: props.model,
488
546
  root: true,
489
547
  popup: props.popup,
490
- onHide: hide
548
+ onHide: hide,
549
+ isMobileMode: isMobileMode,
550
+ onItemToggle: onItemToggle
491
551
  })));
492
552
  };
493
553
  var element = createElement();
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/csstransition"),r=require("primereact/hooks"),l=require("primereact/overlayservice"),o=require("primereact/portal"),a=require("primereact/utils"),i=require("primereact/ripple");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var s=c(e),p=u(t);function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(this,arguments)}function f(e){if(Array.isArray(e))return e}function d(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,l,o,a,i=[],u=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);u=!0);}catch(e){c=!0,l=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw l}}return i}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function y(e,t){return f(e)||d(e,t)||b(e,t)||h()}var g={defaultProps:{__TYPE:"TieredMenu",id:null,model:null,popup:!1,style:null,className:null,autoZIndex:!0,baseZIndex:0,appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return a.ObjectUtils.getMergedProps(e,g.defaultProps)},getOtherProps:function(e){return a.ObjectUtils.getDiffProps(e,g.defaultProps)}},E=s.memo((function(e){var t=y(s.useState(null),2),n=t[0],l=t[1],o=s.useRef(null),u=y(r.useEventListener({type:"click",listener:function(e){o.current&&!o.current.contains(e.target)&&l(null)}}),1)[0],c=function(){if(o.current){var e=o.current.parentElement,t=a.DomHandler.getOffset(e),n=a.DomHandler.getViewport(),r=o.current.offsetParent?o.current.offsetWidth:a.DomHandler.getHiddenElementOuterWidth(o.current),l=a.DomHandler.getOuterWidth(e.children[0]),i=parseInt(t.top,10)+o.current.offsetHeight-a.DomHandler.getWindowScrollTop();o.current.style.top=i>n.height?n.height-i+"px":"0px",parseInt(t.left,10)+l+r>n.width-a.DomHandler.calculateScrollbarWidth()&&a.DomHandler.addClass(o.current,"p-submenu-list-flipped")}},p=function(t,r){r.disabled?t.preventDefault():e.root?(n||e.popup)&&l(r):l(r)},m=function(t,r){r.disabled?t.preventDefault():(r.url||t.preventDefault(),r.command&&r.command({originalEvent:t,item:r}),e.root&&r.items&&l(n&&r===n?null:r),r.items||h(t))},f=function(t,n){var r=t.currentTarget.parentElement;switch(t.which){case 40:var o=v(r);o&&o.children[0].focus(),t.preventDefault();break;case 38:var a=b(r);a&&a.children[0].focus(),t.preventDefault();break;case 39:n.items&&(l(n),setTimeout((function(){r.children[1].children[0].children[0].focus()}),50)),t.preventDefault()}e.onKeyDown&&e.onKeyDown(t,r)},d=function(e,t){37===e.which&&(l(null),t.parentElement.previousElementSibling.focus())},v=function e(t){var n=t.nextElementSibling;return n?a.DomHandler.hasClass(n,"p-disabled")||!a.DomHandler.hasClass(n,"p-menuitem")?e(n):n:null},b=function e(t){var n=t.previousElementSibling;return n?a.DomHandler.hasClass(n,"p-disabled")||!a.DomHandler.hasClass(n,"p-menuitem")?e(n):n:null},h=function(t){l(null),e.onLeafClick&&e.onLeafClick(t),e.onHide&&e.onHide(t)};r.useMountEffect((function(){u()})),r.useUpdateEffect((function(){e.parentActive||l(null),!e.root&&e.parentActive&&c()}),[e.parentActive]);var g=function(e){return s.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},O=function(t){return t.items?s.createElement(E,{menuProps:e.menuProps,model:t.items,onLeafClick:h,popup:e.popup,onKeyDown:d,parentActive:t===n}):null},D=function(t,r){if(!1===t.visible)return null;var l=t.style,o=t.disabled,u=t.icon,c=t.label,d=t.items,v=t.target,b=t.url,h=t.template,y=c+"_"+r,g=n===t,E=a.classNames("p-menuitem",{"p-menuitem-active":g},t.className),D=a.classNames("p-menuitem-link",{"p-disabled":o}),w=a.classNames("p-menuitem-icon",u),N="p-submenu-icon pi pi-angle-right",S=a.IconUtils.getJSXIcon(u,{className:"p-menuitem-icon"},{props:e.menuProps}),x=c&&s.createElement("span",{className:"p-menuitem-text"},c),H=d&&s.createElement("span",{className:N}),P=O(t),j=s.createElement("a",{href:b||"#",className:D,target:v,role:"menuitem","aria-haspopup":null!=d,onClick:function(e){return m(e,t)},onKeyDown:function(e){return f(e,t)},"aria-disabled":o},S,x,H,s.createElement(i.Ripple,null));h&&(j=a.ObjectUtils.getJSXElement(h,t,{onClick:function(e){return m(e,t)},onKeyDown:function(e){return f(e,t)},className:D,labelClassName:"p-menuitem-text",iconClassName:w,submenuIconClassName:N,element:j,props:e,active:g,disabled:o}));return s.createElement("li",{key:y,id:t,className:E,style:l,onMouseEnter:function(e){return p(e,t)},role:"none"},j,P)},w=function(e,t){return e.separator?g(t):D(e,t)},N=a.classNames({"p-submenu-list":!e.root}),S=e.model?e.model.map(w):null;return s.createElement("ul",{ref:o,className:N,role:e.root?"menubar":"menu","aria-orientation":"horizontal"},S)}));E.displayName="TieredMenuSub";var O=s.memo(s.forwardRef((function(e,t){var i=g.getProps(e),u=y(s.useState(!i.popup),2),c=u[0],f=u[1],d=s.useRef(null),v=s.useRef(null),b=y(r.useOverlayListener({target:v,overlay:d,listener:function(e,t){t.valid&&S(e)},when:c}),2),h=b[0],O=b[1],D=function(e){i.popup&&l.OverlayService.emit("overlay-click",{originalEvent:e,target:v.current})},w=function(e){i.popup&&(c?S(e):N(e))},N=function(e){v.current=e.currentTarget,f(!0),i.onShow&&i.onShow(e)},S=function(e){i.popup&&(v.current=e.currentTarget,f(!1),i.onHide&&i.onHide(e))},x=function(){i.autoZIndex&&a.ZIndexUtils.set("menu",d.current,p.default.autoZIndex,i.baseZIndex||p.default.zIndex.menu),a.DomHandler.absolutePosition(d.current,v.current)},H=function(){h()},P=function(){v.current=null,O()},j=function(){a.ZIndexUtils.clear(d.current)};r.useUnmountEffect((function(){a.ZIndexUtils.clear(d.current)})),s.useImperativeHandle(t,(function(){return{props:i,toggle:w,show:N,hide:S,getElement:function(){return d.current}}}));var I,C,k=(I=g.getOtherProps(i),C=a.classNames("p-tieredmenu p-component",{"p-tieredmenu-overlay":i.popup,"p-input-filled":"filled"===p.default.inputStyle,"p-ripple-disabled":!1===p.default.ripple},i.className),s.createElement(n.CSSTransition,{nodeRef:d,classNames:"p-connected-overlay",in:c,timeout:{enter:120,exit:100},options:i.transitionOptions,unmountOnExit:!0,onEnter:x,onEntered:H,onExit:P,onExited:j},s.createElement("div",m({ref:d,id:i.id,className:C,style:i.style},I,{onClick:D}),s.createElement(E,{menuProps:i,model:i.model,root:!0,popup:i.popup,onHide:S}))));return i.popup?s.createElement(o.Portal,{element:k,appendTo:i.appendTo}):k})));O.displayName="TieredMenu",exports.TieredMenu=O;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),t=require("primereact/csstransition"),r=require("primereact/hooks"),o=require("primereact/overlayservice"),i=require("primereact/portal"),l=require("primereact/utils"),a=require("primereact/ripple");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var s=c(e),p=u(n);function m(){return m=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},m.apply(this,arguments)}function d(e){if(Array.isArray(e))return e}function f(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,i,l,a=[],u=!0,c=!1;try{if(i=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;u=!1}else for(;!(u=(r=i.call(t)).done)&&(a.push(r.value),a.length!==n);u=!0);}catch(e){c=!0,o=e}finally{try{if(!u&&null!=t.return&&(l=t.return(),Object(l)!==l))return}finally{if(c)throw o}}return a}}function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function v(e,n){if(e){if("string"==typeof e)return b(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?b(e,n):void 0}}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,n){return d(e)||f(e,n)||v(e,n)||g()}var y={defaultProps:{__TYPE:"TieredMenu",id:null,model:null,popup:!1,style:null,className:null,autoZIndex:!0,baseZIndex:0,breakpoint:void 0,scrollHeight:"400px",appendTo:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return l.ObjectUtils.getMergedProps(e,y.defaultProps)},getOtherProps:function(e){return l.ObjectUtils.getDiffProps(e,y.defaultProps)}},E=s.memo((function(e){var n=h(s.useState(null),2),t=n[0],o=n[1],i=s.useRef(null),u=h(r.useEventListener({type:"click",listener:function(n){e.isMobileMode||!i.current||i.current.contains(n.target)||o(null)}}),1)[0],c=h(r.useResizeListener({listener:function(){!e.isMobileMode&&o(null)}}),1)[0],p=function(){if(i.current){var e=i.current.parentElement,n=l.DomHandler.getOffset(e),t=l.DomHandler.getViewport(),r=i.current.offsetParent?i.current.offsetWidth:l.DomHandler.getHiddenElementOuterWidth(i.current),o=l.DomHandler.getOuterWidth(e.children[0]),a=parseInt(n.top,10)+i.current.offsetHeight-l.DomHandler.getWindowScrollTop();i.current.style.top=a>t.height?t.height-a+"px":"0px",parseInt(n.left,10)+o+r>t.width-l.DomHandler.calculateScrollbarWidth()&&l.DomHandler.addClass(i.current,"p-submenu-list-flipped")}},m=function(n,r){r.disabled||e.isMobileMode?n.preventDefault():e.root?(t||e.popup)&&o(r):o(r)},d=function(n,r){r.disabled?n.preventDefault():(r.url||n.preventDefault(),r.command&&r.command({originalEvent:n,item:r}),(e.root||e.isMobileMode)&&r.items&&o(t&&r===t?null:r),r.items||y(n))},f=function(n,t){var r=n.currentTarget.parentElement;switch(n.which){case 40:var i=v(r);i&&i.children[0].focus(),n.preventDefault();break;case 38:var l=g(r);l&&l.children[0].focus(),n.preventDefault();break;case 39:t.items&&(o(t),setTimeout((function(){r.children[1].children[0].children[0].focus()}),50)),n.preventDefault()}e.onKeyDown&&e.onKeyDown(n,r)},b=function(e,n){37===e.which&&(o(null),n.parentElement.previousElementSibling.focus())},v=function e(n){var t=n.nextElementSibling;return t?l.DomHandler.hasClass(t,"p-disabled")||!l.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},g=function e(n){var t=n.previousElementSibling;return t?l.DomHandler.hasClass(t,"p-disabled")||!l.DomHandler.hasClass(t,"p-menuitem")?e(t):t:null},y=function(n){e.isMobileMode&&!e.popup||(o(null),e.onLeafClick&&e.onLeafClick(n),e.onHide&&e.onHide(n))};r.useMountEffect((function(){u(),c()})),r.useUpdateEffect((function(){e.parentActive||o(null),e.root||!e.parentActive||e.isMobileMode||p()}),[e.parentActive]),r.useUpdateEffect((function(){e.onItemToggle&&e.onItemToggle()}),[t]);var M=function(e){return s.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},w=function(n){return n.items?s.createElement(E,{menuProps:e.menuProps,model:n.items,onLeafClick:y,popup:e.popup,onKeyDown:b,parentActive:n===t,isMobileMode:e.isMobileMode,onItemToggle:e.onItemToggle}):null},D=function(n,r){if(!1===n.visible)return null;var o=n.style,i=n.disabled,u=n.icon,c=n.label,p=n.items,b=n.target,v=n.url,g=n.template,h=c+"_"+r,y=t===n,E=l.classNames("p-menuitem",{"p-menuitem-active":y},n.className),M=l.classNames("p-menuitem-link",{"p-disabled":i}),D=l.classNames("p-menuitem-icon",u),H="p-submenu-icon pi pi-angle-right",O=l.IconUtils.getJSXIcon(u,{className:"p-menuitem-icon"},{props:e.menuProps}),x=c&&s.createElement("span",{className:"p-menuitem-text"},c),I=p&&s.createElement("span",{className:H}),S=w(n),k=s.createElement("a",{href:v||"#",className:M,target:b,role:"menuitem","aria-haspopup":null!=p,onClick:function(e){return d(e,n)},onKeyDown:function(e){return f(e,n)},"aria-disabled":i},O,x,I,s.createElement(a.Ripple,null));g&&(k=l.ObjectUtils.getJSXElement(g,n,{onClick:function(e){return d(e,n)},onKeyDown:function(e){return f(e,n)},className:M,labelClassName:"p-menuitem-text",iconClassName:D,submenuIconClassName:H,element:k,props:e,active:y,disabled:i}));return s.createElement("li",{key:h,id:n,className:E,style:o,onMouseEnter:function(e){return m(e,n)},role:"none"},k,S)},H=function(e,n){return e.separator?M(n):D(e,n)},O=l.classNames({"p-submenu-list":!e.root}),x=e.model?e.model.map(H):null;return s.createElement("ul",{ref:i,className:O,role:e.root?"menubar":"menu","aria-orientation":"horizontal"},x)}));E.displayName="TieredMenuSub";var M=s.memo(s.forwardRef((function(e,n){var a=y.getProps(e),u=h(s.useState(!a.popup),2),c=u[0],d=u[1],f=h(s.useState(null),2),b=f[0],v=f[1],g=s.useRef(null),M=s.useRef(null),w=s.useRef(null),D=r.useMatchMedia("screen and (max-width: ".concat(a.breakpoint,")"),!!a.breakpoint),H=h(r.useOverlayListener({target:M,overlay:g,listener:function(e,n){n.valid&&N(e)},when:c}),2),O=H[0],x=H[1],I=function(e){a.popup&&o.OverlayService.emit("overlay-click",{originalEvent:e,target:M.current})},S=function(e){a.popup&&(c?N(e):k(e))},k=function(e){M.current=e.currentTarget,d(!0),a.onShow&&a.onShow(e)},N=function(e){a.popup&&(M.current=e.currentTarget,d(!1),a.onHide&&a.onHide(e))},P=function(){a.popup&&D&&l.DomHandler.absolutePosition(g.current,M.current)},T=function(){if(!w.current){w.current=l.DomHandler.createInlineStyle(p.default.nonce);var e="".concat(b),n="\n@media screen and (max-width: ".concat(a.breakpoint,") {\n .p-tieredmenu[").concat(e,"] > ul {\n max-height: ").concat(a.scrollHeight,";\n overflow: ").concat(a.scrollHeight?"auto":"",";\n }\n\n .p-tieredmenu[").concat(e,"] .p-submenu-list {\n position: relative;\n }\n\n .p-tieredmenu[").concat(e,"] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-tieredmenu[").concat(e,"] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-tieredmenu[").concat(e,'] .p-submenu-icon:before {\n content: "\\e930";\n }\n\n ').concat(a.popup?"":".p-tieredmenu[".concat(e,"] { width: 100%; }"),"\n}\n");w.current.innerHTML=n}},j=function(){w.current=l.DomHandler.removeInlineStyle(w.current)},C=function(){a.autoZIndex&&l.ZIndexUtils.set("menu",g.current,p.default.autoZIndex,a.baseZIndex||p.default.zIndex.menu),l.DomHandler.absolutePosition(g.current,M.current),b&&a.breakpoint&&(g.current.setAttribute(b,""),T())},U=function(){O()},A=function(){M.current=null,x()},q=function(){l.ZIndexUtils.clear(g.current),j()};r.useMountEffect((function(){a.breakpoint&&!b&&v(l.UniqueComponentId())})),r.useUpdateEffect((function(){return b&&g.current&&(g.current.setAttribute(b,""),T()),function(){j()}}),[b,a.breakpoint]),r.useUnmountEffect((function(){l.ZIndexUtils.clear(g.current)})),s.useImperativeHandle(n,(function(){return{props:a,toggle:S,show:k,hide:N,getElement:function(){return g.current}}}));var R,Z,_=(R=y.getOtherProps(a),Z=l.classNames("p-tieredmenu p-component",{"p-tieredmenu-overlay":a.popup,"p-input-filled":"filled"===p.default.inputStyle,"p-ripple-disabled":!1===p.default.ripple},a.className),s.createElement(t.CSSTransition,{nodeRef:g,classNames:"p-connected-overlay",in:c,timeout:{enter:120,exit:100},options:a.transitionOptions,unmountOnExit:!0,onEnter:C,onEntered:U,onExit:A,onExited:q},s.createElement("div",m({ref:g,id:a.id,className:Z,style:a.style},R,{onClick:I}),s.createElement(E,{menuProps:a,model:a.model,root:!0,popup:a.popup,onHide:N,isMobileMode:D,onItemToggle:P}))));return a.popup?s.createElement(i.Portal,{element:_,appendTo:a.appendTo}):_})));M.displayName="TieredMenu",exports.TieredMenu=M;
@@ -30,6 +30,15 @@ export interface TieredMenuProps extends Omit<React.DetailedHTMLProps<React.HTML
30
30
  * @defaultValue true
31
31
  */
32
32
  autoZIndex?: boolean | undefined;
33
+ /**
34
+ * The breakpoint to define the maximum width boundary when responsiveness is enabled.
35
+ */
36
+ breakpoint?: string | undefined;
37
+ /**
38
+ * Maximum height of the options panel on responsive mode.
39
+ * @defaultValue 400px
40
+ */
41
+ scrollHeight?: string | undefined;
33
42
  /**
34
43
  * Whether to automatically manage layering.
35
44
  * @defaultValue 0
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import PrimeReact from 'primereact/api';
3
3
  import { CSSTransition } from 'primereact/csstransition';
4
- import { useEventListener, useMountEffect, useUpdateEffect, useOverlayListener, useUnmountEffect } from 'primereact/hooks';
4
+ import { useEventListener, useResizeListener, useMountEffect, useUpdateEffect, useMatchMedia, useOverlayListener, useUnmountEffect } from 'primereact/hooks';
5
5
  import { OverlayService } from 'primereact/overlayservice';
6
6
  import { Portal } from 'primereact/portal';
7
- import { ObjectUtils, classNames, DomHandler, IconUtils, ZIndexUtils } from 'primereact/utils';
7
+ import { ObjectUtils, classNames, DomHandler, IconUtils, UniqueComponentId, ZIndexUtils } from 'primereact/utils';
8
8
  import { Ripple } from 'primereact/ripple';
9
9
 
10
10
  function _extends() {
@@ -87,6 +87,8 @@ var TieredMenuBase = {
87
87
  className: null,
88
88
  autoZIndex: true,
89
89
  baseZIndex: 0,
90
+ breakpoint: undefined,
91
+ scrollHeight: '400px',
90
92
  appendTo: null,
91
93
  transitionOptions: null,
92
94
  onShow: null,
@@ -110,13 +112,20 @@ var TieredMenuSub = /*#__PURE__*/React.memo(function (props) {
110
112
  var _useEventListener = useEventListener({
111
113
  type: 'click',
112
114
  listener: function listener(event) {
113
- if (elementRef.current && !elementRef.current.contains(event.target)) {
115
+ if (!props.isMobileMode && elementRef.current && !elementRef.current.contains(event.target)) {
114
116
  setActiveItemState(null);
115
117
  }
116
118
  }
117
119
  }),
118
120
  _useEventListener2 = _slicedToArray(_useEventListener, 1),
119
121
  bindDocumentClickListener = _useEventListener2[0];
122
+ var _useResizeListener = useResizeListener({
123
+ listener: function listener() {
124
+ !props.isMobileMode && setActiveItemState(null);
125
+ }
126
+ }),
127
+ _useResizeListener2 = _slicedToArray(_useResizeListener, 1),
128
+ bindDocumentResizeListener = _useResizeListener2[0];
120
129
  var position = function position() {
121
130
  if (elementRef.current) {
122
131
  var parentItem = elementRef.current.parentElement;
@@ -136,7 +145,7 @@ var TieredMenuSub = /*#__PURE__*/React.memo(function (props) {
136
145
  }
137
146
  };
138
147
  var onItemMouseEnter = function onItemMouseEnter(event, item) {
139
- if (item.disabled) {
148
+ if (item.disabled || props.isMobileMode) {
140
149
  event.preventDefault();
141
150
  return;
142
151
  }
@@ -162,7 +171,7 @@ var TieredMenuSub = /*#__PURE__*/React.memo(function (props) {
162
171
  item: item
163
172
  });
164
173
  }
165
- if (props.root) {
174
+ if (props.root || props.isMobileMode) {
166
175
  if (item.items) {
167
176
  if (activeItemState && item === activeItemState) setActiveItemState(null);else setActiveItemState(item);
168
177
  }
@@ -217,21 +226,27 @@ var TieredMenuSub = /*#__PURE__*/React.memo(function (props) {
217
226
  return prevItem ? DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? findPrevItem(prevItem) : prevItem : null;
218
227
  };
219
228
  var onLeafClick = function onLeafClick(event) {
220
- setActiveItemState(null);
221
- props.onLeafClick && props.onLeafClick(event);
222
- props.onHide && props.onHide(event);
229
+ if (!props.isMobileMode || props.popup) {
230
+ setActiveItemState(null);
231
+ props.onLeafClick && props.onLeafClick(event);
232
+ props.onHide && props.onHide(event);
233
+ }
223
234
  };
224
235
  useMountEffect(function () {
225
236
  bindDocumentClickListener();
237
+ bindDocumentResizeListener();
226
238
  });
227
239
  useUpdateEffect(function () {
228
240
  if (!props.parentActive) {
229
241
  setActiveItemState(null);
230
242
  }
231
- if (!props.root && props.parentActive) {
243
+ if (!props.root && props.parentActive && !props.isMobileMode) {
232
244
  position();
233
245
  }
234
246
  }, [props.parentActive]);
247
+ useUpdateEffect(function () {
248
+ props.onItemToggle && props.onItemToggle();
249
+ }, [activeItemState]);
235
250
  var createSeparator = function createSeparator(index) {
236
251
  var key = 'separator_' + index;
237
252
  return /*#__PURE__*/React.createElement("li", {
@@ -248,7 +263,9 @@ var TieredMenuSub = /*#__PURE__*/React.memo(function (props) {
248
263
  onLeafClick: onLeafClick,
249
264
  popup: props.popup,
250
265
  onKeyDown: onChildItemKeyDown,
251
- parentActive: item === activeItemState
266
+ parentActive: item === activeItemState,
267
+ isMobileMode: props.isMobileMode,
268
+ onItemToggle: props.onItemToggle
252
269
  });
253
270
  }
254
271
  return null;
@@ -358,8 +375,14 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
358
375
  _React$useState2 = _slicedToArray(_React$useState, 2),
359
376
  visibleState = _React$useState2[0],
360
377
  setVisibleState = _React$useState2[1];
378
+ var _React$useState3 = React.useState(null),
379
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
380
+ attributeSelectorState = _React$useState4[0],
381
+ setAttributeSelectorState = _React$useState4[1];
361
382
  var menuRef = React.useRef(null);
362
383
  var targetRef = React.useRef(null);
384
+ var styleElementRef = React.useRef(null);
385
+ var isMobileMode = useMatchMedia("screen and (max-width: ".concat(props.breakpoint, ")"), !!props.breakpoint);
363
386
  var _useOverlayListener = useOverlayListener({
364
387
  target: targetRef,
365
388
  overlay: menuRef,
@@ -397,11 +420,31 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
397
420
  props.onHide && props.onHide(event);
398
421
  }
399
422
  };
423
+ var onItemToggle = function onItemToggle() {
424
+ if (props.popup && isMobileMode) {
425
+ DomHandler.absolutePosition(menuRef.current, targetRef.current);
426
+ }
427
+ };
428
+ var createStyle = function createStyle() {
429
+ if (!styleElementRef.current) {
430
+ styleElementRef.current = DomHandler.createInlineStyle(PrimeReact.nonce);
431
+ var selector = "".concat(attributeSelectorState);
432
+ var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n .p-tieredmenu[").concat(selector, "] > ul {\n max-height: ").concat(props.scrollHeight, ";\n overflow: ").concat(props.scrollHeight ? 'auto' : '', ";\n }\n\n .p-tieredmenu[").concat(selector, "] .p-submenu-list {\n position: relative;\n }\n\n .p-tieredmenu[").concat(selector, "] .p-menuitem-active > .p-submenu-list {\n left: 0 !important;\n box-shadow: none;\n border-radius: 0;\n padding: 0 0 0 calc(var(--inline-spacing) * 2); /* @todo */\n }\n\n .p-tieredmenu[").concat(selector, "] .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {\n transform: rotate(-180deg);\n }\n\n .p-tieredmenu[").concat(selector, "] .p-submenu-icon:before {\n content: \"\\e930\";\n }\n\n ").concat(!props.popup ? ".p-tieredmenu[".concat(selector, "] { width: 100%; }") : '', "\n}\n");
433
+ styleElementRef.current.innerHTML = innerHTML;
434
+ }
435
+ };
436
+ var destroyStyle = function destroyStyle() {
437
+ styleElementRef.current = DomHandler.removeInlineStyle(styleElementRef.current);
438
+ };
400
439
  var onEnter = function onEnter() {
401
440
  if (props.autoZIndex) {
402
441
  ZIndexUtils.set('menu', menuRef.current, PrimeReact.autoZIndex, props.baseZIndex || PrimeReact.zIndex['menu']);
403
442
  }
404
443
  DomHandler.absolutePosition(menuRef.current, targetRef.current);
444
+ if (attributeSelectorState && props.breakpoint) {
445
+ menuRef.current.setAttribute(attributeSelectorState, '');
446
+ createStyle();
447
+ }
405
448
  };
406
449
  var onEntered = function onEntered() {
407
450
  bindOverlayListener();
@@ -412,7 +455,22 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
412
455
  };
413
456
  var onExited = function onExited() {
414
457
  ZIndexUtils.clear(menuRef.current);
458
+ destroyStyle();
415
459
  };
460
+ useMountEffect(function () {
461
+ if (props.breakpoint) {
462
+ !attributeSelectorState && setAttributeSelectorState(UniqueComponentId());
463
+ }
464
+ });
465
+ useUpdateEffect(function () {
466
+ if (attributeSelectorState && menuRef.current) {
467
+ menuRef.current.setAttribute(attributeSelectorState, '');
468
+ createStyle();
469
+ }
470
+ return function () {
471
+ destroyStyle();
472
+ };
473
+ }, [attributeSelectorState, props.breakpoint]);
416
474
  useUnmountEffect(function () {
417
475
  ZIndexUtils.clear(menuRef.current);
418
476
  });
@@ -460,7 +518,9 @@ var TieredMenu = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
460
518
  model: props.model,
461
519
  root: true,
462
520
  popup: props.popup,
463
- onHide: hide
521
+ onHide: hide,
522
+ isMobileMode: isMobileMode,
523
+ onItemToggle: onItemToggle
464
524
  })));
465
525
  };
466
526
  var element = createElement();