@norges-domstoler/dds-components 5.2.0-beta.2 → 5.3.1

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 (100) hide show
  1. package/README.md +14 -3
  2. package/dist/cjs/components/DescriptionList/DescriptionList.tokens.d.ts +70 -0
  3. package/dist/cjs/components/InternalHeader/InternalHeader.styles.d.ts +1 -1
  4. package/dist/cjs/components/InternalHeader/InternalHeader.tokens.d.ts +39 -27
  5. package/dist/cjs/components/Modal/Modal.tokens.d.ts +0 -6
  6. package/dist/cjs/components/Modal/ModalBody.d.ts +6 -1
  7. package/dist/cjs/components/OverflowMenu/OverflowMenu.tokens.d.ts +25 -10
  8. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.d.ts +7 -0
  9. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.stories.d.ts +15 -0
  10. package/dist/cjs/components/ScrollableContainer/ScrollableContainer.tokens.d.ts +25 -0
  11. package/dist/cjs/components/ScrollableContainer/Scrollbar.d.ts +7 -0
  12. package/dist/cjs/components/ScrollableContainer/index.d.ts +3 -0
  13. package/dist/cjs/components/ScrollableContainer/scrollbarStyling.d.ts +26 -0
  14. package/dist/cjs/components/Select/Select.tokens.d.ts +0 -3
  15. package/dist/cjs/components/Tooltip/Tooltip.d.ts +1 -1
  16. package/dist/cjs/helpers/styling/index.d.ts +0 -1
  17. package/dist/cjs/icons/tsx/closeSmall.d.ts +2 -0
  18. package/dist/cjs/icons/tsx/index.d.ts +1 -0
  19. package/dist/cjs/index.d.ts +1 -0
  20. package/dist/cjs/index.js +1322 -1100
  21. package/dist/components/Card/CardAccordion/CardAccordion.js +3 -8
  22. package/dist/components/Checkbox/Checkbox.js +3 -7
  23. package/dist/components/Checkbox/CheckboxGroup.js +3 -7
  24. package/dist/components/Datepicker/Datepicker.js +3 -7
  25. package/dist/components/DescriptionList/DescriptionList.js +6 -3
  26. package/dist/components/DescriptionList/DescriptionList.tokens.d.ts +70 -0
  27. package/dist/components/DescriptionList/DescriptionList.tokens.js +60 -0
  28. package/dist/components/DescriptionList/DescriptionListDesc.js +2 -2
  29. package/dist/components/DescriptionList/DescriptionListGroup.js +4 -4
  30. package/dist/components/Drawer/Drawer.js +15 -17
  31. package/dist/components/Drawer/DrawerGroup.js +7 -12
  32. package/dist/components/InternalHeader/InternalHeader.js +2 -2
  33. package/dist/components/InternalHeader/InternalHeader.styles.d.ts +1 -1
  34. package/dist/components/InternalHeader/InternalHeader.styles.js +17 -11
  35. package/dist/components/InternalHeader/InternalHeader.tokens.d.ts +39 -27
  36. package/dist/components/InternalHeader/InternalHeader.tokens.js +48 -80
  37. package/dist/components/InternalHeader/NavigationItem.js +4 -2
  38. package/dist/components/Modal/Modal.js +3 -9
  39. package/dist/components/Modal/Modal.tokens.d.ts +0 -6
  40. package/dist/components/Modal/Modal.tokens.js +0 -10
  41. package/dist/components/Modal/ModalBody.d.ts +6 -1
  42. package/dist/components/Modal/ModalBody.js +13 -13
  43. package/dist/components/OverflowMenu/OverflowMenu.js +6 -4
  44. package/dist/components/OverflowMenu/OverflowMenu.tokens.d.ts +25 -10
  45. package/dist/components/OverflowMenu/OverflowMenu.tokens.js +33 -45
  46. package/dist/components/OverflowMenu/OverflowMenuGroup.js +3 -7
  47. package/dist/components/OverflowMenu/OverflowMenuItem.js +7 -3
  48. package/dist/components/Pagination/Pagination.js +1 -1
  49. package/dist/components/Popover/PopoverGroup.js +3 -7
  50. package/dist/components/RadioButton/RadioButton.js +3 -8
  51. package/dist/components/RadioButton/RadioButtonGroup.js +3 -6
  52. package/dist/components/ScrollableContainer/ScrollableContainer.d.ts +7 -0
  53. package/dist/components/ScrollableContainer/ScrollableContainer.js +47 -0
  54. package/dist/components/ScrollableContainer/ScrollableContainer.stories.d.ts +15 -0
  55. package/dist/components/ScrollableContainer/ScrollableContainer.tokens.d.ts +25 -0
  56. package/dist/components/ScrollableContainer/ScrollableContainer.tokens.js +36 -0
  57. package/dist/components/ScrollableContainer/Scrollbar.d.ts +7 -0
  58. package/dist/components/ScrollableContainer/Scrollbar.js +178 -0
  59. package/dist/components/ScrollableContainer/index.d.ts +3 -0
  60. package/dist/components/ScrollableContainer/scrollbarStyling.d.ts +26 -0
  61. package/dist/components/ScrollableContainer/scrollbarStyling.js +40 -0
  62. package/dist/components/Search/Search.js +3 -7
  63. package/dist/components/Select/Select.js +41 -10
  64. package/dist/components/Select/Select.styles.js +7 -4
  65. package/dist/components/Select/Select.tokens.d.ts +0 -3
  66. package/dist/components/Select/Select.tokens.js +6 -18
  67. package/dist/components/Spinner/Spinner.js +3 -8
  68. package/dist/components/Table/SortCell.js +1 -1
  69. package/dist/components/Table/Table.js +2 -2
  70. package/dist/components/Table/TableWrapper.js +3 -3
  71. package/dist/components/Tabs/TabList.js +4 -7
  72. package/dist/components/Tabs/Tabs.js +11 -13
  73. package/dist/components/TextInput/CharCounter.js +3 -7
  74. package/dist/components/TextInput/TextInput.js +3 -6
  75. package/dist/components/TextInput/TextInput.styles.js +2 -2
  76. package/dist/components/TextInput/TextInput.tokens.js +1 -1
  77. package/dist/components/ToggleButton/ToggleButton.js +3 -7
  78. package/dist/components/ToggleButton/ToggleButtonGroup.js +3 -7
  79. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  80. package/dist/components/Tooltip/Tooltip.js +10 -14
  81. package/dist/helpers/styling/focusVisible.js +3 -2
  82. package/dist/helpers/styling/index.d.ts +0 -1
  83. package/dist/icons/tsx/closeSmall.d.ts +2 -0
  84. package/dist/icons/tsx/closeSmall.js +25 -0
  85. package/dist/icons/tsx/index.d.ts +1 -0
  86. package/dist/index.d.ts +1 -0
  87. package/dist/index.js +4 -0
  88. package/package.json +2 -4
  89. package/dist/cjs/components/DescriptionList/DescriptionListDesc.tokens.d.ts +0 -7
  90. package/dist/cjs/components/DescriptionList/DescriptionListGroup.tokens.d.ts +0 -4
  91. package/dist/cjs/components/DescriptionList/DescriptionListTerm.tokens.d.ts +0 -13
  92. package/dist/cjs/helpers/styling/scrollbarStyling.d.ts +0 -3
  93. package/dist/components/DescriptionList/DescriptionListDesc.tokens.d.ts +0 -7
  94. package/dist/components/DescriptionList/DescriptionListDesc.tokens.js +0 -22
  95. package/dist/components/DescriptionList/DescriptionListGroup.tokens.d.ts +0 -4
  96. package/dist/components/DescriptionList/DescriptionListGroup.tokens.js +0 -11
  97. package/dist/components/DescriptionList/DescriptionListTerm.tokens.d.ts +0 -13
  98. package/dist/components/DescriptionList/DescriptionListTerm.tokens.js +0 -27
  99. package/dist/helpers/styling/scrollbarStyling.d.ts +0 -3
  100. package/dist/helpers/styling/scrollbarStyling.js +0 -8
@@ -0,0 +1,47 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useRef } from 'react';
4
+ import styled from 'styled-components';
5
+ import { Scrollbar } from './Scrollbar.js';
6
+ import { scrollbarTokens } from './ScrollableContainer.tokens.js';
7
+ import { focusVisibleTransitionValue, focusVisible } from '../../helpers/styling/focusVisible.js';
8
+ import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
9
+
10
+ var track = scrollbarTokens.track,
11
+ content = scrollbarTokens.content,
12
+ outerContainer = scrollbarTokens.outerContainer;
13
+ var StyledScrollableContainer = styled.div.withConfig({
14
+ displayName: "ScrollableContainer__StyledScrollableContainer",
15
+ componentId: "sc-t0dczu-0"
16
+ })(["grid-template:auto / 1fr ", ";overflow:hidden;position:relative;display:grid;padding:", ";"], track.width, outerContainer.padding);
17
+ var Content = styled.div.withConfig({
18
+ displayName: "ScrollableContainer__Content",
19
+ componentId: "sc-t0dczu-1"
20
+ })(["height:", ";overflow:auto;scrollbar-width:none;::-webkit-scrollbar{display:none;}padding-right:", ";@media (prefers-reduced-motion:no-preference){transition:", ";}:focus-visible,.focus-visible{outline:", ";outline-offset:", ";}"], function (_ref) {
21
+ var height = _ref.height;
22
+ return height;
23
+ }, content.paddingRight, focusVisibleTransitionValue, focusVisible.outline, focusVisible.outlineOffset);
24
+ var ScrollableContainer = function ScrollableContainer(props) {
25
+ var children = props.children,
26
+ id = props.id,
27
+ className = props.className,
28
+ _props$contentHeight = props.contentHeight,
29
+ contentHeight = _props$contentHeight === void 0 ? '90vh' : _props$contentHeight,
30
+ htmlProps = props.htmlProps,
31
+ rest = __rest(props, ["children", "id", "className", "contentHeight", "htmlProps"]);
32
+
33
+ var ref = useRef(null);
34
+ return jsxs(StyledScrollableContainer, Object.assign({}, getBaseHTMLProps(id, className, htmlProps, rest), {
35
+ children: [jsx(Content, Object.assign({
36
+ height: contentHeight,
37
+ ref: ref,
38
+ tabIndex: 0
39
+ }, {
40
+ children: children
41
+ })), jsx(Scrollbar, {
42
+ contentRef: ref
43
+ })]
44
+ }));
45
+ };
46
+
47
+ export { ScrollableContainer };
@@ -0,0 +1,15 @@
1
+ import { ScrollableContainerProps } from '.';
2
+ declare const _default: {
3
+ title: string;
4
+ component: (props: ScrollableContainerProps) => JSX.Element;
5
+ argTypes: {
6
+ contentHeight: {
7
+ control: {
8
+ type: string;
9
+ };
10
+ };
11
+ };
12
+ };
13
+ export default _default;
14
+ export declare const Default: (args: ScrollableContainerProps) => JSX.Element;
15
+ export declare const JustScrollbar: () => JSX.Element;
@@ -0,0 +1,25 @@
1
+ export declare const scrollbarWidthNumberPx = 10;
2
+ export declare const scrollbarTokens: {
3
+ minThumbHeightPx: number;
4
+ track: {
5
+ backgroundColor: string;
6
+ borderRadius: string;
7
+ width: string;
8
+ };
9
+ thumb: {
10
+ base: {
11
+ backgroundColor: string;
12
+ borderRadius: string;
13
+ width: string;
14
+ };
15
+ hover: {
16
+ backgroundColor: string;
17
+ };
18
+ };
19
+ content: {
20
+ paddingRight: string;
21
+ };
22
+ outerContainer: {
23
+ padding: string;
24
+ };
25
+ };
@@ -0,0 +1,36 @@
1
+ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
+
3
+ var scrollbarWidthNumberPx = 10;
4
+ var scrollbarWidth = "".concat(scrollbarWidthNumberPx, "px");
5
+ var colors = ddsBaseTokens.colors,
6
+ spacing = ddsBaseTokens.spacing;
7
+ var track = {
8
+ backgroundColor: 'transparent',
9
+ borderRadius: '100px',
10
+ width: scrollbarWidth
11
+ };
12
+ var thumb = {
13
+ base: {
14
+ backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',
15
+ borderRadius: '100px',
16
+ width: scrollbarWidth
17
+ },
18
+ hover: {
19
+ backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)'
20
+ }
21
+ };
22
+ var content = {
23
+ paddingRight: spacing.SizesDdsSpacingLocalX05
24
+ };
25
+ var outerContainer = {
26
+ padding: spacing.SizesDdsSpacingLocalX025
27
+ };
28
+ var scrollbarTokens = {
29
+ minThumbHeightPx: 15,
30
+ track: track,
31
+ thumb: thumb,
32
+ content: content,
33
+ outerContainer: outerContainer
34
+ };
35
+
36
+ export { scrollbarTokens, scrollbarWidthNumberPx };
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ import { BaseComponentProps } from '../../types';
3
+ export declare type ScrollbarProps = BaseComponentProps<HTMLDivElement, {
4
+ /** Ref til container med innholdet som skal scrolles. */
5
+ contentRef?: RefObject<HTMLDivElement>;
6
+ }>;
7
+ export declare const Scrollbar: (props: ScrollbarProps) => JSX.Element | null;
@@ -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 };
@@ -1,7 +1,6 @@
1
- import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { __rest } from 'tslib';
3
2
  import { jsxs, jsx } from 'react/jsx-runtime';
4
- import { forwardRef, useState } from 'react';
3
+ import { forwardRef, useId } from 'react';
5
4
  import styled, { css } from 'styled-components';
6
5
  import { searchTokens } from './Search.tokens.js';
7
6
  import { Input as Input$1, OuterInputContainer, InputContainer } from '../../helpers/Input/Input.styles.js';
@@ -33,7 +32,6 @@ var ButtonWrapper = styled.div.withConfig({
33
32
  displayName: "Search__ButtonWrapper",
34
33
  componentId: "sc-1ax3s9s-3"
35
34
  })([""]);
36
- var nextUniqueId = 0;
37
35
  var Search = /*#__PURE__*/forwardRef(function (_a, ref) {
38
36
  var _a$componentSize = _a.componentSize,
39
37
  componentSize = _a$componentSize === void 0 ? 'medium' : _a$componentSize,
@@ -46,10 +44,8 @@ var Search = /*#__PURE__*/forwardRef(function (_a, ref) {
46
44
  ariaDescribedby = _a['aria-describedby'],
47
45
  rest = __rest(_a, ["componentSize", "buttonProps", "name", "tip", "id", "className", "style", 'aria-describedby']);
48
46
 
49
- var _useState = useState(id !== null && id !== void 0 ? id : "searchInput-".concat(nextUniqueId++)),
50
- _useState2 = _slicedToArray(_useState, 1),
51
- uniqueId = _useState2[0];
52
-
47
+ var generatedId = useId();
48
+ var uniqueId = id !== null && id !== void 0 ? id : "".concat(generatedId, "-searchInput");
53
49
  var hasTip = !!tip;
54
50
  var tipId = derivativeIdGenerator(uniqueId, 'tip', tip);
55
51
  var containerProps = {
@@ -1,11 +1,12 @@
1
- import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { __rest } from 'tslib';
3
2
  import { jsxs, jsx } from 'react/jsx-runtime';
4
- import React, { useState } from 'react';
3
+ import React, { useId } from 'react';
5
4
  import ReactSelect, { components } from 'react-select';
6
5
  import { prefix, getCustomStyles, Wrapper, Container, Label } from './Select.styles.js';
7
6
  import { selectTokens } from './Select.tokens.js';
8
7
  import { CheckIcon } from '../../icons/tsx/check.js';
8
+ import { CloseSmallIcon } from '../../icons/tsx/closeSmall.js';
9
+ import { ChevronDownIcon } from '../../icons/tsx/chevronDown.js';
9
10
  import { RequiredMarker } from '../../helpers/RequiredMarker/RequiredMarker.js';
10
11
  import { InputMessage } from '../InputMessage/InputMessage.js';
11
12
  import { Icon } from '../Icon/Icon.js';
@@ -14,7 +15,10 @@ import { derivativeIdGenerator, spaceSeparatedIdListGenerator } from '../../util
14
15
  var DdsOption = components.Option,
15
16
  NoOptionsMessage = components.NoOptionsMessage,
16
17
  Input = components.Input,
17
- SingleValue = components.SingleValue;
18
+ SingleValue = components.SingleValue,
19
+ ClearIndicator = components.ClearIndicator,
20
+ DropdownIndicator = components.DropdownIndicator,
21
+ MultiValueRemove = components.MultiValueRemove;
18
22
  var createSelectOptions = function createSelectOptions() {
19
23
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
20
24
  args[_key] = arguments[_key];
@@ -32,7 +36,7 @@ var IconOption = function IconOption(props) {
32
36
  return jsxs(DdsOption, Object.assign({}, props, {
33
37
  children: [props.isSelected && jsx(Icon, {
34
38
  icon: CheckIcon,
35
- iconSize: "inherit"
39
+ iconSize: "medium"
36
40
  }), props.children]
37
41
  }));
38
42
  };
@@ -55,6 +59,33 @@ var NoOptionsMessageCustom = function NoOptionsMessageCustom(props) {
55
59
  }));
56
60
  };
57
61
 
62
+ var CustomClearIndicator = function CustomClearIndicator(props) {
63
+ return jsx(ClearIndicator, Object.assign({}, props, {
64
+ children: jsx(Icon, {
65
+ icon: CloseSmallIcon,
66
+ iconSize: "medium"
67
+ })
68
+ }));
69
+ };
70
+
71
+ var CustomMultiValueRemove = function CustomMultiValueRemove(props) {
72
+ return jsx(MultiValueRemove, Object.assign({}, props, {
73
+ children: jsx(Icon, {
74
+ icon: CloseSmallIcon,
75
+ iconSize: "medium"
76
+ })
77
+ }));
78
+ };
79
+
80
+ var CustomDropdownIndicator = function CustomDropdownIndicator(props) {
81
+ return jsx(DropdownIndicator, Object.assign({}, props, {
82
+ children: jsx(Icon, {
83
+ icon: ChevronDownIcon,
84
+ iconSize: "medium"
85
+ })
86
+ }));
87
+ };
88
+
58
89
  function escapeRegexCharacters(text) {
59
90
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
60
91
  }
@@ -64,7 +95,6 @@ function searchFilter(text, search) {
64
95
  var searchFilterRegex = new RegExp("(?:^|[\\s-(])".concat(escapeRegexCharacters(search.toLowerCase())));
65
96
  return searchFilterRegex.test(text.toLowerCase());
66
97
  }
67
- var nextUniqueId = 0;
68
98
 
69
99
  var SelectInner = function SelectInner(_a, ref) {
70
100
  var id = _a.id,
@@ -91,10 +121,8 @@ var SelectInner = function SelectInner(_a, ref) {
91
121
  customSingleValueElement = _a.customSingleValueElement,
92
122
  rest = __rest(_a, ["id", "label", "errorMessage", "tip", "required", "readOnly", "options", "isMulti", "value", "defaultValue", "width", "closeMenuOnSelect", "className", "style", "isDisabled", "isClearable", "placeholder", "customOptionElement", "customSingleValueElement"]);
93
123
 
94
- var _useState = useState(id !== null && id !== void 0 ? id : "select-".concat(nextUniqueId++)),
95
- _useState2 = _slicedToArray(_useState, 1),
96
- uniqueId = _useState2[0];
97
-
124
+ var generatedId = useId();
125
+ var uniqueId = id !== null && id !== void 0 ? id : "".concat(generatedId, "-select");
98
126
  var hasLabel = !!label;
99
127
  var hasErrorMessage = !!errorMessage;
100
128
  var tipId = derivativeIdGenerator(uniqueId, 'tip', tip);
@@ -143,7 +171,10 @@ var SelectInner = function SelectInner(_a, ref) {
143
171
  Input: CustomInput,
144
172
  SingleValue: customSingleValueElement ? function (props) {
145
173
  return CustomSingleValue(props, customSingleValueElement);
146
- } : SingleValue
174
+ } : SingleValue,
175
+ ClearIndicator: CustomClearIndicator,
176
+ DropdownIndicator: CustomDropdownIndicator,
177
+ MultiValueRemove: CustomMultiValueRemove
147
178
  },
148
179
  'aria-invalid': hasErrorMessage ? true : undefined
149
180
  }, 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: {