@fremtind/jokul 0.12.0 → 0.13.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 (399) hide show
  1. package/build/ExpandableTableRow-BJSqC_Jo.js +2 -0
  2. package/build/ExpandableTableRow-BJSqC_Jo.js.map +1 -0
  3. package/build/ExpandableTableRow-BQjBxKCX.cjs +2 -0
  4. package/build/ExpandableTableRow-BQjBxKCX.cjs.map +1 -0
  5. package/build/build-stats.html +1 -1
  6. package/build/cjs/components/description-list/DescriptionList.js +2 -0
  7. package/build/cjs/components/description-list/DescriptionList.js.map +1 -0
  8. package/build/cjs/components/description-list/index.js +2 -0
  9. package/build/cjs/components/description-list/index.js.map +1 -0
  10. package/build/cjs/components/expander/ExpandSection.js +2 -0
  11. package/build/cjs/components/expander/ExpandSection.js.map +1 -0
  12. package/build/cjs/components/expander/Expander.js +2 -0
  13. package/build/cjs/components/expander/Expander.js.map +1 -0
  14. package/build/cjs/components/expander/index.js +2 -0
  15. package/build/cjs/components/expander/index.js.map +1 -0
  16. package/build/cjs/components/feedback/followup/Followup.js +1 -1
  17. package/build/cjs/components/feedback/followup/Followup.js.map +1 -1
  18. package/build/cjs/components/index.js +1 -1
  19. package/build/cjs/components/logo/Logo.js +2 -0
  20. package/build/cjs/components/logo/Logo.js.map +1 -0
  21. package/build/cjs/components/logo/LogoStamp.js +2 -0
  22. package/build/cjs/components/logo/LogoStamp.js.map +1 -0
  23. package/build/cjs/components/logo/index.js +2 -0
  24. package/build/cjs/components/logo/index.js.map +1 -0
  25. package/build/cjs/components/logo/text-paths/ForsikringLevertAvFremtind.js +2 -0
  26. package/build/cjs/components/logo/text-paths/ForsikringLevertAvFremtind.js.map +1 -0
  27. package/build/cjs/components/logo/text-paths/FraSB1ogDNB.js +2 -0
  28. package/build/cjs/components/logo/text-paths/FraSB1ogDNB.js.map +1 -0
  29. package/build/cjs/components/logo/text-paths/InnovasjonFraFremtind.js +2 -0
  30. package/build/cjs/components/logo/text-paths/InnovasjonFraFremtind.js.map +1 -0
  31. package/build/cjs/components/logo/text-paths/TeknologiFraFremtind.js +2 -0
  32. package/build/cjs/components/logo/text-paths/TeknologiFraFremtind.js.map +1 -0
  33. package/build/cjs/components/logo/text-paths/VartEgetForsikringsselskap.js +2 -0
  34. package/build/cjs/components/logo/text-paths/VartEgetForsikringsselskap.js.map +1 -0
  35. package/build/cjs/components/logo/text-paths/VartForsikringsselskap.js +2 -0
  36. package/build/cjs/components/logo/text-paths/VartForsikringsselskap.js.map +1 -0
  37. package/build/cjs/components/logo/text-paths/index.js +2 -0
  38. package/build/cjs/components/logo/text-paths/index.js.map +1 -0
  39. package/build/cjs/components/logo/useTextSpinner.js +2 -0
  40. package/build/cjs/components/logo/useTextSpinner.js.map +1 -0
  41. package/build/cjs/components/progress-bar/Countdown.js +2 -0
  42. package/build/cjs/components/progress-bar/Countdown.js.map +1 -0
  43. package/build/cjs/components/progress-bar/ProgressBar.js +2 -0
  44. package/build/cjs/components/progress-bar/ProgressBar.js.map +1 -0
  45. package/build/cjs/components/progress-bar/index.js +2 -0
  46. package/build/cjs/components/progress-bar/index.js.map +1 -0
  47. package/build/cjs/components/select/NativeSelect.js +1 -1
  48. package/build/cjs/components/select/Select.js +1 -1
  49. package/build/cjs/components/select/index.js +1 -1
  50. package/build/cjs/components/summary-table/SummaryTable.js +2 -0
  51. package/build/cjs/components/summary-table/SummaryTable.js.map +1 -0
  52. package/build/cjs/components/summary-table/SummaryTableRow.js +2 -0
  53. package/build/cjs/components/summary-table/SummaryTableRow.js.map +1 -0
  54. package/build/cjs/components/summary-table/index.js +2 -0
  55. package/build/cjs/components/summary-table/index.js.map +1 -0
  56. package/build/cjs/components/summary-table/mocks/index.js +2 -0
  57. package/build/cjs/components/summary-table/mocks/index.js.map +1 -0
  58. package/build/cjs/components/system-message/SystemMessage.js +2 -0
  59. package/build/cjs/components/system-message/SystemMessage.js.map +1 -0
  60. package/build/cjs/components/system-message/common/DismissButton.js +2 -0
  61. package/build/cjs/components/system-message/common/DismissButton.js.map +1 -0
  62. package/build/cjs/components/system-message/common/MessageIcon.js +2 -0
  63. package/build/cjs/components/system-message/common/MessageIcon.js.map +1 -0
  64. package/build/cjs/components/system-message/index.js +2 -0
  65. package/build/cjs/components/system-message/index.js.map +1 -0
  66. package/build/cjs/components/table/DataTable.js +2 -0
  67. package/build/cjs/components/table/DataTable.js.map +1 -0
  68. package/build/cjs/components/table/ExpandableTableRow.js +2 -0
  69. package/build/cjs/components/table/ExpandableTableRow.js.map +1 -0
  70. package/build/cjs/components/table/ExpandableTableRowController.js +2 -0
  71. package/build/cjs/components/table/ExpandableTableRowController.js.map +1 -0
  72. package/build/cjs/components/table/Table.js +2 -0
  73. package/build/cjs/components/table/Table.js.map +1 -0
  74. package/build/cjs/components/table/TableBody.js +2 -0
  75. package/build/cjs/components/table/TableBody.js.map +1 -0
  76. package/build/cjs/components/table/TableCaption.js +2 -0
  77. package/build/cjs/components/table/TableCaption.js.map +1 -0
  78. package/build/cjs/components/table/TableCell.js +2 -0
  79. package/build/cjs/components/table/TableCell.js.map +1 -0
  80. package/build/cjs/components/table/TableColumn.js +2 -0
  81. package/build/cjs/components/table/TableColumn.js.map +1 -0
  82. package/build/cjs/components/table/TableColumnGroup.js +2 -0
  83. package/build/cjs/components/table/TableColumnGroup.js.map +1 -0
  84. package/build/cjs/components/table/TableFooter.js +2 -0
  85. package/build/cjs/components/table/TableFooter.js.map +1 -0
  86. package/build/cjs/components/table/TableHead.js +2 -0
  87. package/build/cjs/components/table/TableHead.js.map +1 -0
  88. package/build/cjs/components/table/TableHeader.js +2 -0
  89. package/build/cjs/components/table/TableHeader.js.map +1 -0
  90. package/build/cjs/components/table/TablePagination.js +2 -0
  91. package/build/cjs/components/table/TablePagination.js.map +1 -0
  92. package/build/cjs/components/table/TableRow.js +2 -0
  93. package/build/cjs/components/table/TableRow.js.map +1 -0
  94. package/build/cjs/components/table/index.js +2 -0
  95. package/build/cjs/components/table/index.js.map +1 -0
  96. package/build/cjs/components/table/tableContext.js +2 -0
  97. package/build/cjs/components/table/tableContext.js.map +1 -0
  98. package/build/cjs/components/table/tableSectionContext.js +2 -0
  99. package/build/cjs/components/table/tableSectionContext.js.map +1 -0
  100. package/build/cjs/components/table/utils.js +2 -0
  101. package/build/cjs/components/table/utils.js.map +1 -0
  102. package/build/cjs/components/tabs/NavTab.js +2 -0
  103. package/build/cjs/components/tabs/NavTab.js.map +1 -0
  104. package/build/cjs/components/tabs/NavTabs.js +2 -0
  105. package/build/cjs/components/tabs/NavTabs.js.map +1 -0
  106. package/build/cjs/components/tabs/Tab.js +2 -0
  107. package/build/cjs/components/tabs/Tab.js.map +1 -0
  108. package/build/cjs/components/tabs/TabList.js +2 -0
  109. package/build/cjs/components/tabs/TabList.js.map +1 -0
  110. package/build/cjs/components/tabs/TabPanel.js +2 -0
  111. package/build/cjs/components/tabs/TabPanel.js.map +1 -0
  112. package/build/cjs/components/tabs/Tabs.js +2 -0
  113. package/build/cjs/components/tabs/Tabs.js.map +1 -0
  114. package/build/cjs/components/tabs/index.js +2 -0
  115. package/build/cjs/components/tabs/index.js.map +1 -0
  116. package/build/cjs/components/tabs/tabsContext.js +2 -0
  117. package/build/cjs/components/tabs/tabsContext.js.map +1 -0
  118. package/build/cjs/components/toast/Toast.js +2 -0
  119. package/build/cjs/components/toast/Toast.js.map +1 -0
  120. package/build/cjs/components/toast/ToastRegion.js +2 -0
  121. package/build/cjs/components/toast/ToastRegion.js.map +1 -0
  122. package/build/cjs/components/toast/index.js +2 -0
  123. package/build/cjs/components/toast/index.js.map +1 -0
  124. package/build/cjs/components/toast/toastContext.js +2 -0
  125. package/build/cjs/components/toast/toastContext.js.map +1 -0
  126. package/build/cjs/components/toast/types.js +2 -0
  127. package/build/cjs/components/toast/types.js.map +1 -0
  128. package/build/cjs/components/toggle-switch/ToggleSlider.js +2 -0
  129. package/build/cjs/components/toggle-switch/ToggleSlider.js.map +1 -0
  130. package/build/cjs/components/toggle-switch/ToggleSwitch.js +2 -0
  131. package/build/cjs/components/toggle-switch/ToggleSwitch.js.map +1 -0
  132. package/build/cjs/components/toggle-switch/index.js +2 -0
  133. package/build/cjs/components/toggle-switch/index.js.map +1 -0
  134. package/build/cjs/components/toggle-switch/usePillStyles.js +2 -0
  135. package/build/cjs/components/toggle-switch/usePillStyles.js.map +1 -0
  136. package/build/cjs/index.js +1 -1
  137. package/build/components/description-list/DescriptionList.d.ts +14 -0
  138. package/build/components/description-list/index.d.ts +1 -0
  139. package/build/components/expander/ExpandSection.d.ts +22 -0
  140. package/build/components/expander/Expander.d.ts +28 -0
  141. package/build/components/expander/index.d.ts +4 -0
  142. package/build/components/index.d.ts +10 -0
  143. package/build/components/logo/Logo.d.ts +15 -0
  144. package/build/components/logo/LogoStamp.d.ts +16 -0
  145. package/build/components/logo/index.d.ts +5 -0
  146. package/build/components/logo/text-paths/ForsikringLevertAvFremtind.d.ts +2 -0
  147. package/build/components/logo/text-paths/FraSB1ogDNB.d.ts +2 -0
  148. package/build/components/logo/text-paths/InnovasjonFraFremtind.d.ts +2 -0
  149. package/build/components/logo/text-paths/TeknologiFraFremtind.d.ts +2 -0
  150. package/build/components/logo/text-paths/VartEgetForsikringsselskap.d.ts +2 -0
  151. package/build/components/logo/text-paths/VartForsikringsselskap.d.ts +2 -0
  152. package/build/components/logo/text-paths/index.d.ts +6 -0
  153. package/build/components/logo/useTextSpinner.d.ts +5 -0
  154. package/build/components/progress-bar/Countdown.d.ts +12 -0
  155. package/build/components/progress-bar/ProgressBar.d.ts +22 -0
  156. package/build/components/progress-bar/index.d.ts +4 -0
  157. package/build/components/summary-table/SummaryTable.d.ts +9 -0
  158. package/build/components/summary-table/SummaryTableRow.d.ts +7 -0
  159. package/build/components/summary-table/index.d.ts +2 -0
  160. package/build/components/summary-table/mocks/index.d.ts +10 -0
  161. package/build/components/system-message/SystemMessage.d.ts +21 -0
  162. package/build/components/system-message/common/DismissButton.d.ts +5 -0
  163. package/build/components/system-message/common/MessageIcon.d.ts +7 -0
  164. package/build/components/system-message/index.d.ts +1 -0
  165. package/build/components/table/DataTable.d.ts +18 -0
  166. package/build/components/table/ExpandableTableRow.d.ts +17 -0
  167. package/build/components/table/ExpandableTableRowController.d.ts +10 -0
  168. package/build/components/table/Table.d.ts +11 -0
  169. package/build/components/table/TableBody.d.ts +5 -0
  170. package/build/components/table/TableCaption.d.ts +7 -0
  171. package/build/components/table/TableCell.d.ts +17 -0
  172. package/build/components/table/TableColumn.d.ts +5 -0
  173. package/build/components/table/TableColumnGroup.d.ts +5 -0
  174. package/build/components/table/TableFooter.d.ts +5 -0
  175. package/build/components/table/TableHead.d.ts +7 -0
  176. package/build/components/table/TableHeader.d.ts +22 -0
  177. package/build/components/table/TablePagination.d.ts +43 -0
  178. package/build/components/table/TableRow.d.ts +15 -0
  179. package/build/components/table/index.d.ts +34 -0
  180. package/build/components/table/tableContext.d.ts +12 -0
  181. package/build/components/table/tableSectionContext.d.ts +13 -0
  182. package/build/components/table/utils.d.ts +10 -0
  183. package/build/components/tabs/NavTab.d.ts +25 -0
  184. package/build/components/tabs/NavTabs.d.ts +9 -0
  185. package/build/components/tabs/Tab.d.ts +11 -0
  186. package/build/components/tabs/TabList.d.ts +18 -0
  187. package/build/components/tabs/TabPanel.d.ts +11 -0
  188. package/build/components/tabs/Tabs.d.ts +15 -0
  189. package/build/components/tabs/index.d.ts +6 -0
  190. package/build/components/tabs/tabsContext.d.ts +11 -0
  191. package/build/components/toast/Toast.d.ts +11 -0
  192. package/build/components/toast/ToastRegion.d.ts +7 -0
  193. package/build/components/toast/index.d.ts +2 -0
  194. package/build/components/toast/toastContext.d.ts +16 -0
  195. package/build/components/toast/types.d.ts +10 -0
  196. package/build/components/toggle-switch/ToggleSlider.d.ts +12 -0
  197. package/build/components/toggle-switch/ToggleSwitch.d.ts +32 -0
  198. package/build/components/toggle-switch/index.d.ts +2 -0
  199. package/build/components/toggle-switch/usePillStyles.d.ts +5 -0
  200. package/build/es/components/description-list/DescriptionList.js +2 -0
  201. package/build/es/components/description-list/DescriptionList.js.map +1 -0
  202. package/build/es/components/description-list/index.js +2 -0
  203. package/build/es/components/description-list/index.js.map +1 -0
  204. package/build/es/components/expander/ExpandSection.js +2 -0
  205. package/build/es/components/expander/ExpandSection.js.map +1 -0
  206. package/build/es/components/expander/Expander.js +2 -0
  207. package/build/es/components/expander/Expander.js.map +1 -0
  208. package/build/es/components/expander/index.js +2 -0
  209. package/build/es/components/expander/index.js.map +1 -0
  210. package/build/es/components/feedback/followup/Followup.js +1 -1
  211. package/build/es/components/feedback/followup/Followup.js.map +1 -1
  212. package/build/es/components/index.js +1 -1
  213. package/build/es/components/logo/Logo.js +2 -0
  214. package/build/es/components/logo/Logo.js.map +1 -0
  215. package/build/es/components/logo/LogoStamp.js +2 -0
  216. package/build/es/components/logo/LogoStamp.js.map +1 -0
  217. package/build/es/components/logo/index.js +2 -0
  218. package/build/es/components/logo/index.js.map +1 -0
  219. package/build/es/components/logo/text-paths/ForsikringLevertAvFremtind.js +2 -0
  220. package/build/es/components/logo/text-paths/ForsikringLevertAvFremtind.js.map +1 -0
  221. package/build/es/components/logo/text-paths/FraSB1ogDNB.js +2 -0
  222. package/build/es/components/logo/text-paths/FraSB1ogDNB.js.map +1 -0
  223. package/build/es/components/logo/text-paths/InnovasjonFraFremtind.js +2 -0
  224. package/build/es/components/logo/text-paths/InnovasjonFraFremtind.js.map +1 -0
  225. package/build/es/components/logo/text-paths/TeknologiFraFremtind.js +2 -0
  226. package/build/es/components/logo/text-paths/TeknologiFraFremtind.js.map +1 -0
  227. package/build/es/components/logo/text-paths/VartEgetForsikringsselskap.js +2 -0
  228. package/build/es/components/logo/text-paths/VartEgetForsikringsselskap.js.map +1 -0
  229. package/build/es/components/logo/text-paths/VartForsikringsselskap.js +2 -0
  230. package/build/es/components/logo/text-paths/VartForsikringsselskap.js.map +1 -0
  231. package/build/es/components/logo/text-paths/index.js +2 -0
  232. package/build/es/components/logo/text-paths/index.js.map +1 -0
  233. package/build/es/components/logo/useTextSpinner.js +2 -0
  234. package/build/es/components/logo/useTextSpinner.js.map +1 -0
  235. package/build/es/components/progress-bar/Countdown.js +2 -0
  236. package/build/es/components/progress-bar/Countdown.js.map +1 -0
  237. package/build/es/components/progress-bar/ProgressBar.js +2 -0
  238. package/build/es/components/progress-bar/ProgressBar.js.map +1 -0
  239. package/build/es/components/progress-bar/index.js +2 -0
  240. package/build/es/components/progress-bar/index.js.map +1 -0
  241. package/build/es/components/select/NativeSelect.js +1 -1
  242. package/build/es/components/select/Select.js +1 -1
  243. package/build/es/components/select/index.js +1 -1
  244. package/build/es/components/summary-table/SummaryTable.js +2 -0
  245. package/build/es/components/summary-table/SummaryTable.js.map +1 -0
  246. package/build/es/components/summary-table/SummaryTableRow.js +2 -0
  247. package/build/es/components/summary-table/SummaryTableRow.js.map +1 -0
  248. package/build/es/components/summary-table/index.js +2 -0
  249. package/build/es/components/summary-table/index.js.map +1 -0
  250. package/build/es/components/summary-table/mocks/index.js +2 -0
  251. package/build/es/components/summary-table/mocks/index.js.map +1 -0
  252. package/build/es/components/system-message/SystemMessage.js +2 -0
  253. package/build/es/components/system-message/SystemMessage.js.map +1 -0
  254. package/build/es/components/system-message/common/DismissButton.js +2 -0
  255. package/build/es/components/system-message/common/DismissButton.js.map +1 -0
  256. package/build/es/components/system-message/common/MessageIcon.js +2 -0
  257. package/build/es/components/system-message/common/MessageIcon.js.map +1 -0
  258. package/build/es/components/system-message/index.js +2 -0
  259. package/build/es/components/system-message/index.js.map +1 -0
  260. package/build/es/components/table/DataTable.js +2 -0
  261. package/build/es/components/table/DataTable.js.map +1 -0
  262. package/build/es/components/table/ExpandableTableRow.js +2 -0
  263. package/build/es/components/table/ExpandableTableRow.js.map +1 -0
  264. package/build/es/components/table/ExpandableTableRowController.js +2 -0
  265. package/build/es/components/table/ExpandableTableRowController.js.map +1 -0
  266. package/build/es/components/table/Table.js +2 -0
  267. package/build/es/components/table/Table.js.map +1 -0
  268. package/build/es/components/table/TableBody.js +2 -0
  269. package/build/es/components/table/TableBody.js.map +1 -0
  270. package/build/es/components/table/TableCaption.js +2 -0
  271. package/build/es/components/table/TableCaption.js.map +1 -0
  272. package/build/es/components/table/TableCell.js +2 -0
  273. package/build/es/components/table/TableCell.js.map +1 -0
  274. package/build/es/components/table/TableColumn.js +2 -0
  275. package/build/es/components/table/TableColumn.js.map +1 -0
  276. package/build/es/components/table/TableColumnGroup.js +2 -0
  277. package/build/es/components/table/TableColumnGroup.js.map +1 -0
  278. package/build/es/components/table/TableFooter.js +2 -0
  279. package/build/es/components/table/TableFooter.js.map +1 -0
  280. package/build/es/components/table/TableHead.js +2 -0
  281. package/build/es/components/table/TableHead.js.map +1 -0
  282. package/build/es/components/table/TableHeader.js +2 -0
  283. package/build/es/components/table/TableHeader.js.map +1 -0
  284. package/build/es/components/table/TablePagination.js +2 -0
  285. package/build/es/components/table/TablePagination.js.map +1 -0
  286. package/build/es/components/table/TableRow.js +2 -0
  287. package/build/es/components/table/TableRow.js.map +1 -0
  288. package/build/es/components/table/index.js +2 -0
  289. package/build/es/components/table/index.js.map +1 -0
  290. package/build/es/components/table/tableContext.js +2 -0
  291. package/build/es/components/table/tableContext.js.map +1 -0
  292. package/build/es/components/table/tableSectionContext.js +2 -0
  293. package/build/es/components/table/tableSectionContext.js.map +1 -0
  294. package/build/es/components/table/utils.js +2 -0
  295. package/build/es/components/table/utils.js.map +1 -0
  296. package/build/es/components/tabs/NavTab.js +2 -0
  297. package/build/es/components/tabs/NavTab.js.map +1 -0
  298. package/build/es/components/tabs/NavTabs.js +2 -0
  299. package/build/es/components/tabs/NavTabs.js.map +1 -0
  300. package/build/es/components/tabs/Tab.js +2 -0
  301. package/build/es/components/tabs/Tab.js.map +1 -0
  302. package/build/es/components/tabs/TabList.js +2 -0
  303. package/build/es/components/tabs/TabList.js.map +1 -0
  304. package/build/es/components/tabs/TabPanel.js +2 -0
  305. package/build/es/components/tabs/TabPanel.js.map +1 -0
  306. package/build/es/components/tabs/Tabs.js +2 -0
  307. package/build/es/components/tabs/Tabs.js.map +1 -0
  308. package/build/es/components/tabs/index.js +2 -0
  309. package/build/es/components/tabs/index.js.map +1 -0
  310. package/build/es/components/tabs/tabsContext.js +2 -0
  311. package/build/es/components/tabs/tabsContext.js.map +1 -0
  312. package/build/es/components/toast/Toast.js +2 -0
  313. package/build/es/components/toast/Toast.js.map +1 -0
  314. package/build/es/components/toast/ToastRegion.js +2 -0
  315. package/build/es/components/toast/ToastRegion.js.map +1 -0
  316. package/build/es/components/toast/index.js +2 -0
  317. package/build/es/components/toast/index.js.map +1 -0
  318. package/build/es/components/toast/toastContext.js +2 -0
  319. package/build/es/components/toast/toastContext.js.map +1 -0
  320. package/build/es/components/toast/types.js +2 -0
  321. package/build/es/components/toast/types.js.map +1 -0
  322. package/build/es/components/toggle-switch/ToggleSlider.js +2 -0
  323. package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -0
  324. package/build/es/components/toggle-switch/ToggleSwitch.js +2 -0
  325. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -0
  326. package/build/es/components/toggle-switch/index.js +2 -0
  327. package/build/es/components/toggle-switch/index.js.map +1 -0
  328. package/build/es/components/toggle-switch/usePillStyles.js +2 -0
  329. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -0
  330. package/build/es/index.js +1 -1
  331. package/package.json +26 -2
  332. package/src/components/button/styles/button.css +4 -4
  333. package/src/components/button/styles/button.min.css +1 -1
  334. package/src/components/checkbox/styles/checkbox.css +4 -4
  335. package/src/components/checkbox/styles/checkbox.min.css +1 -1
  336. package/src/components/description-list/styles/_index.scss +1 -0
  337. package/src/components/description-list/styles/description-list.css +42 -0
  338. package/src/components/description-list/styles/description-list.min.css +1 -0
  339. package/src/components/description-list/styles/description-list.scss +56 -0
  340. package/src/components/expander/styles/_index.scss +1 -0
  341. package/src/components/expander/styles/expander.css +80 -0
  342. package/src/components/expander/styles/expander.min.css +1 -0
  343. package/src/components/expander/styles/expander.scss +84 -0
  344. package/src/components/feedback/styles/feedback.css +2 -2
  345. package/src/components/feedback/styles/feedback.min.css +1 -1
  346. package/src/components/input-group/styles/_field-group.scss +5 -0
  347. package/src/components/input-group/styles/_index.scss +1 -0
  348. package/src/components/input-group/styles/_labels.scss +142 -0
  349. package/src/components/input-group/styles/input-group.css +189 -0
  350. package/src/components/input-group/styles/input-group.min.css +1 -0
  351. package/src/components/input-group/styles/input-group.scss +9 -0
  352. package/src/components/loader/styles/loader.css +6 -6
  353. package/src/components/loader/styles/loader.min.css +1 -1
  354. package/src/components/loader/styles/skeleton-loader.css +5 -5
  355. package/src/components/loader/styles/skeleton-loader.min.css +1 -1
  356. package/src/components/logo/styles/_index.scss +1 -0
  357. package/src/components/logo/styles/logo.css +92 -0
  358. package/src/components/logo/styles/logo.min.css +1 -0
  359. package/src/components/logo/styles/logo.scss +89 -0
  360. package/src/components/message/styles/message.css +2 -2
  361. package/src/components/message/styles/message.min.css +1 -1
  362. package/src/components/progress-bar/styles/_index.scss +1 -0
  363. package/src/components/progress-bar/styles/progress-bar.css +51 -0
  364. package/src/components/progress-bar/styles/progress-bar.min.css +1 -0
  365. package/src/components/progress-bar/styles/progress-bar.scss +55 -0
  366. package/src/components/radio-button/styles/radio-button.css +2 -2
  367. package/src/components/radio-button/styles/radio-button.min.css +1 -1
  368. package/src/components/summary-table/styles/_index.scss +1 -0
  369. package/src/components/summary-table/styles/summary-table.css +61 -0
  370. package/src/components/summary-table/styles/summary-table.min.css +1 -0
  371. package/src/components/summary-table/styles/summary-table.scss +56 -0
  372. package/src/components/system-message/styles/_index.scss +1 -0
  373. package/src/components/system-message/styles/system-message.css +179 -0
  374. package/src/components/system-message/styles/system-message.min.css +1 -0
  375. package/src/components/system-message/styles/system-message.scss +158 -0
  376. package/src/components/table/styles/_index.scss +1 -0
  377. package/src/components/table/styles/_table-caption.scss +7 -0
  378. package/src/components/table/styles/_table-cell.scss +83 -0
  379. package/src/components/table/styles/_table-head.scss +35 -0
  380. package/src/components/table/styles/_table-header.scss +76 -0
  381. package/src/components/table/styles/_table-pagination.scss +121 -0
  382. package/src/components/table/styles/_table-row.scss +183 -0
  383. package/src/components/tabs/styles/_index.scss +1 -0
  384. package/src/components/tabs/styles/tabs.css +116 -0
  385. package/src/components/tabs/styles/tabs.min.css +1 -0
  386. package/src/components/tabs/styles/tabs.scss +89 -0
  387. package/src/components/toast/styles/_index.scss +1 -0
  388. package/src/components/toast/styles/toast.css +222 -0
  389. package/src/components/toast/styles/toast.min.css +1 -0
  390. package/src/components/toast/styles/toast.scss +214 -0
  391. package/src/components/toggle-switch/styles/_index.scss +1 -0
  392. package/src/components/toggle-switch/styles/_toggle-slider.scss +132 -0
  393. package/src/components/tooltip/styles/tooltip.css +15 -0
  394. package/src/components/tooltip/styles/tooltip.min.css +1 -1
  395. package/src/components/tooltip/styles/tooltip.scss +16 -0
  396. package/build/NativeSelect-CNcZmpDZ.cjs +0 -2
  397. package/build/NativeSelect-CNcZmpDZ.cjs.map +0 -1
  398. package/build/NativeSelect-CfNZEQF0.js +0 -2
  399. package/build/NativeSelect-CfNZEQF0.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as o,Fragment as n}from"react/jsx-runtime";import{c as t}from"./clsx-BeLtu-UY.js";import s,{forwardRef as a,useState as i,useCallback as r,useMemo as l,useRef as c,useEffect as p}from"react";import{useAnimatedHeight as m}from"./es/hooks/useAnimatedHeight/useAnimatedHeight.js";import"./es/hooks/useScreen/useScreen.js";import{useId as d}from"./es/hooks/useId/useId.js";import"./es/components/icon/Icon.js";import{ArrowVerticalAnimated as u}from"./es/components/icon/icons/animated/ArrowVerticalAnimated.js";import"./es/components/icon/icons/animated/ArrowHorizontalAnimated.js";import"./es/components/icon/icons/animated/PlusRemoveAnimated.js";import"./es/components/icon/icons/ArrowDownIcon.js";import"./es/components/icon/icons/ArrowLeftIcon.js";import"./es/components/icon/icons/ArrowNorthEastIcon.js";import"./es/components/icon/icons/ArrowRightIcon.js";import"./es/components/icon/icons/ArrowUpIcon.js";import"./es/components/icon/icons/CalendarIcon.js";import"./es/components/icon/icons/CheckIcon.js";import"./es/components/icon/icons/ChevronDownIcon.js";import{ChevronLeftIcon as b}from"./es/components/icon/icons/ChevronLeftIcon.js";import{ChevronRightIcon as j}from"./es/components/icon/icons/ChevronRightIcon.js";import"./es/components/icon/icons/ChevronUpIcon.js";import"./es/components/icon/icons/CloseIcon.js";import"./es/components/icon/icons/CopyIcon.js";import"./es/components/icon/icons/DotsIcon.js";import"./es/components/icon/icons/DragIcon.js";import"./es/components/icon/icons/ErrorIcon.js";import"./es/components/icon/icons/GreenCheckIcon.js";import"./es/components/icon/icons/HamburgerIcon.js";import"./es/components/icon/icons/InfoIcon.js";import"./es/components/icon/icons/LinkIcon.js";import"./es/components/icon/icons/PlusIcon.js";import"./es/components/icon/icons/QuestionIcon.js";import"./es/components/icon/icons/RedCrossIcon.js";import"./es/components/icon/icons/SearchIcon.js";import"./es/components/icon/icons/SuccessIcon.js";import"./es/components/icon/icons/WarningIcon.js";import"./es/components/icon/icons/MinusIcon.js";import"./es/components/icon/icons/ThumbDownIcon.js";import"./es/components/icon/icons/ThumbUpIcon.js";import"./es/components/icon/icons/TrashCanIcon.js";import"./es/components/icon/icons/PenIcon.js";import"./es/components/button/Button.js";import"./es/components/card/Card.js";import"./es/components/card/CardImage.js";import"./es/components/card/NavCard.js";import"./es/components/checkbox/Checkbox.js";import"./es/components/combobox/Combobox.js";import"./es/components/cookie-consent/CookieConsentContext.js";import"react-dom";import"./es/components/modal/Modal.js";import"react-a11y-dialog";import"./es/components/list/List.js";import"./es/components/list/ListItem.js";import"./es/components/datepicker/DatePicker.js";import"./es/components/feedback/feedbackContext.js";import"./es/components/message/Message.js";import"./es/components/message/FormErrorMessage.js";import"./es/components/tooltip/Tooltip.js";import"./es/components/tooltip/TooltipContent.js";import"./es/components/tooltip/TooltipTrigger.js";import{InputGroup as h}from"./es/components/input-group/InputGroup.js";import"./es/components/feedback/followup/followupContext.js";import"./es/components/feedback/main-question/mainQuestionContext.js";import"./es/components/radio-button/RadioButton.js";import"./es/components/radio-button/radioGroupContext.js";import"./es/components/radio-button/BaseRadioButton.js";import"./es/components/text-input/BaseTextArea.js";import"./es/components/text-input/BaseTextInput.js";import"./es/components/text-input/TextArea.js";import{TextInput as v}from"./es/components/text-input/TextInput.js";import"./es/utilities/polymorphism/SlotComponent.js";import{IconButton as k}from"./es/components/icon-button/IconButton.js";import"./es/components/link/Link.js";import"./es/components/link/NavLink.js";import"./es/components/link-list/LinkList.js";import"./es/components/logo/text-paths/ForsikringLevertAvFremtind.js";import"./es/components/logo/text-paths/FraSB1ogDNB.js";import"./es/components/logo/text-paths/InnovasjonFraFremtind.js";import"./es/components/logo/text-paths/TeknologiFraFremtind.js";import"./es/components/logo/text-paths/VartEgetForsikringsselskap.js";import"./es/components/logo/text-paths/VartForsikringsselskap.js";import"./es/components/popover/Popover.js";import{usePreviousValue as g}from"./es/hooks/usePreviousValue/usePreviousValue.js";import{useListNavigation as f}from"./es/hooks/useListNavigation/useListNavigation.js";import{getValuePair as w}from"./es/utilities/valuePair.js";import"./es/components/system-message/SystemMessage.js";import"./es/components/table/DataTable.js";import"./es/components/table/Table.js";import"./es/components/table/TableBody.js";import"./es/components/table/TableCaption.js";import{TableCell as _}from"./es/components/table/TableCell.js";import"./es/components/table/TableColumn.js";import"./es/components/table/TableColumnGroup.js";import{useTableContext as x}from"./es/components/table/tableContext.js";import"./es/components/table/tableSectionContext.js";import"./es/components/table/TableFooter.js";import"./es/components/table/TableHead.js";import"./es/components/table/TableHeader.js";import{TableRow as y}from"./es/components/table/TableRow.js";import"./es/components/tabs/NavTab.js";import"./es/components/tabs/tabsContext.js";import"./es/components/tabs/Tab.js";import"./es/components/tag/Tag.js";import"./es/components/toast/toastContext.js";import"./es/components/toggle-switch/ToggleSwitch.js";import{focusSelected as C,toLower as N}from"./es/components/select/select-utils.js";import{ScreenReaderOnly as I}from"./es/components/ScreenReaderOnly.js";const P=s.forwardRef((({as:n="button",className:a,children:i,density:r,expandDirection:l="down",isExpanded:c=!1,hideLabel:p=!1,...m},d)=>{const b=p?I:s.Fragment,j="down"===l?!c:c;return e(n,{"aria-expanded":c,"data-testid":"jkl-expander",type:"button"===n?"button":void 0,className:t("jkl-expander",a,{"jkl-expander--expanded":c,"jkl-expander--icon-only":!i}),...m,"data-density":r,ref:d,children:[i&&o(b,{children:o("span",{className:"jkl-expander__text",children:i})}),o(u,{className:"jkl-expander__arrow",variant:"inherit",pointingDown:j,bold:c})]})}));P.displayName="Expander";const T=()=>{},L=a(((s,a)=>{const{id:b,name:j,items:v,value:k,label:_,labelProps:x,onChange:y,onBlur:I,onFocus:P,className:L,helpLabel:E,errorLabel:S,invalid:D,searchable:A=!1,inline:R=!1,defaultPrompt:F="Velg",density:$,width:B,maxShownOptions:M=5,style:V,...O}=s,G=d(b||"jkl-select",{generateSuffix:!b}),H=`${G}_label`,K=`${G}_button`,U=`${G}_search-input`,[q,Q]=i(!1),z=r((()=>{Q((e=>!e))}),[]),W=!!A,J=W&&q,[X,Y]=i(""),Z=r((e=>!!e.label.toLowerCase().includes(X.toLowerCase())||"function"==typeof A&&A(X,e)),[A,X]),ee=l((()=>v.map(w).map((e=>{const o=!W||""===X||Z(e);return{...e,visible:o}}))),[v,W,X,Z]),oe=l((()=>!(typeof k>"u")&&v.some((e=>"string"==typeof e?e===k:e.value===k))),[k,v]),[ne,te]=i(oe&&void 0!==k?k:""),se=""!==ne,ae=l((()=>{var e;return(null==(e=ee.find((e=>e.value===ne)))?void 0:e.label)||F}),[ee,ne,F]),ie=c(null),re=r((e=>{ie.current=e,a&&("function"==typeof a?a(e):a.current=e),e&&te(e.value)}),[ie,a]),le=g(k);p((()=>{k!==le&&te(typeof k>"u"||!oe?"":k)}),[te,k,le,oe]);const ce=r((e=>{const o=e.value;Y(""),te(o),z()}),[Y,te,z]),pe=g(ne);p((()=>{typeof pe>"u"||pe===ne||ne===k||(y&&y({type:"change",target:{name:j,value:ne}}),ie.current&&ie.current.dispatchEvent(new Event("change",{bubbles:!0})))}),[y,j,k,ne,pe]);const me=c(null),de=c(!1),ue=c(null),be=c(null),je=r(((e,o)=>{if(e&&!W){const e=o.current;e&&C(e,ne)}else e?ue.current&&ue.current.focus():de.current&&be.current&&be.current.focus()}),[W,ne]),[he]=m(q,{onFirstVisible:je,onTransitionEnd:je});f({ref:he});const ve=r((e=>{var o;const n=me.current;n&&n.contains(e.relatedTarget)||(W&&Y(""),I&&(I({type:"blur",target:{name:j,value:ne}}),null==(o=ie.current)||o.dispatchEvent(new Event("focusout",{bubbles:!0}))),de.current=!1,Q(!1))}),[I,W,j,ne]),ke=r((()=>{de.current||(P&&P({type:"change",target:{name:j,value:ne}}),de.current=!0)}),[P,ne,j]),ge=r((e=>{e.target.focus({preventScroll:!0})}),[]);p((()=>{const e=ie.current,o=ue.current,n=be.current,t=me.current;return null==e||e.addEventListener("focus",(()=>{J?null==o||o.focus():null==n||n.focus()})),null==e||e.addEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()})),()=>{null==e||e.removeEventListener("focus",(()=>{J?null==o||o.focus():null==n||n.focus()})),null==e||e.removeEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()}))}}),[J]);const fe=r((e=>{"ArrowDown"!==e.key&&" "!==e.key||q?"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),Q(!1)):(e.preventDefault(),e.stopPropagation(),Q(!0))}),[Q,q]),we=r((e=>{if("ArrowDown"===e.key){e.preventDefault(),e.stopPropagation();const o=he.current;o&&C(o,W?void 0:ne)}else if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),Q(!1);else if("Tab"!==e.key||e.shiftKey)"Enter"===e.key&&q&&(e.preventDefault(),e.stopPropagation());else{const o=he.current;o&&(e.preventDefault(),e.stopPropagation(),C(o,ne))}}),[Q,he,ne,W,q]),_e=r((e=>{if("Tab"===e.key)e.preventDefault(),e.stopPropagation(),e.shiftKey&&ue.current?ue.current.focus():be.current&&(te(e.currentTarget.value),Q(!1),be.current.focus());else if("ArrowUp"===e.key&&he.current&&ue.current){const o=he.current.querySelector('[role="option"]:not([hidden])');e.currentTarget.id===(null==o?void 0:o.id)&&ue.current&&ue.current.focus()}}),[Q,he]);return p((()=>{const e=e=>{"Escape"===e.key&&q&&Q(!1)};return typeof window<"u"&&q&&window.addEventListener("keydown",e),()=>{typeof window<"u"&&window.removeEventListener("keydown",e)}}),[Q,q]),e(n,{children:[e("select",{name:j,tabIndex:-1,"data-testid":"jkl-native-select",className:"jkl-sr-only","aria-hidden":!0,ref:re,value:ne,onChange:T,children:[o("option",{value:""})," ",ee.map((e=>o("option",{hidden:!e.visible,value:e.value,children:e.label},`${G}-opt-${e.value}`)))]}),o(h,{ref:me,"data-testid":"jkl-select",className:t("jkl-select",L,{"jkl-select--inline":R,"jkl-select--open":q&&ee.some((e=>e.visible)),"jkl-select--no-value":!se,"jkl-select--invalid":!!S||D}),...O,id:W?U:K,style:{"--jkl-select-max-shown-options":M,...V},density:$,label:_,labelProps:{id:H,srOnly:R,...x,htmlFor:W?U:K},helpLabel:E,errorLabel:S,render:n=>e("div",{className:"jkl-select__outer-wrapper",style:{width:B},children:[W&&o("input",{...n,id:U,hidden:!J,ref:ue,placeholder:"Søk",value:X,onChange:e=>Y(e.target.value),"data-testid":"jkl-select__search-input",className:"jkl-select__search-input","aria-autocomplete":"list","aria-activedescendant":se?`${G}__${N(ne)}`:void 0,"aria-controls":G,"aria-expanded":q,role:"combobox",onKeyDown:we,onBlur:ve,onFocus:ke,onClick:e=>{e.stopPropagation()}}),o("button",{...n,id:K,ref:be,hidden:J,type:"button",name:`${j}-btn`,className:t("jkl-select__button",{"jkl-select__button--active-value":!!ne}),"data-testid":"jkl-select__button","aria-label":`${ae||"Velg"},${_}`,"aria-expanded":q,"aria-controls":G,onBlur:ve,onFocus:ke,onKeyDown:fe,onClick:z,onMouseDown:e=>{var o;e.preventDefault(),null==(o=be.current)||o.focus()},children:ae}),o("div",{id:G,ref:he,role:"listbox",className:"jkl-select__options-menu",hidden:!q||ee.every((e=>!e.visible)),"aria-labelledby":H,tabIndex:-1,"data-focus":"controlled",children:ee.map(((n,t)=>n.visible?e("button",{hidden:!n.visible,type:"button",id:`${G}__${N(n.value)}`,className:"jkl-select__option","data-testid":"jkl-select__option","aria-selected":n.value===ne,role:"option",value:n.value,"data-testautoid":`jkl-select__option-${t}`,onBlur:ve,onFocus:ke,onKeyDown:_e,onClick:e=>{e.preventDefault(),ce(n)},onMouseOver:ge,children:[n.label,n.description?o("span",{className:"jkl-select__option-description",children:n.description}):null]},`${G}-${n.value}`):null))}),o(u,{variant:"medium",pointingDown:!q,className:"jkl-select__arrow"})]})})]})}));L.displayName="Select";const E=a(((n,s)=>{const{label:a,className:i,density:r,errorLabel:l,helpLabel:c,inline:p,invalid:m,items:d,labelProps:b,placeholder:j="Velg",selectClassName:v,supportLabelProps:k,tooltipProps:g,value:f,width:_,...x}=n;return o(h,{label:a,density:r,errorLabel:l,helpLabel:c,labelProps:b,inline:p,supportLabelProps:k,tooltipProps:g,"data-testid":"jkl-select",className:t("jkl-select",i,{"jkl-select--inline":p,"jkl-select--invalid":!!l||m}),render:n=>e("div",{className:"jkl-select__outer-wrapper",style:{width:_},children:[e("select",{ref:s,className:t("jkl-select__button",v,{"jkl-select__button--active-value":!!f}),defaultValue:f?void 0:"",value:f,...n,...x,children:[j&&!f&&o("option",{disabled:!0,value:"",children:j}),d.map(w).map((e=>o("option",{"data-testid":"jkl-select__option",className:"jkl-select__option",value:e.value,children:e.label},e.value)))]}),o(u,{variant:"medium",pointingDown:!0,className:"jkl-select__arrow"})]})})}));E.displayName="NativeSelect";const S=a(((n,s)=>{const{activePage:a=0,totalNumberOfRows:l,rowsPerPage:c,rowsPerPageItems:p,className:m,density:u,id:h,withGoToPage:g=!1,onChange:f,onChangeRowsPerPage:w,labels:_={rowsPerPage:"Rader per side",previous:"Forrige",next:"Neste"},...y}=n,C=d(h||"jkl-table-pagination",{generateSuffix:!h}),{density:N}=x(),I=c<=0?1:Math.ceil(l/c),[P,T]=i(function(e,o,n){return o<e?e:o>n?n:o}(0,a,I-1)),L=r((e=>{const o=Number.parseInt(e.currentTarget.dataset.number);f(e,o,P),T(o),A(String(o+1))}),[f,T,P]),[S,A]=i(String(P+1)),R=r((e=>{A(e.target.value);try{const o=Number.parseInt(e.target.value)-1;if(Number.isNaN(o))return;o>=0&&o<I&&(f(e,o,P),T(o))}catch{return}}),[f,A,T,P,I]),F=r((e=>{if(0===P)return void f(e,P,P);const o=P-1;f(e,o,P),T(o),A(String(o+1))}),[f,T,P]),$=r((e=>{if(P===I-1)return void f(e,P,P);const o=P+1;f(e,o,P),T(o),A(String(o+1))}),[f,T,I,P]);return e("div",{className:t("jkl-table-pagination",m),...y,id:C,"data-density":u||N,ref:s,children:[o("div",{className:"jkl-table-pagination__left",children:e("div",{className:"jkl-table-pagination__picker jkl-table-pagination__picker--rows",children:[e("span",{className:"jkl-table-pagination__picker-label","aria-hidden":"true",children:[_.rowsPerPage,":"]}),o(E,{className:"jkl-table-pagination__picker-input",label:_.rowsPerPage,labelProps:{srOnly:!0},name:`${C}-rows-per-page`,items:p.map((e=>"number"==typeof e?String(e):{label:e.label,value:String(e.value)})),value:String(c),onChange:w,width:"min(8rem, 100%)",inline:!0})]})}),o("div",{className:"jkl-table-pagination__right",children:1!==I&&e("nav",{className:"jkl-table-pagination__nav",children:[g&&e("div",{className:"jkl-table-pagination__picker jkl-table-pagination__picker--page",children:[e("span",{className:"jkl-table-pagination__picker-label","aria-hidden":"true",children:["object"==typeof g?g.gotoLabel:"Gå til side",":"]}),o(v,{className:"jkl-table-pagination__picker-input",label:"object"==typeof g?g.gotoLabel:"Gå til side",labelProps:{srOnly:!0},name:`${C}-go-to-page`,value:S,width:"min(4rem, 100%)",onChange:R,"aria-invalid":S&&S!==String(P+1)?"true":void 0})]}),e("ul",{children:[o("li",{children:o(k,{className:"jkl-table-pagination__previous",title:_.previous,onClick:F,children:o(b,{})})}),o(D,{id:C,activePage:a,numberOfPages:I,onPageClick:L}),o("li",{children:o(k,{className:"jkl-table-pagination__next",title:_.next,onClick:$,children:o(j,{})})})]})]})})]})})),D=({id:s,activePage:a,numberOfPages:i,onPageClick:r})=>{if(i<=7)return o(n,{children:Array.from({length:i}).map(((e,n)=>o("li",{children:o("button",{className:t("jkl-table-pagination__page",{"jkl-table-pagination__page--active":a===n}),type:"button","data-number":n,onClick:r,children:n+1})},`${s}-page-${n}`)))});const l=a>3&&i>7,c=a<i-4&&i>7,p=Math.min(Math.max(a-2,1),i-6),m=Math.min(p+1,i-5),d=Math.min(m+1,i-4),u=Math.min(m+2,i-3),b=Math.min(m+3,i-2);return e(n,{children:[o("li",{children:o(A,{isActive:0===a,number:0,onClick:r})}),o("li",{children:l?o("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):o(A,{isActive:a===p,number:p,onClick:r})}),o("li",{children:o(A,{isActive:a===m,number:m,onClick:r})}),o("li",{children:o(A,{isActive:a===d,number:d,onClick:r})}),o("li",{children:o(A,{isActive:a===u,number:u,onClick:r})}),o("li",{children:c?o("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):o(A,{isActive:a===b,number:b,onClick:r})}),o("li",{children:o(A,{isActive:a===i-1,number:i-1,onClick:r})})]})},A=({isActive:e,number:n,onClick:s,...a})=>o("button",{className:t("jkl-table-pagination__page",{"jkl-table-pagination__page--active":e}),type:"button","data-number":n,onClick:s,...a,children:n+1});S.displayName="TablePagination";const R=a((({isOpen:e,onClick:n,children:s,className:a,id:i,"aria-controls":r,...l},c)=>{if(void 0===e||"function"!=typeof n)throw new Error("ExpandableTableRowController must have ExpandableTableRow as parent");const{density:p,collapseToList:m}=x(),d=l["data-th"],u=m?d:void 0;return o(_,{className:t("jkl-table-cell--expand",{"jkl-table-cell--expand-without-text":!s},a),...l,ref:c,children:o(P,{className:t("jkl-table-row-expand-button",{"jkl-table-row-expand-button--expanded":e}),id:i,density:p,isExpanded:e,"aria-controls":r,"aria-label":s?void 0:d||"Ekspander rad",onClick:e=>{e.stopPropagation(),n()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.stopPropagation(),e.preventDefault(),n())},children:s??u})})}));R.displayName="ExpandableTableRowController";const F=a(((a,r)=>{const{className:l,clickable:c,children:u,expandedChildren:b,onToggle:j,colSpan:h=100,isOpen:v,...k}=a,[g,f]=i(v??!1);p((()=>{typeof v>"u"||f(v)}),[v]);const[w]=m(g,{timing:"expressive"}),_=()=>{const e=!g;j&&j(e),f(e)},x=t("jkl-table-row--expandable",l,{"jkl-table-row--expanded":g,"jkl-expandable-table-row--clickable-external":c}),C=t("jkl-expandable-table-row__expanded-row",{"jkl-expandable-table-row__expanded-row--expanded":g}),N=d("jkl-expandable-table-row"),I=d("jkl-expandable-table-row-controller");return e(n,{children:[o(y,{className:x,clickable:c??{onClick:()=>_()},...k,ref:r,children:s.Children.map(u,(e=>s.isValidElement(e)&&e.type==R?s.cloneElement(e,{isOpen:g,onClick:()=>_(),"aria-controls":N,id:I}):e))}),o("tr",{"aria-hidden":!g,children:o("td",{colSpan:h,children:o("div",{ref:w,className:C,id:N,"aria-labelledby":I,hidden:!g,role:"group",children:b})})})]})}));F.displayName="ExpandableTableRow";export{P as E,E as N,L as S,S as T,F as a,R as b};
2
+ //# sourceMappingURL=ExpandableTableRow-BJSqC_Jo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpandableTableRow-BJSqC_Jo.js","sources":["../src/components/expander/Expander.tsx","../src/components/select/Select.tsx","../src/components/select/NativeSelect.tsx","../src/components/table/TablePagination.tsx","../src/components/table/ExpandableTableRowController.tsx","../src/components/table/ExpandableTableRow.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { ForwardedRef } from \"react\";\nimport { Density, ScreenReaderOnly, WithChildren } from \"../..\";\nimport { ArrowVerticalAnimated } from \"../icon\";\n\nexport type ExpandDirection = \"up\" | \"down\";\n\nexport interface ExpanderProps extends WithChildren {\n as?: \"summary\" | \"button\";\n /** Må settes dersom du ikke bruker CoreToggle. Verdien skal være IDen til innholdet du ekspanderer. */\n \"aria-controls\"?: string;\n /** Må settes dersom du ikke bruker CoreToggle. IDen her skal brukes som verdien til aria-labelledby på innholdet du ekspanderer. */\n id?: string;\n className?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n /**\n * Styrer retningen til pila, som animeres ved endring. Styrer også aria-expanded.\n * @default false\n */\n isExpanded?: boolean;\n /** @default \"down\" */\n expandDirection?: ExpandDirection;\n density?: Density;\n /**\n * Skjul knappeteksten visuelt.\n *\n * @default false\n */\n hideLabel?: boolean;\n}\n\nexport const Expander = React.forwardRef(\n (\n {\n as = \"button\",\n className,\n children,\n density,\n expandDirection = \"down\",\n isExpanded = false,\n hideLabel = false,\n ...rest\n }: ExpanderProps,\n ref: ForwardedRef<HTMLButtonElement>,\n ): JSX.Element => {\n const ContentWrapper = hideLabel ? ScreenReaderOnly : React.Fragment;\n const pointingDown = expandDirection === \"down\" ? !isExpanded : isExpanded;\n\n const El = as;\n const type = El === \"button\" ? \"button\" : undefined;\n\n return (\n <El\n aria-expanded={isExpanded}\n data-testid=\"jkl-expander\"\n type={type}\n className={clsx(\"jkl-expander\", className, {\n \"jkl-expander--expanded\": isExpanded,\n \"jkl-expander--icon-only\": !children,\n })}\n {...rest}\n data-density={density}\n ref={ref}\n >\n {children && (\n <ContentWrapper>\n <span className=\"jkl-expander__text\">{children}</span>\n </ContentWrapper>\n )}\n <ArrowVerticalAnimated\n className=\"jkl-expander__arrow\"\n variant=\"inherit\"\n pointingDown={pointingDown}\n bold={isExpanded}\n />\n </El>\n );\n },\n);\n\nExpander.displayName = \"Expander\";\n","import clsx from \"clsx\";\nimport React, {\n FocusEvent,\n forwardRef,\n useEffect,\n useRef,\n useState,\n KeyboardEvent,\n ChangeEvent,\n useCallback,\n useMemo,\n RefObject,\n MouseEvent,\n CSSProperties,\n} from \"react\";\nimport { type ValuePair, getValuePair, type DataTestAutoId, type Density } from \"../..\";\nimport { useId, useAnimatedHeight, usePreviousValue, useListNavigation } from \"../../hooks\";\nimport { ArrowVerticalAnimated } from \"../icon\";\nimport { InputGroup, type LabelProps, type InputGroupProps } from \"../input-group\";\nimport { toLower, focusSelected } from \"./select-utils\";\n\ninterface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLSelectElement>, \"target\">> {\n /** Kreves av react-hook-form, det skjer ulike ting avhengig av om det er blur eller change */\n type: \"change\" | \"blur\";\n target: {\n /** Kreves av react-hook-form for å vite hvilket skjemafelt som ble endret */\n name: string;\n value: string;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface Option extends ValuePair {\n visible: boolean;\n}\n\nexport interface SelectProps extends Omit<InputGroupProps, \"children\">, DataTestAutoId {\n id?: string;\n name: string;\n label: string;\n labelProps?: Omit<LabelProps, \"children\" | \"density\" | \"htmlFor\" | \"standAlone\">;\n items: Array<string | ValuePair>;\n /**\n * @default false\n */\n inline?: boolean;\n /**\n * @default \"Velg\"\n */\n defaultPrompt?: string;\n className?: string;\n value?: string;\n helpLabel?: string;\n errorLabel?: string;\n /**\n * @default false\n */\n searchable?: boolean | ((searchValue: string, searchItem: string | ValuePair) => boolean);\n density?: Density;\n width?: string;\n onChange?: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n /**\n * Merk som ugyldig uten å sende inn en errorLabel.\n * NB! Brukes kun i tilfeller der valideringsfeil dukker opp andre steder, for eksempel i en FieldGroup.\n */\n invalid?: boolean;\n /**\n * Hvor mange valg skal vises i listen før den begynner å scrolle.\n * @default 5\n */\n maxShownOptions?: number;\n}\n\nconst noop = () => {\n return;\n};\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>((props, forwardedSelectRef) => {\n const {\n id,\n name,\n items,\n value,\n label,\n labelProps,\n onChange,\n onBlur,\n onFocus,\n className,\n helpLabel,\n errorLabel,\n invalid,\n searchable = false,\n inline = false,\n defaultPrompt = \"Velg\",\n density,\n width,\n maxShownOptions = 5,\n style,\n ...rest\n } = props;\n\n const listId = useId(id || \"jkl-select\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const searchInputId = `${listId}_search-input`;\n\n const [dropdownIsShown, setShown] = useState(false);\n const toggleListVisibility = useCallback(() => {\n setShown((previousValue) => !previousValue);\n }, []);\n\n /// Søk\n\n const isSearchable = Boolean(searchable);\n const showSearchInputField = isSearchable && dropdownIsShown;\n const [searchValue, setSearchValue] = useState(\"\");\n const searchFn = useCallback(\n (item: ValuePair) => {\n if (item.label.toLowerCase().includes(searchValue.toLowerCase())) {\n return true;\n }\n\n if (typeof searchable === \"function\") {\n return searchable(searchValue, item);\n }\n\n return false;\n },\n [searchable, searchValue],\n );\n const visibleItems: Option[] = useMemo(\n () =>\n items.map(getValuePair).map((item) => {\n const visible = !isSearchable || searchValue === \"\" || searchFn(item);\n return { ...item, visible };\n }),\n [items, isSearchable, searchValue, searchFn],\n );\n const valueIsInItems: boolean = useMemo(() => {\n if (typeof value === \"undefined\") {\n return false;\n }\n return items.some((item) => (typeof item === \"string\" ? item === value : item.value === value));\n }, [value, items]);\n\n /// Valg av <option>\n\n const [selectedValue, setSelectedValue] = useState<string>(valueIsInItems && value !== undefined ? value : \"\");\n const hasSelectedValue = selectedValue !== \"\";\n const selectedValueLabel = useMemo(\n () => visibleItems.find((item) => item.value === selectedValue)?.label || defaultPrompt,\n [visibleItems, selectedValue, defaultPrompt],\n );\n\n const selectRef = useRef<HTMLSelectElement | null>(null);\n // Hjelpefunksjon som gjør det enklere å forwarde refen og å bruke den selv internt\n const unifiedSelectRef = useCallback(\n (instance: HTMLSelectElement | null) => {\n selectRef.current = instance;\n if (forwardedSelectRef) {\n if (typeof forwardedSelectRef === \"function\") {\n forwardedSelectRef(instance);\n } else {\n forwardedSelectRef.current = instance;\n }\n }\n if (instance) {\n setSelectedValue(instance.value);\n }\n },\n [selectRef, forwardedSelectRef],\n );\n\n const previousValue = usePreviousValue(value);\n useEffect(() => {\n if (value === previousValue) {\n return;\n }\n if (typeof value === \"undefined\" || !valueIsInItems) {\n setSelectedValue(\"\");\n } else {\n setSelectedValue(value);\n }\n }, [setSelectedValue, value, previousValue, valueIsInItems]);\n\n const selectOption = useCallback(\n (item: Option) => {\n const nextValue = item.value;\n setSearchValue(\"\");\n setSelectedValue(nextValue);\n toggleListVisibility();\n },\n [setSearchValue, setSelectedValue, toggleListVisibility],\n );\n\n // La komponenten rendre <select> med den valgte verdien før onChange trigges, slik at\n // react-hook-form@>7.41.1 behandler feltet som at det har en verdi.\n const previousSelectedValue = usePreviousValue(selectedValue);\n useEffect(() => {\n // previousSelectedValue er undefined på første render, men da vil vi ikke ha en onChange uansett\n if (\n typeof previousSelectedValue === \"undefined\" ||\n previousSelectedValue === selectedValue ||\n selectedValue === value\n ) {\n return;\n }\n if (onChange) {\n onChange({ type: \"change\", target: { name, value: selectedValue } });\n }\n if (selectRef.current) {\n selectRef.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }, [onChange, name, value, selectedValue, previousSelectedValue]);\n\n /// Fokushåndtering\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleFocusPlacement = useCallback(\n (isOpen: boolean, ref: RefObject<HTMLElement>) => {\n if (isOpen && !isSearchable) {\n const listElement = ref.current;\n if (listElement) {\n focusSelected(listElement, selectedValue);\n }\n } else if (isOpen) {\n if (searchFieldRef.current) {\n searchFieldRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && buttonRef.current) {\n buttonRef.current.focus();\n }\n }\n },\n [isSearchable, selectedValue],\n );\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(dropdownIsShown, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLButtonElement | HTMLInputElement>) => {\n const componentRootElement = componentRootElementRef.current;\n // There are known issues in Firefox when using \"relatedTarget\" in onBlur events:\n // https://github.com/facebook/react/issues/2011\n // This might be fixed in react 17. Se issue above.\n const nextFocusIsInsideComponent =\n componentRootElement && componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n if (isSearchable) {\n setSearchValue(\"\");\n }\n if (onBlur) {\n onBlur({ type: \"blur\", target: { name, value: selectedValue } });\n selectRef.current?.dispatchEvent(new Event(\"focusout\", { bubbles: true }));\n }\n focusInsideRef.current = false;\n setShown(false);\n }\n },\n [onBlur, isSearchable, name, selectedValue],\n );\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({ type: \"change\", target: { name, value: selectedValue } });\n }\n focusInsideRef.current = true;\n }\n }, [onFocus, selectedValue, name]);\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Handle focus and blur of hidden select element\n useEffect(() => {\n const select = selectRef.current;\n const searchField = searchFieldRef.current;\n const button = buttonRef.current;\n const componentRootElement = componentRootElementRef.current;\n\n select?.addEventListener(\"focus\", () => {\n showSearchInputField ? searchField?.focus() : button?.focus();\n });\n select?.addEventListener(\"blur\", function (this, ev) {\n componentRootElement && componentRootElement.contains(ev.relatedTarget as Node) && ev.preventDefault();\n });\n\n return () => {\n select?.removeEventListener(\"focus\", () => {\n showSearchInputField ? searchField?.focus() : button?.focus();\n });\n select?.removeEventListener(\"blur\", function (this, ev) {\n componentRootElement && componentRootElement.contains(ev.relatedTarget as Node) && ev.preventDefault();\n });\n };\n }, [showSearchInputField]);\n\n /// Tastaturnavigasjon\n\n // Add support for opening dropdown with arrowkey down as expected from native select\n // onKeyDown to stop ArrowDown from scrolling the page\n const handleOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if ((e.key === \"ArrowDown\" || e.key === \" \") && !dropdownIsShown) {\n e.preventDefault();\n e.stopPropagation();\n setShown(true);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShown(false);\n }\n },\n [setShown, dropdownIsShown],\n );\n\n // onKeyDown to stop ArrowDown from scrolling the page\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n\n const listElement = dropdownRef.current;\n if (listElement) {\n if (isSearchable) {\n // Flytt fokus til det første elementet i listen, ikke det forrige valgte.\n // Ved endring i filter er det ikke gitt at vi ønsker å ta utgangspunkt i\n // den valgte verdien.\n focusSelected(listElement, undefined);\n } else {\n focusSelected(listElement, selectedValue);\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShown(false);\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n const listElement = dropdownRef.current;\n if (listElement) {\n e.preventDefault();\n e.stopPropagation();\n focusSelected(listElement, selectedValue);\n }\n } else if (e.key === \"Enter\" && dropdownIsShown) {\n // Should not propagate Enter keyevent because form might submit\n e.preventDefault();\n e.stopPropagation();\n }\n },\n [setShown, dropdownRef, selectedValue, isSearchable, dropdownIsShown],\n );\n\n // onKeyDown so this Tab listener isn't triggered by tabbing from search field to option\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey && searchFieldRef.current) {\n searchFieldRef.current.focus();\n } else if (buttonRef.current) {\n // Mimic behaviour of Firefox and native select, where Tab selects the current item and closes the menu\n setSelectedValue(e.currentTarget.value);\n setShown(false);\n buttonRef.current.focus();\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchFieldRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector('[role=\"option\"]:not([hidden])');\n if (e.currentTarget.id === firstVisible?.id && searchFieldRef.current) {\n searchFieldRef.current.focus();\n }\n }\n }\n },\n [setShown, dropdownRef],\n );\n\n // Add support for closing the dropdown with Escape like native select. Unfortunately, Escape does not trigger the button onKeyDown.\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && dropdownIsShown) {\n setShown(false);\n }\n };\n if (typeof window !== \"undefined\" && dropdownIsShown) {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShown, dropdownIsShown]);\n\n return (\n <>\n <select\n name={name}\n tabIndex={-1}\n data-testid=\"jkl-native-select\"\n className=\"jkl-sr-only\"\n aria-hidden\n ref={unifiedSelectRef}\n value={selectedValue}\n onChange={noop} // React complains unless we give an onChange handler. This is technically a read-only field, but readOnly isn't an option here.\n >\n <option value=\"\"></option> {/* Tom option må være et valg, ellers vil <select> alltid ha en value */}\n {visibleItems.map((item) => (\n <option key={`${listId}-opt-${item.value}`} hidden={!item.visible} value={item.value}>\n {item.label}\n </option>\n ))}\n </select>\n <InputGroup\n ref={componentRootElementRef}\n data-testid=\"jkl-select\"\n className={clsx(\"jkl-select\", className, {\n \"jkl-select--inline\": inline,\n \"jkl-select--open\": dropdownIsShown && visibleItems.some((item) => item.visible),\n \"jkl-select--no-value\": !hasSelectedValue,\n \"jkl-select--invalid\": !!errorLabel || invalid,\n })}\n {...rest}\n id={isSearchable ? searchInputId : buttonId}\n style={{ [\"--jkl-select-max-shown-options\"]: maxShownOptions, ...style } as CSSProperties}\n density={density}\n label={label}\n labelProps={{\n id: labelId,\n srOnly: inline,\n ...labelProps,\n htmlFor: isSearchable ? searchInputId : buttonId,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n render={(inputProps) => (\n <div className=\"jkl-select__outer-wrapper\" style={{ width }}>\n {isSearchable && (\n <input\n {...inputProps}\n id={searchInputId}\n hidden={!showSearchInputField}\n ref={searchFieldRef}\n placeholder=\"Søk\"\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n data-testid=\"jkl-select__search-input\"\n className=\"jkl-select__search-input\"\n aria-autocomplete=\"list\"\n aria-activedescendant={\n hasSelectedValue ? `${listId}__${toLower(selectedValue)}` : undefined\n }\n aria-controls={listId}\n aria-expanded={dropdownIsShown}\n role=\"combobox\"\n onKeyDown={handleSearchOnKeyDown}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n )}\n <button\n {...inputProps}\n id={buttonId}\n ref={buttonRef}\n hidden={showSearchInputField}\n type=\"button\"\n name={`${name}-btn`}\n className={clsx(\"jkl-select__button\", {\n \"jkl-select__button--active-value\": !!selectedValue,\n })}\n data-testid=\"jkl-select__button\"\n aria-label={`${selectedValueLabel || \"Velg\"},${label}`}\n aria-expanded={dropdownIsShown}\n aria-controls={listId}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleOnKeyDown}\n onClick={toggleListVisibility}\n onMouseDown={(e) => {\n // Workaround for en Safari-bug hvor e.relatedTarget er null i onBlur\n // https://twitter.com/MilesSorce/status/1278762360669265925\n e.preventDefault();\n buttonRef.current?.focus();\n }}\n >\n {selectedValueLabel}\n </button>\n <div\n id={listId}\n ref={dropdownRef}\n role=\"listbox\"\n className=\"jkl-select__options-menu\"\n hidden={!dropdownIsShown || visibleItems.every((item) => !item.visible)}\n aria-labelledby={labelId}\n tabIndex={-1}\n data-focus=\"controlled\" // lar oss styre markering av valg vha focus\n >\n {visibleItems.map((item, i) =>\n // Det er viktig at vi _fjerner_ elementer som ikke er synlige fra DOMen for at tastaturnavigasjon skal fungere.\n // For eksempel, hvis vi har elementene Apple, Samsung og LG i den rekkefølgen og søker etter \"l\"\n // vil Samsung ikke synes. Om vi bare setter hidden-attributtet på Samsung vil ArrowDown fra Apple ikke fungere.\n // Dette lar seg ikke gjenskape i en enhetstest med JSDOM + user-events, og Cypress lukker Select\n // ved første {downArrow} ¯\\_(ツ)_/¯. Så please test scenariet over manuelt om dette skaper trøbbel for deg.\n item.visible ? (\n <button\n key={`${listId}-${item.value}`}\n hidden={!item.visible}\n type=\"button\"\n id={`${listId}__${toLower(item.value)}`}\n className=\"jkl-select__option\"\n data-testid=\"jkl-select__option\"\n aria-selected={item.value === selectedValue}\n role=\"option\"\n value={item.value}\n data-testautoid={`jkl-select__option-${i}`}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n e.preventDefault();\n selectOption(item);\n }}\n onMouseOver={handleMouseOver}\n >\n {item.label}\n {item.description ? (\n <span className=\"jkl-select__option-description\">{item.description}</span>\n ) : null}\n </button>\n ) : null,\n )}\n </div>\n <ArrowVerticalAnimated\n variant=\"medium\"\n pointingDown={!dropdownIsShown}\n className=\"jkl-select__arrow\"\n />\n </div>\n )}\n />\n </>\n );\n});\n\nSelect.displayName = \"Select\";\n","import clsx from \"clsx\";\nimport React, { forwardRef, SelectHTMLAttributes } from \"react\";\nimport { type ValuePair, getValuePair } from \"../..\";\nimport { ArrowVerticalAnimated } from \"../icon\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\n\nexport interface NativeSelectProps extends Omit<InputGroupProps, \"children\">, SelectHTMLAttributes<HTMLSelectElement> {\n /**\n * Merk som ugyldig uten å sende inn en errorLabel.\n * NB! Brukes kun i tilfeller der valideringsfeil dukker opp andre steder, for eksempel i en FieldGroup.\n */\n invalid?: boolean;\n /**\n * Setter inn et placeholderelement som vises når ingenting er valgt i nedtrekkslisten.\n * @default \"Velg\"\n */\n placeholder?: string;\n items: Array<string | ValuePair>;\n selectClassName?: string;\n width?: string;\n}\n\nexport const NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>((props, ref) => {\n const {\n label,\n className,\n density,\n errorLabel,\n helpLabel,\n inline,\n invalid,\n items,\n labelProps,\n placeholder = \"Velg\",\n selectClassName,\n supportLabelProps,\n tooltipProps,\n value,\n width,\n ...rest\n } = props;\n\n const inputGroupProps = {\n label,\n density,\n errorLabel,\n helpLabel,\n labelProps,\n inline,\n supportLabelProps,\n tooltipProps,\n };\n\n return (\n <InputGroup\n {...inputGroupProps}\n data-testid=\"jkl-select\"\n className={clsx(\"jkl-select\", className, {\n \"jkl-select--inline\": inline,\n \"jkl-select--invalid\": !!errorLabel || invalid,\n })}\n render={(inputProps) => (\n <div className=\"jkl-select__outer-wrapper\" style={{ width }}>\n <select\n ref={ref}\n className={clsx(\"jkl-select__button\", selectClassName, {\n \"jkl-select__button--active-value\": !!value,\n })}\n defaultValue={value ? undefined : \"\"}\n value={value}\n {...inputProps}\n {...rest}\n >\n {placeholder && !value && (\n <option disabled value=\"\">\n {placeholder}\n </option>\n )}\n {items.map(getValuePair).map((item) => (\n <option\n data-testid=\"jkl-select__option\"\n className=\"jkl-select__option\"\n key={item.value}\n value={item.value}\n >\n {item.label}\n </option>\n ))}\n </select>\n <ArrowVerticalAnimated variant=\"medium\" pointingDown className=\"jkl-select__arrow\" />\n </div>\n )}\n />\n );\n});\n\nNativeSelect.displayName = \"NativeSelect\";\n","import clsx from \"clsx\";\nimport React, {\n forwardRef,\n useCallback,\n useState,\n type MouseEventHandler,\n type ChangeEventHandler,\n type FC,\n} from \"react\";\nimport { type Density } from \"../..\";\nimport { useId } from \"../../hooks\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icon\";\nimport { IconButton } from \"../icon-button\";\nimport { NativeSelect } from \"../select\";\nimport { TextInput } from \"../text-input\";\nimport { useTableContext } from \"./tableContext\";\n\nexport interface TablePaginationProps {\n className?: string;\n id?: string;\n density?: Density;\n /**\n * @default 0\n */\n activePage?: number;\n /**\n * Null eller negativt tall tolkes som \"vis alle\".\n */\n rowsPerPage: number;\n rowsPerPageItems: Array<number | { label: string; value: number }>;\n totalNumberOfRows: number;\n /**\n * Viser et valgfritt inputfelt for å hoppe raskt til en spesifik side.\n * Du kan også sende inn en custom label hvis du ønsker det, ellers bruke\n * true for default label\n * @default false\n */\n withGoToPage?: boolean | { gotoLabel: string };\n onChange: (e: React.SyntheticEvent, toPage: number, fromPage: number) => void;\n onChangeRowsPerPage: ChangeEventHandler<HTMLSelectElement>;\n /**\n * Dersom du ønsker å ha custom labels kan du sende inn disse. \"rowsPerPage\"\n * vises alltid på skjerm mens \"next\" og \"previous\" brukes som hint til\n * skjermlesere for ikon-knappene til Neste/Forrige side\n * @default { rowsPerPage: \"Rader per side\", previous: \"Forrige\", next: \"Neste\" }\n */\n labels?: {\n rowsPerPage: string;\n previous: string;\n next: string;\n };\n}\n\nfunction clamp(min: number, num: number, max: number): number {\n if (num < min) {\n return min;\n } else if (num > max) {\n return max;\n }\n return num;\n}\n\nexport const TablePagination = forwardRef<HTMLDivElement, TablePaginationProps>((props, ref) => {\n const {\n activePage = 0,\n totalNumberOfRows,\n rowsPerPage,\n rowsPerPageItems,\n className,\n density,\n id: idProp,\n withGoToPage = false,\n onChange,\n onChangeRowsPerPage,\n labels = {\n rowsPerPage: \"Rader per side\",\n previous: \"Forrige\",\n next: \"Neste\",\n },\n ...rest\n } = props;\n\n const id = useId(idProp || \"jkl-table-pagination\", { generateSuffix: !idProp });\n const { density: contextDensity } = useTableContext();\n\n const showAll = rowsPerPage <= 0;\n const numberOfPages = showAll ? 1 : Math.ceil(totalNumberOfRows / rowsPerPage);\n\n const [currentPage, setCurrentPage] = useState(clamp(0, activePage, numberOfPages - 1));\n\n const onPageClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n const toPage = Number.parseInt(e.currentTarget.dataset[\"number\"] as string);\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, currentPage],\n );\n\n const [pagePickerValue, setPagePickerValue] = useState(String(currentPage + 1));\n const onPageChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n setPagePickerValue(e.target.value);\n try {\n const toPage = Number.parseInt(e.target.value) - 1;\n if (Number.isNaN(toPage)) {\n return;\n }\n\n if (toPage >= 0 && toPage < numberOfPages) {\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n }\n } catch {\n return;\n }\n },\n [onChange, setPagePickerValue, setCurrentPage, currentPage, numberOfPages],\n );\n\n const onPrevious: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n if (currentPage === 0) {\n // TODO: skal dette være en no-op i stedet?\n onChange(e, currentPage, currentPage);\n return;\n }\n const toPage = currentPage - 1;\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, currentPage],\n );\n\n const onNext: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n if (currentPage === numberOfPages - 1) {\n // TODO: skal dette være en no-op i stedet?\n onChange(e, currentPage, currentPage);\n return;\n }\n const toPage = currentPage + 1;\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, numberOfPages, currentPage],\n );\n\n return (\n <div\n className={clsx(\"jkl-table-pagination\", className)}\n {...rest}\n id={id}\n data-density={density || contextDensity}\n ref={ref}\n >\n <div className=\"jkl-table-pagination__left\">\n <div className=\"jkl-table-pagination__picker jkl-table-pagination__picker--rows\">\n <span className=\"jkl-table-pagination__picker-label\" aria-hidden=\"true\">\n {labels.rowsPerPage}:\n </span>\n <NativeSelect\n className=\"jkl-table-pagination__picker-input\"\n label={labels.rowsPerPage}\n labelProps={{ srOnly: true }}\n name={`${id}-rows-per-page`}\n items={rowsPerPageItems.map((i) =>\n typeof i === \"number\" ? String(i) : { label: i.label, value: String(i.value) },\n )}\n value={String(rowsPerPage)}\n onChange={onChangeRowsPerPage}\n width=\"min(8rem, 100%)\"\n inline\n />\n </div>\n </div>\n <div className=\"jkl-table-pagination__right\">\n {numberOfPages !== 1 && (\n <nav className=\"jkl-table-pagination__nav\">\n {withGoToPage && (\n <div className=\"jkl-table-pagination__picker jkl-table-pagination__picker--page\">\n <span className=\"jkl-table-pagination__picker-label\" aria-hidden=\"true\">\n {typeof withGoToPage === \"object\" ? withGoToPage.gotoLabel : \"Gå til side\"}:\n </span>\n {/* onChange først ved enter/submit */}\n <TextInput\n className=\"jkl-table-pagination__picker-input\"\n label={typeof withGoToPage === \"object\" ? withGoToPage.gotoLabel : \"Gå til side\"}\n labelProps={{ srOnly: true }}\n name={`${id}-go-to-page`}\n value={pagePickerValue}\n width=\"min(4rem, 100%)\"\n onChange={onPageChange}\n aria-invalid={\n pagePickerValue && pagePickerValue !== String(currentPage + 1)\n ? \"true\"\n : undefined\n }\n />\n </div>\n )}\n <ul>\n <li>\n <IconButton\n className=\"jkl-table-pagination__previous\"\n title={labels.previous}\n onClick={onPrevious}\n >\n <ChevronLeftIcon />\n </IconButton>\n </li>\n <PaginationPages\n id={id}\n activePage={activePage}\n numberOfPages={numberOfPages}\n onPageClick={onPageClick}\n />\n <li>\n <IconButton className=\"jkl-table-pagination__next\" title={labels.next} onClick={onNext}>\n <ChevronRightIcon />\n </IconButton>\n </li>\n </ul>\n </nav>\n )}\n </div>\n </div>\n );\n});\n\nconst PaginationPages: FC<{\n id: string;\n activePage: number;\n numberOfPages: number;\n onPageClick: MouseEventHandler;\n}> = ({ id, activePage, numberOfPages, onPageClick }) => {\n if (numberOfPages <= 7) {\n return (\n <>\n {Array.from({ length: numberOfPages }).map((_, i) => (\n <li key={`${id}-page-${i}`}>\n <button\n className={clsx(\"jkl-table-pagination__page\", {\n \"jkl-table-pagination__page--active\": activePage === i,\n })}\n type=\"button\"\n data-number={i}\n onClick={onPageClick}\n >\n {i + 1}\n </button>\n </li>\n ))}\n </>\n );\n }\n\n const showStartEllipsis = activePage > 3 && numberOfPages > 7;\n const showEndEllipsis = activePage < numberOfPages - 4 && numberOfPages > 7;\n\n const startEllipsis = Math.min(Math.max(activePage - 2, 1), numberOfPages - 6);\n const centerPageNumberStart = Math.min(startEllipsis + 1, numberOfPages - 5);\n const centerPageNumber = Math.min(centerPageNumberStart + 1, numberOfPages - 4);\n const centerPageNumberEnd = Math.min(centerPageNumberStart + 2, numberOfPages - 3);\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 2);\n\n return (\n <>\n <li>\n <PaginationPageButton isActive={activePage === 0} number={0} onClick={onPageClick} />\n </li>\n <li>\n {showStartEllipsis ? (\n <span className=\"jkl-table-pagination__ellipsis\" aria-hidden>\n {\"...\"}\n </span>\n ) : (\n <PaginationPageButton\n isActive={activePage === startEllipsis}\n number={startEllipsis}\n onClick={onPageClick}\n />\n )}\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumberStart}\n number={centerPageNumberStart}\n onClick={onPageClick}\n />\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumber}\n number={centerPageNumber}\n onClick={onPageClick}\n />\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n onClick={onPageClick}\n />\n </li>\n <li>\n {showEndEllipsis ? (\n <span className=\"jkl-table-pagination__ellipsis\" aria-hidden>\n {\"...\"}\n </span>\n ) : (\n <PaginationPageButton\n isActive={activePage === endEllipsis}\n number={endEllipsis}\n onClick={onPageClick}\n />\n )}\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === numberOfPages - 1}\n number={numberOfPages - 1}\n onClick={onPageClick}\n />\n </li>\n </>\n );\n};\n\nconst PaginationPageButton: FC<{\n isActive: boolean;\n number: number;\n onClick: MouseEventHandler;\n}> = ({ isActive, number, onClick, ...rest }) => (\n <button\n className={clsx(\"jkl-table-pagination__page\", {\n \"jkl-table-pagination__page--active\": isActive,\n })}\n type=\"button\"\n data-number={number}\n onClick={onClick}\n {...rest}\n >\n {number + 1}\n </button>\n);\n\nTablePagination.displayName = \"TablePagination\";\n","import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { Expander } from \"../expander\";\nimport type { TableCellProps } from \"./TableCell\";\nimport { TableCell } from \"./TableCell\";\nimport { useTableContext } from \"./tableContext\";\n\nexport interface ExpandableTableRowControllerProps extends TableCellProps {\n /** Settes automatisk av ExpandableTableRow */\n isOpen?: boolean;\n /** Settes automatisk av ExpandableTableRow */\n onClick?: () => void;\n}\n\nconst ExpandableTableRowController = forwardRef<HTMLTableCellElement, ExpandableTableRowControllerProps>(\n ({ isOpen, onClick, children, className, id, \"aria-controls\": ariaControls, ...rest }, ref) => {\n if (isOpen === undefined || typeof onClick !== \"function\") {\n throw new Error(\"ExpandableTableRowController must have ExpandableTableRow as parent\");\n }\n\n const { density, collapseToList } = useTableContext();\n\n const dataTh = (rest as Record<string, string>)[\"data-th\"];\n\n // pick text from data-th if possible, but only if it's a list\n const showTextFromTh: string | undefined = collapseToList ? dataTh : undefined;\n\n return (\n <TableCell\n className={clsx(\n \"jkl-table-cell--expand\",\n { [\"jkl-table-cell--expand-without-text\"]: !children },\n className,\n )}\n {...rest}\n ref={ref}\n >\n <Expander\n className={clsx(\"jkl-table-row-expand-button\", {\n [\"jkl-table-row-expand-button--expanded\"]: isOpen,\n })}\n id={id}\n density={density}\n isExpanded={isOpen}\n aria-controls={ariaControls}\n aria-label={children ? undefined : dataTh || \"Ekspander rad\"}\n onClick={(e) => {\n e.stopPropagation();\n onClick();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }\n }}\n >\n {/* show children. or try to use data-th if children is undefined */}\n {children ?? showTextFromTh}\n </Expander>\n </TableCell>\n );\n },\n);\n\nExpandableTableRowController.displayName = \"ExpandableTableRowController\";\n\nexport { ExpandableTableRowController };\n","import clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useState } from \"react\";\nimport { useAnimatedHeight, useId } from \"../../hooks\";\nimport { ExpandableTableRowController, ExpandableTableRowControllerProps } from \"./ExpandableTableRowController\";\nimport type { TableRowProps } from \"./TableRow\";\nimport { TableRow } from \"./TableRow\";\n\nexport interface ExpandableTableRowProps extends TableRowProps {\n expandedChildren: React.ReactNode;\n /**\n * Setter bredden på raden som blir åpnet\n * @default 100\n */\n colSpan?: number;\n /**\n * Om du ønsker en controlled komponent. Hvis du ikke setter denne vil komponenten håndtere state selv.\n */\n isOpen?: boolean;\n onToggle?: (isOpen: boolean) => void;\n}\n\nconst ExpandableTableRow = forwardRef<HTMLTableRowElement, ExpandableTableRowProps>((props, ref) => {\n const {\n className,\n clickable,\n children,\n expandedChildren,\n onToggle,\n colSpan = 100,\n isOpen: isOpenProp,\n ...rest\n } = props;\n\n const [isOpen, setIsOpen] = useState(isOpenProp ?? false);\n useEffect(() => {\n if (typeof isOpenProp === \"undefined\") {\n return;\n }\n setIsOpen(isOpenProp);\n }, [isOpenProp]);\n\n const [animationRef] = useAnimatedHeight<HTMLDivElement>(isOpen, { timing: \"expressive\" });\n\n const toggleOpen = () => {\n const newIsOpen = !isOpen;\n\n if (onToggle) {\n onToggle(newIsOpen);\n }\n\n setIsOpen(newIsOpen);\n };\n\n const tableRowClassName = clsx(\"jkl-table-row--expandable\", className, {\n [\"jkl-table-row--expanded\"]: isOpen,\n [\"jkl-expandable-table-row--clickable-external\"]: clickable,\n });\n const childWrapperClassName = clsx(\"jkl-expandable-table-row__expanded-row\", {\n [\"jkl-expandable-table-row__expanded-row--expanded\"]: isOpen,\n });\n\n const tableRowId = useId(\"jkl-expandable-table-row\");\n const expandableTableRowControllerId = useId(\"jkl-expandable-table-row-controller\");\n\n return (\n <>\n <TableRow\n className={tableRowClassName}\n clickable={\n clickable ?? {\n onClick: () => toggleOpen(),\n }\n }\n {...rest}\n ref={ref}\n >\n {React.Children.map(children, (child) => {\n if (\n React.isValidElement<ExpandableTableRowControllerProps>(child) &&\n child.type == ExpandableTableRowController\n ) {\n return React.cloneElement<ExpandableTableRowControllerProps>(child, {\n isOpen,\n onClick: () => toggleOpen(),\n \"aria-controls\": tableRowId,\n id: expandableTableRowControllerId,\n });\n } else {\n return child;\n }\n })}\n </TableRow>\n {/*\n Use a table row with a single as wide as possible cell to contain content. This allows\n using useAnimatedHeight to animate the row height.\n */}\n <tr aria-hidden={!isOpen}>\n <td colSpan={colSpan}>\n <div\n ref={animationRef}\n className={childWrapperClassName}\n id={tableRowId}\n aria-labelledby={expandableTableRowControllerId}\n hidden={!isOpen}\n role=\"group\"\n >\n {expandedChildren}\n </div>\n </td>\n </tr>\n </>\n );\n});\n\nExpandableTableRow.displayName = \"ExpandableTableRow\";\n\nexport { ExpandableTableRow };\n"],"names":["Expander","React","forwardRef","as","className","children","density","expandDirection","isExpanded","hideLabel","rest","ref","ContentWrapper","ScreenReaderOnly","Fragment","pointingDown","jsxs","type","clsx","jsx","ArrowVerticalAnimated","variant","bold","displayName","noop","Select","props","forwardedSelectRef","id","name","items","value","label","labelProps","onChange","onBlur","onFocus","helpLabel","errorLabel","invalid","searchable","inline","defaultPrompt","width","maxShownOptions","style","listId","useId","generateSuffix","labelId","buttonId","searchInputId","dropdownIsShown","setShown","useState","toggleListVisibility","useCallback","previousValue","isSearchable","showSearchInputField","searchValue","setSearchValue","searchFn","item","toLowerCase","includes","visibleItems","useMemo","map","getValuePair","visible","valueIsInItems","some","selectedValue","setSelectedValue","hasSelectedValue","selectedValueLabel","_a","find","selectRef","useRef","unifiedSelectRef","instance","current","usePreviousValue","useEffect","selectOption","nextValue","previousSelectedValue","target","dispatchEvent","Event","bubbles","componentRootElementRef","focusInsideRef","searchFieldRef","buttonRef","handleFocusPlacement","isOpen","listElement","focusSelected","focus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","handleBlur","e","componentRootElement","contains","relatedTarget","handleFocus","handleMouseOver","preventScroll","select","searchField","button","addEventListener","ev","preventDefault","removeEventListener","handleOnKeyDown","key","stopPropagation","handleSearchOnKeyDown","shiftKey","handleOptionOnKeyDown","currentTarget","firstVisible","querySelector","handleEscape","window","tabIndex","hidden","InputGroup","srOnly","htmlFor","render","inputProps","placeholder","toLower","role","onKeyDown","onClick","onMouseDown","every","i","onMouseOver","description","NativeSelect","selectClassName","supportLabelProps","tooltipProps","defaultValue","disabled","TablePagination","activePage","totalNumberOfRows","rowsPerPage","rowsPerPageItems","idProp","withGoToPage","onChangeRowsPerPage","labels","previous","next","contextDensity","useTableContext","numberOfPages","Math","ceil","currentPage","setCurrentPage","min","num","max","clamp","onPageClick","toPage","Number","parseInt","dataset","number","setPagePickerValue","String","pagePickerValue","onPageChange","isNaN","onPrevious","onNext","gotoLabel","TextInput","IconButton","title","ChevronLeftIcon","PaginationPages","ChevronRightIcon","Array","from","length","_","showStartEllipsis","showEndEllipsis","startEllipsis","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis","PaginationPageButton","isActive","ExpandableTableRowController","ariaControls","Error","collapseToList","dataTh","showTextFromTh","TableCell","ExpandableTableRow","clickable","expandedChildren","onToggle","colSpan","isOpenProp","setIsOpen","animationRef","timing","toggleOpen","newIsOpen","tableRowClassName","childWrapperClassName","tableRowId","expandableTableRowControllerId","TableRow","Children","child","isValidElement","cloneElement"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),n=require("./clsx-E3yX_9sL.cjs"),s=require("react"),t=require("./cjs/hooks/useAnimatedHeight/useAnimatedHeight.js");require("./cjs/hooks/useScreen/useScreen.js");const o=require("./cjs/hooks/useId/useId.js");require("./cjs/components/icon/Icon.js");const r=require("./cjs/components/icon/icons/animated/ArrowVerticalAnimated.js");require("./cjs/components/icon/icons/animated/ArrowHorizontalAnimated.js"),require("./cjs/components/icon/icons/animated/PlusRemoveAnimated.js"),require("./cjs/components/icon/icons/ArrowDownIcon.js"),require("./cjs/components/icon/icons/ArrowLeftIcon.js"),require("./cjs/components/icon/icons/ArrowNorthEastIcon.js"),require("./cjs/components/icon/icons/ArrowRightIcon.js"),require("./cjs/components/icon/icons/ArrowUpIcon.js"),require("./cjs/components/icon/icons/CalendarIcon.js"),require("./cjs/components/icon/icons/CheckIcon.js"),require("./cjs/components/icon/icons/ChevronDownIcon.js");const a=require("./cjs/components/icon/icons/ChevronLeftIcon.js"),i=require("./cjs/components/icon/icons/ChevronRightIcon.js");require("./cjs/components/icon/icons/ChevronUpIcon.js"),require("./cjs/components/icon/icons/CloseIcon.js"),require("./cjs/components/icon/icons/CopyIcon.js"),require("./cjs/components/icon/icons/DotsIcon.js"),require("./cjs/components/icon/icons/DragIcon.js"),require("./cjs/components/icon/icons/ErrorIcon.js"),require("./cjs/components/icon/icons/GreenCheckIcon.js"),require("./cjs/components/icon/icons/HamburgerIcon.js"),require("./cjs/components/icon/icons/InfoIcon.js"),require("./cjs/components/icon/icons/LinkIcon.js"),require("./cjs/components/icon/icons/PlusIcon.js"),require("./cjs/components/icon/icons/QuestionIcon.js"),require("./cjs/components/icon/icons/RedCrossIcon.js"),require("./cjs/components/icon/icons/SearchIcon.js"),require("./cjs/components/icon/icons/SuccessIcon.js"),require("./cjs/components/icon/icons/WarningIcon.js"),require("./cjs/components/icon/icons/MinusIcon.js"),require("./cjs/components/icon/icons/ThumbDownIcon.js"),require("./cjs/components/icon/icons/ThumbUpIcon.js"),require("./cjs/components/icon/icons/TrashCanIcon.js"),require("./cjs/components/icon/icons/PenIcon.js"),require("./cjs/components/button/Button.js"),require("./cjs/components/card/Card.js"),require("./cjs/components/card/CardImage.js"),require("./cjs/components/card/NavCard.js"),require("./cjs/components/checkbox/Checkbox.js"),require("./cjs/components/combobox/Combobox.js"),require("./cjs/components/cookie-consent/CookieConsentContext.js"),require("react-dom"),require("./cjs/components/modal/Modal.js"),require("react-a11y-dialog"),require("./cjs/components/list/List.js"),require("./cjs/components/list/ListItem.js"),require("./cjs/components/datepicker/DatePicker.js"),require("./cjs/components/feedback/feedbackContext.js"),require("./cjs/components/message/Message.js"),require("./cjs/components/message/FormErrorMessage.js"),require("./cjs/components/tooltip/Tooltip.js"),require("./cjs/components/tooltip/TooltipContent.js"),require("./cjs/components/tooltip/TooltipTrigger.js");const c=require("./cjs/components/input-group/InputGroup.js");require("./cjs/components/feedback/followup/followupContext.js"),require("./cjs/components/feedback/main-question/mainQuestionContext.js"),require("./cjs/components/radio-button/RadioButton.js"),require("./cjs/components/radio-button/radioGroupContext.js"),require("./cjs/components/radio-button/BaseRadioButton.js"),require("./cjs/components/text-input/BaseTextArea.js"),require("./cjs/components/text-input/BaseTextInput.js"),require("./cjs/components/text-input/TextArea.js");const l=require("./cjs/components/text-input/TextInput.js");require("./cjs/utilities/polymorphism/SlotComponent.js");const u=require("./cjs/components/icon-button/IconButton.js");require("./cjs/components/link/Link.js"),require("./cjs/components/link/NavLink.js"),require("./cjs/components/link-list/LinkList.js"),require("./cjs/components/logo/text-paths/ForsikringLevertAvFremtind.js"),require("./cjs/components/logo/text-paths/FraSB1ogDNB.js"),require("./cjs/components/logo/text-paths/InnovasjonFraFremtind.js"),require("./cjs/components/logo/text-paths/TeknologiFraFremtind.js"),require("./cjs/components/logo/text-paths/VartEgetForsikringsselskap.js"),require("./cjs/components/logo/text-paths/VartForsikringsselskap.js"),require("./cjs/components/popover/Popover.js");const p=require("./cjs/hooks/usePreviousValue/usePreviousValue.js"),j=require("./cjs/hooks/useListNavigation/useListNavigation.js"),d=require("./cjs/utilities/valuePair.js");require("./cjs/components/system-message/SystemMessage.js"),require("./cjs/components/table/DataTable.js"),require("./cjs/components/table/Table.js"),require("./cjs/components/table/TableBody.js"),require("./cjs/components/table/TableCaption.js");const m=require("./cjs/components/table/TableCell.js");require("./cjs/components/table/TableColumn.js"),require("./cjs/components/table/TableColumnGroup.js");const b=require("./cjs/components/table/tableContext.js");require("./cjs/components/table/tableSectionContext.js"),require("./cjs/components/table/TableFooter.js"),require("./cjs/components/table/TableHead.js"),require("./cjs/components/table/TableHeader.js");const x=require("./cjs/components/table/TableRow.js");require("./cjs/components/tabs/NavTab.js"),require("./cjs/components/tabs/tabsContext.js"),require("./cjs/components/tabs/Tab.js"),require("./cjs/components/tag/Tag.js"),require("./cjs/components/toast/toastContext.js"),require("./cjs/components/toggle-switch/ToggleSwitch.js");const k=require("./cjs/components/select/select-utils.js"),g=require("./cjs/components/ScreenReaderOnly.js"),h=s.forwardRef((({as:t="button",className:o,children:a,density:i,expandDirection:c="down",isExpanded:l=!1,hideLabel:u=!1,...p},j)=>{const d=u?g.ScreenReaderOnly:s.Fragment,m="down"===c?!l:l,b=t,x="button"===b?"button":void 0;return e.jsxs(b,{"aria-expanded":l,"data-testid":"jkl-expander",type:x,className:n.clsx("jkl-expander",o,{"jkl-expander--expanded":l,"jkl-expander--icon-only":!a}),...p,"data-density":i,ref:j,children:[a&&e.jsx(d,{children:e.jsx("span",{className:"jkl-expander__text",children:a})}),e.jsx(r.ArrowVerticalAnimated,{className:"jkl-expander__arrow",variant:"inherit",pointingDown:m,bold:l})]})}));h.displayName="Expander";const v=()=>{},f=s.forwardRef(((a,i)=>{const{id:l,name:u,items:m,value:b,label:x,labelProps:g,onChange:h,onBlur:f,onFocus:q,className:w,helpLabel:C,errorLabel:_,invalid:y,searchable:N=!1,inline:I=!1,defaultPrompt:P="Velg",density:T,width:S,maxShownOptions:E=5,style:L,...A}=a,D=o.useId(l||"jkl-select",{generateSuffix:!l}),R=`${D}_label`,F=`${D}_button`,$=`${D}_search-input`,[V,M]=s.useState(!1),B=s.useCallback((()=>{M((e=>!e))}),[]),O=!!N,G=O&&V,[H,K]=s.useState(""),U=s.useCallback((e=>!!e.label.toLowerCase().includes(H.toLowerCase())||"function"==typeof N&&N(H,e)),[N,H]),Q=s.useMemo((()=>m.map(d.getValuePair).map((e=>{const n=!O||""===H||U(e);return{...e,visible:n}}))),[m,O,H,U]),z=s.useMemo((()=>!(typeof b>"u")&&m.some((e=>"string"==typeof e?e===b:e.value===b))),[b,m]),[W,J]=s.useState(z&&void 0!==b?b:""),X=""!==W,Y=s.useMemo((()=>{var e;return(null==(e=Q.find((e=>e.value===W)))?void 0:e.label)||P}),[Q,W,P]),Z=s.useRef(null),ee=s.useCallback((e=>{Z.current=e,i&&("function"==typeof i?i(e):i.current=e),e&&J(e.value)}),[Z,i]),ne=p.usePreviousValue(b);s.useEffect((()=>{b!==ne&&J(typeof b>"u"||!z?"":b)}),[J,b,ne,z]);const se=s.useCallback((e=>{const n=e.value;K(""),J(n),B()}),[K,J,B]),te=p.usePreviousValue(W);s.useEffect((()=>{typeof te>"u"||te===W||W===b||(h&&h({type:"change",target:{name:u,value:W}}),Z.current&&Z.current.dispatchEvent(new Event("change",{bubbles:!0})))}),[h,u,b,W,te]);const oe=s.useRef(null),re=s.useRef(!1),ae=s.useRef(null),ie=s.useRef(null),ce=s.useCallback(((e,n)=>{if(e&&!O){const e=n.current;e&&k.focusSelected(e,W)}else e?ae.current&&ae.current.focus():re.current&&ie.current&&ie.current.focus()}),[O,W]),[le]=t.useAnimatedHeight(V,{onFirstVisible:ce,onTransitionEnd:ce});j.useListNavigation({ref:le});const ue=s.useCallback((e=>{var n;const s=oe.current;s&&s.contains(e.relatedTarget)||(O&&K(""),f&&(f({type:"blur",target:{name:u,value:W}}),null==(n=Z.current)||n.dispatchEvent(new Event("focusout",{bubbles:!0}))),re.current=!1,M(!1))}),[f,O,u,W]),pe=s.useCallback((()=>{re.current||(q&&q({type:"change",target:{name:u,value:W}}),re.current=!0)}),[q,W,u]),je=s.useCallback((e=>{e.target.focus({preventScroll:!0})}),[]);s.useEffect((()=>{const e=Z.current,n=ae.current,s=ie.current,t=oe.current;return null==e||e.addEventListener("focus",(()=>{G?null==n||n.focus():null==s||s.focus()})),null==e||e.addEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()})),()=>{null==e||e.removeEventListener("focus",(()=>{G?null==n||n.focus():null==s||s.focus()})),null==e||e.removeEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()}))}}),[G]);const de=s.useCallback((e=>{"ArrowDown"!==e.key&&" "!==e.key||V?"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),M(!1)):(e.preventDefault(),e.stopPropagation(),M(!0))}),[M,V]),me=s.useCallback((e=>{if("ArrowDown"===e.key){e.preventDefault(),e.stopPropagation();const n=le.current;n&&(O?k.focusSelected(n,void 0):k.focusSelected(n,W))}else if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),M(!1);else if("Tab"!==e.key||e.shiftKey)"Enter"===e.key&&V&&(e.preventDefault(),e.stopPropagation());else{const n=le.current;n&&(e.preventDefault(),e.stopPropagation(),k.focusSelected(n,W))}}),[M,le,W,O,V]),be=s.useCallback((e=>{if("Tab"===e.key)e.preventDefault(),e.stopPropagation(),e.shiftKey&&ae.current?ae.current.focus():ie.current&&(J(e.currentTarget.value),M(!1),ie.current.focus());else if("ArrowUp"===e.key&&le.current&&ae.current){const n=le.current.querySelector('[role="option"]:not([hidden])');e.currentTarget.id===(null==n?void 0:n.id)&&ae.current&&ae.current.focus()}}),[M,le]);return s.useEffect((()=>{const e=e=>{"Escape"===e.key&&V&&M(!1)};return typeof window<"u"&&V&&window.addEventListener("keydown",e),()=>{typeof window<"u"&&window.removeEventListener("keydown",e)}}),[M,V]),e.jsxs(e.Fragment,{children:[e.jsxs("select",{name:u,tabIndex:-1,"data-testid":"jkl-native-select",className:"jkl-sr-only","aria-hidden":!0,ref:ee,value:W,onChange:v,children:[e.jsx("option",{value:""})," ",Q.map((n=>e.jsx("option",{hidden:!n.visible,value:n.value,children:n.label},`${D}-opt-${n.value}`)))]}),e.jsx(c.InputGroup,{ref:oe,"data-testid":"jkl-select",className:n.clsx("jkl-select",w,{"jkl-select--inline":I,"jkl-select--open":V&&Q.some((e=>e.visible)),"jkl-select--no-value":!X,"jkl-select--invalid":!!_||y}),...A,id:O?$:F,style:{"--jkl-select-max-shown-options":E,...L},density:T,label:x,labelProps:{id:R,srOnly:I,...g,htmlFor:O?$:F},helpLabel:C,errorLabel:_,render:s=>e.jsxs("div",{className:"jkl-select__outer-wrapper",style:{width:S},children:[O&&e.jsx("input",{...s,id:$,hidden:!G,ref:ae,placeholder:"Søk",value:H,onChange:e=>K(e.target.value),"data-testid":"jkl-select__search-input",className:"jkl-select__search-input","aria-autocomplete":"list","aria-activedescendant":X?`${D}__${k.toLower(W)}`:void 0,"aria-controls":D,"aria-expanded":V,role:"combobox",onKeyDown:me,onBlur:ue,onFocus:pe,onClick:e=>{e.stopPropagation()}}),e.jsx("button",{...s,id:F,ref:ie,hidden:G,type:"button",name:`${u}-btn`,className:n.clsx("jkl-select__button",{"jkl-select__button--active-value":!!W}),"data-testid":"jkl-select__button","aria-label":`${Y||"Velg"},${x}`,"aria-expanded":V,"aria-controls":D,onBlur:ue,onFocus:pe,onKeyDown:de,onClick:B,onMouseDown:e=>{var n;e.preventDefault(),null==(n=ie.current)||n.focus()},children:Y}),e.jsx("div",{id:D,ref:le,role:"listbox",className:"jkl-select__options-menu",hidden:!V||Q.every((e=>!e.visible)),"aria-labelledby":R,tabIndex:-1,"data-focus":"controlled",children:Q.map(((n,s)=>n.visible?e.jsxs("button",{hidden:!n.visible,type:"button",id:`${D}__${k.toLower(n.value)}`,className:"jkl-select__option","data-testid":"jkl-select__option","aria-selected":n.value===W,role:"option",value:n.value,"data-testautoid":`jkl-select__option-${s}`,onBlur:ue,onFocus:pe,onKeyDown:be,onClick:e=>{e.preventDefault(),se(n)},onMouseOver:je,children:[n.label,n.description?e.jsx("span",{className:"jkl-select__option-description",children:n.description}):null]},`${D}-${n.value}`):null))}),e.jsx(r.ArrowVerticalAnimated,{variant:"medium",pointingDown:!V,className:"jkl-select__arrow"})]})})]})}));f.displayName="Select";const q=s.forwardRef(((s,t)=>{const{label:o,className:a,density:i,errorLabel:l,helpLabel:u,inline:p,invalid:j,items:m,labelProps:b,placeholder:x="Velg",selectClassName:k,supportLabelProps:g,tooltipProps:h,value:v,width:f,...q}=s,w={label:o,density:i,errorLabel:l,helpLabel:u,labelProps:b,inline:p,supportLabelProps:g,tooltipProps:h};return e.jsx(c.InputGroup,{...w,"data-testid":"jkl-select",className:n.clsx("jkl-select",a,{"jkl-select--inline":p,"jkl-select--invalid":!!l||j}),render:s=>e.jsxs("div",{className:"jkl-select__outer-wrapper",style:{width:f},children:[e.jsxs("select",{ref:t,className:n.clsx("jkl-select__button",k,{"jkl-select__button--active-value":!!v}),defaultValue:v?void 0:"",value:v,...s,...q,children:[x&&!v&&e.jsx("option",{disabled:!0,value:"",children:x}),m.map(d.getValuePair).map((n=>e.jsx("option",{"data-testid":"jkl-select__option",className:"jkl-select__option",value:n.value,children:n.label},n.value)))]}),e.jsx(r.ArrowVerticalAnimated,{variant:"medium",pointingDown:!0,className:"jkl-select__arrow"})]})})}));q.displayName="NativeSelect";const w=s.forwardRef(((t,r)=>{const{activePage:c=0,totalNumberOfRows:p,rowsPerPage:j,rowsPerPageItems:d,className:m,density:x,id:k,withGoToPage:g=!1,onChange:h,onChangeRowsPerPage:v,labels:f={rowsPerPage:"Rader per side",previous:"Forrige",next:"Neste"},...w}=t,_=o.useId(k||"jkl-table-pagination",{generateSuffix:!k}),{density:y}=b.useTableContext(),N=j<=0?1:Math.ceil(p/j),[I,P]=s.useState(function(e,n,s){return n<e?e:n>s?s:n}(0,c,N-1)),T=s.useCallback((e=>{const n=Number.parseInt(e.currentTarget.dataset.number);h(e,n,I),P(n),E(String(n+1))}),[h,P,I]),[S,E]=s.useState(String(I+1)),L=s.useCallback((e=>{E(e.target.value);try{const n=Number.parseInt(e.target.value)-1;if(Number.isNaN(n))return;n>=0&&n<N&&(h(e,n,I),P(n))}catch{return}}),[h,E,P,I,N]),A=s.useCallback((e=>{if(0===I)return void h(e,I,I);const n=I-1;h(e,n,I),P(n),E(String(n+1))}),[h,P,I]),D=s.useCallback((e=>{if(I===N-1)return void h(e,I,I);const n=I+1;h(e,n,I),P(n),E(String(n+1))}),[h,P,N,I]);return e.jsxs("div",{className:n.clsx("jkl-table-pagination",m),...w,id:_,"data-density":x||y,ref:r,children:[e.jsx("div",{className:"jkl-table-pagination__left",children:e.jsxs("div",{className:"jkl-table-pagination__picker jkl-table-pagination__picker--rows",children:[e.jsxs("span",{className:"jkl-table-pagination__picker-label","aria-hidden":"true",children:[f.rowsPerPage,":"]}),e.jsx(q,{className:"jkl-table-pagination__picker-input",label:f.rowsPerPage,labelProps:{srOnly:!0},name:`${_}-rows-per-page`,items:d.map((e=>"number"==typeof e?String(e):{label:e.label,value:String(e.value)})),value:String(j),onChange:v,width:"min(8rem, 100%)",inline:!0})]})}),e.jsx("div",{className:"jkl-table-pagination__right",children:1!==N&&e.jsxs("nav",{className:"jkl-table-pagination__nav",children:[g&&e.jsxs("div",{className:"jkl-table-pagination__picker jkl-table-pagination__picker--page",children:[e.jsxs("span",{className:"jkl-table-pagination__picker-label","aria-hidden":"true",children:["object"==typeof g?g.gotoLabel:"Gå til side",":"]}),e.jsx(l.TextInput,{className:"jkl-table-pagination__picker-input",label:"object"==typeof g?g.gotoLabel:"Gå til side",labelProps:{srOnly:!0},name:`${_}-go-to-page`,value:S,width:"min(4rem, 100%)",onChange:L,"aria-invalid":S&&S!==String(I+1)?"true":void 0})]}),e.jsxs("ul",{children:[e.jsx("li",{children:e.jsx(u.IconButton,{className:"jkl-table-pagination__previous",title:f.previous,onClick:A,children:e.jsx(a.ChevronLeftIcon,{})})}),e.jsx(C,{id:_,activePage:c,numberOfPages:N,onPageClick:T}),e.jsx("li",{children:e.jsx(u.IconButton,{className:"jkl-table-pagination__next",title:f.next,onClick:D,children:e.jsx(i.ChevronRightIcon,{})})})]})]})})]})})),C=({id:s,activePage:t,numberOfPages:o,onPageClick:r})=>{if(o<=7)return e.jsx(e.Fragment,{children:Array.from({length:o}).map(((o,a)=>e.jsx("li",{children:e.jsx("button",{className:n.clsx("jkl-table-pagination__page",{"jkl-table-pagination__page--active":t===a}),type:"button","data-number":a,onClick:r,children:a+1})},`${s}-page-${a}`)))});const a=t>3&&o>7,i=t<o-4&&o>7,c=Math.min(Math.max(t-2,1),o-6),l=Math.min(c+1,o-5),u=Math.min(l+1,o-4),p=Math.min(l+2,o-3),j=Math.min(l+3,o-2);return e.jsxs(e.Fragment,{children:[e.jsx("li",{children:e.jsx(_,{isActive:0===t,number:0,onClick:r})}),e.jsx("li",{children:a?e.jsx("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):e.jsx(_,{isActive:t===c,number:c,onClick:r})}),e.jsx("li",{children:e.jsx(_,{isActive:t===l,number:l,onClick:r})}),e.jsx("li",{children:e.jsx(_,{isActive:t===u,number:u,onClick:r})}),e.jsx("li",{children:e.jsx(_,{isActive:t===p,number:p,onClick:r})}),e.jsx("li",{children:i?e.jsx("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):e.jsx(_,{isActive:t===j,number:j,onClick:r})}),e.jsx("li",{children:e.jsx(_,{isActive:t===o-1,number:o-1,onClick:r})})]})},_=({isActive:s,number:t,onClick:o,...r})=>e.jsx("button",{className:n.clsx("jkl-table-pagination__page",{"jkl-table-pagination__page--active":s}),type:"button","data-number":t,onClick:o,...r,children:t+1});w.displayName="TablePagination";const y=s.forwardRef((({isOpen:s,onClick:t,children:o,className:r,id:a,"aria-controls":i,...c},l)=>{if(void 0===s||"function"!=typeof t)throw new Error("ExpandableTableRowController must have ExpandableTableRow as parent");const{density:u,collapseToList:p}=b.useTableContext(),j=c["data-th"],d=p?j:void 0;return e.jsx(m.TableCell,{className:n.clsx("jkl-table-cell--expand",{"jkl-table-cell--expand-without-text":!o},r),...c,ref:l,children:e.jsx(h,{className:n.clsx("jkl-table-row-expand-button",{"jkl-table-row-expand-button--expanded":s}),id:a,density:u,isExpanded:s,"aria-controls":i,"aria-label":o?void 0:j||"Ekspander rad",onClick:e=>{e.stopPropagation(),t()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.stopPropagation(),e.preventDefault(),t())},children:o??d})})}));y.displayName="ExpandableTableRowController";const N=s.forwardRef(((r,a)=>{const{className:i,clickable:c,children:l,expandedChildren:u,onToggle:p,colSpan:j=100,isOpen:d,...m}=r,[b,k]=s.useState(d??!1);s.useEffect((()=>{typeof d>"u"||k(d)}),[d]);const[g]=t.useAnimatedHeight(b,{timing:"expressive"}),h=()=>{const e=!b;p&&p(e),k(e)},v=n.clsx("jkl-table-row--expandable",i,{"jkl-table-row--expanded":b,"jkl-expandable-table-row--clickable-external":c}),f=n.clsx("jkl-expandable-table-row__expanded-row",{"jkl-expandable-table-row__expanded-row--expanded":b}),q=o.useId("jkl-expandable-table-row"),w=o.useId("jkl-expandable-table-row-controller");return e.jsxs(e.Fragment,{children:[e.jsx(x.TableRow,{className:v,clickable:c??{onClick:()=>h()},...m,ref:a,children:s.Children.map(l,(e=>s.isValidElement(e)&&e.type==y?s.cloneElement(e,{isOpen:b,onClick:()=>h(),"aria-controls":q,id:w}):e))}),e.jsx("tr",{"aria-hidden":!b,children:e.jsx("td",{colSpan:j,children:e.jsx("div",{ref:g,className:f,id:q,"aria-labelledby":w,hidden:!b,role:"group",children:u})})})]})}));N.displayName="ExpandableTableRow",exports.ExpandableTableRow=N,exports.ExpandableTableRowController=y,exports.Expander=h,exports.NativeSelect=q,exports.Select=f,exports.TablePagination=w;
2
+ //# sourceMappingURL=ExpandableTableRow-BQjBxKCX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpandableTableRow-BQjBxKCX.cjs","sources":["../src/components/expander/Expander.tsx","../src/components/select/Select.tsx","../src/components/select/NativeSelect.tsx","../src/components/table/TablePagination.tsx","../src/components/table/ExpandableTableRowController.tsx","../src/components/table/ExpandableTableRow.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { ForwardedRef } from \"react\";\nimport { Density, ScreenReaderOnly, WithChildren } from \"../..\";\nimport { ArrowVerticalAnimated } from \"../icon\";\n\nexport type ExpandDirection = \"up\" | \"down\";\n\nexport interface ExpanderProps extends WithChildren {\n as?: \"summary\" | \"button\";\n /** Må settes dersom du ikke bruker CoreToggle. Verdien skal være IDen til innholdet du ekspanderer. */\n \"aria-controls\"?: string;\n /** Må settes dersom du ikke bruker CoreToggle. IDen her skal brukes som verdien til aria-labelledby på innholdet du ekspanderer. */\n id?: string;\n className?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n /**\n * Styrer retningen til pila, som animeres ved endring. Styrer også aria-expanded.\n * @default false\n */\n isExpanded?: boolean;\n /** @default \"down\" */\n expandDirection?: ExpandDirection;\n density?: Density;\n /**\n * Skjul knappeteksten visuelt.\n *\n * @default false\n */\n hideLabel?: boolean;\n}\n\nexport const Expander = React.forwardRef(\n (\n {\n as = \"button\",\n className,\n children,\n density,\n expandDirection = \"down\",\n isExpanded = false,\n hideLabel = false,\n ...rest\n }: ExpanderProps,\n ref: ForwardedRef<HTMLButtonElement>,\n ): JSX.Element => {\n const ContentWrapper = hideLabel ? ScreenReaderOnly : React.Fragment;\n const pointingDown = expandDirection === \"down\" ? !isExpanded : isExpanded;\n\n const El = as;\n const type = El === \"button\" ? \"button\" : undefined;\n\n return (\n <El\n aria-expanded={isExpanded}\n data-testid=\"jkl-expander\"\n type={type}\n className={clsx(\"jkl-expander\", className, {\n \"jkl-expander--expanded\": isExpanded,\n \"jkl-expander--icon-only\": !children,\n })}\n {...rest}\n data-density={density}\n ref={ref}\n >\n {children && (\n <ContentWrapper>\n <span className=\"jkl-expander__text\">{children}</span>\n </ContentWrapper>\n )}\n <ArrowVerticalAnimated\n className=\"jkl-expander__arrow\"\n variant=\"inherit\"\n pointingDown={pointingDown}\n bold={isExpanded}\n />\n </El>\n );\n },\n);\n\nExpander.displayName = \"Expander\";\n","import clsx from \"clsx\";\nimport React, {\n FocusEvent,\n forwardRef,\n useEffect,\n useRef,\n useState,\n KeyboardEvent,\n ChangeEvent,\n useCallback,\n useMemo,\n RefObject,\n MouseEvent,\n CSSProperties,\n} from \"react\";\nimport { type ValuePair, getValuePair, type DataTestAutoId, type Density } from \"../..\";\nimport { useId, useAnimatedHeight, usePreviousValue, useListNavigation } from \"../../hooks\";\nimport { ArrowVerticalAnimated } from \"../icon\";\nimport { InputGroup, type LabelProps, type InputGroupProps } from \"../input-group\";\nimport { toLower, focusSelected } from \"./select-utils\";\n\ninterface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLSelectElement>, \"target\">> {\n /** Kreves av react-hook-form, det skjer ulike ting avhengig av om det er blur eller change */\n type: \"change\" | \"blur\";\n target: {\n /** Kreves av react-hook-form for å vite hvilket skjemafelt som ble endret */\n name: string;\n value: string;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface Option extends ValuePair {\n visible: boolean;\n}\n\nexport interface SelectProps extends Omit<InputGroupProps, \"children\">, DataTestAutoId {\n id?: string;\n name: string;\n label: string;\n labelProps?: Omit<LabelProps, \"children\" | \"density\" | \"htmlFor\" | \"standAlone\">;\n items: Array<string | ValuePair>;\n /**\n * @default false\n */\n inline?: boolean;\n /**\n * @default \"Velg\"\n */\n defaultPrompt?: string;\n className?: string;\n value?: string;\n helpLabel?: string;\n errorLabel?: string;\n /**\n * @default false\n */\n searchable?: boolean | ((searchValue: string, searchItem: string | ValuePair) => boolean);\n density?: Density;\n width?: string;\n onChange?: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n /**\n * Merk som ugyldig uten å sende inn en errorLabel.\n * NB! Brukes kun i tilfeller der valideringsfeil dukker opp andre steder, for eksempel i en FieldGroup.\n */\n invalid?: boolean;\n /**\n * Hvor mange valg skal vises i listen før den begynner å scrolle.\n * @default 5\n */\n maxShownOptions?: number;\n}\n\nconst noop = () => {\n return;\n};\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>((props, forwardedSelectRef) => {\n const {\n id,\n name,\n items,\n value,\n label,\n labelProps,\n onChange,\n onBlur,\n onFocus,\n className,\n helpLabel,\n errorLabel,\n invalid,\n searchable = false,\n inline = false,\n defaultPrompt = \"Velg\",\n density,\n width,\n maxShownOptions = 5,\n style,\n ...rest\n } = props;\n\n const listId = useId(id || \"jkl-select\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const searchInputId = `${listId}_search-input`;\n\n const [dropdownIsShown, setShown] = useState(false);\n const toggleListVisibility = useCallback(() => {\n setShown((previousValue) => !previousValue);\n }, []);\n\n /// Søk\n\n const isSearchable = Boolean(searchable);\n const showSearchInputField = isSearchable && dropdownIsShown;\n const [searchValue, setSearchValue] = useState(\"\");\n const searchFn = useCallback(\n (item: ValuePair) => {\n if (item.label.toLowerCase().includes(searchValue.toLowerCase())) {\n return true;\n }\n\n if (typeof searchable === \"function\") {\n return searchable(searchValue, item);\n }\n\n return false;\n },\n [searchable, searchValue],\n );\n const visibleItems: Option[] = useMemo(\n () =>\n items.map(getValuePair).map((item) => {\n const visible = !isSearchable || searchValue === \"\" || searchFn(item);\n return { ...item, visible };\n }),\n [items, isSearchable, searchValue, searchFn],\n );\n const valueIsInItems: boolean = useMemo(() => {\n if (typeof value === \"undefined\") {\n return false;\n }\n return items.some((item) => (typeof item === \"string\" ? item === value : item.value === value));\n }, [value, items]);\n\n /// Valg av <option>\n\n const [selectedValue, setSelectedValue] = useState<string>(valueIsInItems && value !== undefined ? value : \"\");\n const hasSelectedValue = selectedValue !== \"\";\n const selectedValueLabel = useMemo(\n () => visibleItems.find((item) => item.value === selectedValue)?.label || defaultPrompt,\n [visibleItems, selectedValue, defaultPrompt],\n );\n\n const selectRef = useRef<HTMLSelectElement | null>(null);\n // Hjelpefunksjon som gjør det enklere å forwarde refen og å bruke den selv internt\n const unifiedSelectRef = useCallback(\n (instance: HTMLSelectElement | null) => {\n selectRef.current = instance;\n if (forwardedSelectRef) {\n if (typeof forwardedSelectRef === \"function\") {\n forwardedSelectRef(instance);\n } else {\n forwardedSelectRef.current = instance;\n }\n }\n if (instance) {\n setSelectedValue(instance.value);\n }\n },\n [selectRef, forwardedSelectRef],\n );\n\n const previousValue = usePreviousValue(value);\n useEffect(() => {\n if (value === previousValue) {\n return;\n }\n if (typeof value === \"undefined\" || !valueIsInItems) {\n setSelectedValue(\"\");\n } else {\n setSelectedValue(value);\n }\n }, [setSelectedValue, value, previousValue, valueIsInItems]);\n\n const selectOption = useCallback(\n (item: Option) => {\n const nextValue = item.value;\n setSearchValue(\"\");\n setSelectedValue(nextValue);\n toggleListVisibility();\n },\n [setSearchValue, setSelectedValue, toggleListVisibility],\n );\n\n // La komponenten rendre <select> med den valgte verdien før onChange trigges, slik at\n // react-hook-form@>7.41.1 behandler feltet som at det har en verdi.\n const previousSelectedValue = usePreviousValue(selectedValue);\n useEffect(() => {\n // previousSelectedValue er undefined på første render, men da vil vi ikke ha en onChange uansett\n if (\n typeof previousSelectedValue === \"undefined\" ||\n previousSelectedValue === selectedValue ||\n selectedValue === value\n ) {\n return;\n }\n if (onChange) {\n onChange({ type: \"change\", target: { name, value: selectedValue } });\n }\n if (selectRef.current) {\n selectRef.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }, [onChange, name, value, selectedValue, previousSelectedValue]);\n\n /// Fokushåndtering\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n const searchFieldRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleFocusPlacement = useCallback(\n (isOpen: boolean, ref: RefObject<HTMLElement>) => {\n if (isOpen && !isSearchable) {\n const listElement = ref.current;\n if (listElement) {\n focusSelected(listElement, selectedValue);\n }\n } else if (isOpen) {\n if (searchFieldRef.current) {\n searchFieldRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && buttonRef.current) {\n buttonRef.current.focus();\n }\n }\n },\n [isSearchable, selectedValue],\n );\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(dropdownIsShown, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLButtonElement | HTMLInputElement>) => {\n const componentRootElement = componentRootElementRef.current;\n // There are known issues in Firefox when using \"relatedTarget\" in onBlur events:\n // https://github.com/facebook/react/issues/2011\n // This might be fixed in react 17. Se issue above.\n const nextFocusIsInsideComponent =\n componentRootElement && componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n if (isSearchable) {\n setSearchValue(\"\");\n }\n if (onBlur) {\n onBlur({ type: \"blur\", target: { name, value: selectedValue } });\n selectRef.current?.dispatchEvent(new Event(\"focusout\", { bubbles: true }));\n }\n focusInsideRef.current = false;\n setShown(false);\n }\n },\n [onBlur, isSearchable, name, selectedValue],\n );\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({ type: \"change\", target: { name, value: selectedValue } });\n }\n focusInsideRef.current = true;\n }\n }, [onFocus, selectedValue, name]);\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Handle focus and blur of hidden select element\n useEffect(() => {\n const select = selectRef.current;\n const searchField = searchFieldRef.current;\n const button = buttonRef.current;\n const componentRootElement = componentRootElementRef.current;\n\n select?.addEventListener(\"focus\", () => {\n showSearchInputField ? searchField?.focus() : button?.focus();\n });\n select?.addEventListener(\"blur\", function (this, ev) {\n componentRootElement && componentRootElement.contains(ev.relatedTarget as Node) && ev.preventDefault();\n });\n\n return () => {\n select?.removeEventListener(\"focus\", () => {\n showSearchInputField ? searchField?.focus() : button?.focus();\n });\n select?.removeEventListener(\"blur\", function (this, ev) {\n componentRootElement && componentRootElement.contains(ev.relatedTarget as Node) && ev.preventDefault();\n });\n };\n }, [showSearchInputField]);\n\n /// Tastaturnavigasjon\n\n // Add support for opening dropdown with arrowkey down as expected from native select\n // onKeyDown to stop ArrowDown from scrolling the page\n const handleOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if ((e.key === \"ArrowDown\" || e.key === \" \") && !dropdownIsShown) {\n e.preventDefault();\n e.stopPropagation();\n setShown(true);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShown(false);\n }\n },\n [setShown, dropdownIsShown],\n );\n\n // onKeyDown to stop ArrowDown from scrolling the page\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n\n const listElement = dropdownRef.current;\n if (listElement) {\n if (isSearchable) {\n // Flytt fokus til det første elementet i listen, ikke det forrige valgte.\n // Ved endring i filter er det ikke gitt at vi ønsker å ta utgangspunkt i\n // den valgte verdien.\n focusSelected(listElement, undefined);\n } else {\n focusSelected(listElement, selectedValue);\n }\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShown(false);\n } else if (e.key === \"Tab\" && !e.shiftKey) {\n const listElement = dropdownRef.current;\n if (listElement) {\n e.preventDefault();\n e.stopPropagation();\n focusSelected(listElement, selectedValue);\n }\n } else if (e.key === \"Enter\" && dropdownIsShown) {\n // Should not propagate Enter keyevent because form might submit\n e.preventDefault();\n e.stopPropagation();\n }\n },\n [setShown, dropdownRef, selectedValue, isSearchable, dropdownIsShown],\n );\n\n // onKeyDown so this Tab listener isn't triggered by tabbing from search field to option\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey && searchFieldRef.current) {\n searchFieldRef.current.focus();\n } else if (buttonRef.current) {\n // Mimic behaviour of Firefox and native select, where Tab selects the current item and closes the menu\n setSelectedValue(e.currentTarget.value);\n setShown(false);\n buttonRef.current.focus();\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchFieldRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector('[role=\"option\"]:not([hidden])');\n if (e.currentTarget.id === firstVisible?.id && searchFieldRef.current) {\n searchFieldRef.current.focus();\n }\n }\n }\n },\n [setShown, dropdownRef],\n );\n\n // Add support for closing the dropdown with Escape like native select. Unfortunately, Escape does not trigger the button onKeyDown.\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && dropdownIsShown) {\n setShown(false);\n }\n };\n if (typeof window !== \"undefined\" && dropdownIsShown) {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShown, dropdownIsShown]);\n\n return (\n <>\n <select\n name={name}\n tabIndex={-1}\n data-testid=\"jkl-native-select\"\n className=\"jkl-sr-only\"\n aria-hidden\n ref={unifiedSelectRef}\n value={selectedValue}\n onChange={noop} // React complains unless we give an onChange handler. This is technically a read-only field, but readOnly isn't an option here.\n >\n <option value=\"\"></option> {/* Tom option må være et valg, ellers vil <select> alltid ha en value */}\n {visibleItems.map((item) => (\n <option key={`${listId}-opt-${item.value}`} hidden={!item.visible} value={item.value}>\n {item.label}\n </option>\n ))}\n </select>\n <InputGroup\n ref={componentRootElementRef}\n data-testid=\"jkl-select\"\n className={clsx(\"jkl-select\", className, {\n \"jkl-select--inline\": inline,\n \"jkl-select--open\": dropdownIsShown && visibleItems.some((item) => item.visible),\n \"jkl-select--no-value\": !hasSelectedValue,\n \"jkl-select--invalid\": !!errorLabel || invalid,\n })}\n {...rest}\n id={isSearchable ? searchInputId : buttonId}\n style={{ [\"--jkl-select-max-shown-options\"]: maxShownOptions, ...style } as CSSProperties}\n density={density}\n label={label}\n labelProps={{\n id: labelId,\n srOnly: inline,\n ...labelProps,\n htmlFor: isSearchable ? searchInputId : buttonId,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n render={(inputProps) => (\n <div className=\"jkl-select__outer-wrapper\" style={{ width }}>\n {isSearchable && (\n <input\n {...inputProps}\n id={searchInputId}\n hidden={!showSearchInputField}\n ref={searchFieldRef}\n placeholder=\"Søk\"\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n data-testid=\"jkl-select__search-input\"\n className=\"jkl-select__search-input\"\n aria-autocomplete=\"list\"\n aria-activedescendant={\n hasSelectedValue ? `${listId}__${toLower(selectedValue)}` : undefined\n }\n aria-controls={listId}\n aria-expanded={dropdownIsShown}\n role=\"combobox\"\n onKeyDown={handleSearchOnKeyDown}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n )}\n <button\n {...inputProps}\n id={buttonId}\n ref={buttonRef}\n hidden={showSearchInputField}\n type=\"button\"\n name={`${name}-btn`}\n className={clsx(\"jkl-select__button\", {\n \"jkl-select__button--active-value\": !!selectedValue,\n })}\n data-testid=\"jkl-select__button\"\n aria-label={`${selectedValueLabel || \"Velg\"},${label}`}\n aria-expanded={dropdownIsShown}\n aria-controls={listId}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleOnKeyDown}\n onClick={toggleListVisibility}\n onMouseDown={(e) => {\n // Workaround for en Safari-bug hvor e.relatedTarget er null i onBlur\n // https://twitter.com/MilesSorce/status/1278762360669265925\n e.preventDefault();\n buttonRef.current?.focus();\n }}\n >\n {selectedValueLabel}\n </button>\n <div\n id={listId}\n ref={dropdownRef}\n role=\"listbox\"\n className=\"jkl-select__options-menu\"\n hidden={!dropdownIsShown || visibleItems.every((item) => !item.visible)}\n aria-labelledby={labelId}\n tabIndex={-1}\n data-focus=\"controlled\" // lar oss styre markering av valg vha focus\n >\n {visibleItems.map((item, i) =>\n // Det er viktig at vi _fjerner_ elementer som ikke er synlige fra DOMen for at tastaturnavigasjon skal fungere.\n // For eksempel, hvis vi har elementene Apple, Samsung og LG i den rekkefølgen og søker etter \"l\"\n // vil Samsung ikke synes. Om vi bare setter hidden-attributtet på Samsung vil ArrowDown fra Apple ikke fungere.\n // Dette lar seg ikke gjenskape i en enhetstest med JSDOM + user-events, og Cypress lukker Select\n // ved første {downArrow} ¯\\_(ツ)_/¯. Så please test scenariet over manuelt om dette skaper trøbbel for deg.\n item.visible ? (\n <button\n key={`${listId}-${item.value}`}\n hidden={!item.visible}\n type=\"button\"\n id={`${listId}__${toLower(item.value)}`}\n className=\"jkl-select__option\"\n data-testid=\"jkl-select__option\"\n aria-selected={item.value === selectedValue}\n role=\"option\"\n value={item.value}\n data-testautoid={`jkl-select__option-${i}`}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n e.preventDefault();\n selectOption(item);\n }}\n onMouseOver={handleMouseOver}\n >\n {item.label}\n {item.description ? (\n <span className=\"jkl-select__option-description\">{item.description}</span>\n ) : null}\n </button>\n ) : null,\n )}\n </div>\n <ArrowVerticalAnimated\n variant=\"medium\"\n pointingDown={!dropdownIsShown}\n className=\"jkl-select__arrow\"\n />\n </div>\n )}\n />\n </>\n );\n});\n\nSelect.displayName = \"Select\";\n","import clsx from \"clsx\";\nimport React, { forwardRef, SelectHTMLAttributes } from \"react\";\nimport { type ValuePair, getValuePair } from \"../..\";\nimport { ArrowVerticalAnimated } from \"../icon\";\nimport { InputGroup, type InputGroupProps } from \"../input-group\";\n\nexport interface NativeSelectProps extends Omit<InputGroupProps, \"children\">, SelectHTMLAttributes<HTMLSelectElement> {\n /**\n * Merk som ugyldig uten å sende inn en errorLabel.\n * NB! Brukes kun i tilfeller der valideringsfeil dukker opp andre steder, for eksempel i en FieldGroup.\n */\n invalid?: boolean;\n /**\n * Setter inn et placeholderelement som vises når ingenting er valgt i nedtrekkslisten.\n * @default \"Velg\"\n */\n placeholder?: string;\n items: Array<string | ValuePair>;\n selectClassName?: string;\n width?: string;\n}\n\nexport const NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>((props, ref) => {\n const {\n label,\n className,\n density,\n errorLabel,\n helpLabel,\n inline,\n invalid,\n items,\n labelProps,\n placeholder = \"Velg\",\n selectClassName,\n supportLabelProps,\n tooltipProps,\n value,\n width,\n ...rest\n } = props;\n\n const inputGroupProps = {\n label,\n density,\n errorLabel,\n helpLabel,\n labelProps,\n inline,\n supportLabelProps,\n tooltipProps,\n };\n\n return (\n <InputGroup\n {...inputGroupProps}\n data-testid=\"jkl-select\"\n className={clsx(\"jkl-select\", className, {\n \"jkl-select--inline\": inline,\n \"jkl-select--invalid\": !!errorLabel || invalid,\n })}\n render={(inputProps) => (\n <div className=\"jkl-select__outer-wrapper\" style={{ width }}>\n <select\n ref={ref}\n className={clsx(\"jkl-select__button\", selectClassName, {\n \"jkl-select__button--active-value\": !!value,\n })}\n defaultValue={value ? undefined : \"\"}\n value={value}\n {...inputProps}\n {...rest}\n >\n {placeholder && !value && (\n <option disabled value=\"\">\n {placeholder}\n </option>\n )}\n {items.map(getValuePair).map((item) => (\n <option\n data-testid=\"jkl-select__option\"\n className=\"jkl-select__option\"\n key={item.value}\n value={item.value}\n >\n {item.label}\n </option>\n ))}\n </select>\n <ArrowVerticalAnimated variant=\"medium\" pointingDown className=\"jkl-select__arrow\" />\n </div>\n )}\n />\n );\n});\n\nNativeSelect.displayName = \"NativeSelect\";\n","import clsx from \"clsx\";\nimport React, {\n forwardRef,\n useCallback,\n useState,\n type MouseEventHandler,\n type ChangeEventHandler,\n type FC,\n} from \"react\";\nimport { type Density } from \"../..\";\nimport { useId } from \"../../hooks\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icon\";\nimport { IconButton } from \"../icon-button\";\nimport { NativeSelect } from \"../select\";\nimport { TextInput } from \"../text-input\";\nimport { useTableContext } from \"./tableContext\";\n\nexport interface TablePaginationProps {\n className?: string;\n id?: string;\n density?: Density;\n /**\n * @default 0\n */\n activePage?: number;\n /**\n * Null eller negativt tall tolkes som \"vis alle\".\n */\n rowsPerPage: number;\n rowsPerPageItems: Array<number | { label: string; value: number }>;\n totalNumberOfRows: number;\n /**\n * Viser et valgfritt inputfelt for å hoppe raskt til en spesifik side.\n * Du kan også sende inn en custom label hvis du ønsker det, ellers bruke\n * true for default label\n * @default false\n */\n withGoToPage?: boolean | { gotoLabel: string };\n onChange: (e: React.SyntheticEvent, toPage: number, fromPage: number) => void;\n onChangeRowsPerPage: ChangeEventHandler<HTMLSelectElement>;\n /**\n * Dersom du ønsker å ha custom labels kan du sende inn disse. \"rowsPerPage\"\n * vises alltid på skjerm mens \"next\" og \"previous\" brukes som hint til\n * skjermlesere for ikon-knappene til Neste/Forrige side\n * @default { rowsPerPage: \"Rader per side\", previous: \"Forrige\", next: \"Neste\" }\n */\n labels?: {\n rowsPerPage: string;\n previous: string;\n next: string;\n };\n}\n\nfunction clamp(min: number, num: number, max: number): number {\n if (num < min) {\n return min;\n } else if (num > max) {\n return max;\n }\n return num;\n}\n\nexport const TablePagination = forwardRef<HTMLDivElement, TablePaginationProps>((props, ref) => {\n const {\n activePage = 0,\n totalNumberOfRows,\n rowsPerPage,\n rowsPerPageItems,\n className,\n density,\n id: idProp,\n withGoToPage = false,\n onChange,\n onChangeRowsPerPage,\n labels = {\n rowsPerPage: \"Rader per side\",\n previous: \"Forrige\",\n next: \"Neste\",\n },\n ...rest\n } = props;\n\n const id = useId(idProp || \"jkl-table-pagination\", { generateSuffix: !idProp });\n const { density: contextDensity } = useTableContext();\n\n const showAll = rowsPerPage <= 0;\n const numberOfPages = showAll ? 1 : Math.ceil(totalNumberOfRows / rowsPerPage);\n\n const [currentPage, setCurrentPage] = useState(clamp(0, activePage, numberOfPages - 1));\n\n const onPageClick: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n const toPage = Number.parseInt(e.currentTarget.dataset[\"number\"] as string);\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, currentPage],\n );\n\n const [pagePickerValue, setPagePickerValue] = useState(String(currentPage + 1));\n const onPageChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n setPagePickerValue(e.target.value);\n try {\n const toPage = Number.parseInt(e.target.value) - 1;\n if (Number.isNaN(toPage)) {\n return;\n }\n\n if (toPage >= 0 && toPage < numberOfPages) {\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n }\n } catch {\n return;\n }\n },\n [onChange, setPagePickerValue, setCurrentPage, currentPage, numberOfPages],\n );\n\n const onPrevious: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n if (currentPage === 0) {\n // TODO: skal dette være en no-op i stedet?\n onChange(e, currentPage, currentPage);\n return;\n }\n const toPage = currentPage - 1;\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, currentPage],\n );\n\n const onNext: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n if (currentPage === numberOfPages - 1) {\n // TODO: skal dette være en no-op i stedet?\n onChange(e, currentPage, currentPage);\n return;\n }\n const toPage = currentPage + 1;\n onChange(e, toPage, currentPage);\n setCurrentPage(toPage);\n setPagePickerValue(String(toPage + 1));\n },\n [onChange, setCurrentPage, numberOfPages, currentPage],\n );\n\n return (\n <div\n className={clsx(\"jkl-table-pagination\", className)}\n {...rest}\n id={id}\n data-density={density || contextDensity}\n ref={ref}\n >\n <div className=\"jkl-table-pagination__left\">\n <div className=\"jkl-table-pagination__picker jkl-table-pagination__picker--rows\">\n <span className=\"jkl-table-pagination__picker-label\" aria-hidden=\"true\">\n {labels.rowsPerPage}:\n </span>\n <NativeSelect\n className=\"jkl-table-pagination__picker-input\"\n label={labels.rowsPerPage}\n labelProps={{ srOnly: true }}\n name={`${id}-rows-per-page`}\n items={rowsPerPageItems.map((i) =>\n typeof i === \"number\" ? String(i) : { label: i.label, value: String(i.value) },\n )}\n value={String(rowsPerPage)}\n onChange={onChangeRowsPerPage}\n width=\"min(8rem, 100%)\"\n inline\n />\n </div>\n </div>\n <div className=\"jkl-table-pagination__right\">\n {numberOfPages !== 1 && (\n <nav className=\"jkl-table-pagination__nav\">\n {withGoToPage && (\n <div className=\"jkl-table-pagination__picker jkl-table-pagination__picker--page\">\n <span className=\"jkl-table-pagination__picker-label\" aria-hidden=\"true\">\n {typeof withGoToPage === \"object\" ? withGoToPage.gotoLabel : \"Gå til side\"}:\n </span>\n {/* onChange først ved enter/submit */}\n <TextInput\n className=\"jkl-table-pagination__picker-input\"\n label={typeof withGoToPage === \"object\" ? withGoToPage.gotoLabel : \"Gå til side\"}\n labelProps={{ srOnly: true }}\n name={`${id}-go-to-page`}\n value={pagePickerValue}\n width=\"min(4rem, 100%)\"\n onChange={onPageChange}\n aria-invalid={\n pagePickerValue && pagePickerValue !== String(currentPage + 1)\n ? \"true\"\n : undefined\n }\n />\n </div>\n )}\n <ul>\n <li>\n <IconButton\n className=\"jkl-table-pagination__previous\"\n title={labels.previous}\n onClick={onPrevious}\n >\n <ChevronLeftIcon />\n </IconButton>\n </li>\n <PaginationPages\n id={id}\n activePage={activePage}\n numberOfPages={numberOfPages}\n onPageClick={onPageClick}\n />\n <li>\n <IconButton className=\"jkl-table-pagination__next\" title={labels.next} onClick={onNext}>\n <ChevronRightIcon />\n </IconButton>\n </li>\n </ul>\n </nav>\n )}\n </div>\n </div>\n );\n});\n\nconst PaginationPages: FC<{\n id: string;\n activePage: number;\n numberOfPages: number;\n onPageClick: MouseEventHandler;\n}> = ({ id, activePage, numberOfPages, onPageClick }) => {\n if (numberOfPages <= 7) {\n return (\n <>\n {Array.from({ length: numberOfPages }).map((_, i) => (\n <li key={`${id}-page-${i}`}>\n <button\n className={clsx(\"jkl-table-pagination__page\", {\n \"jkl-table-pagination__page--active\": activePage === i,\n })}\n type=\"button\"\n data-number={i}\n onClick={onPageClick}\n >\n {i + 1}\n </button>\n </li>\n ))}\n </>\n );\n }\n\n const showStartEllipsis = activePage > 3 && numberOfPages > 7;\n const showEndEllipsis = activePage < numberOfPages - 4 && numberOfPages > 7;\n\n const startEllipsis = Math.min(Math.max(activePage - 2, 1), numberOfPages - 6);\n const centerPageNumberStart = Math.min(startEllipsis + 1, numberOfPages - 5);\n const centerPageNumber = Math.min(centerPageNumberStart + 1, numberOfPages - 4);\n const centerPageNumberEnd = Math.min(centerPageNumberStart + 2, numberOfPages - 3);\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 2);\n\n return (\n <>\n <li>\n <PaginationPageButton isActive={activePage === 0} number={0} onClick={onPageClick} />\n </li>\n <li>\n {showStartEllipsis ? (\n <span className=\"jkl-table-pagination__ellipsis\" aria-hidden>\n {\"...\"}\n </span>\n ) : (\n <PaginationPageButton\n isActive={activePage === startEllipsis}\n number={startEllipsis}\n onClick={onPageClick}\n />\n )}\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumberStart}\n number={centerPageNumberStart}\n onClick={onPageClick}\n />\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumber}\n number={centerPageNumber}\n onClick={onPageClick}\n />\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n onClick={onPageClick}\n />\n </li>\n <li>\n {showEndEllipsis ? (\n <span className=\"jkl-table-pagination__ellipsis\" aria-hidden>\n {\"...\"}\n </span>\n ) : (\n <PaginationPageButton\n isActive={activePage === endEllipsis}\n number={endEllipsis}\n onClick={onPageClick}\n />\n )}\n </li>\n <li>\n <PaginationPageButton\n isActive={activePage === numberOfPages - 1}\n number={numberOfPages - 1}\n onClick={onPageClick}\n />\n </li>\n </>\n );\n};\n\nconst PaginationPageButton: FC<{\n isActive: boolean;\n number: number;\n onClick: MouseEventHandler;\n}> = ({ isActive, number, onClick, ...rest }) => (\n <button\n className={clsx(\"jkl-table-pagination__page\", {\n \"jkl-table-pagination__page--active\": isActive,\n })}\n type=\"button\"\n data-number={number}\n onClick={onClick}\n {...rest}\n >\n {number + 1}\n </button>\n);\n\nTablePagination.displayName = \"TablePagination\";\n","import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { Expander } from \"../expander\";\nimport type { TableCellProps } from \"./TableCell\";\nimport { TableCell } from \"./TableCell\";\nimport { useTableContext } from \"./tableContext\";\n\nexport interface ExpandableTableRowControllerProps extends TableCellProps {\n /** Settes automatisk av ExpandableTableRow */\n isOpen?: boolean;\n /** Settes automatisk av ExpandableTableRow */\n onClick?: () => void;\n}\n\nconst ExpandableTableRowController = forwardRef<HTMLTableCellElement, ExpandableTableRowControllerProps>(\n ({ isOpen, onClick, children, className, id, \"aria-controls\": ariaControls, ...rest }, ref) => {\n if (isOpen === undefined || typeof onClick !== \"function\") {\n throw new Error(\"ExpandableTableRowController must have ExpandableTableRow as parent\");\n }\n\n const { density, collapseToList } = useTableContext();\n\n const dataTh = (rest as Record<string, string>)[\"data-th\"];\n\n // pick text from data-th if possible, but only if it's a list\n const showTextFromTh: string | undefined = collapseToList ? dataTh : undefined;\n\n return (\n <TableCell\n className={clsx(\n \"jkl-table-cell--expand\",\n { [\"jkl-table-cell--expand-without-text\"]: !children },\n className,\n )}\n {...rest}\n ref={ref}\n >\n <Expander\n className={clsx(\"jkl-table-row-expand-button\", {\n [\"jkl-table-row-expand-button--expanded\"]: isOpen,\n })}\n id={id}\n density={density}\n isExpanded={isOpen}\n aria-controls={ariaControls}\n aria-label={children ? undefined : dataTh || \"Ekspander rad\"}\n onClick={(e) => {\n e.stopPropagation();\n onClick();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }\n }}\n >\n {/* show children. or try to use data-th if children is undefined */}\n {children ?? showTextFromTh}\n </Expander>\n </TableCell>\n );\n },\n);\n\nExpandableTableRowController.displayName = \"ExpandableTableRowController\";\n\nexport { ExpandableTableRowController };\n","import clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useState } from \"react\";\nimport { useAnimatedHeight, useId } from \"../../hooks\";\nimport { ExpandableTableRowController, ExpandableTableRowControllerProps } from \"./ExpandableTableRowController\";\nimport type { TableRowProps } from \"./TableRow\";\nimport { TableRow } from \"./TableRow\";\n\nexport interface ExpandableTableRowProps extends TableRowProps {\n expandedChildren: React.ReactNode;\n /**\n * Setter bredden på raden som blir åpnet\n * @default 100\n */\n colSpan?: number;\n /**\n * Om du ønsker en controlled komponent. Hvis du ikke setter denne vil komponenten håndtere state selv.\n */\n isOpen?: boolean;\n onToggle?: (isOpen: boolean) => void;\n}\n\nconst ExpandableTableRow = forwardRef<HTMLTableRowElement, ExpandableTableRowProps>((props, ref) => {\n const {\n className,\n clickable,\n children,\n expandedChildren,\n onToggle,\n colSpan = 100,\n isOpen: isOpenProp,\n ...rest\n } = props;\n\n const [isOpen, setIsOpen] = useState(isOpenProp ?? false);\n useEffect(() => {\n if (typeof isOpenProp === \"undefined\") {\n return;\n }\n setIsOpen(isOpenProp);\n }, [isOpenProp]);\n\n const [animationRef] = useAnimatedHeight<HTMLDivElement>(isOpen, { timing: \"expressive\" });\n\n const toggleOpen = () => {\n const newIsOpen = !isOpen;\n\n if (onToggle) {\n onToggle(newIsOpen);\n }\n\n setIsOpen(newIsOpen);\n };\n\n const tableRowClassName = clsx(\"jkl-table-row--expandable\", className, {\n [\"jkl-table-row--expanded\"]: isOpen,\n [\"jkl-expandable-table-row--clickable-external\"]: clickable,\n });\n const childWrapperClassName = clsx(\"jkl-expandable-table-row__expanded-row\", {\n [\"jkl-expandable-table-row__expanded-row--expanded\"]: isOpen,\n });\n\n const tableRowId = useId(\"jkl-expandable-table-row\");\n const expandableTableRowControllerId = useId(\"jkl-expandable-table-row-controller\");\n\n return (\n <>\n <TableRow\n className={tableRowClassName}\n clickable={\n clickable ?? {\n onClick: () => toggleOpen(),\n }\n }\n {...rest}\n ref={ref}\n >\n {React.Children.map(children, (child) => {\n if (\n React.isValidElement<ExpandableTableRowControllerProps>(child) &&\n child.type == ExpandableTableRowController\n ) {\n return React.cloneElement<ExpandableTableRowControllerProps>(child, {\n isOpen,\n onClick: () => toggleOpen(),\n \"aria-controls\": tableRowId,\n id: expandableTableRowControllerId,\n });\n } else {\n return child;\n }\n })}\n </TableRow>\n {/*\n Use a table row with a single as wide as possible cell to contain content. This allows\n using useAnimatedHeight to animate the row height.\n */}\n <tr aria-hidden={!isOpen}>\n <td colSpan={colSpan}>\n <div\n ref={animationRef}\n className={childWrapperClassName}\n id={tableRowId}\n aria-labelledby={expandableTableRowControllerId}\n hidden={!isOpen}\n role=\"group\"\n >\n {expandedChildren}\n </div>\n </td>\n </tr>\n </>\n );\n});\n\nExpandableTableRow.displayName = \"ExpandableTableRow\";\n\nexport { ExpandableTableRow };\n"],"names":["Expander","React","forwardRef","as","className","children","density","expandDirection","isExpanded","hideLabel","rest","ref","ContentWrapper","ScreenReaderOnly","Fragment","pointingDown","El","type","jsxs","clsx","jsx","ArrowVerticalAnimated","variant","bold","displayName","noop","Select","props","forwardedSelectRef","id","name","items","value","label","labelProps","onChange","onBlur","onFocus","helpLabel","errorLabel","invalid","searchable","inline","defaultPrompt","width","maxShownOptions","style","listId","useId","generateSuffix","labelId","buttonId","searchInputId","dropdownIsShown","setShown","useState","toggleListVisibility","useCallback","previousValue","isSearchable","showSearchInputField","searchValue","setSearchValue","searchFn","item","toLowerCase","includes","visibleItems","useMemo","map","getValuePair","visible","valueIsInItems","some","selectedValue","setSelectedValue","hasSelectedValue","selectedValueLabel","_a","find","selectRef","useRef","unifiedSelectRef","instance","current","usePreviousValue","useEffect","selectOption","nextValue","previousSelectedValue","target","dispatchEvent","Event","bubbles","componentRootElementRef","focusInsideRef","searchFieldRef","buttonRef","handleFocusPlacement","isOpen","listElement","focusSelected","focus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","handleBlur","e","componentRootElement","contains","relatedTarget","handleFocus","handleMouseOver","preventScroll","select","searchField","button","addEventListener","ev","preventDefault","removeEventListener","handleOnKeyDown","key","stopPropagation","handleSearchOnKeyDown","shiftKey","handleOptionOnKeyDown","currentTarget","firstVisible","querySelector","handleEscape","window","tabIndex","hidden","InputGroup","srOnly","htmlFor","render","inputProps","placeholder","toLower","role","onKeyDown","onClick","onMouseDown","every","i","onMouseOver","description","NativeSelect","selectClassName","supportLabelProps","tooltipProps","inputGroupProps","defaultValue","disabled","TablePagination","activePage","totalNumberOfRows","rowsPerPage","rowsPerPageItems","idProp","withGoToPage","onChangeRowsPerPage","labels","previous","next","contextDensity","useTableContext","numberOfPages","Math","ceil","currentPage","setCurrentPage","min","num","max","clamp","onPageClick","toPage","Number","parseInt","dataset","number","setPagePickerValue","String","pagePickerValue","onPageChange","isNaN","onPrevious","onNext","gotoLabel","TextInput","IconButton","title","ChevronLeftIcon","PaginationPages","ChevronRightIcon","Array","from","length","_","showStartEllipsis","showEndEllipsis","startEllipsis","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis","PaginationPageButton","isActive","ExpandableTableRowController","ariaControls","Error","collapseToList","dataTh","showTextFromTh","TableCell","ExpandableTableRow","clickable","expandedChildren","onToggle","colSpan","isOpenProp","setIsOpen","animationRef","timing","toggleOpen","newIsOpen","tableRowClassName","childWrapperClassName","tableRowId","expandableTableRowControllerId","TableRow","Children","child","isValidElement","cloneElement"],"mappings":"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"}