@norges-domstoler/dds-components 5.2.0-beta.1 → 5.3.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 (71) hide show
  1. package/README.md +14 -3
  2. package/dist/assets/svg/calendar_today.svg.js +1 -1
  3. package/dist/cjs/components/DescriptionList/DescriptionList.tokens.d.ts +70 -0
  4. package/dist/cjs/components/Modal/Modal.tokens.d.ts +0 -6
  5. package/dist/cjs/components/Modal/ModalBody.d.ts +6 -1
  6. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.d.ts +7 -0
  7. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.stories.d.ts +15 -0
  8. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.tokens.d.ts +25 -0
  9. package/dist/cjs/components/ScrollableContainer/Scrollbar.d.ts +7 -0
  10. package/dist/cjs/components/ScrollableContainer/index.d.ts +3 -0
  11. package/dist/cjs/components/ScrollableContainer/scrollbarStyling.d.ts +26 -0
  12. package/dist/cjs/components/Select/Select.tokens.d.ts +0 -3
  13. package/dist/cjs/helpers/styling/index.d.ts +0 -1
  14. package/dist/cjs/icons/tsx/closeSmall.d.ts +2 -0
  15. package/dist/cjs/icons/tsx/index.d.ts +1 -0
  16. package/dist/cjs/index.d.ts +1 -0
  17. package/dist/cjs/index.js +951 -626
  18. package/dist/components/Datepicker/Datepicker.js +1 -1
  19. package/dist/components/DescriptionList/DescriptionList.js +6 -3
  20. package/dist/components/DescriptionList/DescriptionList.tokens.d.ts +70 -0
  21. package/dist/components/DescriptionList/DescriptionList.tokens.js +60 -0
  22. package/dist/components/DescriptionList/DescriptionListDesc.js +2 -2
  23. package/dist/components/DescriptionList/DescriptionListGroup.js +4 -4
  24. package/dist/components/Drawer/Drawer.js +12 -10
  25. package/dist/components/List/List.js +1 -1
  26. package/dist/components/Modal/Modal.tokens.d.ts +0 -6
  27. package/dist/components/Modal/Modal.tokens.js +0 -10
  28. package/dist/components/Modal/ModalBody.d.ts +6 -1
  29. package/dist/components/Modal/ModalBody.js +13 -13
  30. package/dist/components/OverflowMenu/OverflowMenu.js +3 -3
  31. package/dist/components/Pagination/Pagination.js +1 -1
  32. package/dist/components/ScrollableContainer/ScrollableContainer.d.ts +7 -0
  33. package/dist/components/ScrollableContainer/ScrollableContainer.js +47 -0
  34. package/dist/components/ScrollableContainer/ScrollableContainer.stories.d.ts +15 -0
  35. package/dist/components/ScrollableContainer/ScrollableContainer.tokens.d.ts +25 -0
  36. package/dist/components/ScrollableContainer/ScrollableContainer.tokens.js +36 -0
  37. package/dist/components/ScrollableContainer/Scrollbar.d.ts +7 -0
  38. package/dist/components/ScrollableContainer/Scrollbar.js +178 -0
  39. package/dist/components/ScrollableContainer/index.d.ts +3 -0
  40. package/dist/components/ScrollableContainer/scrollbarStyling.d.ts +26 -0
  41. package/dist/components/ScrollableContainer/scrollbarStyling.js +40 -0
  42. package/dist/components/Select/Select.js +38 -3
  43. package/dist/components/Select/Select.styles.js +7 -4
  44. package/dist/components/Select/Select.tokens.d.ts +0 -3
  45. package/dist/components/Select/Select.tokens.js +6 -18
  46. package/dist/components/Table/SortCell.js +1 -1
  47. package/dist/components/Table/Table.js +2 -2
  48. package/dist/components/Table/TableWrapper.js +3 -3
  49. package/dist/components/Tabs/TabList.js +2 -2
  50. package/dist/components/TextInput/TextInput.styles.js +2 -2
  51. package/dist/components/TextInput/TextInput.tokens.js +1 -1
  52. package/dist/helpers/styling/focusVisible.js +3 -2
  53. package/dist/helpers/styling/index.d.ts +0 -1
  54. package/dist/icons/tsx/closeSmall.d.ts +2 -0
  55. package/dist/icons/tsx/closeSmall.js +25 -0
  56. package/dist/icons/tsx/index.d.ts +1 -0
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.js +4 -0
  59. package/package.json +2 -4
  60. package/dist/cjs/components/DescriptionList/DescriptionListDesc.tokens.d.ts +0 -7
  61. package/dist/cjs/components/DescriptionList/DescriptionListGroup.tokens.d.ts +0 -4
  62. package/dist/cjs/components/DescriptionList/DescriptionListTerm.tokens.d.ts +0 -13
  63. package/dist/cjs/helpers/styling/scrollbarStyling.d.ts +0 -3
  64. package/dist/components/DescriptionList/DescriptionListDesc.tokens.d.ts +0 -7
  65. package/dist/components/DescriptionList/DescriptionListDesc.tokens.js +0 -22
  66. package/dist/components/DescriptionList/DescriptionListGroup.tokens.d.ts +0 -4
  67. package/dist/components/DescriptionList/DescriptionListGroup.tokens.js +0 -11
  68. package/dist/components/DescriptionList/DescriptionListTerm.tokens.d.ts +0 -13
  69. package/dist/components/DescriptionList/DescriptionListTerm.tokens.js +0 -27
  70. package/dist/helpers/styling/scrollbarStyling.d.ts +0 -3
  71. package/dist/helpers/styling/scrollbarStyling.js +0 -8
@@ -0,0 +1,178 @@
1
+ import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { __rest } from 'tslib';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { useRef, useState, useCallback, useEffect } from 'react';
5
+ import styled from 'styled-components';
6
+ import { scrollbarTokens } from './ScrollableContainer.tokens.js';
7
+ import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
8
+
9
+ var track = scrollbarTokens.track,
10
+ thumb = scrollbarTokens.thumb,
11
+ minThumbHeightPx = scrollbarTokens.minThumbHeightPx;
12
+ var ScrollbarOuterWrapper = styled.div.withConfig({
13
+ displayName: "Scrollbar__ScrollbarOuterWrapper",
14
+ componentId: "sc-mphi5n-0"
15
+ })([""]);
16
+ var ScrollbarElements = styled.div.withConfig({
17
+ displayName: "Scrollbar__ScrollbarElements",
18
+ componentId: "sc-mphi5n-1"
19
+ })(["display:block;height:100%;position:relative;display:grid;justify-items:center;"]);
20
+ var Track = styled.div.withConfig({
21
+ displayName: "Scrollbar__Track",
22
+ componentId: "sc-mphi5n-2"
23
+ })(["bottom:0;top:0;position:absolute;background-color:", ";border-radius:", ";width:", ";"], track.backgroundColor, track.borderRadius, track.width);
24
+ var Thumb = styled.div.withConfig({
25
+ displayName: "Scrollbar__Thumb",
26
+ componentId: "sc-mphi5n-3"
27
+ })(["position:absolute;background-color:", ";border-radius:", ";width:", ";transition:background-color 0.2s;&:hover{background-color:", ";}"], thumb.base.backgroundColor, thumb.base.borderRadius, thumb.base.width, thumb.hover.backgroundColor);
28
+ var Scrollbar = function Scrollbar(props) {
29
+ var id = props.id,
30
+ className = props.className,
31
+ htmlProps = props.htmlProps,
32
+ contentRef = props.contentRef,
33
+ rest = __rest(props, ["id", "className", "htmlProps", "contentRef"]);
34
+
35
+ var trackRef = useRef(null);
36
+ var thumbRef = useRef(null);
37
+
38
+ var _useState = useState(minThumbHeightPx),
39
+ _useState2 = _slicedToArray(_useState, 2),
40
+ thumbHeight = _useState2[0],
41
+ setThumbHeight = _useState2[1];
42
+
43
+ var _useState3 = useState(true),
44
+ _useState4 = _slicedToArray(_useState3, 2),
45
+ isScrollable = _useState4[0],
46
+ setIsScrollable = _useState4[1];
47
+
48
+ var _useState5 = useState(0),
49
+ _useState6 = _slicedToArray(_useState5, 2),
50
+ thumbTop = _useState6[0],
51
+ setThumbTop = _useState6[1];
52
+
53
+ var observer = useRef(null);
54
+
55
+ var _useState7 = useState(0),
56
+ _useState8 = _slicedToArray(_useState7, 2),
57
+ scrollStartPosition = _useState8[0],
58
+ setScrollStartPosition = _useState8[1];
59
+
60
+ var _useState9 = useState(0),
61
+ _useState10 = _slicedToArray(_useState9, 2),
62
+ initialScrollTop = _useState10[0],
63
+ setInitialScrollTop = _useState10[1];
64
+
65
+ var _useState11 = useState(false),
66
+ _useState12 = _slicedToArray(_useState11, 2),
67
+ isDragging = _useState12[0],
68
+ setIsDragging = _useState12[1];
69
+
70
+ function handleResize(ref, trackSize) {
71
+ var clientHeight = ref.clientHeight,
72
+ scrollHeight = ref.scrollHeight;
73
+ setIsScrollable(clientHeight !== scrollHeight);
74
+ setThumbHeight(Math.max(clientHeight / scrollHeight * trackSize, minThumbHeightPx));
75
+ }
76
+
77
+ var handleTrackClick = useCallback(function (e) {
78
+ if (contentRef && contentRef.current) {
79
+ var trackCurrent = trackRef.current;
80
+ var contentCurrent = contentRef.current;
81
+
82
+ if (trackCurrent && contentCurrent) {
83
+ var clientY = e.clientY;
84
+ var target = e.target;
85
+ var rect = target.getBoundingClientRect();
86
+ var trackTop = rect.top;
87
+ var thumbOffset = -(thumbHeight / 2);
88
+ var clickRatio = (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;
89
+ var scrollAmount = Math.floor(clickRatio * contentCurrent.scrollHeight);
90
+ contentCurrent.scrollTo({
91
+ top: scrollAmount,
92
+ behavior: 'smooth'
93
+ });
94
+ }
95
+ }
96
+ }, [thumbHeight]);
97
+ var handleThumbPositioning = useCallback(function () {
98
+ console.log('positioning');
99
+
100
+ if (!(contentRef === null || contentRef === void 0 ? void 0 : contentRef.current) || !trackRef.current || !thumbRef.current) {
101
+ return;
102
+ }
103
+
104
+ var _contentRef$current = contentRef.current,
105
+ contentTop = _contentRef$current.scrollTop,
106
+ contentHeight = _contentRef$current.scrollHeight;
107
+ var clientHeight = trackRef.current.clientHeight;
108
+ var newTop = +contentTop / +contentHeight * clientHeight;
109
+ newTop = Math.min(newTop, clientHeight - thumbHeight);
110
+ setThumbTop(newTop);
111
+ }, []);
112
+ useEffect(function () {
113
+ if (contentRef && contentRef.current && trackRef.current) {
114
+ var ref = contentRef.current;
115
+ var clientHeight = trackRef.current.clientHeight;
116
+ observer.current = new ResizeObserver(function () {
117
+ handleResize(ref, clientHeight);
118
+ });
119
+ observer.current.observe(ref);
120
+ ref.addEventListener('scroll', handleThumbPositioning);
121
+ return function () {
122
+ var _a;
123
+
124
+ (_a = observer.current) === null || _a === void 0 ? void 0 : _a.unobserve(ref);
125
+ ref.removeEventListener('scroll', handleThumbPositioning);
126
+ };
127
+ }
128
+ }, []);
129
+ var handleThumbMousedown = useCallback(function (e) {
130
+ setScrollStartPosition(e.clientY);
131
+ if (contentRef && contentRef.current) setInitialScrollTop(contentRef.current.scrollTop);
132
+ setIsDragging(true);
133
+ }, []);
134
+ var handleThumbMouseup = useCallback(function () {
135
+ if (isDragging) {
136
+ setIsDragging(false);
137
+ }
138
+ }, [isDragging]);
139
+ var handleThumbMousemove = useCallback(function (e) {
140
+ if (contentRef && contentRef.current) {
141
+ if (isDragging) {
142
+ var _contentRef$current2 = contentRef.current,
143
+ contentScrollHeight = _contentRef$current2.scrollHeight,
144
+ contentOffsetHeight = _contentRef$current2.offsetHeight;
145
+ var deltaY = (e.clientY - scrollStartPosition) * (contentOffsetHeight / thumbHeight);
146
+ var newScrollTop = Math.min(initialScrollTop + deltaY, contentScrollHeight - contentOffsetHeight);
147
+ contentRef.current.scrollTop = newScrollTop;
148
+ }
149
+ }
150
+ }, [isDragging, scrollStartPosition, thumbHeight]);
151
+ useEffect(function () {
152
+ document.addEventListener('mousemove', handleThumbMousemove);
153
+ document.addEventListener('mouseup', handleThumbMouseup);
154
+ document.addEventListener('mouseleave', handleThumbMouseup);
155
+ return function () {
156
+ document.removeEventListener('mousemove', handleThumbMousemove);
157
+ document.removeEventListener('mouseup', handleThumbMouseup);
158
+ document.removeEventListener('mouseleave', handleThumbMouseup);
159
+ };
160
+ }, [handleThumbMousemove, handleThumbMouseup]);
161
+ return isScrollable ? jsx(ScrollbarOuterWrapper, Object.assign({}, getBaseHTMLProps(id, className, htmlProps, rest), {
162
+ children: jsxs(ScrollbarElements, {
163
+ children: [jsx(Track, {
164
+ ref: trackRef,
165
+ onClick: handleTrackClick
166
+ }), jsx(Thumb, {
167
+ style: {
168
+ height: thumbHeight,
169
+ top: thumbTop
170
+ },
171
+ ref: thumbRef,
172
+ onMouseDown: handleThumbMousedown
173
+ })]
174
+ })
175
+ })) : null;
176
+ };
177
+
178
+ export { Scrollbar };
@@ -0,0 +1,3 @@
1
+ export * from './Scrollbar';
2
+ export * from './ScrollableContainer';
3
+ export * from './scrollbarStyling';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.
3
+ */
4
+ export declare const scrollbarStyling: {
5
+ webkit: {
6
+ '&::-webkit-scrollbar': {
7
+ width: string;
8
+ height: string;
9
+ };
10
+ '&::-webkit-scrollbar-track': {
11
+ background: string;
12
+ borderRadius: string;
13
+ };
14
+ '&::-webkit-scrollbar-thumb': {
15
+ background: string;
16
+ borderRadius: string;
17
+ };
18
+ };
19
+ '&::-webkit-scrollbar-thumb:hover': {
20
+ background: string;
21
+ };
22
+ firefox: {
23
+ scrollbarColor: string;
24
+ scrollbarWidth: string;
25
+ };
26
+ };
@@ -0,0 +1,40 @@
1
+ import { scrollbarTokens } from './ScrollableContainer.tokens.js';
2
+
3
+ var thumb = scrollbarTokens.thumb,
4
+ track = scrollbarTokens.track;
5
+ /**
6
+ * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.
7
+ */
8
+
9
+ var scrollbarStyling = {
10
+ webkit: {
11
+ /* width */
12
+ '&::-webkit-scrollbar': {
13
+ width: track.width,
14
+ height: track.width
15
+ },
16
+
17
+ /* Track */
18
+ '&::-webkit-scrollbar-track': {
19
+ background: track.backgroundColor,
20
+ borderRadius: track.borderRadius
21
+ },
22
+
23
+ /* Handle */
24
+ '&::-webkit-scrollbar-thumb': {
25
+ background: thumb.base.backgroundColor,
26
+ borderRadius: thumb.base.borderRadius
27
+ }
28
+ },
29
+
30
+ /* Handle on hover */
31
+ '&::-webkit-scrollbar-thumb:hover': {
32
+ background: thumb.hover.backgroundColor
33
+ },
34
+ firefox: {
35
+ scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,
36
+ scrollbarWidth: 'thin'
37
+ }
38
+ };
39
+
40
+ export { scrollbarStyling };
@@ -6,6 +6,8 @@ import ReactSelect, { components } from 'react-select';
6
6
  import { prefix, getCustomStyles, Wrapper, Container, Label } from './Select.styles.js';
7
7
  import { selectTokens } from './Select.tokens.js';
8
8
  import { CheckIcon } from '../../icons/tsx/check.js';
9
+ import { CloseSmallIcon } from '../../icons/tsx/closeSmall.js';
10
+ import { ChevronDownIcon } from '../../icons/tsx/chevronDown.js';
9
11
  import { RequiredMarker } from '../../helpers/RequiredMarker/RequiredMarker.js';
10
12
  import { InputMessage } from '../InputMessage/InputMessage.js';
11
13
  import { Icon } from '../Icon/Icon.js';
@@ -14,7 +16,10 @@ import { derivativeIdGenerator, spaceSeparatedIdListGenerator } from '../../util
14
16
  var DdsOption = components.Option,
15
17
  NoOptionsMessage = components.NoOptionsMessage,
16
18
  Input = components.Input,
17
- SingleValue = components.SingleValue;
19
+ SingleValue = components.SingleValue,
20
+ ClearIndicator = components.ClearIndicator,
21
+ DropdownIndicator = components.DropdownIndicator,
22
+ MultiValueRemove = components.MultiValueRemove;
18
23
  var createSelectOptions = function createSelectOptions() {
19
24
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
20
25
  args[_key] = arguments[_key];
@@ -32,7 +37,7 @@ var IconOption = function IconOption(props) {
32
37
  return jsxs(DdsOption, Object.assign({}, props, {
33
38
  children: [props.isSelected && jsx(Icon, {
34
39
  icon: CheckIcon,
35
- iconSize: "inherit"
40
+ iconSize: "medium"
36
41
  }), props.children]
37
42
  }));
38
43
  };
@@ -55,6 +60,33 @@ var NoOptionsMessageCustom = function NoOptionsMessageCustom(props) {
55
60
  }));
56
61
  };
57
62
 
63
+ var CustomClearIndicator = function CustomClearIndicator(props) {
64
+ return jsx(ClearIndicator, Object.assign({}, props, {
65
+ children: jsx(Icon, {
66
+ icon: CloseSmallIcon,
67
+ iconSize: "medium"
68
+ })
69
+ }));
70
+ };
71
+
72
+ var CustomMultiValueRemove = function CustomMultiValueRemove(props) {
73
+ return jsx(MultiValueRemove, Object.assign({}, props, {
74
+ children: jsx(Icon, {
75
+ icon: CloseSmallIcon,
76
+ iconSize: "medium"
77
+ })
78
+ }));
79
+ };
80
+
81
+ var CustomDropdownIndicator = function CustomDropdownIndicator(props) {
82
+ return jsx(DropdownIndicator, Object.assign({}, props, {
83
+ children: jsx(Icon, {
84
+ icon: ChevronDownIcon,
85
+ iconSize: "medium"
86
+ })
87
+ }));
88
+ };
89
+
58
90
  function escapeRegexCharacters(text) {
59
91
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
60
92
  }
@@ -143,7 +175,10 @@ var SelectInner = function SelectInner(_a, ref) {
143
175
  Input: CustomInput,
144
176
  SingleValue: customSingleValueElement ? function (props) {
145
177
  return CustomSingleValue(props, customSingleValueElement);
146
- } : SingleValue
178
+ } : SingleValue,
179
+ ClearIndicator: CustomClearIndicator,
180
+ DropdownIndicator: CustomDropdownIndicator,
181
+ MultiValueRemove: CustomMultiValueRemove
147
182
  },
148
183
  'aria-invalid': hasErrorMessage ? true : undefined
149
184
  }, rest);
@@ -2,7 +2,7 @@ import styled, { css } from 'styled-components';
2
2
  import { typographyTokens } from '../Typography/Typography.tokens.js';
3
3
  import { selectTokens } from './Select.tokens.js';
4
4
  import { Typography } from '../Typography/Typography.js';
5
- import { scrollbarStyling } from '../../helpers/styling/scrollbarStyling.js';
5
+ import { scrollbarStyling } from '../ScrollableContainer/scrollbarStyling.js';
6
6
 
7
7
  var prefix = 'dds-select';
8
8
  var Label = styled(Typography).withConfig({
@@ -12,14 +12,14 @@ var Label = styled(Typography).withConfig({
12
12
  var Container = styled.div.withConfig({
13
13
  displayName: "Selectstyles__Container",
14
14
  componentId: "sc-19jkd5s-1"
15
- })(["@media (prefers-reduced-motion:no-preference){transition:box-shadow 0.2s,border-color 0.2s,background-color 0.2s;}position:relative;", " ", " *::selection{", "}", " &:hover{", " ", "{", "}}&:focus-within{", " ", "{", "}}", " .", "__menu-list{", "}&:hover .", "__dropdown-indicator,&:focus-within .", "__dropdown-indicator{", "}", " ", ""], selectTokens.container.base, scrollbarStyling, typographyTokens.selection.base, function (_ref) {
15
+ })(["@media (prefers-reduced-motion:no-preference){transition:box-shadow 0.2s,border-color 0.2s,background-color 0.2s;}position:relative;", " *::selection{", "}", " &:hover{", " ", "{", "}}&:focus-within{", " ", "{", "}}", " .", "__menu-list{", " ", "}&:hover .", "__dropdown-indicator,&:focus-within .", "__dropdown-indicator{", "}", " ", ""], selectTokens.container.base, typographyTokens.selection.base, function (_ref) {
16
16
  var hasLabel = _ref.hasLabel,
17
17
  isMulti = _ref.isMulti;
18
18
  return isMulti && hasLabel ? css([".", "__value-container{", "}.", "__indicators{", "}"], prefix, selectTokens.valueContainer.isMulti.withLabel.base, prefix, selectTokens.indicatorsContainer.isMulti.withLabel.base) : isMulti && !hasLabel ? css([".", "__control{", "}.", "__value-container{", "}.", "__indicators{", "}"], prefix, selectTokens.input.isMulti.noLabel.base, prefix, selectTokens.valueContainer.isMulti.noLabel.base, prefix, selectTokens.indicatorsContainer.isMulti.noLabel.base) : hasLabel ? css([".", "__value-container{", "}.", "__indicators{", "}"], prefix, selectTokens.valueContainer.withLabel.base, prefix, selectTokens.indicatorsContainer.withLabel.base) : css([".", "__control{", "}.", "__value-container{", "}.", "__indicators{", "}"], prefix, selectTokens.input.noLabel.base, prefix, selectTokens.valueContainer.noLabel.base, prefix, selectTokens.indicatorsContainer.noLabel.base);
19
19
  }, selectTokens.container.hover.base, Label, selectTokens.label.hover.base, selectTokens.container.focus.base, Label, selectTokens.label.focus.base, function (_ref2) {
20
20
  var errorMessage = _ref2.errorMessage;
21
21
  return errorMessage && css(["", " &:hover{", "}&:focus-within{", "}"], selectTokens.container.danger.base, selectTokens.container.danger.hover.base, selectTokens.container.danger.focus.base);
22
- }, prefix, scrollbarStyling, prefix, prefix, selectTokens.dropdownIndicator.hover.base, function (_ref3) {
22
+ }, prefix, scrollbarStyling.webkit, scrollbarStyling.firefox, prefix, prefix, selectTokens.dropdownIndicator.hover.base, function (_ref3) {
23
23
  var isDisabled = _ref3.isDisabled;
24
24
  return isDisabled && css(["cursor:not-allowed;", " &:hover{box-shadow:none;", " ", "{", "}&:hover .", "__dropdown-indicator{", "}}"], selectTokens.container.disabled.base, selectTokens.container.disabled.base, Label, selectTokens.label.base, prefix, selectTokens.dropdownIndicator.base);
25
25
  }, function (_ref4) {
@@ -89,7 +89,7 @@ var getCustomStyles = function getCustomStyles() {
89
89
  transition: 'color 0.2s, background-color 0.2s'
90
90
  }
91
91
  }), selectTokens.multiValueRemove.base), {
92
- svg: Object.assign({}, selectTokens.multiValueRemove.icon.base),
92
+ padding: 0,
93
93
  '&:hover': Object.assign({}, selectTokens.multiValueRemove.hover.base),
94
94
  '&:focus': {
95
95
  backgroundColor: 'blue'
@@ -127,6 +127,9 @@ var getCustomStyles = function getCustomStyles() {
127
127
  return Object.assign(Object.assign({
128
128
  display: 'inline-flex'
129
129
  }, selectTokens.clearIndicator.base), {
130
+ '@media (prefers-reduced-motion: no-preference)': {
131
+ transition: 'color 0.2s'
132
+ },
130
133
  '&:hover': Object.assign({}, selectTokens.clearIndicator.hover.base)
131
134
  });
132
135
  },
@@ -100,9 +100,6 @@ export declare const selectTokens: {
100
100
  hover: {
101
101
  base: CSSObject;
102
102
  };
103
- icon: {
104
- base: CSSObject;
105
- };
106
103
  };
107
104
  indicatorsContainer: {
108
105
  withLabel: {
@@ -8,8 +8,7 @@ var Colors = ddsBaseTokens.colors,
8
8
  Spacing = ddsBaseTokens.spacing,
9
9
  FontPackages = ddsBaseTokens.fontPackages,
10
10
  BorderRadius = ddsBaseTokens.borderRadius,
11
- Border = ddsBaseTokens.border,
12
- IconSizes = ddsBaseTokens.iconSizes;
11
+ Border = ddsBaseTokens.border;
13
12
  var textDefault = ddsReferenceTokens.textDefault;
14
13
  var multiValueContainerMinHeight = "".concat(Spacing.SizesDdsSpacingLocalX0125NumberPx * 2 + Spacing.SizesDdsSpacingLocalX025NumberPx * 2 + calculateHeightWithLineHeight(FontPackages.supportingStyle_inputtext_01.numbers.lineHeightNumber, FontPackages.supportingStyle_inputtext_01.numbers.fontSizeNumber), "px"); //custom spacing so that multiselect has same height as single value select
15
14
 
@@ -90,8 +89,7 @@ var drodownIndicatorReadOnlyBase = {
90
89
  color: 'transparent'
91
90
  };
92
91
  var clearIndicatorBase = {
93
- color: Colors.DdsColorNeutralsGray6,
94
- padding: " 0 ".concat(Spacing.SizesDdsSpacingLocalX025, " 0 0")
92
+ color: Colors.DdsColorNeutralsGray6
95
93
  };
96
94
  var loadingIndicatorBase = {
97
95
  color: Colors.DdsColorNeutralsGray6,
@@ -117,13 +115,11 @@ var optionBase = Object.assign(Object.assign({
117
115
  color: textDefault.textColor
118
116
  });
119
117
  var optionHoverBase = {
120
- backgroundColor: Colors.DdsColorInteractiveLighter
121
- };
122
- var optionSelectedBase = Object.assign(Object.assign({
123
118
  backgroundColor: Colors.DdsColorInteractiveLightest
124
- }, FontPackages.body_sans_02.base), {
125
- fontWeight: 600
126
- });
119
+ };
120
+ var optionSelectedBase = Object.assign({
121
+ backgroundColor: Colors.DdsColorNeutralsWhite
122
+ }, FontPackages.body_sans_02.base);
127
123
  var noOptionsMessageBase = Object.assign({
128
124
  padding: "".concat(Spacing.SizesDdsSpacingLocalX05, " ").concat(Spacing.SizesDdsSpacingLocalX1),
129
125
  color: Colors.DdsColorNeutralsGray6
@@ -148,17 +144,12 @@ var multiValueLabelBase = Object.assign(Object.assign({
148
144
  fontWeight: 'bold'
149
145
  });
150
146
  var multiValueRemoveBase = {
151
- padding: "".concat(Spacing.SizesDdsSpacingLocalX025),
152
147
  color: Colors.DdsColorNeutralsGray9
153
148
  };
154
149
  var multiValueRemoveHoverBase = {
155
150
  color: Colors.DdsColorNeutralsWhite,
156
151
  backgroundColor: Colors.DdsColorInteractiveBase
157
152
  };
158
- var multiValueRemoveIconBase = {
159
- height: IconSizes.DdsIconsizeSmall,
160
- width: IconSizes.DdsIconsizeSmall
161
- };
162
153
  var containerDisabledBase = {
163
154
  backgroundColor: Colors.DdsColorNeutralsGray1,
164
155
  borderColor: Colors.DdsColorNeutralsGray5
@@ -267,9 +258,6 @@ var selectTokens = {
267
258
  base: multiValueRemoveBase,
268
259
  hover: {
269
260
  base: multiValueRemoveHoverBase
270
- },
271
- icon: {
272
- base: multiValueRemoveIconBase
273
261
  }
274
262
  },
275
263
  indicatorsContainer: {
@@ -6,9 +6,9 @@ import { cellTokens } from './Cell.tokens.js';
6
6
  import styled from 'styled-components';
7
7
  import { removeButtonStyling } from '../../helpers/styling/removeButtonStyling.js';
8
8
  import { UnfoldMoreIcon } from '../../icons/tsx/unfoldMore.js';
9
- import { ChevronDownIcon } from '../../icons/tsx/chevronDown.js';
10
9
  import { ChevronUpIcon } from '../../icons/tsx/chevronUp.js';
11
10
  import { Icon } from '../Icon/Icon.js';
11
+ import { ChevronDownIcon } from '../../icons/tsx/chevronDown.js';
12
12
 
13
13
  var SortIcon = styled(Icon).withConfig({
14
14
  displayName: "SortCell__SortIcon",
@@ -4,12 +4,12 @@ import { forwardRef } from 'react';
4
4
  import styled, { css } from 'styled-components';
5
5
  import { cellTokens } from './Cell.tokens.js';
6
6
  import { typographyTokens } from '../Typography/Typography.tokens.js';
7
- import { scrollbarStyling } from '../../helpers/styling/scrollbarStyling.js';
7
+ import { scrollbarStyling } from '../ScrollableContainer/scrollbarStyling.js';
8
8
 
9
9
  var StyledTable = styled.table.withConfig({
10
10
  displayName: "Table__StyledTable",
11
11
  componentId: "sc-bw0w0a-0"
12
- })(["border-spacing:0;border-collapse:collapse;*::selection{", "}", " ", " ", ""], typographyTokens.selection.base, scrollbarStyling, function (_ref) {
12
+ })(["border-spacing:0;border-collapse:collapse;*::selection{", "}", " ", " ", " ", ""], typographyTokens.selection.base, scrollbarStyling.webkit, scrollbarStyling.firefox, function (_ref) {
13
13
  var density = _ref.density;
14
14
  return density && css(["td,th{", "}"], cellTokens.density[density].base);
15
15
  }, function (_ref2) {
@@ -3,15 +3,15 @@ import { __rest } from 'tslib';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
  import { useState, useRef, useEffect } from 'react';
5
5
  import styled, { css } from 'styled-components';
6
- import { scrollbarStyling } from '../../helpers/styling/scrollbarStyling.js';
6
+ import { scrollbarStyling } from '../ScrollableContainer/scrollbarStyling.js';
7
7
 
8
8
  var Wrapper = styled.div.withConfig({
9
9
  displayName: "TableWrapper__Wrapper",
10
10
  componentId: "sc-eb384b-0"
11
- })(["", " ", ""], function (_ref) {
11
+ })(["", " ", " ", ""], function (_ref) {
12
12
  var overflowX = _ref.overflowX;
13
13
  return overflowX && css(["overflow-x:auto;"]);
14
- }, scrollbarStyling);
14
+ }, scrollbarStyling.webkit, scrollbarStyling.firefox);
15
15
  var TableWrapper = function TableWrapper(_a) {
16
16
  var children = _a.children,
17
17
  rest = __rest(_a, ["children"]);
@@ -5,7 +5,7 @@ import { forwardRef, useState, Children, isValidElement, cloneElement } from 're
5
5
  import styled from 'styled-components';
6
6
  import { tabsTokens } from './Tabs.tokens.js';
7
7
  import { useTabsContext } from './Tabs.context.js';
8
- import { scrollbarStyling } from '../../helpers/styling/scrollbarStyling.js';
8
+ import { scrollbarStyling } from '../ScrollableContainer/scrollbarStyling.js';
9
9
  import { useRoveFocus } from '../../hooks/useRoveFocus.js';
10
10
  import { useCombinedRef } from '../../hooks/useCombinedRefs.js';
11
11
  import { useOnKeyDown } from '../../hooks/useOnKeyDown.js';
@@ -14,7 +14,7 @@ import { useOnClickOutside } from '../../hooks/useOnClickOutside.js';
14
14
  var TabRow = styled.div.withConfig({
15
15
  displayName: "TabList__TabRow",
16
16
  componentId: "sc-1ldr0lz-0"
17
- })(["", " ", " scroll-snap-type:x mandatory;@media (prefers-reduced-motion:no-preference){scroll-behavior:smooth;}&:focus-visible{", "}&:focus-visible button{outline:none;}"], tabsTokens.tabList.base, scrollbarStyling, tabsTokens.tabList.focus.base);
17
+ })(["", " ", " ", " scroll-snap-type:x mandatory;@media (prefers-reduced-motion:no-preference){scroll-behavior:smooth;}&:focus-visible{", "}&:focus-visible button{outline:none;}"], tabsTokens.tabList.base, scrollbarStyling.webkit, scrollbarStyling.firefox, tabsTokens.tabList.focus.base);
18
18
  var TabList = /*#__PURE__*/forwardRef(function (_a, ref) {
19
19
  var children = _a.children,
20
20
  id = _a.id,
@@ -1,13 +1,13 @@
1
1
  import styled, { css } from 'styled-components';
2
2
  import { textInputTokens } from './TextInput.tokens.js';
3
3
  import { StatefulInput, Label as Label$1 } from '../../helpers/Input/Input.styles.js';
4
- import { scrollbarStyling } from '../../helpers/styling/scrollbarStyling.js';
4
+ import { scrollbarStyling } from '../ScrollableContainer/scrollbarStyling.js';
5
5
  import { inputTokens } from '../../helpers/Input/Input.tokens.js';
6
6
 
7
7
  var TextArea = styled(StatefulInput).withConfig({
8
8
  displayName: "TextInputstyles__TextArea",
9
9
  componentId: "sc-165zflr-0"
10
- })(["", " ", " ", " &:hover:enabled:read-write ~ label{background-color:", ";}"], scrollbarStyling, textInputTokens.multiline.base, function (_ref) {
10
+ })(["", " ", " ", " ", " &:hover:enabled:read-write ~ label{background-color:", ";}"], scrollbarStyling.webkit, scrollbarStyling.firefox, textInputTokens.multiline.base, function (_ref) {
11
11
  var hasLabel = _ref.hasLabel;
12
12
  return css(["", ""], textInputTokens.multiline[hasLabel].base);
13
13
  }, function (_ref2) {
@@ -1,5 +1,5 @@
1
1
  import { ddsBaseTokens, ddsReferenceTokens } from '@norges-domstoler/dds-design-tokens';
2
- import { scrollbarWidthNumberPx } from '../../helpers/styling/scrollbarStyling.js';
2
+ import { scrollbarWidthNumberPx } from '../ScrollableContainer/ScrollableContainer.tokens.js';
3
3
 
4
4
  var Colors = ddsBaseTokens.colors,
5
5
  Spacing = ddsBaseTokens.spacing;
@@ -1,8 +1,9 @@
1
1
  import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
2
 
3
3
  var Border = ddsBaseTokens.border,
4
- Colors = ddsBaseTokens.colors;
5
- var outlineOffset = '2px';
4
+ Colors = ddsBaseTokens.colors,
5
+ spacing = ddsBaseTokens.spacing;
6
+ var outlineOffset = spacing.SizesDdsSpacingLocalX0125;
6
7
  var focusVisible = {
7
8
  outline: "".concat(Border.BordersDdsBorderFocusBaseStrokeWeight, " ").concat(Border.BordersDdsBorderFocusBaseStroke, " solid"),
8
9
  outlineOffset: outlineOffset
@@ -5,4 +5,3 @@ export * from './hover';
5
5
  export * from './focus';
6
6
  export * from './danger';
7
7
  export * from './hideInput';
8
- export * from './scrollbarStyling';
@@ -0,0 +1,2 @@
1
+ import { SvgProps } from '../utils/propTypes';
2
+ export declare function CloseSmallIcon(props: SvgProps): JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { StyledSvg } from '../utils/StyledSvg.js';
4
+
5
+ function CloseSmallIcon(props) {
6
+ var title = props.title,
7
+ rest = __rest(props, ["title"]);
8
+
9
+ return jsxs(StyledSvg, Object.assign({
10
+ width: 24,
11
+ height: 24,
12
+ fill: "currentColor"
13
+ }, rest, {
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ viewBox: "0 0 24 24"
16
+ }, {
17
+ children: [title && jsx("title", {
18
+ children: title
19
+ }), jsx("path", {
20
+ d: "M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z"
21
+ })]
22
+ }));
23
+ }
24
+
25
+ export { CloseSmallIcon };
@@ -28,6 +28,7 @@ export * from './chevronLeft';
28
28
  export * from './chevronRight';
29
29
  export * from './chevronUp';
30
30
  export * from './close';
31
+ export * from './closeSmall';
31
32
  export * from './closeCircled';
32
33
  export * from './cloud';
33
34
  export * from './collapse';
package/dist/index.d.ts CHANGED
@@ -33,5 +33,6 @@ export * from './components/Tabs';
33
33
  export * from './components/Tag';
34
34
  export * from './components/Chip';
35
35
  export * from './components/VisuallyHidden';
36
+ export * from './components/ScrollableContainer';
36
37
  export * from './icons/tsx';
37
38
  export * from './components/Stepper';
package/dist/index.js CHANGED
@@ -59,6 +59,9 @@ export { Tag } from './components/Tag/Tag.js';
59
59
  export { Chip } from './components/Chip/Chip.js';
60
60
  export { ChipGroup } from './components/Chip/ChipGroup.js';
61
61
  export { VisuallyHidden } from './components/VisuallyHidden/VisuallyHidden.js';
62
+ export { Scrollbar } from './components/ScrollableContainer/Scrollbar.js';
63
+ export { ScrollableContainer } from './components/ScrollableContainer/ScrollableContainer.js';
64
+ export { scrollbarStyling } from './components/ScrollableContainer/scrollbarStyling.js';
62
65
  export { AppsIcon } from './icons/tsx/apps.js';
63
66
  export { ArchiveIcon } from './icons/tsx/archive.js';
64
67
  export { ArrowDownIcon } from './icons/tsx/arrowDown.js';
@@ -89,6 +92,7 @@ export { ChevronLeftIcon } from './icons/tsx/chevronLeft.js';
89
92
  export { ChevronRightIcon } from './icons/tsx/chevronRight.js';
90
93
  export { ChevronUpIcon } from './icons/tsx/chevronUp.js';
91
94
  export { CloseIcon } from './icons/tsx/close.js';
95
+ export { CloseSmallIcon } from './icons/tsx/closeSmall.js';
92
96
  export { CloseCircledIcon } from './icons/tsx/closeCircled.js';
93
97
  export { CloudIcon } from './icons/tsx/cloud.js';
94
98
  export { CollapseIcon } from './icons/tsx/collapse.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norges-domstoler/dds-components",
3
- "version": "5.2.0-beta.1",
3
+ "version": "5.3.0",
4
4
  "description": "React components used in Elsa - domstolenes designsystem",
5
5
  "author": "Elsa team",
6
6
  "license": "MIT",
@@ -80,7 +80,7 @@
80
80
  "eslint-plugin-react": "^7.30.1",
81
81
  "eslint-plugin-storybook": "^0.6.4",
82
82
  "jest": "^28.1.3",
83
- "jest-environment-jsdom": "^28.1.3",
83
+ "jest-environment-jsdom": "^29.0.1",
84
84
  "react": "^18.2.0",
85
85
  "react-dom": "^18.2.0",
86
86
  "rollup": "^2.78.1",
@@ -116,8 +116,6 @@
116
116
  }
117
117
  },
118
118
  "dependencies": {
119
- "@emotion/react": "^11.10.0",
120
- "@emotion/styled": "^11.10.0",
121
119
  "@floating-ui/react-dom": "^1.0.0",
122
120
  "focus-visible": "^5.2.0",
123
121
  "react-select": "^5.4.0",