@nova-design-system/nova-webcomponents 3.25.0 → 3.27.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 (402) hide show
  1. package/dist/cjs/i18n.utils-BbKpUgYq.js +77 -0
  2. package/dist/cjs/{index-BQjqJTJB.js → index-Cfkoz1kc.js} +5 -1
  3. package/dist/cjs/index.cjs.js +54 -2
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/native.cjs.js +2 -2
  6. package/dist/cjs/nv-accordion-item.cjs.entry.js +1 -1
  7. package/dist/cjs/nv-accordion.cjs.entry.js +1 -1
  8. package/dist/cjs/nv-alert.cjs.entry.js +1 -1
  9. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  10. package/dist/cjs/nv-badge_2.cjs.entry.js +6 -4
  11. package/dist/cjs/nv-breadcrumb.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +2 -2
  13. package/dist/cjs/nv-button.cjs.entry.js +2 -2
  14. package/dist/cjs/nv-buttongroup.cjs.entry.js +3 -3
  15. package/dist/cjs/nv-calendar.cjs.entry.js +3 -12
  16. package/dist/cjs/nv-col.cjs.entry.js +2 -2
  17. package/dist/cjs/nv-datagrid.cjs.entry.js +3 -3
  18. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +2 -2
  19. package/dist/cjs/nv-dialog.cjs.entry.js +16 -3
  20. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +3 -3
  21. package/dist/cjs/nv-drawer.cjs.entry.js +2 -2
  22. package/dist/cjs/nv-drawerfooter_2.cjs.entry.js +3 -3
  23. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +6 -6
  24. package/dist/cjs/nv-fielddate.cjs.entry.js +7 -7
  25. package/dist/cjs/nv-fielddaterange.cjs.entry.js +7 -8
  26. package/dist/cjs/nv-fielddropdown.cjs.entry.js +20 -19
  27. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +16 -15
  29. package/dist/cjs/nv-fieldnumber.cjs.entry.js +5 -5
  30. package/dist/cjs/nv-fieldpassword.cjs.entry.js +5 -5
  31. package/dist/cjs/nv-fieldradio.cjs.entry.js +5 -5
  32. package/dist/cjs/nv-fieldselect.cjs.entry.js +6 -6
  33. package/dist/cjs/nv-fieldslider.cjs.entry.js +4 -4
  34. package/dist/cjs/nv-fieldtext.cjs.entry.js +5 -5
  35. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +31 -29
  36. package/dist/cjs/nv-fieldtime.cjs.entry.js +4 -4
  37. package/dist/cjs/nv-icon.cjs.entry.js +3 -3
  38. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +3 -3
  39. package/dist/cjs/nv-menu.cjs.entry.js +2 -2
  40. package/dist/cjs/nv-menuitem.cjs.entry.js +2 -2
  41. package/dist/cjs/nv-notification-bullet.cjs.entry.js +1 -1
  42. package/dist/cjs/nv-notification.cjs.entry.js +2 -2
  43. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +2 -2
  44. package/dist/cjs/nv-pagination-nav.cjs.entry.js +198 -0
  45. package/dist/cjs/nv-paginationtable.cjs.entry.js +2 -2
  46. package/dist/cjs/nv-popover.cjs.entry.js +2 -2
  47. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  48. package/dist/cjs/nv-sidebar.cjs.entry.js +2 -2
  49. package/dist/cjs/nv-sidebarcontent.cjs.entry.js +2 -2
  50. package/dist/cjs/nv-sidebardivider.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-sidebarfooter.cjs.entry.js +2 -2
  52. package/dist/cjs/nv-sidebargroup.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-sidebarheader.cjs.entry.js +2 -2
  54. package/dist/cjs/nv-sidebarlogo.cjs.entry.js +2 -2
  55. package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +12 -5
  56. package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +2 -2
  57. package/dist/cjs/nv-split.cjs.entry.js +2 -2
  58. package/dist/cjs/nv-stack.cjs.entry.js +2 -2
  59. package/dist/cjs/nv-table.cjs.entry.js +4 -2
  60. package/dist/cjs/nv-tableheader.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-toggle.cjs.entry.js +4 -4
  62. package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
  63. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +2 -2
  64. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -3
  65. package/dist/cjs/{i18n.utils-ku0bScip.js → worker-client-ByL3TenE.js} +35 -75
  66. package/dist/collection/collection-manifest.json +1 -0
  67. package/dist/collection/components/nv-badge/nv-badge.css +4 -1
  68. package/dist/collection/components/nv-badge/nv-badge.js +3 -1
  69. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  70. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  71. package/dist/collection/components/nv-button/nv-button.js +1 -1
  72. package/dist/collection/components/nv-buttongroup/nv-buttongroup.js +1 -1
  73. package/dist/collection/components/nv-buttongroup/styles/nv-buttongroup.css +4 -4
  74. package/dist/collection/components/nv-calendar/nv-calendar.js +2 -11
  75. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +0 -1
  76. package/dist/collection/components/nv-col/nv-col.js +1 -1
  77. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  78. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  79. package/dist/collection/components/nv-dialog/nv-dialog.js +15 -2
  80. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  81. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  82. package/dist/collection/components/nv-drawer/nv-drawer.js +1 -1
  83. package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js +1 -1
  84. package/dist/collection/components/nv-drawerheader/nv-drawerheader.js +1 -1
  85. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.css +9 -0
  86. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  87. package/dist/collection/components/nv-fielddate/nv-fielddate.js +6 -6
  88. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +6 -7
  89. package/dist/collection/components/nv-fielddaterange/test/nv-fielddaterange.logic.test.js +0 -1
  90. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +4 -4
  91. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  92. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  93. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +4 -4
  94. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +4 -4
  95. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  96. package/dist/collection/components/nv-fieldradio/styles/nv-fieldradio.css +20 -0
  97. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  98. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  99. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +4 -4
  100. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +14 -0
  101. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +50 -29
  102. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +3 -4
  103. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  104. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  105. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  106. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  107. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  108. package/dist/collection/components/nv-notification/nv-notification.js +1 -1
  109. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
  110. package/dist/collection/components/nv-pagination-nav/nv-pagination-nav.css +37 -0
  111. package/dist/collection/components/nv-pagination-nav/nv-pagination-nav.docs.js +278 -0
  112. package/dist/collection/components/nv-pagination-nav/nv-pagination-nav.js +359 -0
  113. package/dist/collection/components/nv-pagination-nav/nv-pagination-nav.utils.js +70 -0
  114. package/dist/collection/components/nv-pagination-nav/test/nv-pagination-nav.utils.test.js +66 -0
  115. package/dist/collection/components/nv-paginationtable/nv-paginationtable.js +1 -1
  116. package/dist/collection/components/nv-paginationtable/test/nv-paginationtable.utils.test.js +0 -1
  117. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  118. package/dist/collection/components/nv-row/nv-row.js +1 -1
  119. package/dist/collection/components/nv-sidebar/nv-sidebar.js +1 -1
  120. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +1 -1
  121. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +1 -1
  122. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +1 -1
  123. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +1 -1
  124. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +1 -1
  125. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +3 -1
  126. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +11 -4
  127. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +1 -1
  128. package/dist/collection/components/nv-split/nv-split.js +1 -1
  129. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  130. package/dist/collection/components/nv-table/nv-table.js +1 -2
  131. package/dist/collection/components/nv-table/nv-table.utils.js +2 -0
  132. package/dist/collection/components/nv-table/test/nv-table.utils.test.js +0 -1
  133. package/dist/collection/components/nv-tableheader/nv-tableheader.js +1 -1
  134. package/dist/collection/components/nv-toggle/nv-toggle.css +26 -0
  135. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  136. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  137. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -1
  138. package/dist/collection/components/nv-tooltip/nv-tooltip.css +7 -0
  139. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  140. package/dist/collection/index.js +2 -0
  141. package/dist/collection/utils/test/class.utils.test.js +0 -1
  142. package/dist/collection/utils/test/dom.utils.test.js +0 -1
  143. package/dist/components/_.entry.js +1 -0
  144. package/dist/components/index.js +1 -1
  145. package/dist/components/nv-accordion-item.js +1 -1
  146. package/dist/components/nv-accordion.js +1 -1
  147. package/dist/components/nv-alert.js +1 -1
  148. package/dist/components/nv-avatar.js +1 -1
  149. package/dist/components/nv-badge.js +1 -1
  150. package/dist/components/nv-breadcrumb.js +1 -1
  151. package/dist/components/nv-breadcrumbs.js +1 -1
  152. package/dist/components/nv-button.js +1 -1
  153. package/dist/components/nv-buttongroup.js +1 -1
  154. package/dist/components/nv-calendar.js +1 -1
  155. package/dist/components/nv-col.js +1 -1
  156. package/dist/components/nv-datagrid.js +1 -1
  157. package/dist/components/nv-datagridcolumn.js +1 -1
  158. package/dist/components/nv-dialog.js +1 -1
  159. package/dist/components/nv-dialogfooter.js +1 -1
  160. package/dist/components/nv-dialogheader.js +1 -1
  161. package/dist/components/nv-drawer.js +1 -1
  162. package/dist/components/nv-drawerfooter.js +1 -1
  163. package/dist/components/nv-drawerheader.js +1 -1
  164. package/dist/components/nv-fieldcheckbox.js +1 -1
  165. package/dist/components/nv-fielddate.js +1 -1
  166. package/dist/components/nv-fielddaterange.js +1 -1
  167. package/dist/components/nv-fielddropdown.js +1 -1
  168. package/dist/components/nv-fielddropdownitem.js +1 -1
  169. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  170. package/dist/components/nv-fieldmultiselect.js +1 -1
  171. package/dist/components/nv-fieldnumber.js +1 -1
  172. package/dist/components/nv-fieldpassword.js +1 -1
  173. package/dist/components/nv-fieldradio.js +1 -1
  174. package/dist/components/nv-fieldselect.js +1 -1
  175. package/dist/components/nv-fieldslider.js +1 -1
  176. package/dist/components/nv-fieldtext.js +1 -1
  177. package/dist/components/nv-fieldtextarea.js +1 -1
  178. package/dist/components/nv-fieldtime.js +1 -1
  179. package/dist/components/nv-icon.js +1 -1
  180. package/dist/components/nv-iconbutton.js +1 -1
  181. package/dist/components/nv-loader.js +1 -1
  182. package/dist/components/nv-menu.js +1 -1
  183. package/dist/components/nv-menuitem.js +1 -1
  184. package/dist/components/nv-notification-bullet.js +1 -1
  185. package/dist/components/nv-notification.js +1 -1
  186. package/dist/components/nv-notificationcontainer.js +1 -1
  187. package/dist/components/nv-pagination-nav.d.ts +11 -0
  188. package/dist/components/nv-pagination-nav.js +1 -0
  189. package/dist/components/nv-paginationtable.js +1 -1
  190. package/dist/components/nv-popover.js +1 -1
  191. package/dist/components/nv-row.js +1 -1
  192. package/dist/components/nv-sidebar.js +1 -1
  193. package/dist/components/nv-sidebarcontent.js +1 -1
  194. package/dist/components/nv-sidebardivider.js +1 -1
  195. package/dist/components/nv-sidebarfooter.js +1 -1
  196. package/dist/components/nv-sidebargroup.js +1 -1
  197. package/dist/components/nv-sidebarheader.js +1 -1
  198. package/dist/components/nv-sidebarlogo.js +1 -1
  199. package/dist/components/nv-sidebarnavitem.js +1 -1
  200. package/dist/components/nv-sidebarnavsubitem.js +1 -1
  201. package/dist/components/nv-split.js +1 -1
  202. package/dist/components/nv-stack.js +1 -1
  203. package/dist/components/nv-table.js +1 -1
  204. package/dist/components/nv-tableheader.js +1 -1
  205. package/dist/components/nv-toggle.js +1 -1
  206. package/dist/components/nv-togglebutton.js +1 -1
  207. package/dist/components/nv-togglebuttongroup.js +1 -1
  208. package/dist/components/nv-tooltip.js +1 -1
  209. package/dist/components/{p-iXsbKJzR.js → p-6nAIGZFL.js} +1 -1
  210. package/dist/components/{p-CPjfMClF.js → p-BBy1Mdgv.js} +1 -1
  211. package/dist/components/{p-Cfr9uriB.js → p-BMpkyzCW.js} +1 -1
  212. package/dist/components/{p-Cq5FI49y.js → p-Ba1zVklG.js} +1 -1
  213. package/dist/components/p-BaF3Tuua.js +1 -0
  214. package/dist/components/{p-mWVXEsBF.js → p-BvxuoODv.js} +1 -1
  215. package/dist/components/{p-yHGZRC6Q.js → p-BwYt1BAb.js} +1 -1
  216. package/dist/components/{p-C_a7VT_H.js → p-CAGzfU3O.js} +1 -1
  217. package/dist/components/p-CR9MpYzU.js +1 -0
  218. package/dist/components/{p-Bg-b6OWh.js → p-CV12ukSl.js} +1 -1
  219. package/dist/components/{p-BJSrJH9I.js → p-CZkFkVd8.js} +1 -1
  220. package/dist/components/p-CcmfuwSa.js +1 -0
  221. package/dist/components/p-CqJqzGJS.js +1 -0
  222. package/dist/components/{p-Nf-dwTsx.js → p-D-MnI-R8.js} +1 -1
  223. package/dist/components/{p-D7xBylwr.js → p-D0bGRzSN.js} +1 -1
  224. package/dist/components/p-DC_2597n.js +1 -0
  225. package/dist/components/{p-C6LzzMQm.js → p-Db4JZxyy.js} +1 -1
  226. package/dist/components/{p-Cw5yG8cD.js → p-DlOgBZa8.js} +2 -2
  227. package/dist/components/{p-BkqfOhkU.js → p-DrgqO3gF.js} +1 -1
  228. package/dist/components/{p-C-MlXMFg.js → p-Ho_7-x5W.js} +1 -1
  229. package/dist/components/{p-D_JRZMC-.js → p-IzPWk8zx.js} +1 -1
  230. package/dist/components/{p-DkC2jlrw.js → p-S18SgvAW.js} +1 -1
  231. package/dist/components/{p-tJDdN0lo.js → p-T-bBxAoT.js} +1 -1
  232. package/dist/components/{p-CskCUxuV.js → p-kMTGXpRx.js} +1 -1
  233. package/dist/components/p-uAXqRBhx.js +1 -0
  234. package/dist/esm/i18n.utils-CR9MpYzU.js +74 -0
  235. package/dist/esm/{index-S-IZ4AN_.js → index-BCjiE1MF.js} +5 -1
  236. package/dist/esm/index.js +53 -2
  237. package/dist/esm/loader.js +3 -3
  238. package/dist/esm/native.js +3 -3
  239. package/dist/esm/nv-accordion-item.entry.js +1 -1
  240. package/dist/esm/nv-accordion.entry.js +1 -1
  241. package/dist/esm/nv-alert.entry.js +1 -1
  242. package/dist/esm/nv-avatar.entry.js +1 -1
  243. package/dist/esm/nv-badge_2.entry.js +6 -4
  244. package/dist/esm/nv-breadcrumb.entry.js +2 -2
  245. package/dist/esm/nv-breadcrumbs.entry.js +2 -2
  246. package/dist/esm/nv-button.entry.js +2 -2
  247. package/dist/esm/nv-buttongroup.entry.js +3 -3
  248. package/dist/esm/nv-calendar.entry.js +3 -12
  249. package/dist/esm/nv-col.entry.js +2 -2
  250. package/dist/esm/nv-datagrid.entry.js +3 -3
  251. package/dist/esm/nv-datagridcolumn.entry.js +2 -2
  252. package/dist/esm/nv-dialog.entry.js +16 -3
  253. package/dist/esm/nv-dialogfooter_2.entry.js +3 -3
  254. package/dist/esm/nv-drawer.entry.js +2 -2
  255. package/dist/esm/nv-drawerfooter_2.entry.js +3 -3
  256. package/dist/esm/nv-fieldcheckbox.entry.js +6 -6
  257. package/dist/esm/nv-fielddate.entry.js +7 -7
  258. package/dist/esm/nv-fielddaterange.entry.js +7 -8
  259. package/dist/esm/nv-fielddropdown.entry.js +7 -6
  260. package/dist/esm/nv-fielddropdownitem.entry.js +2 -2
  261. package/dist/esm/nv-fieldmultiselect.entry.js +3 -2
  262. package/dist/esm/nv-fieldnumber.entry.js +5 -5
  263. package/dist/esm/nv-fieldpassword.entry.js +5 -5
  264. package/dist/esm/nv-fieldradio.entry.js +5 -5
  265. package/dist/esm/nv-fieldselect.entry.js +6 -6
  266. package/dist/esm/nv-fieldslider.entry.js +4 -4
  267. package/dist/esm/nv-fieldtext.entry.js +5 -5
  268. package/dist/esm/nv-fieldtextarea.entry.js +31 -29
  269. package/dist/esm/nv-fieldtime.entry.js +4 -4
  270. package/dist/esm/nv-icon.entry.js +3 -3
  271. package/dist/esm/nv-iconbutton_2.entry.js +3 -3
  272. package/dist/esm/nv-menu.entry.js +2 -2
  273. package/dist/esm/nv-menuitem.entry.js +2 -2
  274. package/dist/esm/nv-notification-bullet.entry.js +1 -1
  275. package/dist/esm/nv-notification.entry.js +2 -2
  276. package/dist/esm/nv-notificationcontainer.entry.js +2 -2
  277. package/dist/esm/nv-pagination-nav.entry.js +196 -0
  278. package/dist/esm/nv-paginationtable.entry.js +2 -2
  279. package/dist/esm/nv-popover.entry.js +2 -2
  280. package/dist/esm/nv-row.entry.js +2 -2
  281. package/dist/esm/nv-sidebar.entry.js +2 -2
  282. package/dist/esm/nv-sidebarcontent.entry.js +2 -2
  283. package/dist/esm/nv-sidebardivider.entry.js +2 -2
  284. package/dist/esm/nv-sidebarfooter.entry.js +2 -2
  285. package/dist/esm/nv-sidebargroup.entry.js +2 -2
  286. package/dist/esm/nv-sidebarheader.entry.js +2 -2
  287. package/dist/esm/nv-sidebarlogo.entry.js +2 -2
  288. package/dist/esm/nv-sidebarnavitem.entry.js +12 -5
  289. package/dist/esm/nv-sidebarnavsubitem.entry.js +2 -2
  290. package/dist/esm/nv-split.entry.js +2 -2
  291. package/dist/esm/nv-stack.entry.js +2 -2
  292. package/dist/esm/nv-table.entry.js +4 -2
  293. package/dist/esm/nv-tableheader.entry.js +2 -2
  294. package/dist/esm/nv-toggle.entry.js +4 -4
  295. package/dist/esm/nv-togglebutton.entry.js +2 -2
  296. package/dist/esm/nv-togglebuttongroup.entry.js +2 -2
  297. package/dist/esm/nv-tooltip.entry.js +3 -3
  298. package/dist/esm/{i18n.utils-IlwlcG9l.js → worker-client-BaF3Tuua.js} +20 -74
  299. package/dist/lib/scripts/nextjs-entry-shim.js +25 -0
  300. package/dist/native/index.esm.js +1 -1
  301. package/dist/native/native.css +1 -1
  302. package/dist/native/native.esm.js +1 -1
  303. package/dist/native/{p-4016851b.entry.js → p-03cc1f2c.entry.js} +1 -1
  304. package/dist/native/{p-1bf1a213.entry.js → p-0fe84123.entry.js} +1 -1
  305. package/dist/native/{p-29f0730f.entry.js → p-148c1d3e.entry.js} +1 -1
  306. package/dist/native/{p-4c29c4c7.entry.js → p-157c5ac8.entry.js} +1 -1
  307. package/dist/native/p-18bdc07a.entry.js +1 -0
  308. package/dist/native/{p-ff7eae44.entry.js → p-1aea6fe0.entry.js} +1 -1
  309. package/dist/native/p-1c97c353.entry.js +1 -0
  310. package/dist/native/p-1e0ca4df.entry.js +1 -0
  311. package/dist/native/{p-5fb6d986.entry.js → p-1f8cc03a.entry.js} +1 -1
  312. package/dist/native/p-23f0ca96.entry.js +1 -0
  313. package/dist/native/{p-6ba310e8.entry.js → p-24ce0c8d.entry.js} +1 -1
  314. package/dist/native/{p-a813f497.entry.js → p-24f69387.entry.js} +1 -1
  315. package/dist/native/p-25ef7329.entry.js +1 -0
  316. package/dist/native/{p-ad05cef2.entry.js → p-31ba86b3.entry.js} +1 -1
  317. package/dist/native/{p-997a2268.entry.js → p-34e19b6e.entry.js} +1 -1
  318. package/dist/native/{p-70fa3c6b.entry.js → p-39366f18.entry.js} +1 -1
  319. package/dist/native/{p-1b37bf6c.entry.js → p-3a35cf46.entry.js} +1 -1
  320. package/dist/native/p-46267895.entry.js +1 -0
  321. package/dist/native/{p-00b80d2b.entry.js → p-539c04ad.entry.js} +1 -1
  322. package/dist/native/{p-1c86c5b8.entry.js → p-56593bf0.entry.js} +1 -1
  323. package/dist/native/{p-2623b212.entry.js → p-591f3dcc.entry.js} +1 -1
  324. package/dist/native/p-597cac0f.entry.js +1 -0
  325. package/dist/native/{p-32cbc18b.entry.js → p-5a7e46ad.entry.js} +1 -1
  326. package/dist/native/{p-e1021e2c.entry.js → p-5c003e50.entry.js} +1 -1
  327. package/dist/native/p-5ce3d30b.entry.js +1 -0
  328. package/dist/native/p-5f42a7f1.entry.js +1 -0
  329. package/dist/native/{p-3c09e565.entry.js → p-6742f88f.entry.js} +1 -1
  330. package/dist/native/{p-5cbf5973.entry.js → p-67e0680e.entry.js} +1 -1
  331. package/dist/native/p-6f3c3e2a.entry.js +1 -0
  332. package/dist/native/{p-e371a958.entry.js → p-7aac0b1a.entry.js} +1 -1
  333. package/dist/native/{p-99051651.entry.js → p-7d49e88d.entry.js} +1 -1
  334. package/dist/native/{p-df59dee0.entry.js → p-7ec28d5d.entry.js} +1 -1
  335. package/dist/native/p-855f7be1.entry.js +1 -0
  336. package/dist/native/{p-3ac56d5f.entry.js → p-87758615.entry.js} +1 -1
  337. package/dist/native/{p-84202d8a.entry.js → p-8a0dc37b.entry.js} +1 -1
  338. package/dist/native/{p-3bd49efe.entry.js → p-8f76e030.entry.js} +1 -1
  339. package/dist/native/{p-6f368c8d.entry.js → p-90b8b889.entry.js} +1 -1
  340. package/dist/native/p-927b655d.entry.js +1 -0
  341. package/dist/native/{p-98de77f8.entry.js → p-9709c7d5.entry.js} +1 -1
  342. package/dist/native/p-99726dd4.entry.js +1 -0
  343. package/dist/native/{p-6ccea920.entry.js → p-9fda1976.entry.js} +1 -1
  344. package/dist/native/{p-S-IZ4AN_.js → p-BCjiE1MF.js} +1 -1
  345. package/dist/native/p-BaF3Tuua.js +1 -0
  346. package/dist/native/p-CR9MpYzU.js +1 -0
  347. package/dist/native/{p-91f71346.entry.js → p-a16f8a14.entry.js} +1 -1
  348. package/dist/native/{p-0242699e.entry.js → p-a6b3256b.entry.js} +1 -1
  349. package/dist/native/{p-184b4f0d.entry.js → p-b3964a1c.entry.js} +1 -1
  350. package/dist/native/{p-87f35ce1.entry.js → p-bb43a3b4.entry.js} +1 -1
  351. package/dist/native/{p-34cce087.entry.js → p-c0b05d6f.entry.js} +1 -1
  352. package/dist/native/p-c214e4af.entry.js +1 -0
  353. package/dist/native/p-c29dc907.entry.js +1 -0
  354. package/dist/native/{p-b65f3418.entry.js → p-d12a2841.entry.js} +1 -1
  355. package/dist/native/p-d46bd21a.entry.js +1 -0
  356. package/dist/native/{p-ca3b996b.entry.js → p-d6e2e120.entry.js} +1 -1
  357. package/dist/native/p-ddedc9c1.entry.js +1 -0
  358. package/dist/native/{p-a6287e55.entry.js → p-eb8ba7a2.entry.js} +1 -1
  359. package/dist/native/{p-4725d9aa.entry.js → p-ebff7ddb.entry.js} +1 -1
  360. package/dist/native/p-ecce3e66.entry.js +1 -0
  361. package/dist/native/{p-7f3c3c29.entry.js → p-f9612edf.entry.js} +1 -1
  362. package/dist/native/p-f9e4daf7.entry.js +1 -0
  363. package/dist/native/{p-2106dfbd.entry.js → p-fb34fc7d.entry.js} +1 -1
  364. package/dist/native/{p-98ea927d.entry.js → p-fd5e27ae.entry.js} +1 -1
  365. package/dist/types/components/nv-dialog/nv-dialog.d.ts +9 -0
  366. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +9 -1
  367. package/dist/types/components/nv-pagination-nav/nv-pagination-nav.d.ts +82 -0
  368. package/dist/types/components/nv-pagination-nav/nv-pagination-nav.docs.d.ts +4 -0
  369. package/dist/types/components/nv-pagination-nav/nv-pagination-nav.utils.d.ts +26 -0
  370. package/dist/types/components/nv-pagination-nav/test/nv-pagination-nav.utils.test.d.ts +1 -0
  371. package/dist/types/components/nv-sidebarlogo/nv-sidebarlogo.d.ts +2 -0
  372. package/dist/types/components.d.ts +159 -2
  373. package/dist/types/index.d.ts +1 -0
  374. package/dist/types/nova-docs.d.ts +0 -1
  375. package/dist/vscode-data.json +54 -1
  376. package/hydrate/index.js +381 -145
  377. package/hydrate/index.mjs +381 -145
  378. package/package.json +6 -2
  379. package/dist/components/p-BqRuoNHJ.js +0 -1
  380. package/dist/components/p-CGXDiomF.js +0 -1
  381. package/dist/components/p-ChRIFm7p.js +0 -1
  382. package/dist/components/p-IlwlcG9l.js +0 -1
  383. package/dist/components/p-r3_atQ9r.js +0 -1
  384. package/dist/native/p-01d09dfa.entry.js +0 -1
  385. package/dist/native/p-09b88c8d.entry.js +0 -1
  386. package/dist/native/p-1a1a6bbf.entry.js +0 -1
  387. package/dist/native/p-223814fe.entry.js +0 -1
  388. package/dist/native/p-2b7e621a.entry.js +0 -1
  389. package/dist/native/p-38e981f2.entry.js +0 -1
  390. package/dist/native/p-3e949805.entry.js +0 -1
  391. package/dist/native/p-4bda5842.entry.js +0 -1
  392. package/dist/native/p-6a548776.entry.js +0 -1
  393. package/dist/native/p-6e9b95fa.entry.js +0 -1
  394. package/dist/native/p-IlwlcG9l.js +0 -1
  395. package/dist/native/p-a60660f6.entry.js +0 -1
  396. package/dist/native/p-bf8b0be2.entry.js +0 -1
  397. package/dist/native/p-d9c1287c.entry.js +0 -1
  398. package/dist/native/p-d9cebb66.entry.js +0 -1
  399. package/dist/native/p-da417f83.entry.js +0 -1
  400. package/dist/native/p-e5dbacf6.entry.js +0 -1
  401. package/dist/native/p-ed19f3dc.entry.js +0 -1
  402. package/dist/native/p-f1b6d43b.entry.js +0 -1
@@ -0,0 +1,359 @@
1
+ import { Host, h, } from "@stencil/core";
2
+ import { calculatePaginationRange } from "./nv-pagination-nav.utils";
3
+ /**
4
+ * A pagination navigation component that displays page numbers with Previous/Next controls.
5
+ * Use the isOnlyIcon prop to display Previous/Next as icon buttons for compact layouts.
6
+ */
7
+ export class NvPaginationNav {
8
+ constructor() {
9
+ /****************************************************************************/
10
+ //#region PROPERTIES
11
+ /**
12
+ * Label for the previous button.
13
+ */
14
+ this.previousButtonLabel = 'Previous';
15
+ /**
16
+ * Label for the next button.
17
+ */
18
+ this.nextButtonLabel = 'Next';
19
+ /**
20
+ * Number of page buttons to show at the start of the pagination range.
21
+ */
22
+ this.numStartZoneButtons = 2;
23
+ /**
24
+ * Number of page buttons to show at the end of the pagination range.
25
+ */
26
+ this.numEndZoneButtons = 2;
27
+ /**
28
+ * Number of page buttons to show in the middle zone around the current page.
29
+ */
30
+ this.numMiddleButtons = 1;
31
+ /**
32
+ * Current page number (1-based index).
33
+ */
34
+ this.currentPage = 1;
35
+ /**
36
+ * Total number of items to paginate.
37
+ */
38
+ this.totalCount = 100;
39
+ /**
40
+ * Number of items per page.
41
+ */
42
+ this.pageSize = 10;
43
+ /**
44
+ * If true, the Previous/Next navigation buttons will be displayed as icon buttons.
45
+ * Page number buttons always use regular buttons.
46
+ */
47
+ this.isOnlyIcon = false;
48
+ /**
49
+ * If true, shows the middle zone with the current page when it's not in start/end zones.
50
+ * If false (default), only shows one ellipsis between start and end zones (simpler pagination).
51
+ */
52
+ this.showMiddleZone = false;
53
+ /**
54
+ * Handles page change events.
55
+ * @param {number} pageNumber The page number to navigate to.
56
+ */
57
+ this.handlePageChange = (pageNumber) => {
58
+ if (pageNumber < 1 ||
59
+ pageNumber > this.totalPages ||
60
+ pageNumber === this.currentPage) {
61
+ return;
62
+ }
63
+ this.currentPage = pageNumber;
64
+ };
65
+ }
66
+ //#endregion PROPERTIES
67
+ /****************************************************************************/
68
+ //#region METHODS
69
+ /**
70
+ * Calculates the total number of pages based on totalCount and pageSize.
71
+ * @returns {number} The total number of pages.
72
+ */
73
+ get totalPages() {
74
+ return Math.ceil(this.totalCount / this.pageSize);
75
+ }
76
+ //#endregion METHODS
77
+ /****************************************************************************/
78
+ //#region WATCHERS
79
+ /**
80
+ * Watches for changes to currentPage and emits the currentPageChanged event.
81
+ * @param {number} newValue The new current page value.
82
+ */
83
+ onCurrentPageChange(newValue) {
84
+ // Validate and constrain currentPage
85
+ const constrainedValue = Math.max(1, Math.min(newValue, this.totalPages));
86
+ if (constrainedValue !== newValue) {
87
+ this.currentPage = constrainedValue;
88
+ return;
89
+ }
90
+ this.currentPageChanged.emit(newValue);
91
+ }
92
+ //#endregion EVENTS
93
+ /****************************************************************************/
94
+ //#region RENDER
95
+ /**
96
+ * Renders a single page button.
97
+ * @param {number} pageNumber The page number to render.
98
+ * @returns {JSX.Element} The rendered page button element.
99
+ */
100
+ renderPageButton(pageNumber) {
101
+ const isCurrentPage = pageNumber === this.currentPage;
102
+ return (h("li", { key: pageNumber, "data-scope": "page-button" }, h("nv-button", { size: "md", emphasis: "lower", active: isCurrentPage, onClick: () => this.handlePageChange(pageNumber), "data-page": pageNumber, "data-current": isCurrentPage ? 'true' : undefined }, pageNumber)));
103
+ }
104
+ render() {
105
+ const isFirstPage = this.currentPage === 1;
106
+ const isLastPage = this.currentPage === this.totalPages;
107
+ return (h(Host, { key: '536c7d2fd28a365ae3d637f7e67512832ffce284' }, h("nav", { key: 'ad98b2592c2702e9592316e03a0b0119d9da601c', "data-scope": "pagination-nav", "aria-label": "Pagination navigation" }, this.isOnlyIcon ? (h("nv-iconbutton", { name: "chevron-left", size: "md", emphasis: "lower", disabled: isFirstPage, onClick: () => this.handlePageChange(this.currentPage - 1), "data-scope": "previous-iconbutton", "aria-label": this.previousButtonLabel })) : (h("nv-button", { size: "md", emphasis: "lower", disabled: isFirstPage, onClick: () => this.handlePageChange(this.currentPage - 1), "data-scope": "previous-button" }, h("nv-icon", { slot: "leading-icon", name: "chevron-left" }), this.previousButtonLabel)), h("ol", { key: 'd52f16484737c5ea06c8bd1512e367beb4cd35b1', "data-scope": "page-list" }, calculatePaginationRange({
108
+ currentPage: this.currentPage,
109
+ totalCount: this.totalCount,
110
+ pageSize: this.pageSize,
111
+ numStartZoneButtons: this.numStartZoneButtons,
112
+ numEndZoneButtons: this.numEndZoneButtons,
113
+ numMiddleButtons: this.numMiddleButtons,
114
+ showMiddleZone: this.showMiddleZone,
115
+ }).map(item => typeof item === 'number' ? (this.renderPageButton(item)) : (h("li", { key: `ellipsis-${item}`, "data-scope": "ellipsis", "aria-hidden": "true" }, h("span", null, item))))), this.isOnlyIcon ? (h("nv-iconbutton", { name: "chevron-right", size: "md", emphasis: "lower", disabled: isLastPage, onClick: () => this.handlePageChange(this.currentPage + 1), "data-scope": "next-iconbutton", "aria-label": this.nextButtonLabel })) : (h("nv-button", { size: "md", emphasis: "lower", disabled: isLastPage, onClick: () => this.handlePageChange(this.currentPage + 1), "data-scope": "next-button" }, this.nextButtonLabel, h("nv-icon", { slot: "trailing-icon", name: "chevron-right" }))))));
116
+ }
117
+ static get is() { return "nv-pagination-nav"; }
118
+ static get originalStyleUrls() {
119
+ return {
120
+ "$": ["nv-pagination-nav.scss"]
121
+ };
122
+ }
123
+ static get styleUrls() {
124
+ return {
125
+ "$": ["nv-pagination-nav.css"]
126
+ };
127
+ }
128
+ static get properties() {
129
+ return {
130
+ "previousButtonLabel": {
131
+ "type": "string",
132
+ "mutable": false,
133
+ "complexType": {
134
+ "original": "string",
135
+ "resolved": "string",
136
+ "references": {}
137
+ },
138
+ "required": false,
139
+ "optional": false,
140
+ "docs": {
141
+ "tags": [],
142
+ "text": "Label for the previous button."
143
+ },
144
+ "getter": false,
145
+ "setter": false,
146
+ "reflect": true,
147
+ "attribute": "previous-button-label",
148
+ "defaultValue": "'Previous'"
149
+ },
150
+ "nextButtonLabel": {
151
+ "type": "string",
152
+ "mutable": false,
153
+ "complexType": {
154
+ "original": "string",
155
+ "resolved": "string",
156
+ "references": {}
157
+ },
158
+ "required": false,
159
+ "optional": false,
160
+ "docs": {
161
+ "tags": [],
162
+ "text": "Label for the next button."
163
+ },
164
+ "getter": false,
165
+ "setter": false,
166
+ "reflect": true,
167
+ "attribute": "next-button-label",
168
+ "defaultValue": "'Next'"
169
+ },
170
+ "numStartZoneButtons": {
171
+ "type": "number",
172
+ "mutable": false,
173
+ "complexType": {
174
+ "original": "number",
175
+ "resolved": "number",
176
+ "references": {}
177
+ },
178
+ "required": false,
179
+ "optional": false,
180
+ "docs": {
181
+ "tags": [],
182
+ "text": "Number of page buttons to show at the start of the pagination range."
183
+ },
184
+ "getter": false,
185
+ "setter": false,
186
+ "reflect": true,
187
+ "attribute": "num-start-zone-buttons",
188
+ "defaultValue": "2"
189
+ },
190
+ "numEndZoneButtons": {
191
+ "type": "number",
192
+ "mutable": false,
193
+ "complexType": {
194
+ "original": "number",
195
+ "resolved": "number",
196
+ "references": {}
197
+ },
198
+ "required": false,
199
+ "optional": false,
200
+ "docs": {
201
+ "tags": [],
202
+ "text": "Number of page buttons to show at the end of the pagination range."
203
+ },
204
+ "getter": false,
205
+ "setter": false,
206
+ "reflect": true,
207
+ "attribute": "num-end-zone-buttons",
208
+ "defaultValue": "2"
209
+ },
210
+ "numMiddleButtons": {
211
+ "type": "number",
212
+ "mutable": false,
213
+ "complexType": {
214
+ "original": "number",
215
+ "resolved": "number",
216
+ "references": {}
217
+ },
218
+ "required": false,
219
+ "optional": false,
220
+ "docs": {
221
+ "tags": [],
222
+ "text": "Number of page buttons to show in the middle zone around the current page."
223
+ },
224
+ "getter": false,
225
+ "setter": false,
226
+ "reflect": true,
227
+ "attribute": "num-middle-buttons",
228
+ "defaultValue": "1"
229
+ },
230
+ "currentPage": {
231
+ "type": "number",
232
+ "mutable": true,
233
+ "complexType": {
234
+ "original": "number",
235
+ "resolved": "number",
236
+ "references": {}
237
+ },
238
+ "required": false,
239
+ "optional": false,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": "Current page number (1-based index)."
243
+ },
244
+ "getter": false,
245
+ "setter": false,
246
+ "reflect": true,
247
+ "attribute": "current-page",
248
+ "defaultValue": "1"
249
+ },
250
+ "totalCount": {
251
+ "type": "number",
252
+ "mutable": false,
253
+ "complexType": {
254
+ "original": "number",
255
+ "resolved": "number",
256
+ "references": {}
257
+ },
258
+ "required": false,
259
+ "optional": false,
260
+ "docs": {
261
+ "tags": [],
262
+ "text": "Total number of items to paginate."
263
+ },
264
+ "getter": false,
265
+ "setter": false,
266
+ "reflect": true,
267
+ "attribute": "total-count",
268
+ "defaultValue": "100"
269
+ },
270
+ "pageSize": {
271
+ "type": "number",
272
+ "mutable": false,
273
+ "complexType": {
274
+ "original": "number",
275
+ "resolved": "number",
276
+ "references": {}
277
+ },
278
+ "required": false,
279
+ "optional": false,
280
+ "docs": {
281
+ "tags": [],
282
+ "text": "Number of items per page."
283
+ },
284
+ "getter": false,
285
+ "setter": false,
286
+ "reflect": true,
287
+ "attribute": "page-size",
288
+ "defaultValue": "10"
289
+ },
290
+ "isOnlyIcon": {
291
+ "type": "boolean",
292
+ "mutable": false,
293
+ "complexType": {
294
+ "original": "boolean",
295
+ "resolved": "boolean",
296
+ "references": {}
297
+ },
298
+ "required": false,
299
+ "optional": false,
300
+ "docs": {
301
+ "tags": [],
302
+ "text": "If true, the Previous/Next navigation buttons will be displayed as icon buttons.\nPage number buttons always use regular buttons."
303
+ },
304
+ "getter": false,
305
+ "setter": false,
306
+ "reflect": true,
307
+ "attribute": "is-only-icon",
308
+ "defaultValue": "false"
309
+ },
310
+ "showMiddleZone": {
311
+ "type": "boolean",
312
+ "mutable": false,
313
+ "complexType": {
314
+ "original": "boolean",
315
+ "resolved": "boolean",
316
+ "references": {}
317
+ },
318
+ "required": false,
319
+ "optional": false,
320
+ "docs": {
321
+ "tags": [],
322
+ "text": "If true, shows the middle zone with the current page when it's not in start/end zones.\nIf false (default), only shows one ellipsis between start and end zones (simpler pagination)."
323
+ },
324
+ "getter": false,
325
+ "setter": false,
326
+ "reflect": true,
327
+ "attribute": "show-middle-zone",
328
+ "defaultValue": "false"
329
+ }
330
+ };
331
+ }
332
+ static get events() {
333
+ return [{
334
+ "method": "currentPageChanged",
335
+ "name": "currentPageChanged",
336
+ "bubbles": false,
337
+ "cancelable": true,
338
+ "composed": true,
339
+ "docs": {
340
+ "tags": [{
341
+ "name": "bind",
342
+ "text": "currentPage"
343
+ }],
344
+ "text": "Emitted when the current page changes."
345
+ },
346
+ "complexType": {
347
+ "original": "number",
348
+ "resolved": "number",
349
+ "references": {}
350
+ }
351
+ }];
352
+ }
353
+ static get watchers() {
354
+ return [{
355
+ "propName": "currentPage",
356
+ "methodName": "onCurrentPageChange"
357
+ }];
358
+ }
359
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Generates a pagination range with page numbers and ellipsis items.
3
+ * @param {PaginationRangeConfig} config Pagination configuration.
4
+ * @returns {PaginationRangeItem[]} Ordered range items.
5
+ */
6
+ export function calculatePaginationRange({ currentPage, totalCount, pageSize, numStartZoneButtons, numEndZoneButtons, numMiddleButtons, showMiddleZone, }) {
7
+ const totalPageCount = Math.ceil(totalCount / pageSize);
8
+ const paginationRange = [];
9
+ const totalVisibleButtons = numStartZoneButtons + numEndZoneButtons;
10
+ if (totalPageCount <= totalVisibleButtons) {
11
+ for (let i = 1; i <= totalPageCount; i++) {
12
+ paginationRange.push(i);
13
+ }
14
+ return paginationRange;
15
+ }
16
+ const startZoneEnd = numStartZoneButtons;
17
+ const endZoneStart = totalPageCount - numEndZoneButtons + 1;
18
+ if (!showMiddleZone) {
19
+ const isInNaturalStartZone = currentPage <= numStartZoneButtons;
20
+ const isInNaturalEndZone = currentPage >= totalPageCount - numEndZoneButtons + 1;
21
+ if (!isInNaturalStartZone && !isInNaturalEndZone) {
22
+ const middlePoint = Math.floor(totalPageCount / 2);
23
+ if (currentPage <= middlePoint) {
24
+ const startIndex = currentPage - numStartZoneButtons + 1;
25
+ for (let i = startIndex; i <= currentPage; i++) {
26
+ paginationRange.push(i);
27
+ }
28
+ paginationRange.push('...');
29
+ for (let i = endZoneStart; i <= totalPageCount; i++) {
30
+ paginationRange.push(i);
31
+ }
32
+ return paginationRange;
33
+ }
34
+ for (let i = 1; i <= numStartZoneButtons; i++) {
35
+ paginationRange.push(i);
36
+ }
37
+ paginationRange.push('...');
38
+ const endIndex = Math.min(currentPage + numEndZoneButtons - 1, totalPageCount);
39
+ for (let i = currentPage; i <= endIndex; i++) {
40
+ paginationRange.push(i);
41
+ }
42
+ return paginationRange;
43
+ }
44
+ }
45
+ const isInStartZone = currentPage <= startZoneEnd;
46
+ const isInEndZone = currentPage >= endZoneStart;
47
+ for (let i = 1; i <= startZoneEnd; i++) {
48
+ paginationRange.push(i);
49
+ }
50
+ if (showMiddleZone &&
51
+ !isInStartZone &&
52
+ !isInEndZone &&
53
+ endZoneStart > startZoneEnd + 1) {
54
+ paginationRange.push('...');
55
+ const halfMiddle = Math.floor(numMiddleButtons / 2);
56
+ const middleStart = Math.max(startZoneEnd + 1, currentPage - halfMiddle);
57
+ const middleEnd = Math.min(endZoneStart - 1, currentPage + halfMiddle);
58
+ for (let i = middleStart; i <= middleEnd; i++) {
59
+ paginationRange.push(i);
60
+ }
61
+ paginationRange.push('...');
62
+ }
63
+ else if (endZoneStart > startZoneEnd + 1) {
64
+ paginationRange.push('...');
65
+ }
66
+ for (let i = endZoneStart; i <= totalPageCount; i++) {
67
+ paginationRange.push(i);
68
+ }
69
+ return paginationRange;
70
+ }
@@ -0,0 +1,66 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { calculatePaginationRange } from "../nv-pagination-nav.utils";
3
+ describe('nv-pagination-nav -> utils', () => {
4
+ describe('calculatePaginationRange', () => {
5
+ const baseConfig = {
6
+ pageSize: 10,
7
+ numStartZoneButtons: 2,
8
+ numEndZoneButtons: 2,
9
+ numMiddleButtons: 3,
10
+ };
11
+ it('returns all pages when total pages are less than or equal to visible buttons', () => {
12
+ const range = calculatePaginationRange({
13
+ ...baseConfig,
14
+ currentPage: 2,
15
+ totalCount: 40,
16
+ showMiddleZone: false,
17
+ });
18
+ expect(range).toEqual([1, 2, 3, 4]);
19
+ });
20
+ it('returns one ellipsis when current page is in natural start zone', () => {
21
+ const range = calculatePaginationRange({
22
+ ...baseConfig,
23
+ currentPage: 1,
24
+ totalCount: 100,
25
+ showMiddleZone: false,
26
+ });
27
+ expect(range).toEqual([1, 2, '...', 9, 10]);
28
+ });
29
+ it('slides start zone to include current page in first half when middle zone is disabled', () => {
30
+ const range = calculatePaginationRange({
31
+ ...baseConfig,
32
+ currentPage: 5,
33
+ totalCount: 200,
34
+ showMiddleZone: false,
35
+ });
36
+ expect(range).toEqual([4, 5, '...', 19, 20]);
37
+ });
38
+ it('slides end zone to include current page in second half when middle zone is disabled', () => {
39
+ const range = calculatePaginationRange({
40
+ ...baseConfig,
41
+ currentPage: 15,
42
+ totalCount: 200,
43
+ showMiddleZone: false,
44
+ });
45
+ expect(range).toEqual([1, 2, '...', 15, 16]);
46
+ });
47
+ it('shows middle zone with two ellipses when enabled', () => {
48
+ const range = calculatePaginationRange({
49
+ ...baseConfig,
50
+ currentPage: 10,
51
+ totalCount: 200,
52
+ showMiddleZone: true,
53
+ });
54
+ expect(range).toEqual([1, 2, '...', 9, 10, 11, '...', 19, 20]);
55
+ });
56
+ it('keeps one ellipsis when middle zone is enabled but current page is in end zone', () => {
57
+ const range = calculatePaginationRange({
58
+ ...baseConfig,
59
+ currentPage: 20,
60
+ totalCount: 200,
61
+ showMiddleZone: true,
62
+ });
63
+ expect(range).toEqual([1, 2, '...', 19, 20]);
64
+ });
65
+ });
66
+ });
@@ -143,7 +143,7 @@ export class NvPaginationtable {
143
143
  const pageLabel = interpolate(this.labelPage, { pageIndex: this.pageIndex + 1, pageCount: this.pageCount }, 'Page {pageIndex} of {pageCount}');
144
144
  const totalLabel = interpolate(this.labelTotal, { rowCount: this.rowCount }, 'Total: {rowCount} rows');
145
145
  const pageSizeOptions = generatePageSizeOptions(this.labelPageSizeOption ?? '{pageSize} per page');
146
- return (h(Host, { key: '1c032ac283f0b259804d05df2d82c496a4ba2590' }, !this.hideControls && (h("div", { key: '3d1bdf1d99583a1dfeef2c9b2f8d120862e5f771', "data-scope": "controls" }, !this.hideFirstLast && (h("nv-iconbutton", { key: '353464b98b5af27b9932f7ada5358a5fe3886ca5', name: "chevrons-left", emphasis: "lower", size: "sm", disabled: atFirstPage, onClick: () => this.firstPage() })), !this.hidePrevNext && (h("nv-iconbutton", { key: '3196094e7ccff072e292c4e7ba7fe1d23d9a74f9', name: "chevron-left", emphasis: "lower", size: "sm", disabled: atFirstPage, onClick: () => this.previousPage() })), !this.hidePrevNext && (h("nv-iconbutton", { key: 'c9a82233745d41c812ba9d18ac133e54dd183435', name: "chevron-right", emphasis: "lower", size: "sm", disabled: atLastPage, onClick: () => this.nextPage() })), !this.hideFirstLast && (h("nv-iconbutton", { key: '649b89169098230931ec30f205548104342e4d8c', name: "chevrons-right", emphasis: "lower", size: "sm", disabled: atLastPage, onClick: () => this.lastPage() })))), h("span", { key: '3e1311af13227e797ad6914ab70274e554a2f8b2', "data-scope": "page-label" }, pageLabel), h("span", { key: '63d020bd24a353d47dc3097146b2afd9b31de612', "data-scope": "total" }, totalLabel), h("div", { key: '046597be91d6d83551557592aedb799e3d86da4c', "data-scope": "per-page" }, h("nv-fieldselect", { key: '8d661cb40826a34d323d07bb994b5019eb0127fc', value: String(this.pageSize), onValueChanged: this.handlePageSizeChange, options: pageSizeOptions })), h("slot", { key: '385e77f742cb4501d26706b08986825d817fd725' })));
146
+ return (h(Host, { key: 'c4410c8e459e488c7e6dfab19baa0dace783bed7' }, !this.hideControls && (h("div", { key: 'd17f9712b070ce79ab367406ef58e251f9fd8ef1', "data-scope": "controls" }, !this.hideFirstLast && (h("nv-iconbutton", { key: '8326bd2a9bffaddfa5ab0f1bf385ef2d435d1304', name: "chevrons-left", emphasis: "lower", size: "sm", disabled: atFirstPage, onClick: () => this.firstPage() })), !this.hidePrevNext && (h("nv-iconbutton", { key: 'e05379b57d34060934946098fdc1790afc7060f5', name: "chevron-left", emphasis: "lower", size: "sm", disabled: atFirstPage, onClick: () => this.previousPage() })), !this.hidePrevNext && (h("nv-iconbutton", { key: '9be2a29cc9bdca82b5214ce9f3802a4c397702f8', name: "chevron-right", emphasis: "lower", size: "sm", disabled: atLastPage, onClick: () => this.nextPage() })), !this.hideFirstLast && (h("nv-iconbutton", { key: '39e9bac5ebc85c1956295a4213777fd769cab5c9', name: "chevrons-right", emphasis: "lower", size: "sm", disabled: atLastPage, onClick: () => this.lastPage() })))), h("span", { key: 'bef5172038e7bec7a56ffe2d75697641227c5bbc', "data-scope": "page-label" }, pageLabel), h("span", { key: '4711e8fa8ae6814a6b90cef6906f58475ab48317', "data-scope": "total" }, totalLabel), h("div", { key: '46244978c8c8be83195a0a96b8fd9879b3d087fa', "data-scope": "per-page" }, h("nv-fieldselect", { key: '8c194d51d13839825f34f2b004468472ba652064', value: String(this.pageSize), onValueChanged: this.handlePageSizeChange, options: pageSizeOptions })), h("slot", { key: 'ff066bce5da6b738f2d7954fb4ae393824f69f34' })));
147
147
  }
148
148
  static get is() { return "nv-paginationtable"; }
149
149
  static get originalStyleUrls() {
@@ -1,4 +1,3 @@
1
- /* eslint-disable jsdoc/require-jsdoc */
2
1
  import { describe, it, expect } from "vitest";
3
2
  import { interpolate, isFirstPage, isLastPage, DEFAULT_PAGE_SIZES, generatePageSizeOptions, } from "../nv-paginationtable.utils";
4
3
  /**
@@ -311,7 +311,7 @@ export class NvPopover {
311
311
  /****************************************************************************/
312
312
  //#region RENDER
313
313
  render() {
314
- return (h(Host, { key: 'd6fef7eff8bcf37038c615eb3a382c2213b8df57' }, h("slot", { key: '849d6563e00d899fe0d1740139e510f5a53a6160', name: "trigger" }), h("div", { key: '3d187af80792aa571039fa5966cc5a38ad65c447', "data-scope": "popover", "data-strategy": this.strategy, hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: 'cc06755e1ffe17280d847ec78f760fb87e491bea', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '015e92df5937b852b5e9fe4ef5bbf56a4a21e802', name: "content" }))));
314
+ return (h(Host, { key: 'f45908c500d83bbc4cc2e2bfa71d08297bb353e0' }, h("slot", { key: 'b0d692a8f25dca9d400b4ebac81bbcff895abe58', name: "trigger" }), h("div", { key: '500fdf54d35104a48936b1c31643c04ca92be8b5', "data-scope": "popover", "data-strategy": this.strategy, hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '9d3e96672c6e904ded03bb6338f5e70a18f8bf0c', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: 'ce8436ba395b75b42facc362503d272b8852308a', name: "content" }))));
315
315
  }
316
316
  static get is() { return "nv-popover"; }
317
317
  static get originalStyleUrls() {
@@ -6,7 +6,7 @@ export class NvRow {
6
6
  /****************************************************************************/
7
7
  //#region RENDER
8
8
  render() {
9
- return (h(Host, { key: 'a0f1533d6bec697a7a1abed6444b7be7d4141000' }, h("slot", { key: '76b28afb465d755f85e7b297b13aaed00cd65a9e' })));
9
+ return (h(Host, { key: '07ad630aa3951fe325d4c767bec1d1008b8efa65' }, h("slot", { key: '50fafeac8db8bd0a34ad61196aa259dab2528b18' })));
10
10
  }
11
11
  static get is() { return "nv-row"; }
12
12
  static get originalStyleUrls() {
@@ -156,7 +156,7 @@ export class NvSidebar {
156
156
  //#region RENDER
157
157
  render() {
158
158
  const isCollapsed = this.type === 'collapsible' && !this.open;
159
- return (h(Host, { key: 'b186709db49756c2cbc7266ef9dfb1cdaf63c9bd', role: "navigation", collapsed: isCollapsed ? true : undefined, "notification-intention": this.notificationIntention, "notification-emphasis": this.notificationEmphasis, "aria-expanded": this.type === 'collapsible' ? String(this.open) : undefined }, h("div", { key: '9b415f173b9097aceda8619b061d9e7533030e57', class: "nv-sidebar-container" }, h("slot", { key: 'e60dbe6ea59f72caab1d519bf0a84afe9a9f0829' })), this.type === 'collapsible' && (h("button", { key: 'cc63ad46951876de82efccef404366a04393bb4b', class: "nv-sidebar-toggle", onClick: this.handleToggle, "aria-label": this.open ? 'Collapse sidebar' : 'Expand sidebar' }, h("nv-icon", { key: '7f44dbfe4e1b351c789ea558e735b9da00b03e19', name: this.open
159
+ return (h(Host, { key: '51a4f51b720a97eb58cad32cb2c92c3afe5e7a04', role: "navigation", collapsed: isCollapsed ? true : undefined, "notification-intention": this.notificationIntention, "notification-emphasis": this.notificationEmphasis, "aria-expanded": this.type === 'collapsible' ? String(this.open) : undefined }, h("div", { key: '30f2aa66cbdfc7bdc8c5d494dfe41debee565fac', class: "nv-sidebar-container" }, h("slot", { key: '519d25d1d5d8c4a5820f5b6c7655430004be542a' })), this.type === 'collapsible' && (h("button", { key: '70abdc10fed5b87dba34e7ff8cacfa44c00044b0', class: "nv-sidebar-toggle", onClick: this.handleToggle, "aria-label": this.open ? 'Collapse sidebar' : 'Expand sidebar' }, h("nv-icon", { key: 'ad693d6d1f95f41eb86d0f4cdf1ff04190cd5288', name: this.open
160
160
  ? 'layout-sidebar-left-collapse'
161
161
  : 'layout-sidebar-right-collapse', size: "sm" })))));
162
162
  }
@@ -7,7 +7,7 @@ export class NvSidebarcontent {
7
7
  /****************************************************************************/
8
8
  //#region RENDER
9
9
  render() {
10
- return (h(Host, { key: '58412906cd2e7719c5bdd60f24a5d14c270068de', role: "list" }, h("slot", { key: 'cb10719b5baf8dfcacc970a2cc5b199883d91853' })));
10
+ return (h(Host, { key: 'ad8dd37a6bce098af0ce3350c1a3035f62241d19', role: "list" }, h("slot", { key: 'c9cf80529ea060e8345929cacad2313fbb3daa17' })));
11
11
  }
12
12
  static get is() { return "nv-sidebarcontent"; }
13
13
  static get originalStyleUrls() {
@@ -6,7 +6,7 @@ export class NvSidebardivider {
6
6
  /****************************************************************************/
7
7
  //#region RENDER
8
8
  render() {
9
- return h(Host, { key: '8784711ab19a337f7a0e14450765b816ea2bf400', role: "separator", "aria-orientation": "horizontal" });
9
+ return h(Host, { key: '8fd03ba4a4d6a6bb876a0f0eea367fe5f70e4a6d', role: "separator", "aria-orientation": "horizontal" });
10
10
  }
11
11
  static get is() { return "nv-sidebardivider"; }
12
12
  static get originalStyleUrls() {
@@ -8,7 +8,7 @@ export class NvSidebarfooter {
8
8
  /****************************************************************************/
9
9
  //#region RENDER
10
10
  render() {
11
- return (h(Host, { key: '0e41cf447ba7f4421dae314ffb6fa4da3a2c1c21' }, h("slot", { key: '7d05fa96a4354c8f2125d930dd64fc917de6a2dc' })));
11
+ return (h(Host, { key: '073019b05fc2bd13af8db145b4d7bcb8d7b20d34' }, h("slot", { key: '41905c616f7e74dcd9c578a68693b4e95cd4ccd7' })));
12
12
  }
13
13
  static get is() { return "nv-sidebarfooter"; }
14
14
  static get originalStyleUrls() {
@@ -8,7 +8,7 @@ export class NvSidebargroup {
8
8
  /****************************************************************************/
9
9
  //#region RENDER
10
10
  render() {
11
- return (h(Host, { key: '44083339d01b3aedaa26340b6e13f8187e731359', role: "group", "aria-label": this.label }, this.label && h("div", { key: '847d06e57d9478e52c0041786ace2ed5891caf0a', class: "nv-sidebargroup-label" }, this.label), h("slot", { key: '7511c5bb39cbb64e7615ed32e33de40cf3157183' })));
11
+ return (h(Host, { key: 'e599aa76d560f3e30b6a45b75500372bea3b6be0', role: "group", "aria-label": this.label }, this.label && h("div", { key: 'c918bdde6cb461dad11977a29f6e5385505bbbcb', class: "nv-sidebargroup-label" }, this.label), h("slot", { key: '7980eeada701c3b87be062e9728bacc0f9fc502c' })));
12
12
  }
13
13
  static get is() { return "nv-sidebargroup"; }
14
14
  static get originalStyleUrls() {
@@ -8,7 +8,7 @@ export class NvSidebarheader {
8
8
  /****************************************************************************/
9
9
  //#region RENDER
10
10
  render() {
11
- return (h(Host, { key: 'ea659d39850f5024e27a5678bf465ff1e1fce5d5' }, h("slot", { key: 'd04813b173ecb718794b969c0b28c4e059ff7675' })));
11
+ return (h(Host, { key: '8aff0fd7b73d0762cd8861f8d9043f494104ddfd' }, h("slot", { key: 'f9d643f352a36bf7397d5c2d81be4620641dead4' })));
12
12
  }
13
13
  static get is() { return "nv-sidebarheader"; }
14
14
  static get originalStyleUrls() {
@@ -2,6 +2,8 @@ import { Host, h } from "@stencil/core";
2
2
  /**
3
3
  * Displays the logo and title at the top of the sidebar.
4
4
  * Automatically switches between full and collapsed logos based on the sidebar state.
5
+ *
6
+ * @slot label - The label/name to display next to the logo. Make sure to add the class nv-sidebarlogo-title to the slot.
5
7
  */
6
8
  export class NvSidebarlogo {
7
9
  constructor() {
@@ -19,7 +21,7 @@ export class NvSidebarlogo {
19
21
  render() {
20
22
  const logoSrc = this.logo || this.defaultLogo;
21
23
  const collapsedLogoSrc = this.collapsedLogo || this.defaultCollapsedLogo;
22
- return (h(Host, { key: 'bc083fb598f98c96f382a8bac65e89344dafba94' }, h("div", { key: '6c53e699495efd6dfa71512e21d645844fef178f', class: "nv-sidebarlogo-container" }, h("img", { key: 'e0baaddb610374eacd9b0bb63b4d07b63a2fc41a', src: logoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-full" }), h("img", { key: '508fa312a65f11bed1fe955db9553aa26f600e75', src: collapsedLogoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-collapsed" }), this.label && h("span", { key: '78e16fb552eea8a477d785e184e0c4bdbc43c4c6', class: "nv-sidebarlogo-title" }, this.label))));
24
+ return (h(Host, { key: 'f4e0fe830c5fa5ef90d279c19336bd51e2e7e586' }, h("div", { key: '85d9516e1b140aa9a7bf16ca0722f35081702d19', class: "nv-sidebarlogo-container" }, h("img", { key: '82c1e3e9e47cd570a4f9aa64d120a5239c9e487c', src: logoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-full" }), h("img", { key: '113d60ca21ec36c9f8106276f8d7abb85753c1a9', src: collapsedLogoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-collapsed" }), h("slot", { key: '6c164d8f46d994980a4061e0a5df41fef11929b6', name: "label" }), this.label && h("span", { key: '12a5bb8deff9b73dc4c41c27aa1e5839beb46f32', class: "nv-sidebarlogo-title" }, this.label))));
23
25
  }
24
26
  static get is() { return "nv-sidebarlogo"; }
25
27
  static get originalStyleUrls() {