@norges-domstoler/dds-components 7.1.0 → 8.0.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 (160) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  3. package/dist/cjs/components/Button/Button.stories.d.ts +1 -1
  4. package/dist/cjs/components/Checkbox/Checkbox.stories.d.ts +1 -1
  5. package/dist/cjs/components/Chip/Chip.stories.d.ts +1 -1
  6. package/dist/cjs/components/DescriptionList/DescriptionList.stories.d.ts +1 -1
  7. package/dist/cjs/components/Divider/Divider.stories.d.ts +1 -1
  8. package/dist/cjs/components/Drawer/Drawer.stories.d.ts +1 -1
  9. package/dist/cjs/components/GlobalMessage/GlobalMessage.stories.d.ts +1 -1
  10. package/dist/cjs/components/InputMessage/InputMessage.stories.d.ts +1 -1
  11. package/dist/cjs/components/List/List.stories.d.ts +1 -1
  12. package/dist/cjs/components/LocalMessage/LocalMessage.stories.d.ts +1 -1
  13. package/dist/cjs/components/Modal/Modal.stories.d.ts +1 -1
  14. package/dist/cjs/components/OverflowMenu/OverflowMenu.stories.d.ts +1 -1
  15. package/dist/cjs/components/Pagination/Pagination.stories.d.ts +1 -1
  16. package/dist/cjs/components/Popover/Popover.d.ts +12 -4
  17. package/dist/cjs/components/Popover/Popover.stories.d.ts +4 -2
  18. package/dist/cjs/components/Popover/Popover.tokens.d.ts +11 -8
  19. package/dist/cjs/components/ProgressTracker/ProgressTracker.context.d.ts +6 -0
  20. package/dist/cjs/components/ProgressTracker/ProgressTracker.d.ts +12 -0
  21. package/dist/cjs/components/ProgressTracker/ProgressTracker.stories.d.ts +40 -0
  22. package/dist/cjs/components/ProgressTracker/ProgressTracker.tokens.d.ts +69 -0
  23. package/dist/cjs/components/ProgressTracker/ProgressTrackerItem.d.ts +24 -0
  24. package/dist/cjs/components/ProgressTracker/index.d.ts +1 -0
  25. package/dist/cjs/components/RadioButton/RadioButton.stories.d.ts +1 -1
  26. package/dist/cjs/components/RadioButton/RadioButtonGroup.stories.d.ts +1 -1
  27. package/dist/cjs/components/Search/Search.d.ts +2 -2
  28. package/dist/cjs/components/Search/Search.stories.d.ts +7 -1
  29. package/dist/cjs/components/Search/Search.tokens.d.ts +4 -1
  30. package/dist/cjs/components/SkipToContent/SkipToContent.stories.d.ts +1 -1
  31. package/dist/cjs/components/Table/Cell.d.ts +1 -1
  32. package/dist/cjs/components/Table/Table.d.ts +4 -0
  33. package/dist/cjs/components/Table/Table.stories.d.ts +7 -0
  34. package/dist/cjs/components/Table/Table.tokens.d.ts +72 -0
  35. package/dist/cjs/components/Tag/Tag.stories.d.ts +1 -1
  36. package/dist/cjs/components/ToggleButton/ToggleButton.stories.d.ts +1 -1
  37. package/dist/cjs/components/Tooltip/Tooltip.stories.d.ts +1 -1
  38. package/dist/cjs/components/Typography/Caption/Caption.stories.d.ts +1 -1
  39. package/dist/cjs/components/Typography/Heading/Heading.stories.d.ts +1 -1
  40. package/dist/cjs/components/Typography/Label/Label.stories.d.ts +1 -1
  41. package/dist/cjs/components/Typography/Legend/Legend.stories.d.ts +1 -1
  42. package/dist/cjs/components/Typography/Link/Link.stories.d.ts +1 -1
  43. package/dist/cjs/components/Typography/Paragraph/Paragraph.stories.d.ts +1 -1
  44. package/dist/cjs/helpers/Paper/Paper.d.ts +8 -1
  45. package/dist/cjs/helpers/Paper/Paper.tokens.d.ts +5 -2
  46. package/dist/cjs/hooks/index.d.ts +1 -0
  47. package/dist/cjs/hooks/useFocusTrap.d.ts +1 -1
  48. package/dist/cjs/hooks/useReturnFocusOnBlur.d.ts +31 -0
  49. package/dist/cjs/index.d.ts +1 -1
  50. package/dist/cjs/index.js +1224 -1060
  51. package/dist/cjs/utils/getFocusableElements.d.ts +2 -0
  52. package/dist/cjs/utils/index.d.ts +1 -0
  53. package/dist/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  54. package/dist/components/Button/Button.stories.d.ts +1 -1
  55. package/dist/components/Button/Button.styles.js +1 -1
  56. package/dist/components/Card/CardAccordion/CardAccordionHeader.js +1 -1
  57. package/dist/components/Checkbox/Checkbox.stories.d.ts +1 -1
  58. package/dist/components/Chip/Chip.stories.d.ts +1 -1
  59. package/dist/components/DescriptionList/DescriptionList.stories.d.ts +1 -1
  60. package/dist/components/Divider/Divider.stories.d.ts +1 -1
  61. package/dist/components/Drawer/Drawer.js +3 -0
  62. package/dist/components/Drawer/Drawer.stories.d.ts +1 -1
  63. package/dist/components/GlobalMessage/GlobalMessage.stories.d.ts +1 -1
  64. package/dist/components/Grid/Grid.context.js +1 -0
  65. package/dist/components/Grid/Grid.js +1 -0
  66. package/dist/components/Grid/Grid.tokens.js +1 -0
  67. package/dist/components/Grid/Grid.utils.js +1 -0
  68. package/dist/components/InputMessage/InputMessage.stories.d.ts +1 -1
  69. package/dist/components/List/List.stories.d.ts +1 -1
  70. package/dist/components/LocalMessage/LocalMessage.stories.d.ts +1 -1
  71. package/dist/components/Modal/Modal.js +1 -0
  72. package/dist/components/Modal/Modal.stories.d.ts +1 -1
  73. package/dist/components/OverflowMenu/OverflowMenu.js +1 -0
  74. package/dist/components/OverflowMenu/OverflowMenu.stories.d.ts +1 -1
  75. package/dist/components/OverflowMenu/OverflowMenuItem.js +2 -1
  76. package/dist/components/Pagination/Pagination.stories.d.ts +1 -1
  77. package/dist/components/Popover/Popover.d.ts +12 -4
  78. package/dist/components/Popover/Popover.js +47 -22
  79. package/dist/components/Popover/Popover.stories.d.ts +4 -2
  80. package/dist/components/Popover/Popover.tokens.d.ts +11 -8
  81. package/dist/components/Popover/Popover.tokens.js +17 -28
  82. package/dist/components/Popover/PopoverGroup.js +9 -20
  83. package/dist/components/ProgressTracker/ProgressTracker.context.d.ts +6 -0
  84. package/dist/components/ProgressTracker/ProgressTracker.context.js +10 -0
  85. package/dist/components/ProgressTracker/ProgressTracker.d.ts +12 -0
  86. package/dist/components/ProgressTracker/ProgressTracker.js +93 -0
  87. package/dist/components/ProgressTracker/ProgressTracker.stories.d.ts +40 -0
  88. package/dist/components/ProgressTracker/ProgressTracker.tokens.d.ts +69 -0
  89. package/dist/components/ProgressTracker/ProgressTracker.tokens.js +80 -0
  90. package/dist/components/ProgressTracker/ProgressTrackerItem.d.ts +24 -0
  91. package/dist/components/ProgressTracker/ProgressTrackerItem.js +168 -0
  92. package/dist/components/ProgressTracker/index.d.ts +1 -0
  93. package/dist/components/RadioButton/RadioButton.stories.d.ts +1 -1
  94. package/dist/components/RadioButton/RadioButtonGroup.stories.d.ts +1 -1
  95. package/dist/components/Search/Search.d.ts +2 -2
  96. package/dist/components/Search/Search.js +36 -28
  97. package/dist/components/Search/Search.stories.d.ts +7 -1
  98. package/dist/components/Search/Search.tokens.d.ts +4 -1
  99. package/dist/components/Search/Search.tokens.js +6 -2
  100. package/dist/components/SkipToContent/SkipToContent.stories.d.ts +1 -1
  101. package/dist/components/Table/Cell.d.ts +1 -1
  102. package/dist/components/Table/Cell.js +6 -4
  103. package/dist/components/Table/Row.js +12 -5
  104. package/dist/components/Table/SortCell.js +8 -11
  105. package/dist/components/Table/Table.d.ts +4 -0
  106. package/dist/components/Table/Table.js +8 -3
  107. package/dist/components/Table/Table.stories.d.ts +7 -0
  108. package/dist/components/Table/Table.tokens.d.ts +72 -0
  109. package/dist/components/Table/Table.tokens.js +69 -0
  110. package/dist/components/Tabs/Tab.js +2 -1
  111. package/dist/components/Tabs/TabList.js +1 -0
  112. package/dist/components/Tabs/TabPanels.js +1 -0
  113. package/dist/components/Tag/Tag.stories.d.ts +1 -1
  114. package/dist/components/ToggleButton/ToggleButton.stories.d.ts +1 -1
  115. package/dist/components/Tooltip/Tooltip.js +2 -2
  116. package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
  117. package/dist/components/Typography/Caption/Caption.stories.d.ts +1 -1
  118. package/dist/components/Typography/Heading/Heading.stories.d.ts +1 -1
  119. package/dist/components/Typography/Label/Label.stories.d.ts +1 -1
  120. package/dist/components/Typography/Legend/Legend.stories.d.ts +1 -1
  121. package/dist/components/Typography/Link/Link.stories.d.ts +1 -1
  122. package/dist/components/Typography/Paragraph/Paragraph.stories.d.ts +1 -1
  123. package/dist/components/Typography/Typography/Typography.js +1 -1
  124. package/dist/helpers/Paper/Paper.d.ts +8 -1
  125. package/dist/helpers/Paper/Paper.js +38 -2
  126. package/dist/helpers/Paper/Paper.tokens.d.ts +5 -2
  127. package/dist/helpers/Paper/Paper.tokens.js +8 -10
  128. package/dist/hooks/index.d.ts +1 -0
  129. package/dist/hooks/useFocusTrap.d.ts +1 -1
  130. package/dist/hooks/useFocusTrap.js +4 -2
  131. package/dist/hooks/useReturnFocusOnBlur.d.ts +31 -0
  132. package/dist/hooks/useReturnFocusOnBlur.js +65 -0
  133. package/dist/index.d.ts +1 -1
  134. package/dist/index.js +2 -2
  135. package/dist/utils/getFocusableElements.d.ts +2 -0
  136. package/dist/utils/getFocusableElements.js +5 -0
  137. package/dist/utils/index.d.ts +1 -0
  138. package/package.json +1 -1
  139. package/dist/cjs/components/Stepper/Step.d.ts +0 -20
  140. package/dist/cjs/components/Stepper/Stepper.context.d.ts +0 -6
  141. package/dist/cjs/components/Stepper/Stepper.d.ts +0 -11
  142. package/dist/cjs/components/Stepper/Stepper.stories.d.ts +0 -25
  143. package/dist/cjs/components/Stepper/Stepper.tokens.d.ts +0 -39
  144. package/dist/cjs/components/Stepper/index.d.ts +0 -2
  145. package/dist/cjs/components/Table/Cell.tokens.d.ts +0 -31
  146. package/dist/cjs/components/Table/Row.tokens.d.ts +0 -32
  147. package/dist/components/Stepper/Step.d.ts +0 -20
  148. package/dist/components/Stepper/Step.js +0 -118
  149. package/dist/components/Stepper/Stepper.context.d.ts +0 -6
  150. package/dist/components/Stepper/Stepper.context.js +0 -10
  151. package/dist/components/Stepper/Stepper.d.ts +0 -11
  152. package/dist/components/Stepper/Stepper.js +0 -66
  153. package/dist/components/Stepper/Stepper.stories.d.ts +0 -25
  154. package/dist/components/Stepper/Stepper.tokens.d.ts +0 -39
  155. package/dist/components/Stepper/Stepper.tokens.js +0 -49
  156. package/dist/components/Stepper/index.d.ts +0 -2
  157. package/dist/components/Table/Cell.tokens.d.ts +0 -31
  158. package/dist/components/Table/Cell.tokens.js +0 -60
  159. package/dist/components/Table/Row.tokens.d.ts +0 -32
  160. package/dist/components/Table/Row.tokens.js +0 -73
@@ -0,0 +1,2 @@
1
+ import { RefObject } from 'react';
2
+ export declare function getFocusableElements<T extends HTMLElement>(elementRef: RefObject<T>): NodeListOf<HTMLElement> | [];
@@ -3,3 +3,4 @@ export * from './idGenerator';
3
3
  export * from './getScrollbarSize';
4
4
  export * from './text';
5
5
  export * from './color';
6
+ export * from './getFocusableElements';
@@ -1,7 +1,7 @@
1
1
  import { BreadcrumbsProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLElement>, "id" | "className"> & {
5
5
  smallScreen?: boolean | undefined;
6
6
  } & {
7
7
  children?: import("react").ReactNode;
@@ -1,7 +1,7 @@
1
1
  import { ButtonProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").ButtonHTMLAttributes<HTMLButtonElement>, "type" | "onFocus" | "onBlur" | "onClick">, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").ButtonHTMLAttributes<HTMLButtonElement>, "type" | "onFocus" | "onBlur" | "onClick">, "id" | "className"> & {
5
5
  size?: import("./Button.types").ButtonSize | undefined;
6
6
  label?: string | undefined;
7
7
  purpose?: import("./Button.types").ButtonPurpose | undefined;
@@ -9,7 +9,7 @@ import { buttonTokens } from './Button.tokens.js';
9
9
  var ButtonWrapper = styled.button.withConfig({
10
10
  displayName: "Buttonstyles__ButtonWrapper",
11
11
  componentId: "sc-14dutqk-0"
12
- })(["", " display:inline-flex;align-items:center;justify-content:center;height:fit-content;width:", ";cursor:pointer;box-shadow:none;text-decoration:none;@media (prefers-reduced-motion:no-preference){transition:background-color 0.2s,text-decoration-color 0.2s,box-shadow 0.2s,border-color 0.2s,color 0.2s,", ";}", " ", " ", " ", " &:focus-visible,&.focus-visible{", "}*::selection{", "}"], buttonTokens.base, function (_ref) {
12
+ })(["", " user-select:text;display:inline-flex;align-items:center;justify-content:center;height:fit-content;width:", ";cursor:pointer;box-shadow:none;text-decoration:none;@media (prefers-reduced-motion:no-preference){transition:background-color 0.2s,text-decoration-color 0.2s,box-shadow 0.2s,border-color 0.2s,color 0.2s,", ";}", " ", " ", " ", " &:focus-visible,&.focus-visible{", "}*::selection{", "}"], buttonTokens.base, function (_ref) {
13
13
  var fullWidth = _ref.fullWidth;
14
14
  return fullWidth ? '100%' : 'fit-content';
15
15
  }, focusVisibleTransitionValue, function (_ref2) {
@@ -29,7 +29,7 @@ var HeaderContainer = styled.div.withConfig({
29
29
  var HeaderWrapper = styled.button.withConfig({
30
30
  displayName: "CardAccordionHeader__HeaderWrapper",
31
31
  componentId: "sc-1qs6bkj-2"
32
- })(["position:relative;cursor:pointer;@media (prefers-reduced-motion:no-preference){transition:box-shadow 0.2s;}", " display:block;width:100%;&:hover{", "}&:focus-visible,&.focus-visible{outline:none;", "}"], removeButtonStyling, cardAccordionHeaderTokens.hover.base, cardAccordionHeaderTokens.focus.base);
32
+ })(["user-select:text;position:relative;cursor:pointer;@media (prefers-reduced-motion:no-preference){transition:box-shadow 0.2s;}", " display:block;width:100%;&:hover{", "}&:focus-visible,&.focus-visible{outline:none;", "}"], removeButtonStyling, cardAccordionHeaderTokens.hover.base, cardAccordionHeaderTokens.focus.base);
33
33
  var ChevronWrapper = styled.span.withConfig({
34
34
  displayName: "CardAccordionHeader__ChevronWrapper",
35
35
  componentId: "sc-1qs6bkj-3"
@@ -1,7 +1,7 @@
1
1
  import { CheckboxProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "name" | "defaultChecked" | "defaultValue" | "aria-describedby" | "onBlur" | "onChange" | "value" | "checked">, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "name" | "defaultChecked" | "defaultValue" | "aria-describedby" | "onBlur" | "onChange" | "value" | "checked">, "id" | "className"> & {
5
5
  label?: string | undefined;
6
6
  error?: boolean | undefined;
7
7
  disabled?: boolean | undefined;
@@ -1,7 +1,7 @@
1
1
  import { ChipProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  text?: string | undefined;
6
6
  onClose?: (() => void) | undefined;
7
7
  } & {
@@ -1,7 +1,7 @@
1
1
  import { DescriptionListProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDListElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDListElement>, "id" | "className"> & {
5
5
  appearance?: import("./DescriptionList").DescriptionListAppearance | undefined;
6
6
  } & {
7
7
  children?: import("react").ReactNode;
@@ -1,7 +1,7 @@
1
1
  import { DividerProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLHRElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLHRElement>, "id" | "className"> & {
5
5
  color?: import("./Divider").DividerColor | undefined;
6
6
  } & {
7
7
  htmlProps?: import("react").HTMLAttributes<HTMLHRElement> | undefined;
@@ -21,6 +21,7 @@ import '../../hooks/useFloatPosition.js';
21
21
  import { useFocusTrap } from '../../hooks/useFocusTrap.js';
22
22
  import { useMountTransition } from '../../hooks/useMountTransition.js';
23
23
  import '../../hooks/useScreenSize.js';
24
+ import '../../utils/color.js';
24
25
  import { drawerTokens } from './Drawer.tokens.js';
25
26
  import { focusVisible } from '../../helpers/styling/focusVisible.js';
26
27
  import '../../helpers/styling/hover.js';
@@ -110,6 +111,8 @@ var Drawer = /*#__PURE__*/forwardRef(function (props, ref) {
110
111
  id: headerId
111
112
  };
112
113
  return isOpen || hasTransitionedIn ? /*#__PURE__*/createPortal(jsxs(Container, Object.assign({}, containerProps, {
114
+ elevation: 4
115
+ }, {
113
116
  children: [jsx(ScrollableContainer, {
114
117
  children: jsxs(ContentContainer, {
115
118
  children: [hasHeader && jsx(HeaderContainer, Object.assign({}, headerContainerProps, {
@@ -1,7 +1,7 @@
1
1
  import { DrawerProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  size?: import("./Drawer").DrawerSize | undefined;
6
6
  placement?: import("./Drawer").DrawerPlacement | undefined;
7
7
  header?: import("react").ReactNode;
@@ -1,7 +1,7 @@
1
1
  import { GlobalMessageProps } from './GlobalMessage';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  message?: string | undefined;
6
6
  purpose?: import("./GlobalMessage").GlobalMessagePurpose | undefined;
7
7
  closable?: boolean | undefined;
@@ -1,5 +1,6 @@
1
1
  import { createContext, useContext } from 'react';
2
2
  import '../../hooks/useFloatPosition.js';
3
+ import '../../utils/color.js';
3
4
  import { ScreenSize } from '../../hooks/useScreenSize.js';
4
5
 
5
6
  var GridContext = /*#__PURE__*/createContext({
@@ -3,6 +3,7 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import styled, { css } from 'styled-components';
4
4
  import 'react';
5
5
  import '../../hooks/useFloatPosition.js';
6
+ import '../../utils/color.js';
6
7
  import { useScreenSize } from '../../hooks/useScreenSize.js';
7
8
  import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
8
9
  import { gridTokens } from './Grid.tokens.js';
@@ -2,6 +2,7 @@ import { defineProperty as _defineProperty } from '../../_virtual/_rollupPluginB
2
2
  import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
3
3
  import 'react';
4
4
  import '../../hooks/useFloatPosition.js';
5
+ import '../../utils/color.js';
5
6
  import { ScreenSize } from '../../hooks/useScreenSize.js';
6
7
 
7
8
  var _halfWayColumn, _gridTokens;
@@ -1,5 +1,6 @@
1
1
  import 'react';
2
2
  import '../../hooks/useFloatPosition.js';
3
+ import '../../utils/color.js';
3
4
  import { ScreenSize } from '../../hooks/useScreenSize.js';
4
5
 
5
6
  var getLiteralScreenSize = function getLiteralScreenSize(screenSize) {
@@ -1,7 +1,7 @@
1
1
  import { InputMessageProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  message: string;
6
6
  messageType: import("./InputMessage").InputMessageType;
7
7
  } & {
@@ -1,7 +1,7 @@
1
1
  import { ListProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLOListElement | HTMLUListElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLOListElement | HTMLUListElement>, "id" | "className"> & {
5
5
  listType?: import("./List").ListType | undefined;
6
6
  typographyType?: import("./List").ListTypographyType | undefined;
7
7
  } & {
@@ -1,7 +1,7 @@
1
1
  import { LocalMessageProps } from './LocalMessage';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  message?: string | undefined;
6
6
  purpose?: import("./LocalMessage").LocalMessagePurpose | undefined;
7
7
  closable?: boolean | undefined;
@@ -11,6 +11,7 @@ import '../../hooks/useFloatPosition.js';
11
11
  import { useFocusTrap } from '../../hooks/useFocusTrap.js';
12
12
  import { useMountTransition } from '../../hooks/useMountTransition.js';
13
13
  import '../../hooks/useScreenSize.js';
14
+ import '../../utils/color.js';
14
15
  import { createPortal } from 'react-dom';
15
16
  import { Typography } from '../Typography/Typography/Typography.js';
16
17
  import { Backdrop } from '../../helpers/Backdrop/Backdrop.js';
@@ -1,7 +1,7 @@
1
1
  import { ModalProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  isOpen?: boolean | undefined;
6
6
  onClose?: (() => void) | undefined;
7
7
  parentElement?: HTMLElement | undefined;
@@ -17,6 +17,7 @@ import { useOnClickOutside } from '../../hooks/useOnClickOutside.js';
17
17
  import { useOnKeyDown } from '../../hooks/useOnKeyDown.js';
18
18
  import { useFloatPosition } from '../../hooks/useFloatPosition.js';
19
19
  import { useRoveFocus } from '../../hooks/useRoveFocus.js';
20
+ import '../../utils/color.js';
20
21
  import '../../hooks/useScreenSize.js';
21
22
  import { OverflowMenuItem } from './OverflowMenuItem.js';
22
23
  import { overflowMenuTokens } from './OverflowMenu.tokens.js';
@@ -1,7 +1,7 @@
1
1
  import { OverflowMenuProps, OverflowMenuContextItem, OverflowMenuNavItem } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
5
5
  items?: OverflowMenuContextItem[] | undefined;
6
6
  userProps?: ({
7
7
  name: string;
@@ -6,6 +6,7 @@ import { overflowMenuTokens } from './OverflowMenu.tokens.js';
6
6
  import { Icon } from '../Icon/Icon.js';
7
7
  import { useCombinedRef } from '../../hooks/useCombinedRefs.js';
8
8
  import '../../hooks/useFloatPosition.js';
9
+ import '../../utils/color.js';
9
10
  import '../../hooks/useScreenSize.js';
10
11
  import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
11
12
  import { focusVisibleLink } from '../../helpers/styling/focusVisible.js';
@@ -24,7 +25,7 @@ var Span = styled.span.withConfig({
24
25
  var Link = styled.a.withConfig({
25
26
  displayName: "OverflowMenuItem__Link",
26
27
  componentId: "sc-1ka2asi-1"
27
- })(["border:none;cursor:pointer;outline:inherit;width:100%;", " @media (prefers-reduced-motion:no-preference){transition:background-color 0.2s;}&:hover{color:", ";}&:active{color:", ";}&:focus-visible,&.focus-visible{", "}"], elementBaseCSS, link.hover.color, link.active.color, focusVisibleLink);
28
+ })(["user-select:text;border:none;cursor:pointer;outline:inherit;width:100%;", " @media (prefers-reduced-motion:no-preference){transition:background-color 0.2s;}&:hover{color:", ";}&:active{color:", ";}&:focus-visible,&.focus-visible{", "}"], elementBaseCSS, link.hover.color, link.active.color, focusVisibleLink);
28
29
 
29
30
  var isAnchorProps = function isAnchorProps(props) {
30
31
  return props.href !== undefined;
@@ -1,7 +1,7 @@
1
1
  import { PaginationProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").HTMLAttributes<HTMLElement>, "onChange">, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").HTMLAttributes<HTMLElement>, "onChange">, "id" | "className"> & {
5
5
  itemsAmount: number;
6
6
  defaultItemsPerPage?: number | undefined;
7
7
  defaultActivePage?: number | undefined;
@@ -25,10 +25,14 @@ export declare type PopoverProps = BaseComponentPropsWithChildren<HTMLDivElement
25
25
  offset?: number;
26
26
  /** Ekstra logikk kjørt når lukkeknappen trykkes. */
27
27
  onCloseButtonClick?: () => void;
28
- /** Ekstra logikk kjørt når lukkeknappen mister fokus. */
29
- onCloseButtonBlur?: () => void;
28
+ /** Ekstra logikk kjørt når popover mister fokus. */
29
+ onBlur?: () => void;
30
30
  /**Custom størrelse. */
31
31
  sizeProps?: PopoverSizeProps;
32
+ /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */
33
+ onClose?: () => void;
34
+ /**Spesifiserer hvilken DOM node `<Popover />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById("id")` (skaper ikke ny DOM node). */
35
+ parentElement?: HTMLElement;
32
36
  }>;
33
37
  export declare const Popover: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
34
38
  /**Tittel. */
@@ -45,10 +49,14 @@ export declare const Popover: import("react").ForwardRefExoticComponent<Pick<imp
45
49
  offset?: number | undefined;
46
50
  /** Ekstra logikk kjørt når lukkeknappen trykkes. */
47
51
  onCloseButtonClick?: (() => void) | undefined;
48
- /** Ekstra logikk kjørt når lukkeknappen mister fokus. */
49
- onCloseButtonBlur?: (() => void) | undefined;
52
+ /** Ekstra logikk kjørt når popover mister fokus. */
53
+ onBlur?: (() => void) | undefined;
50
54
  /**Custom størrelse. */
51
55
  sizeProps?: PopoverSizeProps | undefined;
56
+ /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */
57
+ onClose?: (() => void) | undefined;
58
+ /**Spesifiserer hvilken DOM node `<Popover />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById("id")` (skaper ikke ny DOM node). */
59
+ parentElement?: HTMLElement | undefined;
52
60
  } & {
53
61
  children?: ReactNode;
54
62
  } & {
@@ -4,14 +4,18 @@ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
4
4
  import { forwardRef, useEffect } from 'react';
5
5
  import styled, { css } from 'styled-components';
6
6
  import { visibilityTransition } from '../../helpers/styling/visibilityTransition.js';
7
- import '../../helpers/styling/focusVisible.js';
7
+ import { focusVisible } from '../../helpers/styling/focusVisible.js';
8
8
  import '../../helpers/styling/hover.js';
9
9
  import '../../helpers/styling/focus.js';
10
10
  import '../../helpers/styling/danger.js';
11
11
  import '../../helpers/styling/selection.js';
12
12
  import { useCombinedRef } from '../../hooks/useCombinedRefs.js';
13
+ import { useOnClickOutside } from '../../hooks/useOnClickOutside.js';
13
14
  import { useFloatPosition } from '../../hooks/useFloatPosition.js';
15
+ import '../../utils/color.js';
16
+ import { useMountTransition } from '../../hooks/useMountTransition.js';
14
17
  import '../../hooks/useScreenSize.js';
18
+ import { useReturnFocusOnBlur } from '../../hooks/useReturnFocusOnBlur.js';
15
19
  import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
16
20
  import { Button } from '../Button/Button.js';
17
21
  import { Typography } from '../Typography/Typography/Typography.js';
@@ -20,59 +24,73 @@ import '../../helpers/Chevron/AnimatedChevronUpDown.styles.js';
20
24
  import '../../helpers/HiddenInput/HiddenInput.js';
21
25
  import '../../helpers/Input/Input.styles.js';
22
26
  import '../../helpers/Input/Input.tokens.js';
23
- import '../../helpers/Paper/Paper.js';
27
+ import { Paper } from '../../helpers/Paper/Paper.js';
24
28
  import '../../helpers/RequiredMarker/RequiredMarker.js';
25
29
  import '../Typography/Link/Link.js';
26
30
  import { popoverTokens } from './Popover.tokens.js';
27
31
  import '../../icons/utils/StyledSvg.js';
28
32
  import { CloseIcon } from '../../icons/tsx/close.js';
33
+ import { createPortal } from 'react-dom';
29
34
 
30
35
  var Spacing = ddsBaseTokens.spacing;
31
- var Wrapper = styled.div.withConfig({
36
+ var wrapper = popoverTokens.wrapper,
37
+ content = popoverTokens.content,
38
+ closeButton = popoverTokens.closeButton,
39
+ title = popoverTokens.title;
40
+ var Wrapper = styled(Paper).withConfig({
32
41
  displayName: "Popover__Wrapper",
33
42
  componentId: "sc-1fecd7e-0"
34
- })(["", " box-sizing:border-box;position:absolute;width:fit-content;z-index:20;", " ", ""], function (_ref) {
35
- var isOpen = _ref.isOpen;
36
- return visibilityTransition(isOpen);
37
- }, popoverTokens.wrapper.base, function (_ref2) {
43
+ })(["opacity:0;", " position:absolute;width:fit-content;z-index:20;padding:", ";&:focus-visible{", "}", ""], function (_ref) {
44
+ var hasTransitionedIn = _ref.hasTransitionedIn,
45
+ isOpen = _ref.isOpen;
46
+ return hasTransitionedIn && visibilityTransition(hasTransitionedIn && isOpen);
47
+ }, wrapper.padding, focusVisible, function (_ref2) {
38
48
  var sizeProps = _ref2.sizeProps;
39
49
  return sizeProps && css(["", ""], sizeProps);
40
50
  });
41
51
  var TitleContainer = styled.div.withConfig({
42
52
  displayName: "Popover__TitleContainer",
43
53
  componentId: "sc-1fecd7e-1"
44
- })(["", ""], popoverTokens.title.base);
54
+ })(["margin-right:", ";"], title.marginRight);
45
55
  var ContentContainer = styled.div.withConfig({
46
56
  displayName: "Popover__ContentContainer",
47
57
  componentId: "sc-1fecd7e-2"
48
58
  })(["", ""], function (_ref3) {
49
59
  var withCloseButton = _ref3.withCloseButton,
50
60
  hasTitle = _ref3.hasTitle;
51
- return withCloseButton && !hasTitle && css(["margin-top:", ";"], popoverTokens.content.spaceTopNoTitle);
61
+ return withCloseButton && !hasTitle && css(["margin-top:", ";"], content.noTitle.marginTop);
52
62
  });
53
63
  var StyledButton = styled(Button).withConfig({
54
64
  displayName: "Popover__StyledButton",
55
65
  componentId: "sc-1fecd7e-3"
56
- })(["", ""], popoverTokens.button.base);
66
+ })(["position:absolute;top:", ";right:", ";"], closeButton.top, closeButton.right);
57
67
  var Popover = /*#__PURE__*/forwardRef(function (props, ref) {
58
68
  var title = props.title,
59
69
  _props$isOpen = props.isOpen,
60
70
  isOpen = _props$isOpen === void 0 ? false : _props$isOpen,
61
71
  _props$withCloseButto = props.withCloseButton,
62
72
  withCloseButton = _props$withCloseButto === void 0 ? true : _props$withCloseButto,
73
+ onBlur = props.onBlur,
63
74
  onCloseButtonClick = props.onCloseButtonClick,
64
- onCloseButtonBlur = props.onCloseButtonBlur,
75
+ onClose = props.onClose,
65
76
  anchorElement = props.anchorElement,
66
77
  children = props.children,
67
78
  _props$placement = props.placement,
68
79
  placement = _props$placement === void 0 ? 'bottom' : _props$placement,
80
+ _props$parentElement = props.parentElement,
81
+ parentElement = _props$parentElement === void 0 ? document.body : _props$parentElement,
69
82
  _props$offset = props.offset,
70
83
  offset = _props$offset === void 0 ? Spacing.SizesDdsSpacingLocalX05NumberPx : _props$offset,
71
84
  id = props.id,
72
85
  className = props.className,
73
86
  _props$htmlProps = props.htmlProps,
74
87
  htmlProps = _props$htmlProps === void 0 ? {} : _props$htmlProps,
75
- rest = __rest(props, ["title", "isOpen", "withCloseButton", "onCloseButtonClick", "onCloseButtonBlur", "anchorElement", "children", "placement", "offset", "id", "className", "htmlProps"]);
88
+ rest = __rest(props, ["title", "isOpen", "withCloseButton", "onBlur", "onCloseButtonClick", "onClose", "anchorElement", "children", "placement", "parentElement", "offset", "id", "className", "htmlProps"]);
89
+
90
+ var popoverRef = useReturnFocusOnBlur(isOpen, function () {
91
+ onClose && onClose();
92
+ onBlur && onBlur();
93
+ }, anchorElement && anchorElement);
76
94
 
77
95
  var _useFloatPosition = useFloatPosition(null, {
78
96
  placement: placement,
@@ -82,20 +100,28 @@ var Popover = /*#__PURE__*/forwardRef(function (props, ref) {
82
100
  floating = _useFloatPosition.floating,
83
101
  styles = _useFloatPosition.styles;
84
102
 
85
- var multiRef = useCombinedRef(ref, floating);
103
+ var multiRef = useCombinedRef(ref, popoverRef, floating);
86
104
  useEffect(function () {
87
- isOpen && anchorElement ? reference(anchorElement) : reference(null);
88
- return function () {
89
- return reference(null);
90
- };
91
- }, [anchorElement, isOpen]);
105
+ anchorElement ? reference(anchorElement) : reference(null);
106
+ }, [anchorElement]);
107
+ var elements = [popoverRef.current];
108
+ if (anchorElement) elements.push(anchorElement);
109
+ useOnClickOutside(elements, function () {
110
+ if (isOpen) onClose && onClose();
111
+ });
112
+ var hasTransitionedIn = useMountTransition(isOpen, 400);
92
113
  var wrapperProps = Object.assign(Object.assign({}, getBaseHTMLProps(id, className, htmlProps, rest)), {
93
114
  ref: multiRef,
94
115
  isOpen: isOpen,
116
+ hasTransitionedIn: hasTransitionedIn,
117
+ tabIndex: -1,
95
118
  style: Object.assign(Object.assign({}, htmlProps.style), styles.floating),
96
119
  role: 'dialog'
97
120
  });
98
- return jsxs(Wrapper, Object.assign({}, wrapperProps, {
121
+ return isOpen || hasTransitionedIn ? /*#__PURE__*/createPortal(jsxs(Wrapper, Object.assign({}, wrapperProps, {
122
+ elevation: 3,
123
+ border: "light"
124
+ }, {
99
125
  children: [title && jsx(TitleContainer, {
100
126
  children: typeof title === 'string' ? jsx(Typography, Object.assign({
101
127
  typographyType: "headingSans02"
@@ -113,10 +139,9 @@ var Popover = /*#__PURE__*/forwardRef(function (props, ref) {
113
139
  purpose: "secondary",
114
140
  size: "small",
115
141
  onClick: onCloseButtonClick,
116
- "aria-label": "Lukk",
117
- onBlur: onCloseButtonBlur
142
+ "aria-label": "Lukk"
118
143
  })]
119
- }));
144
+ })), parentElement) : null;
120
145
  });
121
146
 
122
147
  export { Popover };
@@ -2,7 +2,7 @@ import { PopoverProps } from '.';
2
2
  import { Placement } from '../../hooks';
3
3
  declare const _default: {
4
4
  title: string;
5
- component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & {
5
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
6
6
  title?: import("react").ReactNode;
7
7
  isOpen?: boolean | undefined;
8
8
  withCloseButton?: boolean | undefined;
@@ -10,8 +10,10 @@ declare const _default: {
10
10
  placement?: Placement | undefined;
11
11
  offset?: number | undefined;
12
12
  onCloseButtonClick?: (() => void) | undefined;
13
- onCloseButtonBlur?: (() => void) | undefined;
13
+ onBlur?: (() => void) | undefined;
14
14
  sizeProps?: import("./Popover").PopoverSizeProps | undefined;
15
+ onClose?: (() => void) | undefined;
16
+ parentElement?: HTMLElement | undefined;
15
17
  } & {
16
18
  children?: import("react").ReactNode;
17
19
  } & {
@@ -1,15 +1,18 @@
1
- import { CSSObject } from 'styled-components';
2
1
  export declare const popoverTokens: {
2
+ content: {
3
+ noTitle: {
4
+ marginTop: string;
5
+ };
6
+ };
3
7
  wrapper: {
4
- base: CSSObject;
8
+ padding: string;
5
9
  };
6
- button: {
7
- base: CSSObject;
10
+ closeButton: {
11
+ position: string;
12
+ top: string;
13
+ right: string;
8
14
  };
9
15
  title: {
10
- base: CSSObject;
11
- };
12
- content: {
13
- spaceTopNoTitle: string;
16
+ marginRight: string;
14
17
  };
15
18
  };
@@ -1,38 +1,27 @@
1
1
  import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
2
 
3
- var Colors = ddsBaseTokens.colors,
4
- BorderRadius = ddsBaseTokens.borderRadius,
5
- Spacing = ddsBaseTokens.spacing,
6
- OuterShadow = ddsBaseTokens.outerShadow,
7
- Border = ddsBaseTokens.border;
8
- var wrapperBase = {
9
- backgroundColor: Colors.DdsColorNeutralsWhite,
10
- borderRadius: BorderRadius.RadiiDdsBorderRadius1Radius,
11
- padding: "".concat(Spacing.SizesDdsSpacingLocalX075, " ").concat(Spacing.SizesDdsSpacingLocalX1, " ").concat(Spacing.SizesDdsSpacingLocalX15, " ").concat(Spacing.SizesDdsSpacingLocalX1),
12
- boxShadow: OuterShadow.DdsShadow3Onlight,
13
- border: "".concat(Border.BordersDdsBorderStyleLightStrokeWeight, " solid ").concat(Border.BordersDdsBorderStyleLightStroke)
3
+ var spacing = ddsBaseTokens.spacing;
4
+ var wrapper = {
5
+ padding: "".concat(spacing.SizesDdsSpacingLocalX075, " ").concat(spacing.SizesDdsSpacingLocalX1, " ").concat(spacing.SizesDdsSpacingLocalX15, " ").concat(spacing.SizesDdsSpacingLocalX1)
14
6
  };
15
- var buttonBase = {
7
+ var closeButton = {
16
8
  position: 'absolute',
17
- top: Spacing.SizesDdsSpacingLocalX025,
18
- right: Spacing.SizesDdsSpacingLocalX025
9
+ top: spacing.SizesDdsSpacingLocalX025,
10
+ right: spacing.SizesDdsSpacingLocalX025
19
11
  };
20
- var titleBase = {
21
- marginRight: Spacing.SizesDdsSpacingLocalX2
12
+ var title = {
13
+ marginRight: spacing.SizesDdsSpacingLocalX2
22
14
  };
23
- var popoverTokens = {
24
- wrapper: {
25
- base: wrapperBase
26
- },
27
- button: {
28
- base: buttonBase
29
- },
30
- title: {
31
- base: titleBase
32
- },
33
- content: {
34
- spaceTopNoTitle: Spacing.SizesDdsSpacingLocalX2
15
+ var content = {
16
+ noTitle: {
17
+ marginTop: spacing.SizesDdsSpacingLocalX2
35
18
  }
36
19
  };
20
+ var popoverTokens = {
21
+ content: content,
22
+ wrapper: wrapper,
23
+ closeButton: closeButton,
24
+ title: title
25
+ };
37
26
 
38
27
  export { popoverTokens };
@@ -1,9 +1,9 @@
1
1
  import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import { jsx, Fragment } from 'react/jsx-runtime';
3
- import { useState, useEffect, useId, useRef, Children, isValidElement, cloneElement } from 'react';
4
- import { useOnClickOutside } from '../../hooks/useOnClickOutside.js';
3
+ import { useState, useId, useRef, Children, isValidElement, cloneElement } from 'react';
5
4
  import { useOnKeyDown } from '../../hooks/useOnKeyDown.js';
6
5
  import '../../hooks/useFloatPosition.js';
6
+ import '../../utils/color.js';
7
7
  import '../../hooks/useScreenSize.js';
8
8
 
9
9
  var PopoverGroup = function PopoverGroup(_ref) {
@@ -19,9 +19,6 @@ var PopoverGroup = function PopoverGroup(_ref) {
19
19
  open = _useState2[0],
20
20
  setOpen = _useState2[1];
21
21
 
22
- useEffect(function () {
23
- setOpen(isOpen);
24
- }, [isOpen]);
25
22
  var generatedId = useId();
26
23
  var uniquePopoverId = popoverId !== null && popoverId !== void 0 ? popoverId : "".concat(generatedId, "-popover");
27
24
 
@@ -37,16 +34,6 @@ var PopoverGroup = function PopoverGroup(_ref) {
37
34
 
38
35
  var buttonRef = useRef(null);
39
36
  var popoverRef = useRef(null);
40
-
41
- var handleBlur = function handleBlur() {
42
- setTimeout(function () {
43
- var _a;
44
-
45
- (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
46
- }, 5);
47
- setOpen(false);
48
- };
49
-
50
37
  useOnKeyDown(['Esc', 'Escape'], function () {
51
38
  var _a;
52
39
 
@@ -55,9 +42,11 @@ var PopoverGroup = function PopoverGroup(_ref) {
55
42
  (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
56
43
  }
57
44
  });
58
- useOnClickOutside([popoverRef.current, buttonRef.current], function () {
59
- if (open) setOpen(false);
60
- });
45
+
46
+ var handleClose = function handleClose() {
47
+ return setOpen(false);
48
+ };
49
+
61
50
  var Children$1 = Children.map(children, function (child, childIndex) {
62
51
  return /*#__PURE__*/isValidElement(child) && (childIndex === 0 ? /*#__PURE__*/cloneElement(child, {
63
52
  'aria-haspopup': 'dialog',
@@ -70,9 +59,9 @@ var PopoverGroup = function PopoverGroup(_ref) {
70
59
  'aria-hidden': !open,
71
60
  id: uniquePopoverId,
72
61
  onCloseButtonClick: handleOnCloseButtonClick,
73
- onCloseButtonBlur: handleBlur,
74
62
  anchorElement: buttonRef.current,
75
- ref: popoverRef
63
+ ref: popoverRef,
64
+ onClose: handleClose
76
65
  }));
77
66
  });
78
67
  return jsx(Fragment, {