@fremtind/jokul 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/build/ExpandableTableRow-Bkqt-qP5.cjs +2 -0
  2. package/build/ExpandableTableRow-Bkqt-qP5.cjs.map +1 -0
  3. package/build/ExpandableTableRow-vzoCcN_v.js +2 -0
  4. package/build/ExpandableTableRow-vzoCcN_v.js.map +1 -0
  5. package/build/build-stats.html +1 -1
  6. package/build/cjs/components/accordion/documentation/Example.js +1 -1
  7. package/build/cjs/components/accordion/documentation/main.js +1 -1
  8. package/build/cjs/components/expander/ExpandSection.js +1 -1
  9. package/build/cjs/components/expander/Expander.js +1 -1
  10. package/build/cjs/components/expander/index.js +1 -1
  11. package/build/cjs/components/feedback/followup/Followup.js +1 -1
  12. package/build/cjs/components/index.js +1 -1
  13. package/build/cjs/components/link/documentation/Example.js +1 -1
  14. package/build/cjs/components/link/documentation/main.js +1 -1
  15. package/build/cjs/components/loader/documentation/Example.js +1 -1
  16. package/build/cjs/components/loader/documentation/main.js +1 -1
  17. package/build/cjs/components/menu/Menu.js +1 -1
  18. package/build/cjs/components/menu/index.js +1 -1
  19. package/build/cjs/components/select/NativeSelect.js +1 -1
  20. package/build/cjs/components/select/Select.js +1 -1
  21. package/build/cjs/components/select/index.js +1 -1
  22. package/build/cjs/components/table/ExpandableTableRow.js +1 -1
  23. package/build/cjs/components/table/ExpandableTableRowController.js +1 -1
  24. package/build/cjs/components/table/TablePagination.js +1 -1
  25. package/build/cjs/components/table/index.js +1 -1
  26. package/build/cjs/components/toggle-switch/documentation/Example.js +1 -1
  27. package/build/cjs/components/toggle-switch/documentation/main.js +1 -1
  28. package/build/cjs/components/tooltip/PopupTip.js +1 -1
  29. package/build/cjs/components/tooltip/PopupTip.js.map +1 -1
  30. package/build/cjs/components/tooltip/documentation/Example.js +1 -1
  31. package/build/cjs/components/tooltip/documentation/main.js +1 -1
  32. package/build/cjs/index.js +1 -1
  33. package/build/es/components/accordion/documentation/Example.js +1 -1
  34. package/build/es/components/accordion/documentation/main.js +1 -1
  35. package/build/es/components/expander/ExpandSection.js +1 -1
  36. package/build/es/components/expander/Expander.js +1 -1
  37. package/build/es/components/expander/index.js +1 -1
  38. package/build/es/components/feedback/followup/Followup.js +1 -1
  39. package/build/es/components/index.js +1 -1
  40. package/build/es/components/link/documentation/Example.js +1 -1
  41. package/build/es/components/link/documentation/main.js +1 -1
  42. package/build/es/components/loader/documentation/Example.js +1 -1
  43. package/build/es/components/loader/documentation/main.js +1 -1
  44. package/build/es/components/menu/Menu.js +1 -1
  45. package/build/es/components/menu/index.js +1 -1
  46. package/build/es/components/select/NativeSelect.js +1 -1
  47. package/build/es/components/select/Select.js +1 -1
  48. package/build/es/components/select/index.js +1 -1
  49. package/build/es/components/table/ExpandableTableRow.js +1 -1
  50. package/build/es/components/table/ExpandableTableRowController.js +1 -1
  51. package/build/es/components/table/TablePagination.js +1 -1
  52. package/build/es/components/table/index.js +1 -1
  53. package/build/es/components/toggle-switch/documentation/Example.js +1 -1
  54. package/build/es/components/toggle-switch/documentation/main.js +1 -1
  55. package/build/es/components/tooltip/PopupTip.js +1 -1
  56. package/build/es/components/tooltip/PopupTip.js.map +1 -1
  57. package/build/es/components/tooltip/documentation/Example.js +1 -1
  58. package/build/es/components/tooltip/documentation/main.js +1 -1
  59. package/build/es/index.js +1 -1
  60. package/build/{formatCode-C08Dk1Mz.js → formatCode-BT20TgSH.js} +2 -2
  61. package/build/{formatCode-C08Dk1Mz.js.map → formatCode-BT20TgSH.js.map} +1 -1
  62. package/build/{formatCode-BbxVs2z3.cjs → formatCode-Cr-qlO_l.cjs} +2 -2
  63. package/build/{formatCode-BbxVs2z3.cjs.map → formatCode-Cr-qlO_l.cjs.map} +1 -1
  64. package/build/{index-f6O4fUDa.js → index-CyI--Fia.js} +2 -2
  65. package/build/index-CyI--Fia.js.map +1 -0
  66. package/build/{index-pWkHWXbw.cjs → index-M_YXd0Wk.cjs} +2 -2
  67. package/build/index-M_YXd0Wk.cjs.map +1 -0
  68. package/build/style.css +1 -1
  69. package/package.json +2 -2
  70. package/src/components/accordion/styles/_index.scss +2 -0
  71. package/src/components/button/styles/_index.scss +2 -0
  72. package/src/components/button/styles/button.css +2 -2
  73. package/src/components/button/styles/button.min.css +1 -1
  74. package/src/components/card/styles/_index.scss +3 -0
  75. package/src/components/checkbox/styles/checkbox.css +4 -4
  76. package/src/components/checkbox/styles/checkbox.min.css +1 -1
  77. package/src/components/combobox/styles/_index.scss +6 -0
  78. package/src/components/cookie-consent/styles/_index.scss +4 -0
  79. package/src/components/datepicker/styles/_index.scss +4 -0
  80. package/src/components/expander/styles/_index.scss +3 -0
  81. package/src/components/feedback/styles/_index.scss +8 -0
  82. package/src/components/feedback/styles/feedback.css +2 -2
  83. package/src/components/feedback/styles/feedback.min.css +1 -1
  84. package/src/components/icon/styles/_index.scss +1 -0
  85. package/src/components/input-group/styles/_index.scss +3 -0
  86. package/src/components/input-group/styles/input-group.css +2 -2
  87. package/src/components/input-group/styles/input-group.min.css +1 -1
  88. package/src/components/link/styles/_index.scss +1 -0
  89. package/src/components/link-list/styles/_index.scss +3 -0
  90. package/src/components/loader/styles/loader.css +6 -6
  91. package/src/components/loader/styles/loader.min.css +1 -1
  92. package/src/components/loader/styles/skeleton-loader.css +5 -5
  93. package/src/components/loader/styles/skeleton-loader.min.css +1 -1
  94. package/src/components/message/styles/_index.scss +2 -0
  95. package/src/components/message/styles/message.css +2 -2
  96. package/src/components/message/styles/message.min.css +1 -1
  97. package/src/components/modal/styles/_index.scss +3 -0
  98. package/src/components/progress-bar/styles/progress-bar.css +2 -2
  99. package/src/components/progress-bar/styles/progress-bar.min.css +1 -1
  100. package/src/components/radio-button/styles/_index.scss +2 -0
  101. package/src/components/radio-button/styles/radio-button.css +2 -2
  102. package/src/components/radio-button/styles/radio-button.min.css +1 -1
  103. package/src/components/select/styles/_index.scss +3 -0
  104. package/src/components/system-message/styles/_index.scss +2 -0
  105. package/src/components/system-message/styles/system-message.css +2 -2
  106. package/src/components/system-message/styles/system-message.min.css +1 -1
  107. package/src/components/table/styles/_index.scss +6 -0
  108. package/src/components/table/styles/table.css +556 -0
  109. package/src/components/table/styles/table.min.css +1 -0
  110. package/src/components/table/styles/table.scss +54 -0
  111. package/src/components/tag/styles/_index.scss +3 -0
  112. package/src/components/text-input/styles/_index.scss +4 -0
  113. package/src/components/toast/styles/_index.scss +3 -0
  114. package/src/components/toast/styles/toast.css +4 -4
  115. package/src/components/toast/styles/toast.min.css +1 -1
  116. package/src/components/toggle-switch/styles/_index.scss +2 -0
  117. package/src/components/tooltip/styles/_index.scss +2 -0
  118. package/build/ExpandableTableRow-CqIg8_Yu.js +0 -2
  119. package/build/ExpandableTableRow-CqIg8_Yu.js.map +0 -1
  120. package/build/ExpandableTableRow-DanZYWEE.cjs +0 -2
  121. package/build/ExpandableTableRow-DanZYWEE.cjs.map +0 -1
  122. package/build/index-f6O4fUDa.js.map +0 -1
  123. package/build/index-pWkHWXbw.cjs.map +0 -1
@@ -1 +1 @@
1
- :root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:1rem}@media (width >= 0) and (max-width:679px){:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:0.75rem}}[data-density=compact],[data-layout-density=compact]{--jkl-toast-padding:0.5rem}.jkl-toast-region{background:#0000;bottom:1.5rem;display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:1rem;min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:1.5rem}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);display:grid;font-size:1.125rem;font-weight:400;line-height:1.75rem;max-width:min(30rem,85vw);overflow:hidden;padding:var(--jkl-toast-padding);padding-top:0;width:100%;--jkl-icon-weight:300}@media (min-width:680px){.jkl-toast{font-size:1.25rem;font-weight:400;line-height:2rem;--jkl-icon-weight:300}}@media (width >= 0) and (max-width:679px){.jkl-toast{grid-template-areas:"progress progress" "icon dismiss" "content content"}}@media (min-width:680px){.jkl-toast{grid-template-areas:"progress progress progress" "icon content dismiss";grid-template-columns:auto 1fr auto}}.jkl-toast__progress{grid-area:progress;margin-bottom:1rem;margin-inline:calc(var(--jkl-toast-padding)*-1)}.jkl-toast__progress .jkl-countdown{--bar-color:var(--text-color);--track-color:#0000;border-radius:0}.jkl-toast__icon{grid-area:icon;margin-right:1rem;width:1.5rem}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast__content{grid-area:content}.jkl-toast__message{margin-top:-.125rem}.jkl-toast__title{font-size:1.125rem;font-weight:700;line-height:1.5rem;margin:0 0 .25rem;--jkl-icon-weight:500}@media (min-width:680px){.jkl-toast__title{font-size:1.3125rem;font-weight:700;line-height:1.75rem;--jkl-icon-weight:500}}.jkl-toast__title~.jkl-toast__message{margin-top:0}.jkl-toast__dismiss-button{background-color:initial;color:inherit;cursor:pointer;grid-area:dismiss;justify-self:end;margin-left:var(--jkl-toast-gap);padding:0;position:relative}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-increment:-0.75rem;border-radius:.1875rem;content:"";inset:var(--tap-increment) var(--tap-increment) var(--tap-increment) var(--tap-increment);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-utxacvk .2s ease-out forwards}.jkl-toast[data-animation=exiting]{animation:jkl-exiting-utxacvz .15s ease-in forwards}@keyframes jkl-entering-utxacvk{0%{opacity:0;transform:translate3d(0,50%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes jkl-exiting-utxacvz{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,50%,0)}}
1
+ :root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:1rem}@media (width >= 0) and (max-width:679px){:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:0.75rem}}[data-density=compact],[data-layout-density=compact]{--jkl-toast-padding:0.5rem}.jkl-toast-region{background:#0000;bottom:1.5rem;display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:1rem;min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:1.5rem}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);display:grid;font-size:1.125rem;font-weight:400;line-height:1.75rem;max-width:min(30rem,85vw);overflow:hidden;padding:var(--jkl-toast-padding);padding-top:0;width:100%;--jkl-icon-weight:300}@media (min-width:680px){.jkl-toast{font-size:1.25rem;font-weight:400;line-height:2rem;--jkl-icon-weight:300}}@media (width >= 0) and (max-width:679px){.jkl-toast{grid-template-areas:"progress progress" "icon dismiss" "content content"}}@media (min-width:680px){.jkl-toast{grid-template-areas:"progress progress progress" "icon content dismiss";grid-template-columns:auto 1fr auto}}.jkl-toast__progress{grid-area:progress;margin-bottom:1rem;margin-inline:calc(var(--jkl-toast-padding)*-1)}.jkl-toast__progress .jkl-countdown{--bar-color:var(--text-color);--track-color:#0000;border-radius:0}.jkl-toast__icon{grid-area:icon;margin-right:1rem;width:1.5rem}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast__content{grid-area:content}.jkl-toast__message{margin-top:-.125rem}.jkl-toast__title{font-size:1.125rem;font-weight:700;line-height:1.5rem;margin:0 0 .25rem;--jkl-icon-weight:500}@media (min-width:680px){.jkl-toast__title{font-size:1.3125rem;font-weight:700;line-height:1.75rem;--jkl-icon-weight:500}}.jkl-toast__title~.jkl-toast__message{margin-top:0}.jkl-toast__dismiss-button{background-color:initial;color:inherit;cursor:pointer;grid-area:dismiss;justify-self:end;margin-left:var(--jkl-toast-gap);padding:0;position:relative}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-increment:-0.75rem;border-radius:.1875rem;content:"";inset:var(--tap-increment) var(--tap-increment) var(--tap-increment) var(--tap-increment);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-ulkptx5 .2s ease-out forwards}.jkl-toast[data-animation=exiting]{animation:jkl-exiting-ulkpty0 .15s ease-in forwards}@keyframes jkl-entering-ulkptx5{0%{opacity:0;transform:translate3d(0,50%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes jkl-exiting-ulkpty0{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,50%,0)}}
@@ -1 +1,3 @@
1
1
  @forward "toggle-switch";
2
+
3
+ @use "../../icon/styles" as icon;
@@ -1 +1,3 @@
1
1
  @forward "tooltip";
2
+
3
+ @use "../../icon/styles" as icon;
@@ -1,2 +0,0 @@
1
- import{jsxs as e,jsx as n,Fragment as o}from"react/jsx-runtime";import{c as t}from"./clsx-BeLtu-UY.js";import s,{forwardRef as a,useRef as i,useState as r,useEffect as l,useCallback as c,useMemo 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 g}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 h}from"./es/components/text-input/TextInput.js";import"./es/utilities/polymorphism/SlotComponent.js";import{IconButton as v}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{useFloatingTree as k,useFloatingNodeId as f,useFloatingParentNodeId as y,useFloating as w,offset as x,flip as _,shift as C,autoUpdate as N,useInteractions as I,useHover as P,safePolygon as T,useClick as E,useDismiss as L,useRole as D,useListNavigation as A,useMergeRefs as F,FloatingNode as S,FloatingPortal as R,FloatingFocusManager as M,FloatingTree as O}from"@floating-ui/react";import{AnimatePresence as $,motion as V}from"framer-motion";import*as B from"react-is";import{getThemeAndDensity as H}from"./es/utilities/getThemeAndDensity.js";import"./es/components/menu/MenuItem.js";import"./es/components/menu/MenuItemCheckbox.js";import"./es/components/popover/Popover.js";import{usePreviousValue as G}from"./es/hooks/usePreviousValue/usePreviousValue.js";import{useListNavigation as K}from"./es/hooks/useListNavigation/useListNavigation.js";import{getValuePair as U}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 q}from"./es/components/table/TableCell.js";import"./es/components/table/TableColumn.js";import"./es/components/table/TableColumnGroup.js";import{useTableContext as W}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 Q}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 z,toLower as J}from"./es/components/select/select-utils.js";import{useMenuWideEvents as X}from"./es/components/menu/useMenuWideEvents.js";import{ScreenReaderOnly as Y}from"./es/components/ScreenReaderOnly.js";const Z=s.forwardRef((({as:o="button",className:a,children:i,density:r,expandDirection:l="down",isExpanded:c=!1,hideLabel:p=!1,...m},d)=>{const b=p?Y:s.Fragment,j="down"===l?!c:c;return e(o,{"aria-expanded":c,"data-testid":"jkl-expander",type:"button"===o?"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&&n(b,{children:n("span",{className:"jkl-expander__text",children:i})}),n(u,{className:"jkl-expander__arrow",variant:"inherit",pointingDown:j,bold:c})]})}));Z.displayName="Expander";const ee=a(((o,a)=>{const{children:c,className:p,initialPlacement:m,openOnHover:u=!1,keepOpenOnClickOutside:b=!1,triggerElement:j,isOpen:g,onToggle:h,...v}=o,O=d("jkl-menu"),G=k(),K=f(),U=y(),q=null!=U,W=i([]),[Q,z]=r(null),{allowHover:J,isOpen:Y,setIsOpen:Z}=X(G,K,U),ee=void 0!==g?g:Y;l((()=>null==h?void 0:h(ee)),[ee,h]);const{x:ne,y:oe,refs:te,placement:se,strategy:ae,context:ie}=w({nodeId:K,open:ee,onOpenChange:Z,placement:m||(q?"right-start":"bottom-start"),middleware:[x(2),_({fallbackAxisSideDirection:"end",crossAxis:!1}),C({padding:8})],whileElementsMounted:N}),{getReferenceProps:re,getFloatingProps:le,getItemProps:ce}=I([P(ie,{enabled:u&&J,delay:{open:75},handleClose:T({requireIntent:!0,blockPointerEvents:!0})}),E(ie,{event:"mousedown"}),L(ie,{outsidePress:!b}),D(ie,{role:"menu"}),A(ie,{listRef:W,activeIndex:Q,nested:q,onNavigate:z})]),pe=F([te.setReference,a]),{theme:me,density:de}=H(te.reference.current);return e(S,{id:K,children:[s.isValidElement(j)&&("button"===j.type||B.isForwardRef(j))?s.cloneElement(j,{...re({...v,ref:pe,role:q?"menuitem":void 0,"aria-controls":O,onClick(e){e.stopPropagation()}})}):j,n($,{children:ee&&n(R,{children:n(M,{context:ie,modal:!1,initialFocus:q?-1:0,returnFocus:!q,children:n(V.div,{className:t("jkl jkl-menu",p),"data-theme":me,"data-layout-density":de,role:"menu",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{ease:"easeIn",duration:.1},"data-placement":se,"aria-live":"assertive","aria-hidden":!ee,ref:te.setFloating,...le({id:O,style:{position:ae,top:oe??"",left:ne??""}}),children:s.Children.map(c,((e,n)=>s.isValidElement(e)&&B.isForwardRef(e)?s.cloneElement(e,ce({...e.props,tabIndex:Q===n?0:-1,role:"menuitem",ref(e){W.current[n]=e},onClick(n){var o,t;null==(t=(o=e.props).onClick)||t.call(o,n),!n.defaultPrevented&&(null==G||G.events.emit("click"))},onKeyDown(n){var o,t;null==(t=(o=e.props).onKeyDown)||t.call(o,n),!n.defaultPrevented&&(null==G||G.events.emit("keydown"),"menuitemcheckbox"===n.currentTarget.role&&"Enter"===n.key&&Z(!1))},onMouseEnter(){J&&ee&&z(n)}})):e))})})})})]})}));ee.displayName="MenuComponent";const ne=a(((e,o)=>null===y()?n(O,{children:n(ee,{ref:o,...e})}):n(ee,{ref:o,...e})));ne.displayName="Menu";const oe=()=>{},te=a(((s,a)=>{const{id:b,name:j,items:h,value:v,label:k,labelProps:f,onChange:y,onBlur:w,onFocus:x,className:_,helpLabel:C,errorLabel:N,invalid:I,searchable:P=!1,inline:T=!1,defaultPrompt:E="Velg",density:L,width:D,maxShownOptions:A=5,style:F,...S}=s,R=d(b||"jkl-select",{generateSuffix:!b}),M=`${R}_label`,O=`${R}_button`,$=`${R}_search-input`,[V,B]=r(!1),H=c((()=>{B((e=>!e))}),[]),q=!!P,W=q&&V,[Q,X]=r(""),Y=c((e=>!!e.label.toLowerCase().includes(Q.toLowerCase())||"function"==typeof P&&P(Q,e)),[P,Q]),Z=p((()=>h.map(U).map((e=>{const n=!q||""===Q||Y(e);return{...e,visible:n}}))),[h,q,Q,Y]),ee=p((()=>!(typeof v>"u")&&h.some((e=>"string"==typeof e?e===v:e.value===v))),[v,h]),[ne,te]=r(ee&&void 0!==v?v:""),se=""!==ne,ae=p((()=>{var e;return(null==(e=Z.find((e=>e.value===ne)))?void 0:e.label)||E}),[Z,ne,E]),ie=i(null),re=c((e=>{ie.current=e,a&&("function"==typeof a?a(e):a.current=e),e&&te(e.value)}),[ie,a]),le=G(v);l((()=>{v!==le&&te(typeof v>"u"||!ee?"":v)}),[te,v,le,ee]);const ce=c((e=>{const n=e.value;X(""),te(n),H()}),[X,te,H]),pe=G(ne);l((()=>{typeof pe>"u"||pe===ne||ne===v||(y&&y({type:"change",target:{name:j,value:ne}}),ie.current&&ie.current.dispatchEvent(new Event("change",{bubbles:!0})))}),[y,j,v,ne,pe]);const me=i(null),de=i(!1),ue=i(null),be=i(null),je=c(((e,n)=>{if(e&&!q){const e=n.current;e&&z(e,ne)}else e?ue.current&&ue.current.focus():de.current&&be.current&&be.current.focus()}),[q,ne]),[ge]=m(V,{onFirstVisible:je,onTransitionEnd:je});K({ref:ge});const he=c((e=>{var n;const o=me.current;o&&o.contains(e.relatedTarget)||(q&&X(""),w&&(w({type:"blur",target:{name:j,value:ne}}),null==(n=ie.current)||n.dispatchEvent(new Event("focusout",{bubbles:!0}))),de.current=!1,B(!1))}),[w,q,j,ne]),ve=c((()=>{de.current||(x&&x({type:"change",target:{name:j,value:ne}}),de.current=!0)}),[x,ne,j]),ke=c((e=>{e.target.focus({preventScroll:!0})}),[]);l((()=>{const e=ie.current,n=ue.current,o=be.current,t=me.current;return null==e||e.addEventListener("focus",(()=>{W?null==n||n.focus():null==o||o.focus()})),null==e||e.addEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()})),()=>{null==e||e.removeEventListener("focus",(()=>{W?null==n||n.focus():null==o||o.focus()})),null==e||e.removeEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()}))}}),[W]);const fe=c((e=>{"ArrowDown"!==e.key&&" "!==e.key||V?"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),B(!1)):(e.preventDefault(),e.stopPropagation(),B(!0))}),[B,V]),ye=c((e=>{if("ArrowDown"===e.key){e.preventDefault(),e.stopPropagation();const n=ge.current;n&&z(n,q?void 0:ne)}else if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),B(!1);else if("Tab"!==e.key||e.shiftKey)"Enter"===e.key&&V&&(e.preventDefault(),e.stopPropagation());else{const n=ge.current;n&&(e.preventDefault(),e.stopPropagation(),z(n,ne))}}),[B,ge,ne,q,V]),we=c((e=>{if("Tab"===e.key)e.preventDefault(),e.stopPropagation(),e.shiftKey&&ue.current?ue.current.focus():be.current&&(te(e.currentTarget.value),B(!1),be.current.focus());else if("ArrowUp"===e.key&&ge.current&&ue.current){const n=ge.current.querySelector('[role="option"]:not([hidden])');e.currentTarget.id===(null==n?void 0:n.id)&&ue.current&&ue.current.focus()}}),[B,ge]);return l((()=>{const e=e=>{"Escape"===e.key&&V&&B(!1)};return typeof window<"u"&&V&&window.addEventListener("keydown",e),()=>{typeof window<"u"&&window.removeEventListener("keydown",e)}}),[B,V]),e(o,{children:[e("select",{name:j,tabIndex:-1,"data-testid":"jkl-native-select",className:"jkl-sr-only","aria-hidden":!0,ref:re,value:ne,onChange:oe,children:[n("option",{value:""})," ",Z.map((e=>n("option",{hidden:!e.visible,value:e.value,children:e.label},`${R}-opt-${e.value}`)))]}),n(g,{ref:me,"data-testid":"jkl-select",className:t("jkl-select",_,{"jkl-select--inline":T,"jkl-select--open":V&&Z.some((e=>e.visible)),"jkl-select--no-value":!se,"jkl-select--invalid":!!N||I}),...S,id:q?$:O,style:{"--jkl-select-max-shown-options":A,...F},density:L,label:k,labelProps:{id:M,srOnly:T,...f,htmlFor:q?$:O},helpLabel:C,errorLabel:N,render:o=>e("div",{className:"jkl-select__outer-wrapper",style:{width:D},children:[q&&n("input",{...o,id:$,hidden:!W,ref:ue,placeholder:"Søk",value:Q,onChange:e=>X(e.target.value),"data-testid":"jkl-select__search-input",className:"jkl-select__search-input","aria-autocomplete":"list","aria-activedescendant":se?`${R}__${J(ne)}`:void 0,"aria-controls":R,"aria-expanded":V,role:"combobox",onKeyDown:ye,onBlur:he,onFocus:ve,onClick:e=>{e.stopPropagation()}}),n("button",{...o,id:O,ref:be,hidden:W,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"},${k}`,"aria-expanded":V,"aria-controls":R,onBlur:he,onFocus:ve,onKeyDown:fe,onClick:H,onMouseDown:e=>{var n;e.preventDefault(),null==(n=be.current)||n.focus()},children:ae}),n("div",{id:R,ref:ge,role:"listbox",className:"jkl-select__options-menu",hidden:!V||Z.every((e=>!e.visible)),"aria-labelledby":M,tabIndex:-1,"data-focus":"controlled",children:Z.map(((o,t)=>o.visible?e("button",{hidden:!o.visible,type:"button",id:`${R}__${J(o.value)}`,className:"jkl-select__option","data-testid":"jkl-select__option","aria-selected":o.value===ne,role:"option",value:o.value,"data-testautoid":`jkl-select__option-${t}`,onBlur:he,onFocus:ve,onKeyDown:we,onClick:e=>{e.preventDefault(),ce(o)},onMouseOver:ke,children:[o.label,o.description?n("span",{className:"jkl-select__option-description",children:o.description}):null]},`${R}-${o.value}`):null))}),n(u,{variant:"medium",pointingDown:!V,className:"jkl-select__arrow"})]})})]})}));te.displayName="Select";const se=a(((o,s)=>{const{label:a,className:i,density:r,errorLabel:l,helpLabel:c,inline:p,invalid:m,items:d,labelProps:b,placeholder:j="Velg",selectClassName:h,supportLabelProps:v,tooltipProps:k,value:f,width:y,...w}=o;return n(g,{label:a,density:r,errorLabel:l,helpLabel:c,labelProps:b,inline:p,supportLabelProps:v,tooltipProps:k,"data-testid":"jkl-select",className:t("jkl-select",i,{"jkl-select--inline":p,"jkl-select--invalid":!!l||m}),render:o=>e("div",{className:"jkl-select__outer-wrapper",style:{width:y},children:[e("select",{ref:s,className:t("jkl-select__button",h,{"jkl-select__button--active-value":!!f}),defaultValue:f?void 0:"",value:f,...o,...w,children:[j&&!f&&n("option",{disabled:!0,value:"",children:j}),d.map(U).map((e=>n("option",{"data-testid":"jkl-select__option",className:"jkl-select__option",value:e.value,children:e.label},e.value)))]}),n(u,{variant:"medium",pointingDown:!0,className:"jkl-select__arrow"})]})})}));se.displayName="NativeSelect";const ae=a(((o,s)=>{const{activePage:a=0,totalNumberOfRows:i,rowsPerPage:l,rowsPerPageItems:p,className:m,density:u,id:g,withGoToPage:k=!1,onChange:f,onChangeRowsPerPage:y,labels:w={rowsPerPage:"Rader per side",previous:"Forrige",next:"Neste"},...x}=o,_=d(g||"jkl-table-pagination",{generateSuffix:!g}),{density:C}=W(),N=l<=0?1:Math.ceil(i/l),[I,P]=r(function(e,n,o){return n<e?e:n>o?o:n}(0,a,N-1)),T=c((e=>{const n=Number.parseInt(e.currentTarget.dataset.number);f(e,n,I),P(n),L(String(n+1))}),[f,P,I]),[E,L]=r(String(I+1)),D=c((e=>{L(e.target.value);try{const n=Number.parseInt(e.target.value)-1;if(Number.isNaN(n))return;n>=0&&n<N&&(f(e,n,I),P(n))}catch{return}}),[f,L,P,I,N]),A=c((e=>{if(0===I)return void f(e,I,I);const n=I-1;f(e,n,I),P(n),L(String(n+1))}),[f,P,I]),F=c((e=>{if(I===N-1)return void f(e,I,I);const n=I+1;f(e,n,I),P(n),L(String(n+1))}),[f,P,N,I]);return e("div",{className:t("jkl-table-pagination",m),...x,id:_,"data-density":u||C,ref:s,children:[n("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:[w.rowsPerPage,":"]}),n(se,{className:"jkl-table-pagination__picker-input",label:w.rowsPerPage,labelProps:{srOnly:!0},name:`${_}-rows-per-page`,items:p.map((e=>"number"==typeof e?String(e):{label:e.label,value:String(e.value)})),value:String(l),onChange:y,width:"min(8rem, 100%)",inline:!0})]})}),n("div",{className:"jkl-table-pagination__right",children:1!==N&&e("nav",{className:"jkl-table-pagination__nav",children:[k&&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 k?k.gotoLabel:"Gå til side",":"]}),n(h,{className:"jkl-table-pagination__picker-input",label:"object"==typeof k?k.gotoLabel:"Gå til side",labelProps:{srOnly:!0},name:`${_}-go-to-page`,value:E,width:"min(4rem, 100%)",onChange:D,"aria-invalid":E&&E!==String(I+1)?"true":void 0})]}),e("ul",{children:[n("li",{children:n(v,{className:"jkl-table-pagination__previous",title:w.previous,onClick:A,children:n(b,{})})}),n(ie,{id:_,activePage:a,numberOfPages:N,onPageClick:T}),n("li",{children:n(v,{className:"jkl-table-pagination__next",title:w.next,onClick:F,children:n(j,{})})})]})]})})]})})),ie=({id:s,activePage:a,numberOfPages:i,onPageClick:r})=>{if(i<=7)return n(o,{children:Array.from({length:i}).map(((e,o)=>n("li",{children:n("button",{className:t("jkl-table-pagination__page",{"jkl-table-pagination__page--active":a===o}),type:"button","data-number":o,onClick:r,children:o+1})},`${s}-page-${o}`)))});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(o,{children:[n("li",{children:n(re,{isActive:0===a,number:0,onClick:r})}),n("li",{children:l?n("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):n(re,{isActive:a===p,number:p,onClick:r})}),n("li",{children:n(re,{isActive:a===m,number:m,onClick:r})}),n("li",{children:n(re,{isActive:a===d,number:d,onClick:r})}),n("li",{children:n(re,{isActive:a===u,number:u,onClick:r})}),n("li",{children:c?n("span",{className:"jkl-table-pagination__ellipsis","aria-hidden":!0,children:"..."}):n(re,{isActive:a===b,number:b,onClick:r})}),n("li",{children:n(re,{isActive:a===i-1,number:i-1,onClick:r})})]})},re=({isActive:e,number:o,onClick:s,...a})=>n("button",{className:t("jkl-table-pagination__page",{"jkl-table-pagination__page--active":e}),type:"button","data-number":o,onClick:s,...a,children:o+1});ae.displayName="TablePagination";const le=a((({isOpen:e,onClick:o,children:s,className:a,id:i,"aria-controls":r,...l},c)=>{if(void 0===e||"function"!=typeof o)throw new Error("ExpandableTableRowController must have ExpandableTableRow as parent");const{density:p,collapseToList:m}=W(),d=l["data-th"],u=m?d:void 0;return n(q,{className:t("jkl-table-cell--expand",{"jkl-table-cell--expand-without-text":!s},a),...l,ref:c,children:n(Z,{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(),o()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.stopPropagation(),e.preventDefault(),o())},children:s??u})})}));le.displayName="ExpandableTableRowController";const ce=a(((a,i)=>{const{className:c,clickable:p,children:u,expandedChildren:b,onToggle:j,colSpan:g=100,isOpen:h,...v}=a,[k,f]=r(h??!1);l((()=>{typeof h>"u"||f(h)}),[h]);const[y]=m(k,{timing:"expressive"}),w=()=>{const e=!k;j&&j(e),f(e)},x=t("jkl-table-row--expandable",c,{"jkl-table-row--expanded":k,"jkl-expandable-table-row--clickable-external":p}),_=t("jkl-expandable-table-row__expanded-row",{"jkl-expandable-table-row__expanded-row--expanded":k}),C=d("jkl-expandable-table-row"),N=d("jkl-expandable-table-row-controller");return e(o,{children:[n(Q,{className:x,clickable:p??{onClick:()=>w()},...v,ref:i,children:s.Children.map(u,(e=>s.isValidElement(e)&&e.type==le?s.cloneElement(e,{isOpen:k,onClick:()=>w(),"aria-controls":C,id:N}):e))}),n("tr",{"aria-hidden":!k,children:n("td",{colSpan:g,children:n("div",{ref:y,className:_,id:C,"aria-labelledby":N,hidden:!k,role:"group",children:b})})})]})}));ce.displayName="ExpandableTableRow";export{Z as E,ne as M,se as N,te as S,ae as T,ce as a,le as b};
2
- //# sourceMappingURL=ExpandableTableRow-CqIg8_Yu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpandableTableRow-CqIg8_Yu.js","sources":["../src/components/expander/Expander.tsx","../src/components/menu/Menu.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 {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n type Placement,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport React, { type ButtonHTMLAttributes, forwardRef, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport * as ReactIs from \"react-is\";\nimport { type DataTestAutoId, getThemeAndDensity, WithChildren } from \"../..\";\nimport { useId } from \"../../hooks\";\nimport { useMenuWideEvents } from \"./useMenuWideEvents\";\n\nexport interface MenuProps\n extends DataTestAutoId,\n WithChildren,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n className?: string;\n /**\n * Initiell plassering av menyen. Dersom det ikke er plass på skjermen der du\n * angir at den skal åpnes vil den slyttes automatisk.\n * @default \"bottom-start\" på toppnivå, \"right-start\" for undermenyer\n * */\n initialPlacement?: Placement;\n /**\n * Angir om menyen skal åpnes ved hover (uten å måtte klikke)\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Angir om menyen skal holdes åpen når man klikker utenfor menyen\n * @default false\n */\n keepOpenOnClickOutside?: boolean;\n /**\n * Elementet som fungerer som trigger for menyen. Dersom elementet ikke er en `<button>`\n * eller en `forwardRef<HTMLButtonElement>` vil det bli lagt inne i en knapp\n * med forhåndsdefinert stil. For å komme raskt i gang kan du bruke komponenten\n * `MenuTriggerButton` fra denne pakken.\n */\n triggerElement: ReactNode;\n /**\n * Kan brukes til å styre utenfra om menyen skal være åpen eller ikke.\n * @default false\n */\n isOpen?: boolean;\n /**\n * Callback som kalles når menyen åpnes eller lukkes.\n */\n onToggle?: (isOpen: boolean) => void;\n}\n\nconst MenuComponent = forwardRef<HTMLButtonElement, MenuProps>((props, forwardedRef) => {\n const {\n children,\n className,\n initialPlacement,\n openOnHover = false,\n keepOpenOnClickOutside = false,\n triggerElement,\n isOpen: isOpenOverride,\n onToggle,\n ...triggerProps\n } = props;\n\n const MenuId = useId(\"jkl-menu\");\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n\n const listItemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const { allowHover, isOpen: isOpenDefault, setIsOpen } = useMenuWideEvents(tree, nodeId, parentId);\n\n const isOpen = isOpenOverride !== undefined ? isOpenOverride : isOpenDefault;\n\n useEffect(() => onToggle?.(isOpen), [isOpen, onToggle]);\n\n const { x, y, refs, placement, strategy, context } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange: setIsOpen,\n placement: initialPlacement || (isNested ? \"right-start\" : \"bottom-start\"),\n middleware: [\n offset(2),\n flip({\n fallbackAxisSideDirection: \"end\", // Allow bottom placement in narrow viewports (https://floating-ui.com/docs/flip#fallbackaxissidedirection)\n crossAxis: false, // See https://floating-ui.com/docs/flip#combining-with-shift\n }),\n shift({ padding: 8 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n useHover(context, {\n enabled: openOnHover && allowHover,\n delay: { open: 75 },\n handleClose: safePolygon({\n requireIntent: true,\n blockPointerEvents: true,\n }),\n }),\n useClick(context, {\n event: \"mousedown\",\n }),\n useDismiss(context, { outsidePress: !keepOpenOnClickOutside }),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n }),\n ]);\n\n const referenceRef = useMergeRefs([refs.setReference, forwardedRef]);\n\n // Siden menyen rendres på rot må vi hente lokal dark/light-verdi fra triggeren\n // Vi må gjøre dette for å ta hensyn til at tema kan styres lokalt for deler av UIet\n const { theme, density } = getThemeAndDensity(refs.reference.current as HTMLElement);\n\n return (\n <FloatingNode id={nodeId}>\n {React.isValidElement(triggerElement) &&\n (triggerElement.type === \"button\" || ReactIs.isForwardRef(triggerElement))\n ? // Dersom trigger-elementet er en knapp, sett riktige egenskaper på det\n React.cloneElement(triggerElement, {\n ...getReferenceProps({\n ...triggerProps,\n ref: referenceRef,\n role: isNested ? \"menuitem\" : undefined,\n \"aria-controls\": MenuId,\n onClick(event) {\n event.stopPropagation();\n },\n }),\n })\n : // Ellers, rendre elementet as-is, uten interaktivitet. Krev en ferdig brukbar button for å åpne menyen.\n triggerElement}\n <AnimatePresence>\n {isOpen && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n // Prevent outside content interference.\n modal={false}\n // Only initially focus the root floating menu.\n initialFocus={isNested ? -1 : 0}\n // Only return focus to the root menu's reference when menus close.\n returnFocus={!isNested}\n >\n <motion.div\n className={clsx(\"jkl jkl-menu\", className)}\n data-theme={theme}\n data-layout-density={density}\n role=\"menu\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ ease: \"easeIn\", duration: 0.1 }}\n data-placement={placement}\n aria-live=\"assertive\"\n aria-hidden={!isOpen}\n ref={refs.setFloating}\n {...getFloatingProps({\n id: MenuId,\n style: {\n position: strategy,\n top: y ?? \"\",\n left: x ?? \"\",\n },\n })}\n >\n {React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && ReactIs.isForwardRef(child)) {\n return React.cloneElement(\n child,\n getItemProps({\n ...child.props,\n tabIndex: activeIndex === index ? 0 : -1,\n role: \"menuitem\",\n ref(node: HTMLButtonElement) {\n listItemsRef.current[index] = node;\n },\n onClick(event) {\n child.props.onClick?.(event as React.MouseEvent<HTMLButtonElement>);\n if (event.defaultPrevented) {\n return;\n }\n tree?.events.emit(\"click\");\n },\n onKeyDown(event) {\n child.props.onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n tree?.events.emit(\"keydown\");\n if (\n event.currentTarget.role === \"menuitemcheckbox\" &&\n event.key === \"Enter\"\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n setIsOpen(false);\n }\n },\n onMouseEnter() {\n if (allowHover && isOpen) {\n setActiveIndex(index);\n }\n },\n }),\n );\n }\n\n return child;\n })}\n </motion.div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </AnimatePresence>\n </FloatingNode>\n );\n});\nMenuComponent.displayName = \"MenuComponent\";\n\nexport const Menu = forwardRef<HTMLButtonElement, MenuProps>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuComponent ref={ref} {...props} />\n </FloatingTree>\n );\n }\n\n return <MenuComponent ref={ref} {...props} />;\n});\nMenu.displayName = \"Menu\";\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","MenuComponent","props","forwardedRef","initialPlacement","openOnHover","keepOpenOnClickOutside","triggerElement","isOpen","isOpenOverride","onToggle","triggerProps","MenuId","useId","tree","useFloatingTree","nodeId","useFloatingNodeId","parentId","useFloatingParentNodeId","isNested","listItemsRef","useRef","activeIndex","setActiveIndex","useState","allowHover","isOpenDefault","setIsOpen","useMenuWideEvents","useEffect","x","y","refs","placement","strategy","context","useFloating","open","onOpenChange","middleware","offset","flip","fallbackAxisSideDirection","crossAxis","shift","padding","whileElementsMounted","autoUpdate","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useHover","enabled","delay","handleClose","safePolygon","requireIntent","blockPointerEvents","useClick","event","useDismiss","outsidePress","useRole","role","useListNavigation","listRef","nested","onNavigate","referenceRef","useMergeRefs","setReference","theme","getThemeAndDensity","reference","current","FloatingNode","id","isValidElement","ReactIs","isForwardRef","cloneElement","onClick","stopPropagation","AnimatePresence","FloatingPortal","FloatingFocusManager","modal","initialFocus","returnFocus","motion","div","initial","opacity","animate","exit","transition","ease","duration","setFloating","style","position","top","left","Children","map","child","index","tabIndex","node","_b","_a","call","defaultPrevented","events","emit","onKeyDown","currentTarget","key","onMouseEnter","Menu","FloatingTree","noop","Select","forwardedSelectRef","name","items","value","label","labelProps","onChange","onBlur","onFocus","helpLabel","errorLabel","invalid","searchable","inline","defaultPrompt","width","maxShownOptions","listId","generateSuffix","labelId","buttonId","searchInputId","dropdownIsShown","setShown","toggleListVisibility","useCallback","previousValue","isSearchable","showSearchInputField","searchValue","setSearchValue","searchFn","item","toLowerCase","includes","visibleItems","useMemo","getValuePair","visible","valueIsInItems","some","selectedValue","setSelectedValue","hasSelectedValue","selectedValueLabel","find","selectRef","unifiedSelectRef","instance","usePreviousValue","selectOption","nextValue","previousSelectedValue","target","dispatchEvent","Event","bubbles","componentRootElementRef","focusInsideRef","searchFieldRef","buttonRef","handleFocusPlacement","listElement","focusSelected","focus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","handleBlur","e","componentRootElement","contains","relatedTarget","handleFocus","handleMouseOver","preventScroll","select","searchField","button","addEventListener","ev","preventDefault","removeEventListener","handleOnKeyDown","handleSearchOnKeyDown","shiftKey","handleOptionOnKeyDown","firstVisible","querySelector","handleEscape","window","hidden","InputGroup","srOnly","htmlFor","render","inputProps","placeholder","toLower","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","colSpan","isOpenProp","animationRef","timing","toggleOpen","newIsOpen","tableRowClassName","childWrapperClassName","tableRowId","expandableTableRowControllerId","TableRow"],"mappings":"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"}
@@ -1,2 +0,0 @@
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 l=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 c=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");const p=require("@floating-ui/react"),d=require("framer-motion"),j=require("react-is"),m=require("./cjs/utilities/getThemeAndDensity.js");require("./cjs/components/menu/MenuItem.js"),require("./cjs/components/menu/MenuItemCheckbox.js"),require("./cjs/components/popover/Popover.js");const b=require("./cjs/hooks/usePreviousValue/usePreviousValue.js"),g=require("./cjs/hooks/useListNavigation/useListNavigation.js"),x=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 k=require("./cjs/components/table/TableCell.js");require("./cjs/components/table/TableColumn.js"),require("./cjs/components/table/TableColumnGroup.js");const v=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 h=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 f=require("./cjs/components/select/select-utils.js"),q=require("./cjs/components/menu/useMenuWideEvents.js"),w=require("./cjs/components/ScreenReaderOnly.js");const y=function(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const s in e)if("default"!==s){const t=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(n,s,t.get?t:{enumerable:!0,get:()=>e[s]})}return n.default=e,Object.freeze(n)}(j),C=s.forwardRef((({as:t="button",className:o,children:a,density:i,expandDirection:l="down",isExpanded:c=!1,hideLabel:u=!1,...p},d)=>{const j=u?w.ScreenReaderOnly:s.Fragment,m="down"===l?!c:c,b=t,g="button"===b?"button":void 0;return e.jsxs(b,{"aria-expanded":c,"data-testid":"jkl-expander",type:g,className:n.clsx("jkl-expander",o,{"jkl-expander--expanded":c,"jkl-expander--icon-only":!a}),...p,"data-density":i,ref:d,children:[a&&e.jsx(j,{children:e.jsx("span",{className:"jkl-expander__text",children:a})}),e.jsx(r.ArrowVerticalAnimated,{className:"jkl-expander__arrow",variant:"inherit",pointingDown:m,bold:c})]})}));C.displayName="Expander";const _=s.forwardRef(((t,r)=>{const{children:a,className:i,initialPlacement:l,openOnHover:c=!1,keepOpenOnClickOutside:u=!1,triggerElement:j,isOpen:b,onToggle:g,...x}=t,k=o.useId("jkl-menu"),v=p.useFloatingTree(),h=p.useFloatingNodeId(),f=p.useFloatingParentNodeId(),w=null!=f,C=s.useRef([]),[_,N]=s.useState(null),{allowHover:I,isOpen:P,setIsOpen:T}=q.useMenuWideEvents(v,h,f),E=void 0!==b?b:P;s.useEffect((()=>null==g?void 0:g(E)),[E,g]);const{x:S,y:R,refs:A,placement:F,strategy:L,context:D}=p.useFloating({nodeId:h,open:E,onOpenChange:T,placement:l||(w?"right-start":"bottom-start"),middleware:[p.offset(2),p.flip({fallbackAxisSideDirection:"end",crossAxis:!1}),p.shift({padding:8})],whileElementsMounted:p.autoUpdate}),{getReferenceProps:M,getFloatingProps:O,getItemProps:V}=p.useInteractions([p.useHover(D,{enabled:c&&I,delay:{open:75},handleClose:p.safePolygon({requireIntent:!0,blockPointerEvents:!0})}),p.useClick(D,{event:"mousedown"}),p.useDismiss(D,{outsidePress:!u}),p.useRole(D,{role:"menu"}),p.useListNavigation(D,{listRef:C,activeIndex:_,nested:w,onNavigate:N})]),$=p.useMergeRefs([A.setReference,r]),{theme:B,density:H}=m.getThemeAndDensity(A.reference.current);return e.jsxs(p.FloatingNode,{id:h,children:[s.isValidElement(j)&&("button"===j.type||y.isForwardRef(j))?s.cloneElement(j,{...M({...x,ref:$,role:w?"menuitem":void 0,"aria-controls":k,onClick(e){e.stopPropagation()}})}):j,e.jsx(d.AnimatePresence,{children:E&&e.jsx(p.FloatingPortal,{children:e.jsx(p.FloatingFocusManager,{context:D,modal:!1,initialFocus:w?-1:0,returnFocus:!w,children:e.jsx(d.motion.div,{className:n.clsx("jkl jkl-menu",i),"data-theme":B,"data-layout-density":H,role:"menu",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{ease:"easeIn",duration:.1},"data-placement":F,"aria-live":"assertive","aria-hidden":!E,ref:A.setFloating,...O({id:k,style:{position:L,top:R??"",left:S??""}}),children:s.Children.map(a,((e,n)=>s.isValidElement(e)&&y.isForwardRef(e)?s.cloneElement(e,V({...e.props,tabIndex:_===n?0:-1,role:"menuitem",ref(e){C.current[n]=e},onClick(n){var s,t;null==(t=(s=e.props).onClick)||t.call(s,n),!n.defaultPrevented&&(null==v||v.events.emit("click"))},onKeyDown(n){var s,t;null==(t=(s=e.props).onKeyDown)||t.call(s,n),!n.defaultPrevented&&(null==v||v.events.emit("keydown"),"menuitemcheckbox"===n.currentTarget.role&&"Enter"===n.key&&T(!1))},onMouseEnter(){I&&E&&N(n)}})):e))})})})})]})}));_.displayName="MenuComponent";const N=s.forwardRef(((n,s)=>null===p.useFloatingParentNodeId()?e.jsx(p.FloatingTree,{children:e.jsx(_,{ref:s,...n})}):e.jsx(_,{ref:s,...n})));N.displayName="Menu";const I=()=>{},P=s.forwardRef(((a,i)=>{const{id:c,name:u,items:p,value:d,label:j,labelProps:m,onChange:k,onBlur:v,onFocus:h,className:q,helpLabel:w,errorLabel:y,invalid:C,searchable:_=!1,inline:N=!1,defaultPrompt:P="Velg",density:T,width:E,maxShownOptions:S=5,style:R,...A}=a,F=o.useId(c||"jkl-select",{generateSuffix:!c}),L=`${F}_label`,D=`${F}_button`,M=`${F}_search-input`,[O,V]=s.useState(!1),$=s.useCallback((()=>{V((e=>!e))}),[]),B=!!_,H=B&&O,[G,K]=s.useState(""),U=s.useCallback((e=>!!e.label.toLowerCase().includes(G.toLowerCase())||"function"==typeof _&&_(G,e)),[_,G]),W=s.useMemo((()=>p.map(x.getValuePair).map((e=>{const n=!B||""===G||U(e);return{...e,visible:n}}))),[p,B,G,U]),z=s.useMemo((()=>!(typeof d>"u")&&p.some((e=>"string"==typeof e?e===d:e.value===d))),[d,p]),[Q,J]=s.useState(z&&void 0!==d?d:""),X=""!==Q,Y=s.useMemo((()=>{var e;return(null==(e=W.find((e=>e.value===Q)))?void 0:e.label)||P}),[W,Q,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=b.usePreviousValue(d);s.useEffect((()=>{d!==ne&&J(typeof d>"u"||!z?"":d)}),[J,d,ne,z]);const se=s.useCallback((e=>{const n=e.value;K(""),J(n),$()}),[K,J,$]),te=b.usePreviousValue(Q);s.useEffect((()=>{typeof te>"u"||te===Q||Q===d||(k&&k({type:"change",target:{name:u,value:Q}}),Z.current&&Z.current.dispatchEvent(new Event("change",{bubbles:!0})))}),[k,u,d,Q,te]);const oe=s.useRef(null),re=s.useRef(!1),ae=s.useRef(null),ie=s.useRef(null),le=s.useCallback(((e,n)=>{if(e&&!B){const e=n.current;e&&f.focusSelected(e,Q)}else e?ae.current&&ae.current.focus():re.current&&ie.current&&ie.current.focus()}),[B,Q]),[ce]=t.useAnimatedHeight(O,{onFirstVisible:le,onTransitionEnd:le});g.useListNavigation({ref:ce});const ue=s.useCallback((e=>{var n;const s=oe.current;s&&s.contains(e.relatedTarget)||(B&&K(""),v&&(v({type:"blur",target:{name:u,value:Q}}),null==(n=Z.current)||n.dispatchEvent(new Event("focusout",{bubbles:!0}))),re.current=!1,V(!1))}),[v,B,u,Q]),pe=s.useCallback((()=>{re.current||(h&&h({type:"change",target:{name:u,value:Q}}),re.current=!0)}),[h,Q,u]),de=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",(()=>{H?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",(()=>{H?null==n||n.focus():null==s||s.focus()})),null==e||e.removeEventListener("blur",(function(e){t&&t.contains(e.relatedTarget)&&e.preventDefault()}))}}),[H]);const je=s.useCallback((e=>{"ArrowDown"!==e.key&&" "!==e.key||O?"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),V(!1)):(e.preventDefault(),e.stopPropagation(),V(!0))}),[V,O]),me=s.useCallback((e=>{if("ArrowDown"===e.key){e.preventDefault(),e.stopPropagation();const n=ce.current;n&&(B?f.focusSelected(n,void 0):f.focusSelected(n,Q))}else if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),V(!1);else if("Tab"!==e.key||e.shiftKey)"Enter"===e.key&&O&&(e.preventDefault(),e.stopPropagation());else{const n=ce.current;n&&(e.preventDefault(),e.stopPropagation(),f.focusSelected(n,Q))}}),[V,ce,Q,B,O]),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),V(!1),ie.current.focus());else if("ArrowUp"===e.key&&ce.current&&ae.current){const n=ce.current.querySelector('[role="option"]:not([hidden])');e.currentTarget.id===(null==n?void 0:n.id)&&ae.current&&ae.current.focus()}}),[V,ce]);return s.useEffect((()=>{const e=e=>{"Escape"===e.key&&O&&V(!1)};return typeof window<"u"&&O&&window.addEventListener("keydown",e),()=>{typeof window<"u"&&window.removeEventListener("keydown",e)}}),[V,O]),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:Q,onChange:I,children:[e.jsx("option",{value:""})," ",W.map((n=>e.jsx("option",{hidden:!n.visible,value:n.value,children:n.label},`${F}-opt-${n.value}`)))]}),e.jsx(l.InputGroup,{ref:oe,"data-testid":"jkl-select",className:n.clsx("jkl-select",q,{"jkl-select--inline":N,"jkl-select--open":O&&W.some((e=>e.visible)),"jkl-select--no-value":!X,"jkl-select--invalid":!!y||C}),...A,id:B?M:D,style:{"--jkl-select-max-shown-options":S,...R},density:T,label:j,labelProps:{id:L,srOnly:N,...m,htmlFor:B?M:D},helpLabel:w,errorLabel:y,render:s=>e.jsxs("div",{className:"jkl-select__outer-wrapper",style:{width:E},children:[B&&e.jsx("input",{...s,id:M,hidden:!H,ref:ae,placeholder:"Søk",value:G,onChange:e=>K(e.target.value),"data-testid":"jkl-select__search-input",className:"jkl-select__search-input","aria-autocomplete":"list","aria-activedescendant":X?`${F}__${f.toLower(Q)}`:void 0,"aria-controls":F,"aria-expanded":O,role:"combobox",onKeyDown:me,onBlur:ue,onFocus:pe,onClick:e=>{e.stopPropagation()}}),e.jsx("button",{...s,id:D,ref:ie,hidden:H,type:"button",name:`${u}-btn`,className:n.clsx("jkl-select__button",{"jkl-select__button--active-value":!!Q}),"data-testid":"jkl-select__button","aria-label":`${Y||"Velg"},${j}`,"aria-expanded":O,"aria-controls":F,onBlur:ue,onFocus:pe,onKeyDown:je,onClick:$,onMouseDown:e=>{var n;e.preventDefault(),null==(n=ie.current)||n.focus()},children:Y}),e.jsx("div",{id:F,ref:ce,role:"listbox",className:"jkl-select__options-menu",hidden:!O||W.every((e=>!e.visible)),"aria-labelledby":L,tabIndex:-1,"data-focus":"controlled",children:W.map(((n,s)=>n.visible?e.jsxs("button",{hidden:!n.visible,type:"button",id:`${F}__${f.toLower(n.value)}`,className:"jkl-select__option","data-testid":"jkl-select__option","aria-selected":n.value===Q,role:"option",value:n.value,"data-testautoid":`jkl-select__option-${s}`,onBlur:ue,onFocus:pe,onKeyDown:be,onClick:e=>{e.preventDefault(),se(n)},onMouseOver:de,children:[n.label,n.description?e.jsx("span",{className:"jkl-select__option-description",children:n.description}):null]},`${F}-${n.value}`):null))}),e.jsx(r.ArrowVerticalAnimated,{variant:"medium",pointingDown:!O,className:"jkl-select__arrow"})]})})]})}));P.displayName="Select";const T=s.forwardRef(((s,t)=>{const{label:o,className:a,density:i,errorLabel:c,helpLabel:u,inline:p,invalid:d,items:j,labelProps:m,placeholder:b="Velg",selectClassName:g,supportLabelProps:k,tooltipProps:v,value:h,width:f,...q}=s,w={label:o,density:i,errorLabel:c,helpLabel:u,labelProps:m,inline:p,supportLabelProps:k,tooltipProps:v};return e.jsx(l.InputGroup,{...w,"data-testid":"jkl-select",className:n.clsx("jkl-select",a,{"jkl-select--inline":p,"jkl-select--invalid":!!c||d}),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",g,{"jkl-select__button--active-value":!!h}),defaultValue:h?void 0:"",value:h,...s,...q,children:[b&&!h&&e.jsx("option",{disabled:!0,value:"",children:b}),j.map(x.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"})]})})}));T.displayName="NativeSelect";const E=s.forwardRef(((t,r)=>{const{activePage:l=0,totalNumberOfRows:p,rowsPerPage:d,rowsPerPageItems:j,className:m,density:b,id:g,withGoToPage:x=!1,onChange:k,onChangeRowsPerPage:h,labels:f={rowsPerPage:"Rader per side",previous:"Forrige",next:"Neste"},...q}=t,w=o.useId(g||"jkl-table-pagination",{generateSuffix:!g}),{density:y}=v.useTableContext(),C=d<=0?1:Math.ceil(p/d),[_,N]=s.useState(function(e,n,s){return n<e?e:n>s?s:n}(0,l,C-1)),I=s.useCallback((e=>{const n=Number.parseInt(e.currentTarget.dataset.number);k(e,n,_),N(n),E(String(n+1))}),[k,N,_]),[P,E]=s.useState(String(_+1)),R=s.useCallback((e=>{E(e.target.value);try{const n=Number.parseInt(e.target.value)-1;if(Number.isNaN(n))return;n>=0&&n<C&&(k(e,n,_),N(n))}catch{return}}),[k,E,N,_,C]),A=s.useCallback((e=>{if(0===_)return void k(e,_,_);const n=_-1;k(e,n,_),N(n),E(String(n+1))}),[k,N,_]),F=s.useCallback((e=>{if(_===C-1)return void k(e,_,_);const n=_+1;k(e,n,_),N(n),E(String(n+1))}),[k,N,C,_]);return e.jsxs("div",{className:n.clsx("jkl-table-pagination",m),...q,id:w,"data-density":b||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(T,{className:"jkl-table-pagination__picker-input",label:f.rowsPerPage,labelProps:{srOnly:!0},name:`${w}-rows-per-page`,items:j.map((e=>"number"==typeof e?String(e):{label:e.label,value:String(e.value)})),value:String(d),onChange:h,width:"min(8rem, 100%)",inline:!0})]})}),e.jsx("div",{className:"jkl-table-pagination__right",children:1!==C&&e.jsxs("nav",{className:"jkl-table-pagination__nav",children:[x&&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 x?x.gotoLabel:"Gå til side",":"]}),e.jsx(c.TextInput,{className:"jkl-table-pagination__picker-input",label:"object"==typeof x?x.gotoLabel:"Gå til side",labelProps:{srOnly:!0},name:`${w}-go-to-page`,value:P,width:"min(4rem, 100%)",onChange:R,"aria-invalid":P&&P!==String(_+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(S,{id:w,activePage:l,numberOfPages:C,onPageClick:I}),e.jsx("li",{children:e.jsx(u.IconButton,{className:"jkl-table-pagination__next",title:f.next,onClick:F,children:e.jsx(i.ChevronRightIcon,{})})})]})]})})]})})),S=({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,l=Math.min(Math.max(t-2,1),o-6),c=Math.min(l+1,o-5),u=Math.min(c+1,o-4),p=Math.min(c+2,o-3),d=Math.min(c+3,o-2);return e.jsxs(e.Fragment,{children:[e.jsx("li",{children:e.jsx(R,{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(R,{isActive:t===l,number:l,onClick:r})}),e.jsx("li",{children:e.jsx(R,{isActive:t===c,number:c,onClick:r})}),e.jsx("li",{children:e.jsx(R,{isActive:t===u,number:u,onClick:r})}),e.jsx("li",{children:e.jsx(R,{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(R,{isActive:t===d,number:d,onClick:r})}),e.jsx("li",{children:e.jsx(R,{isActive:t===o-1,number:o-1,onClick:r})})]})},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});E.displayName="TablePagination";const A=s.forwardRef((({isOpen:s,onClick:t,children:o,className:r,id:a,"aria-controls":i,...l},c)=>{if(void 0===s||"function"!=typeof t)throw new Error("ExpandableTableRowController must have ExpandableTableRow as parent");const{density:u,collapseToList:p}=v.useTableContext(),d=l["data-th"],j=p?d:void 0;return e.jsx(k.TableCell,{className:n.clsx("jkl-table-cell--expand",{"jkl-table-cell--expand-without-text":!o},r),...l,ref:c,children:e.jsx(C,{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:d||"Ekspander rad",onClick:e=>{e.stopPropagation(),t()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.stopPropagation(),e.preventDefault(),t())},children:o??j})})}));A.displayName="ExpandableTableRowController";const F=s.forwardRef(((r,a)=>{const{className:i,clickable:l,children:c,expandedChildren:u,onToggle:p,colSpan:d=100,isOpen:j,...m}=r,[b,g]=s.useState(j??!1);s.useEffect((()=>{typeof j>"u"||g(j)}),[j]);const[x]=t.useAnimatedHeight(b,{timing:"expressive"}),k=()=>{const e=!b;p&&p(e),g(e)},v=n.clsx("jkl-table-row--expandable",i,{"jkl-table-row--expanded":b,"jkl-expandable-table-row--clickable-external":l}),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(h.TableRow,{className:v,clickable:l??{onClick:()=>k()},...m,ref:a,children:s.Children.map(c,(e=>s.isValidElement(e)&&e.type==A?s.cloneElement(e,{isOpen:b,onClick:()=>k(),"aria-controls":q,id:w}):e))}),e.jsx("tr",{"aria-hidden":!b,children:e.jsx("td",{colSpan:d,children:e.jsx("div",{ref:x,className:f,id:q,"aria-labelledby":w,hidden:!b,role:"group",children:u})})})]})}));F.displayName="ExpandableTableRow",exports.ExpandableTableRow=F,exports.ExpandableTableRowController=A,exports.Expander=C,exports.Menu=N,exports.NativeSelect=T,exports.Select=P,exports.TablePagination=E;
2
- //# sourceMappingURL=ExpandableTableRow-DanZYWEE.cjs.map