@duetds/components 4.35.4 → 4.36.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 (273) hide show
  1. package/hydrate/index.js +501 -7
  2. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  3. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-button_2.cjs.entry.js +7 -2
  7. package/lib/cjs/duet-caption_4.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-card.cjs.entry.js +2 -2
  9. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  10. package/lib/cjs/duet-choice_2.cjs.entry.js +3 -3
  11. package/lib/cjs/duet-collapsible.cjs.entry.js +2 -2
  12. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  13. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  14. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-editable-table-button.cjs.entry.js +1 -1
  16. package/lib/cjs/duet-editable-table_4.cjs.entry.js +4 -13
  17. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-header_2.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  23. package/lib/cjs/duet-icon.cjs.entry.js +1 -1
  24. package/lib/cjs/duet-input_2.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-modal.cjs.entry.js +3 -3
  28. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-number-input.cjs.entry.js +2 -2
  30. package/lib/cjs/duet-pagination_2.cjs.entry.js +448 -0
  31. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  32. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-scrollable_3.cjs.entry.js +2 -2
  35. package/lib/cjs/duet-select.cjs.entry.js +16 -4
  36. package/lib/cjs/duet-step_2.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
  40. package/lib/cjs/duet-tray.cjs.entry.js +1 -1
  41. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  42. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  43. package/lib/cjs/duet.cjs.js +2 -2
  44. package/lib/cjs/{focus-utils-eb8c5b20.js → focus-utils-675b1aa3.js} +1 -1
  45. package/lib/cjs/{index-6ae8090f.js → index-58eb8f67.js} +4 -1
  46. package/lib/cjs/js-utils-33a9dbe3.js +16 -0
  47. package/lib/cjs/{keyboard-utils-b4e3d1d3.js → keyboard-utils-898cfe14.js} +8 -0
  48. package/lib/cjs/loader.cjs.js +2 -2
  49. package/lib/collection/collection-manifest.json +8 -0
  50. package/lib/collection/components/duet-button/duet-button.css +3 -0
  51. package/lib/collection/components/duet-button/duet-button.js +27 -0
  52. package/lib/collection/components/duet-card/duet-card.js +1 -1
  53. package/lib/collection/components/duet-pagination/duet-pagination-utils.js +9 -0
  54. package/lib/collection/components/duet-pagination/duet-pagination.css +120 -0
  55. package/lib/collection/components/duet-pagination/duet-pagination.js +511 -0
  56. package/lib/collection/components/duet-range-stepper/duet-range-stepper.css +100 -0
  57. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +342 -0
  58. package/lib/collection/components/duet-select/duet-select.css +26 -0
  59. package/lib/collection/components/duet-select/duet-select.js +39 -4
  60. package/lib/collection/utils/fixture-utils.js +0 -4
  61. package/lib/collection/utils/keyboard-utils.js +4 -0
  62. package/lib/collection/utils/test-utils.js +2 -1
  63. package/lib/custom-elements-bundle/index.d.ts +12 -0
  64. package/lib/custom-elements-bundle/index.js +471 -8
  65. package/lib/duet/duet.esm.js +1 -1
  66. package/lib/duet/duet.js +1 -1
  67. package/lib/duet/{p-94a2da86.system.entry.js → p-0349b691.system.entry.js} +1 -1
  68. package/lib/duet/{p-824d2360.system.entry.js → p-0769de2b.system.entry.js} +1 -1
  69. package/lib/duet/{p-0169d57e.entry.js → p-09920da9.entry.js} +1 -1
  70. package/lib/duet/{p-c122428f.entry.js → p-1aeb418c.entry.js} +1 -1
  71. package/lib/duet/{p-d5a4b17f.system.entry.js → p-1afe9641.system.entry.js} +1 -1
  72. package/lib/duet/p-1b56e483.system.entry.js +4 -0
  73. package/lib/duet/{p-5e895b06.entry.js → p-1c1c9705.entry.js} +1 -1
  74. package/lib/duet/p-21cd146b.system.entry.js +4 -0
  75. package/lib/duet/{p-4a60b131.system.entry.js → p-22e6615d.system.entry.js} +1 -1
  76. package/lib/duet/{p-f98fca13.system.entry.js → p-28a22555.system.entry.js} +1 -1
  77. package/lib/duet/p-298a9ffc.system.js +4 -0
  78. package/lib/duet/{p-8367a2d1.entry.js → p-2a9345a7.entry.js} +1 -1
  79. package/lib/duet/{p-61198eee.system.entry.js → p-314b64b4.system.entry.js} +1 -1
  80. package/lib/duet/{p-66bf27b9.system.entry.js → p-363abf26.system.entry.js} +1 -1
  81. package/lib/duet/{p-b3a2a1e8.entry.js → p-3c13a041.entry.js} +1 -1
  82. package/lib/duet/{p-ea30becb.system.entry.js → p-40360b4a.system.entry.js} +1 -1
  83. package/lib/duet/{p-9077cd24.system.entry.js → p-44a3794d.system.entry.js} +1 -1
  84. package/lib/duet/{p-753098ec.entry.js → p-4b688aea.entry.js} +1 -1
  85. package/lib/duet/{p-2bfe8b50.system.entry.js → p-4f32cc18.system.entry.js} +1 -1
  86. package/lib/duet/{p-caab828f.system.entry.js → p-59480299.system.entry.js} +1 -1
  87. package/lib/duet/{p-6cff80cb.system.entry.js → p-5e410fa9.system.entry.js} +1 -1
  88. package/lib/duet/{p-de5c3a36.entry.js → p-5f4362b4.entry.js} +1 -1
  89. package/lib/duet/{p-e3229d0d.entry.js → p-663aec3a.entry.js} +1 -1
  90. package/lib/duet/{p-a39a0a45.entry.js → p-6aa8d848.entry.js} +1 -1
  91. package/lib/duet/p-6da8743f.system.entry.js +4 -0
  92. package/lib/duet/{p-731444f6.entry.js → p-6df7b78c.entry.js} +1 -1
  93. package/lib/duet/{p-4a931c6c.system.entry.js → p-6e6e1b77.system.entry.js} +1 -1
  94. package/lib/duet/p-72ce134a.entry.js +4 -0
  95. package/lib/duet/p-74780bca.system.js +4 -0
  96. package/lib/duet/{p-c3d552d5.entry.js → p-7730d2b8.entry.js} +1 -1
  97. package/lib/duet/{p-b72ed5ef.system.entry.js → p-78779ba1.system.entry.js} +1 -1
  98. package/lib/duet/{p-c63e49e2.system.entry.js → p-78aa974b.system.entry.js} +1 -1
  99. package/lib/duet/p-7e2c06d0.js +4 -0
  100. package/lib/duet/{p-503f1286.entry.js → p-7f1cbb7d.entry.js} +1 -1
  101. package/lib/duet/{p-ec2aea5f.system.entry.js → p-80aa512a.system.entry.js} +1 -1
  102. package/lib/duet/p-81867417.system.js +4 -0
  103. package/lib/duet/{p-dfd96467.entry.js → p-818cd527.entry.js} +1 -1
  104. package/lib/duet/{p-bc6794bc.system.entry.js → p-84940fc4.system.entry.js} +1 -1
  105. package/lib/duet/{p-44fe8367.system.entry.js → p-84a9fbf4.system.entry.js} +1 -1
  106. package/lib/duet/{p-3025a411.system.js → p-85d9b1b0.system.js} +1 -1
  107. package/lib/duet/{p-253fd12a.system.entry.js → p-8706664b.system.entry.js} +1 -1
  108. package/lib/duet/{p-03a5fe42.system.entry.js → p-878c1c83.system.entry.js} +1 -1
  109. package/lib/duet/p-898f30a5.js +4 -0
  110. package/lib/duet/{p-f51f8554.entry.js → p-8a768d0b.entry.js} +1 -1
  111. package/lib/duet/{p-e4e99da0.entry.js → p-8b8c2ef4.entry.js} +1 -1
  112. package/lib/duet/p-8c0fd5de.js +4 -0
  113. package/lib/duet/{p-7b451394.system.js → p-8db453bf.system.js} +1 -1
  114. package/lib/duet/{p-a926b44b.entry.js → p-8f56fd3f.entry.js} +1 -1
  115. package/lib/duet/{p-477c2e5c.entry.js → p-8fa952df.entry.js} +1 -1
  116. package/lib/duet/{p-17f85b90.entry.js → p-90799d0a.entry.js} +1 -1
  117. package/lib/duet/{p-a0deb526.entry.js → p-9358e24b.entry.js} +1 -1
  118. package/lib/duet/p-95f71b43.system.entry.js +4 -0
  119. package/lib/duet/p-9782946f.entry.js +4 -0
  120. package/lib/duet/{p-01679b51.entry.js → p-995f20fc.entry.js} +1 -1
  121. package/lib/duet/{p-412f58cf.entry.js → p-99a112e4.entry.js} +1 -1
  122. package/lib/duet/{p-76fa8882.entry.js → p-9ead1c59.entry.js} +1 -1
  123. package/lib/duet/{p-efd978ee.entry.js → p-a0f979a4.entry.js} +1 -1
  124. package/lib/duet/{p-ee598605.entry.js → p-a154a0c0.entry.js} +1 -1
  125. package/lib/duet/{p-fc35b926.system.entry.js → p-a2db8ff2.system.entry.js} +1 -1
  126. package/lib/duet/{p-04304e51.entry.js → p-a75776f5.entry.js} +1 -1
  127. package/lib/duet/{p-e682d701.system.entry.js → p-a8f707d4.system.entry.js} +2 -2
  128. package/lib/duet/{p-c1b34a78.system.entry.js → p-aa5abb52.system.entry.js} +1 -1
  129. package/lib/duet/p-abcbdef5.entry.js +4 -0
  130. package/lib/duet/{p-fb98ac5a.entry.js → p-ac44ab7a.entry.js} +1 -1
  131. package/lib/duet/{p-5630828a.system.entry.js → p-ad06c91d.system.entry.js} +1 -1
  132. package/lib/duet/{p-6b24111b.system.entry.js → p-ad8a49a3.system.entry.js} +1 -1
  133. package/lib/duet/p-ae82d8e7.entry.js +4 -0
  134. package/lib/duet/{p-99262d61.entry.js → p-aebf6700.entry.js} +1 -1
  135. package/lib/duet/{p-01f3fbd4.system.entry.js → p-b11f2fcd.system.entry.js} +1 -1
  136. package/lib/duet/p-b25d3769.js +4 -0
  137. package/lib/duet/{p-bba528b5.entry.js → p-b42066e0.entry.js} +1 -1
  138. package/lib/duet/{p-40a76f20.entry.js → p-b5aaf161.entry.js} +1 -1
  139. package/lib/duet/{p-a69667c7.entry.js → p-b6b58d31.entry.js} +1 -1
  140. package/lib/duet/{p-55fff1fe.entry.js → p-bd602c98.entry.js} +1 -1
  141. package/lib/duet/{p-7cdb8bfa.entry.js → p-bf25e52a.entry.js} +1 -1
  142. package/lib/duet/{p-873e4c51.system.entry.js → p-c0a24b5e.system.entry.js} +1 -1
  143. package/lib/duet/{p-2395f96e.system.entry.js → p-c167a5aa.system.entry.js} +1 -1
  144. package/lib/duet/{p-0f185a8a.system.entry.js → p-c5db93a7.system.entry.js} +1 -1
  145. package/lib/duet/{p-da1f6193.system.entry.js → p-c61ace58.system.entry.js} +1 -1
  146. package/lib/duet/{p-a212f672.system.entry.js → p-d32b240d.system.entry.js} +1 -1
  147. package/lib/duet/{p-2c85e001.system.entry.js → p-d444e178.system.entry.js} +1 -1
  148. package/lib/duet/{p-e8ce8394.entry.js → p-daede773.entry.js} +1 -1
  149. package/lib/duet/{p-8ea92cc5.entry.js → p-dda7f098.entry.js} +1 -1
  150. package/lib/duet/{p-7fd62541.entry.js → p-e584ce1d.entry.js} +1 -1
  151. package/lib/duet/{p-9690681b.system.entry.js → p-e67fc1ed.system.entry.js} +1 -1
  152. package/lib/duet/{p-73b5248d.entry.js → p-e9ca7e01.entry.js} +1 -1
  153. package/lib/duet/{p-4ea864dd.system.entry.js → p-ea124391.system.entry.js} +1 -1
  154. package/lib/duet/{p-8973aa31.system.entry.js → p-f993e4c3.system.entry.js} +1 -1
  155. package/lib/duet/{p-24b4eefb.system.entry.js → p-fb55e381.system.entry.js} +1 -1
  156. package/lib/duet/{p-e6349dd2.entry.js → p-fc02d8e9.entry.js} +1 -1
  157. package/lib/duet/{p-4d8cd455.system.entry.js → p-fd561872.system.entry.js} +1 -1
  158. package/lib/esm/duet-alert.entry.js +1 -1
  159. package/lib/esm/duet-badge.entry.js +1 -1
  160. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  161. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  162. package/lib/esm/duet-button_2.entry.js +7 -2
  163. package/lib/esm/duet-caption_4.entry.js +1 -1
  164. package/lib/esm/duet-card.entry.js +2 -2
  165. package/lib/esm/duet-checkbox.entry.js +1 -1
  166. package/lib/esm/duet-choice_2.entry.js +3 -3
  167. package/lib/esm/duet-collapsible.entry.js +2 -2
  168. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  169. package/lib/esm/duet-date-picker.entry.js +2 -2
  170. package/lib/esm/duet-divider_2.entry.js +1 -1
  171. package/lib/esm/duet-editable-table-button.entry.js +1 -1
  172. package/lib/esm/duet-editable-table_4.entry.js +2 -11
  173. package/lib/esm/duet-empty-state.entry.js +1 -1
  174. package/lib/esm/duet-fieldset.entry.js +1 -1
  175. package/lib/esm/duet-footer.entry.js +1 -1
  176. package/lib/esm/duet-grid_2.entry.js +1 -1
  177. package/lib/esm/duet-header_2.entry.js +2 -2
  178. package/lib/esm/duet-hero.entry.js +1 -1
  179. package/lib/esm/duet-icon.entry.js +1 -1
  180. package/lib/esm/duet-input_2.entry.js +1 -1
  181. package/lib/esm/duet-layout.entry.js +1 -1
  182. package/lib/esm/duet-list_2.entry.js +1 -1
  183. package/lib/esm/duet-modal.entry.js +3 -3
  184. package/lib/esm/duet-notification_2.entry.js +1 -1
  185. package/lib/esm/duet-number-input.entry.js +2 -2
  186. package/lib/esm/duet-pagination_2.entry.js +443 -0
  187. package/lib/esm/duet-progress.entry.js +1 -1
  188. package/lib/esm/duet-radio_2.entry.js +1 -1
  189. package/lib/esm/duet-range-slider.entry.js +1 -1
  190. package/lib/esm/duet-scrollable_3.entry.js +2 -2
  191. package/lib/esm/duet-select.entry.js +16 -4
  192. package/lib/esm/duet-step_2.entry.js +2 -2
  193. package/lib/esm/duet-textarea.entry.js +1 -1
  194. package/lib/esm/duet-toggle.entry.js +1 -1
  195. package/lib/esm/duet-tooltip.entry.js +1 -1
  196. package/lib/esm/duet-tray.entry.js +1 -1
  197. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  198. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  199. package/lib/esm/duet.js +2 -2
  200. package/lib/esm/{focus-utils-6db957a7.js → focus-utils-bd3c1702.js} +1 -1
  201. package/lib/esm/{index-828dfb4e.js → index-49b2d31a.js} +4 -1
  202. package/lib/esm/js-utils-b69f17df.js +14 -0
  203. package/lib/esm/{keyboard-utils-584cedd7.js → keyboard-utils-6eb55cd5.js} +5 -1
  204. package/lib/esm/loader.js +2 -2
  205. package/lib/esm-es5/duet-alert.entry.js +1 -1
  206. package/lib/esm-es5/duet-badge.entry.js +1 -1
  207. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  208. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  209. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  210. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  211. package/lib/esm-es5/duet-card.entry.js +1 -1
  212. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  213. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  214. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  215. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  216. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  217. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  218. package/lib/esm-es5/duet-editable-table-button.entry.js +1 -1
  219. package/lib/esm-es5/duet-editable-table_4.entry.js +2 -2
  220. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  221. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  222. package/lib/esm-es5/duet-footer.entry.js +1 -1
  223. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  224. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  225. package/lib/esm-es5/duet-hero.entry.js +1 -1
  226. package/lib/esm-es5/duet-icon.entry.js +1 -1
  227. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  228. package/lib/esm-es5/duet-layout.entry.js +1 -1
  229. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  230. package/lib/esm-es5/duet-modal.entry.js +1 -1
  231. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  232. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  233. package/lib/esm-es5/duet-pagination_2.entry.js +4 -0
  234. package/lib/esm-es5/duet-progress.entry.js +1 -1
  235. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  236. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  237. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  238. package/lib/esm-es5/duet-select.entry.js +2 -2
  239. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  240. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  241. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  242. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  243. package/lib/esm-es5/duet-tray.entry.js +1 -1
  244. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  245. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  246. package/lib/esm-es5/duet.js +1 -1
  247. package/lib/esm-es5/focus-utils-bd3c1702.js +4 -0
  248. package/lib/esm-es5/{index-828dfb4e.js → index-49b2d31a.js} +1 -1
  249. package/lib/esm-es5/js-utils-b69f17df.js +4 -0
  250. package/lib/esm-es5/keyboard-utils-6eb55cd5.js +4 -0
  251. package/lib/esm-es5/loader.js +1 -1
  252. package/lib/types/components/duet-button/duet-button.d.ts +5 -0
  253. package/lib/types/components/duet-card/duet-card.d.ts +1 -1
  254. package/lib/types/components/duet-pagination/duet-pagination-utils.d.ts +1 -0
  255. package/lib/types/components/duet-pagination/duet-pagination.d.ts +100 -0
  256. package/lib/types/components/duet-range-stepper/duet-range-stepper.d.ts +70 -0
  257. package/lib/types/components/duet-select/duet-select.d.ts +5 -0
  258. package/lib/types/components.d.ts +188 -2
  259. package/lib/types/utils/keyboard-utils.d.ts +4 -0
  260. package/package.json +5 -5
  261. package/lib/duet/p-0427e1a5.entry.js +0 -4
  262. package/lib/duet/p-04f9f1bf.js +0 -4
  263. package/lib/duet/p-0f91d386.system.entry.js +0 -4
  264. package/lib/duet/p-227e5196.js +0 -4
  265. package/lib/duet/p-2545734a.entry.js +0 -4
  266. package/lib/duet/p-2b8316ee.system.entry.js +0 -4
  267. package/lib/duet/p-68ecdc4f.system.entry.js +0 -4
  268. package/lib/duet/p-853cd059.js +0 -4
  269. package/lib/duet/p-b0c16ee5.entry.js +0 -4
  270. package/lib/duet/p-bb12b972.system.js +0 -4
  271. package/lib/duet/p-ef3fc3f3.system.js +0 -4
  272. package/lib/esm-es5/focus-utils-6db957a7.js +0 -4
  273. package/lib/esm-es5/keyboard-utils-584cedd7.js +0 -4
@@ -0,0 +1,120 @@
1
+ *,
2
+ *::after,
3
+ *::before {
4
+ box-sizing: border-box;
5
+ padding: 0;
6
+ margin: 0;
7
+ background: transparent;
8
+ border: 0;
9
+ -moz-appearance: none;
10
+ -webkit-appearance: none;
11
+ appearance: none;
12
+ }
13
+
14
+ :host {
15
+ box-sizing: border-box;
16
+ padding: 0;
17
+ margin: 0;
18
+ background: transparent;
19
+ border: 0;
20
+ -moz-appearance: none;
21
+ -webkit-appearance: none;
22
+ appearance: none;
23
+ display: inline-block;
24
+ margin: 0 auto;
25
+ }
26
+
27
+ .duet-pagination-nav {
28
+ position: relative;
29
+ }
30
+
31
+ .duet-pagination, .duet-pagination li {
32
+ display: flex;
33
+ flex-wrap: wrap;
34
+ gap: 0.1rem;
35
+ align-items: center;
36
+ }
37
+ .duet-pagination-item-is-active .duet-pagination-page-number {
38
+ border-bottom-color: inherit;
39
+ border-bottom-style: solid;
40
+ border-bottom-width: 2px;
41
+ }
42
+ .duet-pagination duet-button {
43
+ width: 30px;
44
+ min-width: 36px;
45
+ font-weight: 600;
46
+ text-decoration: none;
47
+ border-left-width: 0;
48
+ }
49
+ .duet-pagination-overlay {
50
+ position: absolute;
51
+ top: 1rem;
52
+ z-index: 300;
53
+ width: 100%;
54
+ text-align: center;
55
+ }
56
+ .duet-pagination.duet-pagination-is-dimmed {
57
+ opacity: 0.5;
58
+ }
59
+
60
+ .duet-pagination-page-button {
61
+ white-space: nowrap;
62
+ }
63
+ .duet-pagination-page-button button {
64
+ display: inline-flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ width: 32px;
68
+ height: 32px;
69
+ min-height: auto !important;
70
+ padding: 0 !important;
71
+ margin: 0 0 0 8px !important;
72
+ color: #00294d;
73
+ cursor: pointer;
74
+ background: #f5f8fa;
75
+ border-radius: 50%;
76
+ transition: background-color 300ms ease !important;
77
+ }
78
+ .duet-theme-turva .duet-pagination-page-button button {
79
+ color: #171c3a;
80
+ background: #f5f5f7;
81
+ }
82
+ .duet-pagination-page-button button duet-icon {
83
+ display: block;
84
+ }
85
+ @media (max-width: 35.9375em) {
86
+ .duet-pagination-page-button button {
87
+ width: 40px;
88
+ height: 40px;
89
+ }
90
+ }
91
+ .duet-pagination-page-button button:not(:disabled):hover {
92
+ background: #e9ecee !important;
93
+ }
94
+ .duet-theme-turva .duet-pagination-page-button button:not(:disabled):hover {
95
+ background: #e9e9eb !important;
96
+ }
97
+ .duet-pagination-page-button button:focus {
98
+ outline: 0;
99
+ box-shadow: 0 0 0 2px #0077b3;
100
+ }
101
+ .duet-theme-turva .duet-pagination-page-button button:focus {
102
+ box-shadow: 0 0 0 2px #171c3a;
103
+ }
104
+ .duet-pagination-page-button button:active:focus {
105
+ background: #dddfe1;
106
+ box-shadow: none;
107
+ }
108
+ .duet-theme-turva .duet-pagination-page-button button:active:focus {
109
+ background: #ddddde;
110
+ }
111
+ .duet-pagination-page-button button:disabled {
112
+ color: #909599;
113
+ cursor: default;
114
+ background: #f5f8fa;
115
+ opacity: 0.75;
116
+ }
117
+ .duet-theme-turva .duet-pagination-page-button button:disabled {
118
+ color: #747475;
119
+ background: #f5f5f7;
120
+ }
@@ -0,0 +1,511 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
4
+ import { Component, Element, Event, Fragment, h, Host, Prop, State, Watch } from "@stencil/core";
5
+ import { createID } from "../../utils/create-id";
6
+ import { debounce } from "../../utils/js-utils";
7
+ import { isArrowDownKey, isArrowKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isNumber, } from "../../utils/keyboard-utils";
8
+ import { getLocaleString } from "../../utils/language-utils";
9
+ import { inheritGlobalTheme } from "../../utils/themeable-component";
10
+ import { shouldDisplayNavigation } from "./duet-pagination-utils";
11
+ export class DuetPagination {
12
+ constructor() {
13
+ this.listId = createID("duet-pagination-list");
14
+ this.numbersStore = "";
15
+ /**
16
+ * State() variables
17
+ * @internal
18
+ */
19
+ this.totalPages = 10;
20
+ /**
21
+ * State() variables
22
+ * @internal
23
+ */
24
+ this.internalSectionIndex = 0;
25
+ /**
26
+ * Theme of the pagination.
27
+ */
28
+ this.theme = "";
29
+ /**
30
+ * Characters to use for the jump buttons.
31
+ */
32
+ this.jumpString = "...";
33
+ /**
34
+ * Default pagination labels
35
+ */
36
+ this.ariaLabelsDefaults = {
37
+ en: {
38
+ next_page: "Next page",
39
+ previous_page: "Previous page",
40
+ first_page: "First page",
41
+ last_page: "Last page",
42
+ jump_to: "Jump to page",
43
+ go_to: "Go to page",
44
+ description: "You may use arrow keys to select page number, or enter a page number when this element is in focus to jump to a page",
45
+ pagination_label: "Pagination, choose a number to jump to a page",
46
+ prev_section: "Show previous {0} page numbers, screen reader user should use arrowkeys to navigate",
47
+ next_section: "Show next {0} page numbers, screen reader user should use arrowkeys to navigate",
48
+ },
49
+ fi: {
50
+ next_page: "Seuraava sivu",
51
+ previous_page: "Edellinen sivu",
52
+ first_page: "Ensimmäinen sivu",
53
+ last_page: "Viimeinen sivu",
54
+ jump_to: "Siirry sivulle",
55
+ go_to: "Siirry sivulle",
56
+ description: "Voit käyttää nuolinäppäimiä sivunumeron valitsemiseen, tai kirjoittaa sivunumeron, jos tämä elementti on aktiivinen, siirtymään sivulle",
57
+ pagination_label: "Sivutus, valitse sivunumero siirtyäksesi sivulle",
58
+ prev_section: "Näytä edelliset {0} sivunumerot, käyttäjän pitää käyttää nuolinäppäimiä navigoidaksesi",
59
+ next_section: "Näytä seuraavat {0} sivunumerot, käyttäjän pitää käyttää nuolinäppäimiä navigoidaksesi",
60
+ },
61
+ sv: {
62
+ next_page: "Nästa sida",
63
+ previous_page: "Föregående sida",
64
+ first_page: "Första sidan",
65
+ last_page: "Sista sidan",
66
+ jump_to: "Hoppa till sida",
67
+ go_to: "Hoppa till sida",
68
+ description: "Du kan använda piltangenterna för att välja sida, eller skriva in sida när elementet är i fokus för att hoppa till en sida",
69
+ pagination_label: "Sidutning, välj en siffra för att hoppa till en sida",
70
+ prev_section: "Visa föregående {0} sidnummer, skrivbordsläsare ska använda piltangenterna för att navigera",
71
+ next_section: "Visa nästa {0} sidnummer, skrivbordsläsare ska använda piltangenterna för att navigera",
72
+ },
73
+ };
74
+ /**
75
+ * Default pagination labels
76
+ */
77
+ this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
78
+ /**
79
+ * The size of the take, when paginating.
80
+ */
81
+ this.take = 5;
82
+ /**
83
+ * Amount of visible page numbers to show
84
+ */
85
+ this.visibleItems = 5;
86
+ /**
87
+ * The total size of the paginating data
88
+ */
89
+ this.total = 1000;
90
+ /**
91
+ * Used to indicate which dom element with ID this element controls
92
+ */
93
+ this.ariaControls = "";
94
+ /**
95
+ * The current page
96
+ */
97
+ this.current = 1;
98
+ /**
99
+ * Private methods.
100
+ */
101
+ // called from the watcher and used to make sure any changed to current also updates the internal section index
102
+ this.actionChain = async (after, before) => {
103
+ if (after === 0) {
104
+ this.current = 1;
105
+ }
106
+ else if (before !== after) {
107
+ const calculatedSectionIndex = Math.ceil(after / this.visibleItems) - 1;
108
+ if (calculatedSectionIndex !== this.internalSectionIndex) {
109
+ this.internalSectionIndex = calculatedSectionIndex;
110
+ await this.setFocus();
111
+ }
112
+ }
113
+ };
114
+ //helper to emit relevant page events
115
+ this.emitPageEvent = debounce((ev, passedPage) => {
116
+ const page = Number(passedPage || this.current);
117
+ this.duetPageChange.emit({
118
+ component: "duet-pagination",
119
+ from: page * this.take,
120
+ to: page * this.take + this.take,
121
+ current: page,
122
+ take: this.take,
123
+ type: "page",
124
+ originalEvent: ev,
125
+ });
126
+ }, 500);
127
+ // this will return the entered number, or the current page if the user presses enter
128
+ this.getEnteredNumber = debounce(ev => {
129
+ this.emitPageEvent(ev, this.numbersStore);
130
+ this.current = Number(this.numbersStore);
131
+ this.numbersStore = "";
132
+ this.duetPageChange.emit({
133
+ component: "duet-pagination",
134
+ from: this.current * this.take,
135
+ to: this.current * this.take + this.take,
136
+ current: this.current,
137
+ take: this.take,
138
+ type: "jump",
139
+ originalEvent: ev,
140
+ });
141
+ }, 500);
142
+ }
143
+ watchStateHandler(newValue, oldValue) {
144
+ this.actionChain(newValue, oldValue);
145
+ }
146
+ /**
147
+ * Component lifecycle events.
148
+ */
149
+ componentWillLoad() {
150
+ // we want to keep the internal current index in sync with the current prop, but take advantage of the multiple with 0 for the first iteration
151
+ this.internalSectionIndex = Math.ceil(this.current / this.visibleItems) - 1;
152
+ this.calculatePageTake();
153
+ inheritGlobalTheme(this);
154
+ }
155
+ componentWillRender() {
156
+ if (this.internalSectionIndex !== 0 && this.internalSectionIndex !== this.totalPages) {
157
+ this.calculatePageTake();
158
+ }
159
+ }
160
+ componentDidRender() {
161
+ this.setFocus();
162
+ }
163
+ //get totalpages from visible and total
164
+ calculatePageTake() {
165
+ this.totalPages = Math.ceil(this.total / this.take);
166
+ }
167
+ //set update current when mouse click on page number
168
+ async onMouseHandler(e, dir) {
169
+ e.preventDefault();
170
+ e.stopPropagation();
171
+ this.current = this.current + dir;
172
+ }
173
+ //handle a11y keyboard navigation events
174
+ async onKeyboardDown(e) {
175
+ let next = this.current;
176
+ // handle a11y based keyboard navigation for left/right/up/down
177
+ if (isArrowLeftKey(e) || isArrowUpKey(e)) {
178
+ next--;
179
+ }
180
+ if (isArrowRightKey(e) || isArrowDownKey(e)) {
181
+ next++;
182
+ }
183
+ if (isArrowKey(e)) {
184
+ if (next <= this.totalPages) {
185
+ this.current = next;
186
+ this.emitPageEvent(e);
187
+ }
188
+ }
189
+ //handle the jump feature, where numbers can be entered
190
+ if (isNumber(e) && this.shouldDisplayNavigation()) {
191
+ this.numbersStore = this.numbersStore + e.key;
192
+ if (Number(this.numbersStore) > this.totalPages) {
193
+ this.numbersStore = this.totalPages + "";
194
+ }
195
+ this.getEnteredNumber(e);
196
+ }
197
+ }
198
+ // utility to set focus on active button
199
+ async setFocus() {
200
+ const currentDomElement = this.nativeNav.querySelector(`li.duet-pagination-item-is-active duet-button`);
201
+ currentDomElement && (await currentDomElement.setFocus());
202
+ }
203
+ //handles click on page numbers
204
+ pageClickHandler(e) {
205
+ e.preventDefault();
206
+ const clickedId = Number(e.target.getAttribute("data-id"));
207
+ this.current = clickedId;
208
+ this.emitPageEvent({}, clickedId);
209
+ }
210
+ //handles click on the next section buttons
211
+ sectionClickHandler(e, direction) {
212
+ e.preventDefault();
213
+ let next = this.internalSectionIndex + direction;
214
+ if (next >= this.totalPages / this.take) {
215
+ next = this.totalPages / this.take - 1;
216
+ }
217
+ const newSection = next;
218
+ this.internalSectionIndex = newSection >= 0 ? newSection : 0;
219
+ }
220
+ //handles click on the jump (1)button
221
+ jumpToStart(e) {
222
+ e.preventDefault();
223
+ this.internalSectionIndex = 0;
224
+ this.current = 1;
225
+ }
226
+ //handles click on the jump (total) button
227
+ jumpToEnd(e) {
228
+ e.preventDefault();
229
+ this.internalSectionIndex = this.totalPages / this.take - 1;
230
+ this.current = this.totalPages;
231
+ }
232
+ // render the individual page numbers
233
+ renderPageNumbers() {
234
+ const items = [];
235
+ let i = this.internalSectionIndex * this.visibleItems;
236
+ do {
237
+ i++;
238
+ if (i > this.totalPages) {
239
+ break;
240
+ }
241
+ items.push(h("li", { class: {
242
+ "duet-pagination-item": true,
243
+ "duet-pagination-item-is-active": i === this.current,
244
+ }, role: "menuitem" },
245
+ h("duet-button", { class: {
246
+ "duet-pagination-link": true,
247
+ }, color: i !== this.current ? "secondary" : "primary", "data-id": i, "center-text": true, variation: "plain", margin: "none", accessibleLabel: `${this.ariaLabels.go_to} ${i}`, onClick: e => this.pageClickHandler(e) },
248
+ h("div", { class: "duet-pagination-page-number", "aria-hidden": true }, i))));
249
+ } while (i < this.visibleItems + this.internalSectionIndex * this.visibleItems);
250
+ return items;
251
+ }
252
+ shouldDisplayNavigation() {
253
+ return shouldDisplayNavigation(this.visibleItems, this.total, this.take);
254
+ }
255
+ /**
256
+ * render() function
257
+ * Always the last one in the class.
258
+ */
259
+ render() {
260
+ return (h(Host, { onKeyDown: e => this.onKeyboardDown(e) },
261
+ h("nav", { role: "navigation", class: "duet-pagination-nav", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls },
262
+ this.numbersStore !== "" && (h("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.ariaLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" },
263
+ h("duet-badge", null,
264
+ "jump to page : ",
265
+ this.numbersStore))),
266
+ h("ol", { id: this.listId, class: {
267
+ "duet-pagination": true,
268
+ "duet-pagination-is-dimmed": this.numbersStore !== "",
269
+ }, role: "menubar", "aria-label": this.ariaLabels.pagination_label, "aria-description": this.ariaLabels.description },
270
+ h("li", { class: {
271
+ "duet-pagination-page-button": true,
272
+ "duet-pagination-button-first": true,
273
+ }, role: "menuitem", part: "navigation-arrow" },
274
+ h("button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", class: "duet-date-dialog-prev", type: "button", onClick: e => this.onMouseHandler(e, -1), "aria-label": this.ariaLabels.previous_page },
275
+ h("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" }))),
276
+ this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (h(Fragment, null,
277
+ h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" },
278
+ h("duet-button", { class: "duet-pagination-link", "center-text": "true", variation: "plain", color: "secondary", margin: "none", accessibleLabel: this.ariaLabels.first_page, onClick: e => this.jumpToStart(e) },
279
+ h("div", { class: "duet-pagination-page-number" }, "1"))),
280
+ h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" },
281
+ h("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1) },
282
+ h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))),
283
+ this.renderPageNumbers(),
284
+ this.internalSectionIndex !== this.totalPages / this.visibleItems - 1 && this.shouldDisplayNavigation() && (h(Fragment, null,
285
+ h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" },
286
+ h("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1) },
287
+ h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))),
288
+ h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" },
289
+ h("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.last_page, onClick: e => this.jumpToEnd(e) },
290
+ h("div", { class: "duet-pagination-page-number" }, this.totalPages))))),
291
+ h("li", { class: {
292
+ "duet-pagination-page-button": true,
293
+ "duet-pagination-button-last": true,
294
+ }, role: "menuitem", part: "navigation-arrow" },
295
+ h("button", { disabled: this.current === this.totalPages &&
296
+ this.internalSectionIndex === Math.ceil(this.totalPages / this.visibleItems) - 1, class: "duet-date-dialog-next", type: "button", "aria-label": this.ariaLabels.next_page, onClick: e => this.onMouseHandler(e, 1) },
297
+ h("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" })))))));
298
+ }
299
+ static get is() { return "duet-pagination"; }
300
+ static get encapsulation() { return "shadow"; }
301
+ static get originalStyleUrls() { return {
302
+ "$": ["duet-pagination.scss"]
303
+ }; }
304
+ static get styleUrls() { return {
305
+ "$": ["duet-pagination.css"]
306
+ }; }
307
+ static get properties() { return {
308
+ "theme": {
309
+ "type": "string",
310
+ "mutable": true,
311
+ "complexType": {
312
+ "original": "DuetTheme",
313
+ "resolved": "\"\" | \"default\" | \"turva\"",
314
+ "references": {
315
+ "DuetTheme": {
316
+ "location": "import",
317
+ "path": "../../common-types"
318
+ }
319
+ }
320
+ },
321
+ "required": false,
322
+ "optional": false,
323
+ "docs": {
324
+ "tags": [],
325
+ "text": "Theme of the pagination."
326
+ },
327
+ "attribute": "theme",
328
+ "reflect": false,
329
+ "defaultValue": "\"\""
330
+ },
331
+ "jumpString": {
332
+ "type": "string",
333
+ "mutable": false,
334
+ "complexType": {
335
+ "original": "string",
336
+ "resolved": "string",
337
+ "references": {}
338
+ },
339
+ "required": false,
340
+ "optional": false,
341
+ "docs": {
342
+ "tags": [],
343
+ "text": "Characters to use for the jump buttons."
344
+ },
345
+ "attribute": "jump-string",
346
+ "reflect": false,
347
+ "defaultValue": "\"...\""
348
+ },
349
+ "ariaLabelsDefaults": {
350
+ "type": "unknown",
351
+ "mutable": false,
352
+ "complexType": {
353
+ "original": "DuetLangObject",
354
+ "resolved": "DuetLangObject",
355
+ "references": {
356
+ "DuetLangObject": {
357
+ "location": "import",
358
+ "path": "../../utils/language-utils"
359
+ }
360
+ }
361
+ },
362
+ "required": false,
363
+ "optional": false,
364
+ "docs": {
365
+ "tags": [],
366
+ "text": "Default pagination labels"
367
+ },
368
+ "defaultValue": "{\n en: {\n next_page: \"Next page\",\n previous_page: \"Previous page\",\n first_page: \"First page\",\n last_page: \"Last page\",\n jump_to: \"Jump to page\",\n go_to: \"Go to page\",\n description:\n \"You may use arrow keys to select page number, or enter a page number when this element is in focus to jump to a page\",\n pagination_label: \"Pagination, choose a number to jump to a page\",\n prev_section: \"Show previous {0} page numbers, screen reader user should use arrowkeys to navigate\",\n next_section: \"Show next {0} page numbers, screen reader user should use arrowkeys to navigate\",\n },\n fi: {\n next_page: \"Seuraava sivu\",\n previous_page: \"Edellinen sivu\",\n first_page: \"Ensimm\u00E4inen sivu\",\n last_page: \"Viimeinen sivu\",\n jump_to: \"Siirry sivulle\",\n go_to: \"Siirry sivulle\",\n description:\n \"Voit k\u00E4ytt\u00E4\u00E4 nuolin\u00E4pp\u00E4imi\u00E4 sivunumeron valitsemiseen, tai kirjoittaa sivunumeron, jos t\u00E4m\u00E4 elementti on aktiivinen, siirtym\u00E4\u00E4n sivulle\",\n pagination_label: \"Sivutus, valitse sivunumero siirty\u00E4ksesi sivulle\",\n prev_section: \"N\u00E4yt\u00E4 edelliset {0} sivunumerot, k\u00E4ytt\u00E4j\u00E4n pit\u00E4\u00E4 k\u00E4ytt\u00E4\u00E4 nuolin\u00E4pp\u00E4imi\u00E4 navigoidaksesi\",\n next_section: \"N\u00E4yt\u00E4 seuraavat {0} sivunumerot, k\u00E4ytt\u00E4j\u00E4n pit\u00E4\u00E4 k\u00E4ytt\u00E4\u00E4 nuolin\u00E4pp\u00E4imi\u00E4 navigoidaksesi\",\n },\n sv: {\n next_page: \"N\u00E4sta sida\",\n previous_page: \"F\u00F6reg\u00E5ende sida\",\n first_page: \"F\u00F6rsta sidan\",\n last_page: \"Sista sidan\",\n jump_to: \"Hoppa till sida\",\n go_to: \"Hoppa till sida\",\n description:\n \"Du kan anv\u00E4nda piltangenterna f\u00F6r att v\u00E4lja sida, eller skriva in sida n\u00E4r elementet \u00E4r i fokus f\u00F6r att hoppa till en sida\",\n pagination_label: \"Sidutning, v\u00E4lj en siffra f\u00F6r att hoppa till en sida\",\n prev_section: \"Visa f\u00F6reg\u00E5ende {0} sidnummer, skrivbordsl\u00E4sare ska anv\u00E4nda piltangenterna f\u00F6r att navigera\",\n next_section: \"Visa n\u00E4sta {0} sidnummer, skrivbordsl\u00E4sare ska anv\u00E4nda piltangenterna f\u00F6r att navigera\",\n },\n }"
369
+ },
370
+ "ariaLabels": {
371
+ "type": "unknown",
372
+ "mutable": false,
373
+ "complexType": {
374
+ "original": "Record<string, string>",
375
+ "resolved": "{ [x: string]: string; }",
376
+ "references": {
377
+ "Record": {
378
+ "location": "global"
379
+ }
380
+ }
381
+ },
382
+ "required": false,
383
+ "optional": false,
384
+ "docs": {
385
+ "tags": [],
386
+ "text": "Default pagination labels"
387
+ },
388
+ "defaultValue": "getLocaleString(\n this.ariaLabelsDefaults\n )"
389
+ },
390
+ "take": {
391
+ "type": "number",
392
+ "mutable": true,
393
+ "complexType": {
394
+ "original": "number",
395
+ "resolved": "number",
396
+ "references": {}
397
+ },
398
+ "required": false,
399
+ "optional": false,
400
+ "docs": {
401
+ "tags": [],
402
+ "text": "The size of the take, when paginating."
403
+ },
404
+ "attribute": "take",
405
+ "reflect": false,
406
+ "defaultValue": "5"
407
+ },
408
+ "visibleItems": {
409
+ "type": "number",
410
+ "mutable": true,
411
+ "complexType": {
412
+ "original": "number",
413
+ "resolved": "number",
414
+ "references": {}
415
+ },
416
+ "required": false,
417
+ "optional": false,
418
+ "docs": {
419
+ "tags": [],
420
+ "text": "Amount of visible page numbers to show"
421
+ },
422
+ "attribute": "visible-items",
423
+ "reflect": false,
424
+ "defaultValue": "5"
425
+ },
426
+ "total": {
427
+ "type": "number",
428
+ "mutable": true,
429
+ "complexType": {
430
+ "original": "number",
431
+ "resolved": "number",
432
+ "references": {}
433
+ },
434
+ "required": false,
435
+ "optional": false,
436
+ "docs": {
437
+ "tags": [],
438
+ "text": "The total size of the paginating data"
439
+ },
440
+ "attribute": "total",
441
+ "reflect": false,
442
+ "defaultValue": "1000"
443
+ },
444
+ "ariaControls": {
445
+ "type": "string",
446
+ "mutable": false,
447
+ "complexType": {
448
+ "original": "string",
449
+ "resolved": "string",
450
+ "references": {}
451
+ },
452
+ "required": false,
453
+ "optional": false,
454
+ "docs": {
455
+ "tags": [],
456
+ "text": "Used to indicate which dom element with ID this element controls"
457
+ },
458
+ "attribute": "accessible-controls",
459
+ "reflect": false,
460
+ "defaultValue": "\"\""
461
+ },
462
+ "current": {
463
+ "type": "number",
464
+ "mutable": true,
465
+ "complexType": {
466
+ "original": "number",
467
+ "resolved": "number",
468
+ "references": {}
469
+ },
470
+ "required": false,
471
+ "optional": false,
472
+ "docs": {
473
+ "tags": [],
474
+ "text": "The current page"
475
+ },
476
+ "attribute": "current",
477
+ "reflect": false,
478
+ "defaultValue": "1"
479
+ }
480
+ }; }
481
+ static get states() { return {
482
+ "numbersStore": {},
483
+ "totalPages": {},
484
+ "internalSectionIndex": {}
485
+ }; }
486
+ static get events() { return [{
487
+ "method": "duetPageChange",
488
+ "name": "duetPageChange",
489
+ "bubbles": false,
490
+ "cancelable": true,
491
+ "composed": true,
492
+ "docs": {
493
+ "tags": [],
494
+ "text": "Emitted a page selection has been made"
495
+ },
496
+ "complexType": {
497
+ "original": "DuetPaginationPageEvent",
498
+ "resolved": "{ originalEvent?: Event; component: \"duet-pagination\"; current: number; take: number; from: number; to: number; type: \"page\" | \"jump\"; }",
499
+ "references": {
500
+ "DuetPaginationPageEvent": {
501
+ "location": "local"
502
+ }
503
+ }
504
+ }
505
+ }]; }
506
+ static get elementRef() { return "element"; }
507
+ static get watchers() { return [{
508
+ "propName": "current",
509
+ "methodName": "watchStateHandler"
510
+ }]; }
511
+ }