@equinor/eds-core-react 0.25.0 → 0.27.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 (178) hide show
  1. package/dist/eds-core-react.cjs.js +2016 -2478
  2. package/dist/esm/components/Accordion/Accordion.js +8 -11
  3. package/dist/esm/components/Accordion/Accordion.tokens.js +14 -14
  4. package/dist/esm/components/Accordion/AccordionHeader.js +20 -32
  5. package/dist/esm/components/Accordion/AccordionHeaderActions.js +5 -7
  6. package/dist/esm/components/Accordion/AccordionHeaderTitle.js +6 -8
  7. package/dist/esm/components/Accordion/AccordionItem.js +12 -15
  8. package/dist/esm/components/Accordion/AccordionPanel.js +8 -9
  9. package/dist/esm/components/Autocomplete/Autocomplete.js +94 -148
  10. package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +11 -11
  11. package/dist/esm/components/Autocomplete/Option.js +9 -10
  12. package/dist/esm/components/Avatar/Avatar.js +7 -8
  13. package/dist/esm/components/Banner/Banner.js +6 -10
  14. package/dist/esm/components/Banner/Banner.tokens.js +12 -12
  15. package/dist/esm/components/Banner/BannerActions.js +4 -6
  16. package/dist/esm/components/Banner/BannerIcon.js +5 -8
  17. package/dist/esm/components/Banner/BannerMessage.js +1 -3
  18. package/dist/esm/components/Breadcrumbs/Breadcrumb.js +5 -9
  19. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +11 -16
  20. package/dist/esm/components/Breadcrumbs/Breadcrumbs.tokens.js +3 -3
  21. package/dist/esm/components/Button/Button.js +17 -31
  22. package/dist/esm/components/Button/ButtonGroup/ButtonGroup.js +2 -4
  23. package/dist/esm/components/Button/ToggleButton/ToggleButton.js +7 -14
  24. package/dist/esm/components/Button/tokens/button.js +14 -14
  25. package/dist/esm/components/Button/tokens/contained.js +9 -9
  26. package/dist/esm/components/Button/tokens/contained_icon.js +3 -3
  27. package/dist/esm/components/Button/tokens/ghost.js +9 -9
  28. package/dist/esm/components/Button/tokens/icon.js +13 -13
  29. package/dist/esm/components/Button/tokens/outlined.js +10 -10
  30. package/dist/esm/components/Card/Card.js +5 -8
  31. package/dist/esm/components/Card/Card.tokens.js +6 -6
  32. package/dist/esm/components/Card/CardActions.js +5 -8
  33. package/dist/esm/components/Card/CardContent.js +1 -2
  34. package/dist/esm/components/Card/CardHeader.js +1 -3
  35. package/dist/esm/components/Card/CardHeaderTitle.js +1 -3
  36. package/dist/esm/components/Card/CardMedia.js +4 -6
  37. package/dist/esm/components/Checkbox/Checkbox.js +6 -7
  38. package/dist/esm/components/Checkbox/Checkbox.tokens.js +12 -12
  39. package/dist/esm/components/Checkbox/Input.js +10 -14
  40. package/dist/esm/components/Chip/Chip.js +20 -31
  41. package/dist/esm/components/Chip/Chip.tokens.js +20 -20
  42. package/dist/esm/components/Chip/Icon.js +1 -3
  43. package/dist/esm/components/Dialog/Dialog.js +11 -16
  44. package/dist/esm/components/Dialog/Dialog.tokens.js +5 -5
  45. package/dist/esm/components/Dialog/DialogActions.js +5 -4
  46. package/dist/esm/components/Dialog/DialogContent.js +4 -6
  47. package/dist/esm/components/Dialog/DialogHeader.js +1 -3
  48. package/dist/esm/components/Dialog/DialogTitle.js +2 -3
  49. package/dist/esm/components/Divider/Divider.js +9 -12
  50. package/dist/esm/components/Divider/Divider.tokens.js +6 -6
  51. package/dist/esm/components/EdsProvider/eds.context.js +6 -9
  52. package/dist/esm/components/Icon/Icon.js +19 -29
  53. package/dist/esm/components/Icon/library.js +0 -1
  54. package/dist/esm/components/Input/Input.js +26 -40
  55. package/dist/esm/components/Input/Input.tokens.js +18 -18
  56. package/dist/esm/components/InputWrapper/HelperText/HelperText.js +4 -6
  57. package/dist/esm/components/InputWrapper/HelperText/HelperText.token.js +2 -2
  58. package/dist/esm/components/InputWrapper/InputWrapper.js +9 -13
  59. package/dist/esm/components/InputWrapper/InputWrapper.tokens.js +18 -18
  60. package/dist/esm/components/Label/Label.js +8 -8
  61. package/dist/esm/components/Label/Label.tokens.js +2 -2
  62. package/dist/esm/components/List/List.js +4 -5
  63. package/dist/esm/components/List/ListItem.js +2 -3
  64. package/dist/esm/components/Menu/Menu.context.js +5 -12
  65. package/dist/esm/components/Menu/Menu.js +40 -52
  66. package/dist/esm/components/Menu/Menu.tokens.js +14 -14
  67. package/dist/esm/components/Menu/MenuItem.js +15 -21
  68. package/dist/esm/components/Menu/MenuList.js +9 -18
  69. package/dist/esm/components/Menu/MenuSection.js +5 -3
  70. package/dist/esm/components/Pagination/Pagination.js +17 -27
  71. package/dist/esm/components/Pagination/Pagination.tokens.js +3 -3
  72. package/dist/esm/components/Pagination/PaginationItem.js +3 -5
  73. package/dist/esm/components/Pagination/paginationControl.js +2 -10
  74. package/dist/esm/components/Paper/Paper.js +1 -3
  75. package/dist/esm/components/Paper/Paper.tokens.js +1 -1
  76. package/dist/esm/components/Popover/Popover.js +34 -50
  77. package/dist/esm/components/Popover/Popover.tokens.js +8 -8
  78. package/dist/esm/components/Popover/PopoverActions.js +1 -3
  79. package/dist/esm/components/Popover/PopoverContent.js +4 -4
  80. package/dist/esm/components/Popover/PopoverHeader.js +1 -3
  81. package/dist/esm/components/Popover/PopoverTitle.js +1 -3
  82. package/dist/esm/components/Progress/Circular/CircularProgress.js +12 -26
  83. package/dist/esm/components/Progress/Circular/CircularProgress.tokens.js +5 -5
  84. package/dist/esm/components/Progress/Dots/DotProgress.js +4 -9
  85. package/dist/esm/components/Progress/Dots/DotProgress.tokens.js +4 -4
  86. package/dist/esm/components/Progress/Linear/LinearProgress.js +8 -16
  87. package/dist/esm/components/Progress/Linear/LinearProgress.tokens.js +2 -2
  88. package/dist/esm/components/Progress/Star/StarProgress.js +8 -12
  89. package/dist/esm/components/Radio/Radio.js +10 -12
  90. package/dist/esm/components/Radio/Radio.tokens.js +12 -12
  91. package/dist/esm/components/Scrim/Scrim.js +5 -9
  92. package/dist/esm/components/Search/Search.js +6 -13
  93. package/dist/esm/components/Select/NativeSelect/NativeSelect.js +12 -16
  94. package/dist/esm/components/Select/NativeSelect/NativeSelect.tokens.js +5 -5
  95. package/dist/esm/components/SideBar/SideBar.context.js +49 -0
  96. package/dist/esm/components/SideBar/SideBar.js +74 -0
  97. package/dist/esm/components/SideBar/SideBar.tokens.js +110 -0
  98. package/dist/esm/components/SideBar/SideBarButton/index.js +81 -0
  99. package/dist/esm/components/SideBar/SideBarContent.js +25 -0
  100. package/dist/esm/components/SideBar/SideBarFooter.js +25 -0
  101. package/dist/esm/components/SideBar/SideBarToggle.js +54 -0
  102. package/dist/esm/components/SideBar/SidebarLink/index.js +102 -0
  103. package/dist/esm/components/SideBar/index.js +20 -0
  104. package/dist/esm/components/SideSheet/SideSheet.js +14 -15
  105. package/dist/esm/components/SideSheet/SideSheet.tokens.js +6 -6
  106. package/dist/esm/components/Slider/MinMax.js +2 -2
  107. package/dist/esm/components/Slider/Output.js +4 -4
  108. package/dist/esm/components/Slider/Slider.js +27 -48
  109. package/dist/esm/components/Slider/Slider.tokens.js +14 -14
  110. package/dist/esm/components/Slider/SliderInput.js +10 -11
  111. package/dist/esm/components/Snackbar/Snackbar.js +13 -19
  112. package/dist/esm/components/Snackbar/Snackbar.tokens.js +9 -9
  113. package/dist/esm/components/Snackbar/SnackbarAction.js +1 -3
  114. package/dist/esm/components/Switch/Switch.js +8 -10
  115. package/dist/esm/components/Switch/Switch.styles.js +5 -6
  116. package/dist/esm/components/Switch/Switch.tokens.js +18 -18
  117. package/dist/esm/components/Switch/SwitchDefault.js +10 -11
  118. package/dist/esm/components/Switch/SwitchSmall.js +11 -12
  119. package/dist/esm/components/Table/Body.js +1 -2
  120. package/dist/esm/components/Table/Caption.js +1 -1
  121. package/dist/esm/components/Table/Cell.js +1 -4
  122. package/dist/esm/components/Table/DataCell/DataCell.js +9 -12
  123. package/dist/esm/components/Table/DataCell/DataCell.tokens.js +17 -18
  124. package/dist/esm/components/Table/Head/Head.js +2 -3
  125. package/dist/esm/components/Table/Head/Head.tokens.js +2 -2
  126. package/dist/esm/components/Table/HeaderCell/HeaderCell.js +7 -12
  127. package/dist/esm/components/Table/HeaderCell/HeaderCell.tokens.js +14 -14
  128. package/dist/esm/components/Table/Row/Row.js +0 -2
  129. package/dist/esm/components/Table/Row/Row.tokens.js +2 -2
  130. package/dist/esm/components/Table/Table.js +4 -3
  131. package/dist/esm/components/TableOfContents/LinkItem.js +1 -2
  132. package/dist/esm/components/TableOfContents/TableOfContents.js +7 -9
  133. package/dist/esm/components/TableOfContents/TableOfContents.tokens.js +12 -12
  134. package/dist/esm/components/Tabs/Tab.js +6 -7
  135. package/dist/esm/components/Tabs/TabList.js +13 -22
  136. package/dist/esm/components/Tabs/TabPanel.js +0 -1
  137. package/dist/esm/components/Tabs/TabPanels.js +3 -5
  138. package/dist/esm/components/Tabs/Tabs.js +24 -37
  139. package/dist/esm/components/Tabs/Tabs.tokens.js +13 -13
  140. package/dist/esm/components/TextField/TextField.js +19 -25
  141. package/dist/esm/components/Textarea/Textarea.js +11 -19
  142. package/dist/esm/components/Tooltip/Tooltip.js +38 -51
  143. package/dist/esm/components/Tooltip/Tooltip.tokens.js +7 -7
  144. package/dist/esm/components/TopBar/Actions.js +4 -3
  145. package/dist/esm/components/TopBar/CustomContent.js +4 -3
  146. package/dist/esm/components/TopBar/Header.js +5 -4
  147. package/dist/esm/components/TopBar/TopBar.js +10 -12
  148. package/dist/esm/components/TopBar/TopBar.tokens.js +2 -2
  149. package/dist/esm/components/Typography/Typography.js +15 -23
  150. package/dist/esm/components/Typography/Typography.tokens.js +10 -12
  151. package/dist/esm/index.js +2 -2
  152. package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry2.js +0 -2
  153. package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry3.js +0 -3
  154. package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepRight.js +2 -2
  155. package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepWithKey.js +2 -1
  156. package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeWithKey.js +2 -4
  157. package/dist/types/components/Select/index.d.ts +0 -2
  158. package/dist/types/components/SideBar/SideBar.context.d.ts +15 -0
  159. package/dist/types/components/SideBar/SideBar.d.ts +5 -0
  160. package/dist/types/components/SideBar/SideBar.tokens.d.ts +2 -0
  161. package/dist/types/components/SideBar/SideBarButton/index.d.ts +11 -0
  162. package/dist/types/components/SideBar/SideBarContent.d.ts +4 -0
  163. package/dist/types/components/SideBar/SideBarFooter.d.ts +4 -0
  164. package/dist/types/components/SideBar/SideBarToggle.d.ts +4 -0
  165. package/dist/types/components/SideBar/SidebarLink/index.d.ts +18 -0
  166. package/dist/types/components/SideBar/index.d.ts +17 -0
  167. package/dist/types/index.d.ts +1 -0
  168. package/package.json +4 -4
  169. package/dist/esm/components/Select/MultiSelect/MultiSelect.js +0 -226
  170. package/dist/esm/components/Select/Select.tokens.js +0 -92
  171. package/dist/esm/components/Select/SingleSelect/SingleSelect.js +0 -160
  172. package/dist/esm/components/Select/commonStyles.js +0 -43
  173. package/dist/types/components/Select/MultiSelect/MultiSelect.d.ts +0 -49
  174. package/dist/types/components/Select/MultiSelect/index.d.ts +0 -1
  175. package/dist/types/components/Select/Select.tokens.d.ts +0 -3
  176. package/dist/types/components/Select/SingleSelect/SingleSelect.d.ts +0 -49
  177. package/dist/types/components/Select/SingleSelect/index.d.ts +0 -1
  178. package/dist/types/components/Select/commonStyles.d.ts +0 -27
@@ -27,22 +27,20 @@ import _has from './internal/_has.js';
27
27
  * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }
28
28
  */
29
29
 
30
- var mergeWithKey = /*#__PURE__*/_curry3(function mergeWithKey(fn, l, r) {
30
+ var mergeWithKey = /*#__PURE__*/
31
+ _curry3(function mergeWithKey(fn, l, r) {
31
32
  var result = {};
32
33
  var k;
33
-
34
34
  for (k in l) {
35
35
  if (_has(k, l)) {
36
36
  result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];
37
37
  }
38
38
  }
39
-
40
39
  for (k in r) {
41
40
  if (_has(k, r) && !_has(k, result)) {
42
41
  result[k] = r[k];
43
42
  }
44
43
  }
45
-
46
44
  return result;
47
45
  });
48
46
 
@@ -1,3 +1 @@
1
1
  export * from './NativeSelect';
2
- export * from './SingleSelect';
3
- export * from './MultiSelect';
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ export declare type State = {
3
+ isOpen: boolean;
4
+ onToggle: (state: boolean) => void;
5
+ };
6
+ declare type UseSidebarProps<T> = T & {
7
+ setIsOpen: (open: boolean) => void;
8
+ setOnToggle: (onToggle: (state: boolean) => void) => void;
9
+ };
10
+ declare type ProviderProps = {
11
+ children: ReactNode;
12
+ };
13
+ export declare const SideBarProvider: ({ children }: ProviderProps) => JSX.Element;
14
+ export declare const useSideBar: () => UseSidebarProps<State>;
15
+ export {};
@@ -0,0 +1,5 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export declare const SideBar: import("react").ForwardRefExoticComponent<{
3
+ open?: boolean;
4
+ onToggle?: (state: boolean) => void;
5
+ } & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ import type { ComponentToken } from '@equinor/eds-tokens';
2
+ export declare const sidebar: ComponentToken;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { ButtonProps } from '../../Button';
3
+ import { IconData } from '@equinor/eds-icons';
4
+ export declare type SideBarButtonProps = {
5
+ label: string;
6
+ icon: IconData;
7
+ } & Omit<ButtonProps, 'href' | 'type' | 'fullWidth' | 'variant'>;
8
+ export declare const SideBarButton: import("react").ForwardRefExoticComponent<{
9
+ label: string;
10
+ icon: IconData;
11
+ } & Omit<ButtonProps, "type" | "href" | "variant" | "fullWidth"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,4 @@
1
+ import { HTMLAttributes } from 'react';
2
+ declare type SideBarContentProps = HTMLAttributes<HTMLDivElement>;
3
+ export declare const SideBarContent: import("react").ForwardRefExoticComponent<SideBarContentProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ export {};
@@ -0,0 +1,4 @@
1
+ import { HTMLAttributes } from 'react';
2
+ declare type SideBarFooterProps = HTMLAttributes<HTMLDivElement>;
3
+ export declare const SideBarFooter: import("react").ForwardRefExoticComponent<SideBarFooterProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ export {};
@@ -0,0 +1,4 @@
1
+ import { HTMLAttributes } from 'react';
2
+ declare type SideBarToggleProps = HTMLAttributes<HTMLDivElement>;
3
+ export declare const SideBarToggle: import("react").ForwardRefExoticComponent<SideBarToggleProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ export {};
@@ -0,0 +1,18 @@
1
+ import { AnchorHTMLAttributes, ElementType } from 'react';
2
+ import { OverridableComponent } from '@equinor/eds-utils';
3
+ import { IconData } from '@equinor/eds-icons';
4
+ declare type OverridableSubComponent = OverridableComponent<SidebarLinkProps, HTMLAnchorElement> & {
5
+ displayName?: string;
6
+ };
7
+ export declare type SidebarLinkProps = {
8
+ /** Icon*/
9
+ icon: IconData;
10
+ /** Label text */
11
+ label: string;
12
+ /** Active/current url */
13
+ active?: boolean;
14
+ onClick?: () => void;
15
+ as?: ElementType;
16
+ } & AnchorHTMLAttributes<HTMLAnchorElement>;
17
+ export declare const SidebarLink: OverridableSubComponent;
18
+ export {};
@@ -0,0 +1,17 @@
1
+ import { SideBar as BaseSideBar } from './SideBar';
2
+ import { useSideBar } from './SideBar.context';
3
+ import { SidebarLink, SidebarLinkProps } from './SidebarLink';
4
+ import { SideBarContent } from './SideBarContent';
5
+ import { SideBarFooter } from './SideBarFooter';
6
+ import { SideBarToggle } from './SideBarToggle';
7
+ import { SideBarButton } from './SideBarButton';
8
+ declare type SidebarType = typeof BaseSideBar & {
9
+ Link: typeof SidebarLink;
10
+ Content: typeof SideBarContent;
11
+ Footer: typeof SideBarFooter;
12
+ Toggle: typeof SideBarToggle;
13
+ Button: typeof SideBarButton;
14
+ };
15
+ declare const SideBar: SidebarType;
16
+ export { SideBar, useSideBar };
17
+ export type { SidebarType, SidebarLinkProps };
@@ -35,3 +35,4 @@ export * from './components/EdsProvider';
35
35
  export * from './components/Paper';
36
36
  export * from './components/Autocomplete';
37
37
  export * from './components/InputWrapper';
38
+ export * from './components/SideBar';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/eds-core-react",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "description": "The React implementation of the Equinor Design System",
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -79,11 +79,11 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@babel/runtime": "^7.19.0",
82
- "@equinor/eds-icons": "0.15.0",
82
+ "@equinor/eds-icons": "0.16.0",
83
83
  "@equinor/eds-tokens": "0.9.0",
84
- "@equinor/eds-utils": "0.6.0",
84
+ "@equinor/eds-utils": "0.7.0",
85
85
  "@floating-ui/react-dom-interactions": "^0.10.1",
86
- "downshift": "^6.1.12"
86
+ "downshift": "^7.0.1"
87
87
  },
88
88
  "engines": {
89
89
  "pnpm": ">=4",
@@ -1,226 +0,0 @@
1
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
- import { forwardRef, useState } from 'react';
5
- import { useMultipleSelection, useCombobox } from 'downshift';
6
- import { Icon } from '../../Icon/index.js';
7
- import { CheckboxInput } from '../../Checkbox/Input.js';
8
- import { close, arrow_drop_up, arrow_drop_down } from '@equinor/eds-icons';
9
- import styled, { ThemeProvider } from 'styled-components';
10
- import { multiSelect } from '../Select.tokens.js';
11
- import { StyledListItem, Container, StyledInputWrapper, PaddedInput, StyledButton, StyledList } from '../commonStyles.js';
12
- import { spacingsTemplate, useToken } from '@equinor/eds-utils';
13
- import { jsx, jsxs } from 'react/jsx-runtime';
14
- import { useEds } from '../../EdsProvider/eds.context.js';
15
- import { Label } from '../../Label/Label.js';
16
-
17
- var _excluded = ["items", "initialSelectedItems", "label", "meta", "className", "disabled", "readOnly", "selectedOptions", "handleSelectedItemsChange"];
18
- var PaddedStyledListItem = styled(StyledListItem).withConfig({
19
- displayName: "MultiSelect__PaddedStyledListItem",
20
- componentId: "sc-69ntfg-0"
21
- })(["display:flex;align-items:center;", ""], function (_ref) {
22
- var theme = _ref.theme;
23
- return spacingsTemplate(theme.spacings);
24
- });
25
-
26
- /** @deprecated Use `<Autocomplete multiple />` instead. */
27
- var MultiSelect = /*#__PURE__*/forwardRef(function MultiSelect(_ref2, ref) {
28
- var _ref2$items = _ref2.items,
29
- items = _ref2$items === void 0 ? [] : _ref2$items,
30
- _ref2$initialSelected = _ref2.initialSelectedItems,
31
- initialSelectedItems = _ref2$initialSelected === void 0 ? [] : _ref2$initialSelected,
32
- label = _ref2.label,
33
- meta = _ref2.meta,
34
- className = _ref2.className,
35
- _ref2$disabled = _ref2.disabled,
36
- disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
37
- _ref2$readOnly = _ref2.readOnly,
38
- readOnly = _ref2$readOnly === void 0 ? false : _ref2$readOnly,
39
- selectedOptions = _ref2.selectedOptions,
40
- handleSelectedItemsChange = _ref2.handleSelectedItemsChange,
41
- other = _objectWithoutProperties(_ref2, _excluded);
42
-
43
- var isControlled = selectedOptions ? true : false;
44
-
45
- var _useState = useState(''),
46
- _useState2 = _slicedToArray(_useState, 2),
47
- inputValue = _useState2[0],
48
- setInputValue = _useState2[1];
49
-
50
- var _useEds = useEds(),
51
- density = _useEds.density;
52
-
53
- var token = useToken({
54
- density: density
55
- }, multiSelect);
56
- var multipleSelectionProps = {
57
- initialSelectedItems: initialSelectedItems,
58
- onSelectedItemsChange: function onSelectedItemsChange(changes) {
59
- if (handleSelectedItemsChange) {
60
- handleSelectedItemsChange(changes);
61
- }
62
- }
63
- };
64
-
65
- if (isControlled) {
66
- multipleSelectionProps = _objectSpread(_objectSpread({}, multipleSelectionProps), {}, {
67
- selectedItems: selectedOptions
68
- });
69
- }
70
-
71
- var _useMultipleSelection = useMultipleSelection(multipleSelectionProps),
72
- getDropdownProps = _useMultipleSelection.getDropdownProps,
73
- addSelectedItem = _useMultipleSelection.addSelectedItem,
74
- removeSelectedItem = _useMultipleSelection.removeSelectedItem,
75
- selectedItems = _useMultipleSelection.selectedItems,
76
- reset = _useMultipleSelection.reset;
77
-
78
- var getFilteredItems = function getFilteredItems(items) {
79
- return items.filter(function (item) {
80
- return item.toLowerCase().includes(inputValue.toLowerCase());
81
- });
82
- };
83
-
84
- var _useCombobox = useCombobox({
85
- inputValue: inputValue,
86
- selectedItem: null,
87
- items: getFilteredItems(items),
88
- stateReducer: function stateReducer(state, actionAndChanges) {
89
- var changes = actionAndChanges.changes,
90
- type = actionAndChanges.type;
91
-
92
- switch (type) {
93
- case useCombobox.stateChangeTypes.InputKeyDownEnter:
94
- case useCombobox.stateChangeTypes.ItemClick:
95
- return _objectSpread(_objectSpread({}, changes), {}, {
96
- isOpen: true,
97
- // keep menu open after selection.
98
- highlightedIndex: state.highlightedIndex,
99
- inputValue: '' // don't add the item string as input value at selection. */
100
-
101
- });
102
-
103
- case useCombobox.stateChangeTypes.InputBlur:
104
- return _objectSpread(_objectSpread({}, changes), {}, {
105
- inputValue: '' // don't add the item string as input value at selection.
106
-
107
- });
108
-
109
- default:
110
- return changes;
111
- }
112
- },
113
- onStateChange: function onStateChange(_ref3) {
114
- var inputValue = _ref3.inputValue,
115
- type = _ref3.type,
116
- selectedItem = _ref3.selectedItem;
117
-
118
- switch (type) {
119
- case useCombobox.stateChangeTypes.InputChange:
120
- setInputValue(inputValue);
121
- break;
122
-
123
- case useCombobox.stateChangeTypes.InputKeyDownEnter:
124
- case useCombobox.stateChangeTypes.ItemClick:
125
- case useCombobox.stateChangeTypes.InputBlur:
126
- setInputValue('');
127
-
128
- if (selectedItem) {
129
- selectedItems.includes(selectedItem) ? removeSelectedItem(selectedItem) : addSelectedItem(selectedItem);
130
- }
131
-
132
- break;
133
- }
134
- }
135
- }),
136
- isOpen = _useCombobox.isOpen,
137
- getToggleButtonProps = _useCombobox.getToggleButtonProps,
138
- getLabelProps = _useCombobox.getLabelProps,
139
- getMenuProps = _useCombobox.getMenuProps,
140
- getInputProps = _useCombobox.getInputProps,
141
- getComboboxProps = _useCombobox.getComboboxProps,
142
- highlightedIndex = _useCombobox.highlightedIndex,
143
- getItemProps = _useCombobox.getItemProps,
144
- openMenu = _useCombobox.openMenu;
145
-
146
- var placeholderText = items.length > 0 ? "".concat(selectedItems.length, "/").concat(items.length, " selected") : '';
147
-
148
- var openSelect = function openSelect() {
149
- if (!isOpen && !(disabled || readOnly)) {
150
- openMenu();
151
- }
152
- };
153
-
154
- var handleClear = function handleClear() {
155
- reset();
156
- setInputValue('');
157
- };
158
-
159
- return /*#__PURE__*/jsx(ThemeProvider, {
160
- theme: token,
161
- children: /*#__PURE__*/jsxs(Container, {
162
- className: className,
163
- ref: ref,
164
- children: [/*#__PURE__*/jsx(Label, _objectSpread(_objectSpread({}, getLabelProps()), {}, {
165
- label: label,
166
- meta: meta,
167
- disabled: disabled
168
- })), /*#__PURE__*/jsxs(StyledInputWrapper, _objectSpread(_objectSpread({}, getComboboxProps()), {}, {
169
- children: [/*#__PURE__*/jsx(PaddedInput, _objectSpread(_objectSpread({}, getInputProps( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
170
- getDropdownProps({
171
- preventKeyAction: isOpen,
172
- disabled: disabled
173
- }))), {}, {
174
- placeholder: placeholderText,
175
- readOnly: readOnly,
176
- onFocus: openSelect
177
- }, other)), Boolean(selectedItems.length || inputValue) && /*#__PURE__*/jsx(StyledButton, {
178
- variant: "ghost_icon",
179
- disabled: disabled || readOnly,
180
- "aria-label": 'clear options',
181
- title: "clear",
182
- onClick: handleClear,
183
- style: {
184
- right: 32
185
- },
186
- children: /*#__PURE__*/jsx(Icon, {
187
- data: close,
188
- size: 16
189
- })
190
- }), /*#__PURE__*/jsx(StyledButton, _objectSpread(_objectSpread({
191
- variant: "ghost_icon"
192
- }, getToggleButtonProps({
193
- disabled: disabled || readOnly
194
- })), {}, {
195
- "aria-label": 'toggle options',
196
- title: "open",
197
- children: /*#__PURE__*/jsx(Icon, {
198
- data: isOpen ? arrow_drop_up : arrow_drop_down
199
- })
200
- }))]
201
- })), /*#__PURE__*/jsx(StyledList, _objectSpread(_objectSpread({}, getMenuProps()), {}, {
202
- children: isOpen && getFilteredItems(items).map(function (item, index) {
203
- return /*#__PURE__*/jsxs(PaddedStyledListItem, _objectSpread(_objectSpread({
204
- highlighted: highlightedIndex === index ? 'true' : 'false'
205
- }, getItemProps({
206
- item: item,
207
- index: index,
208
- disabled: disabled
209
- })), {}, {
210
- children: [/*#__PURE__*/jsx(CheckboxInput, {
211
- checked: selectedItems.includes(item),
212
- value: item,
213
- onChange: function onChange() {
214
- return null;
215
- }
216
- }), /*#__PURE__*/jsx("span", {
217
- children: item
218
- })]
219
- }), "".concat(item));
220
- })
221
- }))]
222
- })
223
- });
224
- });
225
-
226
- export { MultiSelect };
@@ -1,92 +0,0 @@
1
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
- import { tokens } from '@equinor/eds-tokens';
3
- import mergeDeepRight from '../../node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepRight.js';
4
-
5
- var typography = tokens.typography,
6
- colors = tokens.colors,
7
- _tokens$shape = tokens.shape,
8
- straight = _tokens$shape.straight,
9
- borderRadius = _tokens$shape.corners.borderRadius,
10
- _tokens$spacings$comf = tokens.spacings.comfortable,
11
- spacingSmall = _tokens$spacings$comf.small,
12
- spacingMediumSmall = _tokens$spacings$comf.medium_small,
13
- spacingMedium = _tokens$spacings$comf.medium,
14
- spacingLarge = _tokens$spacings$comf.large,
15
- xx_small = _tokens$spacings$comf.xx_small,
16
- boxShadow = tokens.elevation.temporary_nav;
17
- var select = {
18
- background: colors.ui.background__default.rgba,
19
- boxShadow: boxShadow,
20
- minHeight: straight.minHeight,
21
- spacings: {
22
- top: spacingMedium,
23
- right: spacingLarge,
24
- bottom: spacingMedium,
25
- left: spacingLarge
26
- },
27
- typography: _objectSpread(_objectSpread({}, typography.navigation.menu_title), {}, {
28
- color: colors.text.static_icons__default.rgba
29
- }),
30
- border: {
31
- type: 'border',
32
- radius: borderRadius
33
- },
34
- states: {
35
- hover: {
36
- background: colors.ui.background__medium.rgba
37
- },
38
- active: {
39
- background: colors.interactive.primary__selected_highlight.rgba
40
- }
41
- },
42
- entities: {
43
- button: {
44
- height: '24px',
45
- spacings: {
46
- left: spacingSmall,
47
- right: spacingSmall,
48
- top: '6px'
49
- },
50
- typography: {
51
- color: colors.text.static_icons__tertiary.rgba
52
- }
53
- }
54
- },
55
- modes: {
56
- compact: {
57
- spacings: {
58
- left: spacingSmall,
59
- right: spacingSmall,
60
- top: spacingSmall,
61
- bottom: spacingSmall
62
- },
63
- entities: {
64
- button: {
65
- spacings: {
66
- left: spacingSmall,
67
- right: spacingSmall,
68
- top: '0'
69
- }
70
- }
71
- }
72
- }
73
- }
74
- };
75
- var multiSelect = mergeDeepRight(select, {
76
- spacings: {
77
- top: '0',
78
- bottom: '0',
79
- left: spacingMediumSmall,
80
- right: spacingLarge
81
- },
82
- modes: {
83
- compact: {
84
- spacings: {
85
- top: xx_small,
86
- bottom: '0'
87
- }
88
- }
89
- }
90
- });
91
-
92
- export { multiSelect, select };
@@ -1,160 +0,0 @@
1
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
- import { forwardRef, useState, useEffect } from 'react';
5
- import { useCombobox } from 'downshift';
6
- import styled, { ThemeProvider } from 'styled-components';
7
- import { Icon } from '../../Icon/index.js';
8
- import { close, arrow_drop_up, arrow_drop_down } from '@equinor/eds-icons';
9
- import { spacingsTemplate, useToken } from '@equinor/eds-utils';
10
- import { select } from '../Select.tokens.js';
11
- import { StyledListItem, Container, StyledInputWrapper, PaddedInput, StyledButton, StyledList } from '../commonStyles.js';
12
- import { jsx, jsxs } from 'react/jsx-runtime';
13
- import { useEds } from '../../EdsProvider/eds.context.js';
14
- import { Label } from '../../Label/Label.js';
15
-
16
- var _excluded = ["items", "label", "meta", "className", "disabled", "readOnly", "initialSelectedItem", "selectedOption", "handleSelectedItemChange"];
17
- var PaddedStyledListItem = styled(StyledListItem).withConfig({
18
- displayName: "SingleSelect__PaddedStyledListItem",
19
- componentId: "sc-rh1yw2-0"
20
- })(["", ""], function (_ref) {
21
- var theme = _ref.theme;
22
- return spacingsTemplate(theme.spacings);
23
- });
24
- /** @deprecated Use `<Autocomplete />` instead */
25
-
26
- var SingleSelect = /*#__PURE__*/forwardRef(function SingleSelect(_ref2, ref) {
27
- var _ref2$items = _ref2.items,
28
- items = _ref2$items === void 0 ? [] : _ref2$items,
29
- label = _ref2.label,
30
- meta = _ref2.meta,
31
- className = _ref2.className,
32
- _ref2$disabled = _ref2.disabled,
33
- disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
34
- _ref2$readOnly = _ref2.readOnly,
35
- readOnly = _ref2$readOnly === void 0 ? false : _ref2$readOnly,
36
- initialSelectedItem = _ref2.initialSelectedItem,
37
- selectedOption = _ref2.selectedOption,
38
- handleSelectedItemChange = _ref2.handleSelectedItemChange,
39
- other = _objectWithoutProperties(_ref2, _excluded);
40
-
41
- var _useState = useState(items),
42
- _useState2 = _slicedToArray(_useState, 2),
43
- inputItems = _useState2[0],
44
- setInputItems = _useState2[1];
45
-
46
- var isControlled = selectedOption !== undefined ? true : false;
47
-
48
- var _useEds = useEds(),
49
- density = _useEds.density;
50
-
51
- var token = useToken({
52
- density: density
53
- }, select);
54
- useEffect(function () {
55
- setInputItems(items);
56
- }, [items]);
57
- var comboboxProps = {
58
- items: inputItems,
59
- onSelectedItemChange: handleSelectedItemChange,
60
- onInputValueChange: function onInputValueChange(_ref3) {
61
- var inputValue = _ref3.inputValue;
62
- setInputItems(items.filter(function (item) {
63
- return item.toLowerCase().includes(inputValue.toLowerCase());
64
- }));
65
- },
66
- onIsOpenChange: function onIsOpenChange(_ref4) {
67
- var selectedItem = _ref4.selectedItem;
68
-
69
- if (inputItems.length === 1 && selectedItem === inputItems[0]) {
70
- setInputItems(items);
71
- }
72
- },
73
- initialSelectedItem: initialSelectedItem
74
- };
75
-
76
- if (isControlled) {
77
- comboboxProps = _objectSpread(_objectSpread({}, comboboxProps), {}, {
78
- selectedItem: selectedOption
79
- });
80
- }
81
-
82
- var _useCombobox = useCombobox(comboboxProps),
83
- isOpen = _useCombobox.isOpen,
84
- getToggleButtonProps = _useCombobox.getToggleButtonProps,
85
- getLabelProps = _useCombobox.getLabelProps,
86
- getMenuProps = _useCombobox.getMenuProps,
87
- getInputProps = _useCombobox.getInputProps,
88
- getComboboxProps = _useCombobox.getComboboxProps,
89
- highlightedIndex = _useCombobox.highlightedIndex,
90
- getItemProps = _useCombobox.getItemProps,
91
- openMenu = _useCombobox.openMenu,
92
- selectedItem = _useCombobox.selectedItem,
93
- reset = _useCombobox.reset,
94
- inputValue = _useCombobox.inputValue;
95
-
96
- var openSelect = function openSelect() {
97
- if (!isOpen && !(disabled || readOnly)) {
98
- openMenu();
99
- }
100
- };
101
-
102
- return /*#__PURE__*/jsx(ThemeProvider, {
103
- theme: token,
104
- children: /*#__PURE__*/jsxs(Container, {
105
- className: className,
106
- ref: ref,
107
- children: [/*#__PURE__*/jsx(Label, _objectSpread(_objectSpread({}, getLabelProps()), {}, {
108
- label: label,
109
- meta: meta,
110
- disabled: disabled
111
- })), /*#__PURE__*/jsxs(StyledInputWrapper, _objectSpread(_objectSpread({}, getComboboxProps()), {}, {
112
- children: [/*#__PURE__*/jsx(PaddedInput, _objectSpread(_objectSpread({}, getInputProps({
113
- disabled: disabled
114
- })), {}, {
115
- readOnly: readOnly,
116
- onFocus: openSelect,
117
- onClick: openSelect
118
- }, other)), Boolean(inputValue) && /*#__PURE__*/jsx(StyledButton, {
119
- variant: "ghost_icon",
120
- disabled: disabled || readOnly,
121
- "aria-label": 'clear options',
122
- title: "clear",
123
- onClick: reset,
124
- style: {
125
- right: 32
126
- },
127
- children: /*#__PURE__*/jsx(Icon, {
128
- data: close,
129
- size: 16
130
- })
131
- }), /*#__PURE__*/jsx(StyledButton, _objectSpread(_objectSpread({
132
- variant: "ghost_icon"
133
- }, getToggleButtonProps({
134
- disabled: disabled || readOnly
135
- })), {}, {
136
- "aria-label": 'toggle options',
137
- title: "open",
138
- children: /*#__PURE__*/jsx(Icon, {
139
- data: isOpen ? arrow_drop_up : arrow_drop_down
140
- })
141
- }))]
142
- })), /*#__PURE__*/jsx(StyledList, _objectSpread(_objectSpread({}, getMenuProps()), {}, {
143
- children: isOpen && inputItems.map(function (item, index) {
144
- return /*#__PURE__*/jsx(PaddedStyledListItem, _objectSpread(_objectSpread({
145
- highlighted: highlightedIndex === index ? 'true' : 'false',
146
- active: selectedItem === item ? 'true' : 'false'
147
- }, getItemProps({
148
- item: item,
149
- index: index,
150
- disabled: disabled
151
- })), {}, {
152
- children: item
153
- }), "".concat(item));
154
- })
155
- }))]
156
- })
157
- });
158
- });
159
-
160
- export { SingleSelect };
@@ -1,43 +0,0 @@
1
- import { List } from '../List/index.js';
2
- import { Button } from '../Button/index.js';
3
- import styled, { css } from 'styled-components';
4
- import { select } from './Select.tokens.js';
5
- import { bordersTemplate, typographyTemplate } from '@equinor/eds-utils';
6
- import { Input } from '../Input/Input.js';
7
-
8
- var buttonToken = select.entities.button;
9
- var Container = styled.div.withConfig({
10
- displayName: "commonStyles__Container",
11
- componentId: "sc-v98ajk-0"
12
- })(["position:relative;"]);
13
- var PaddedInput = styled(Input).withConfig({
14
- displayName: "commonStyles__PaddedInput",
15
- componentId: "sc-v98ajk-1"
16
- })(["padding-right:calc( ", " + ", " + ", " + 0px );"], buttonToken.height, buttonToken.spacings.left, buttonToken.spacings.right);
17
- var StyledList = styled(List).withConfig({
18
- displayName: "commonStyles__StyledList",
19
- componentId: "sc-v98ajk-2"
20
- })(["background-color:", ";box-shadow:", ";overflow-y:scroll;max-height:300px;padding:0;", " margin-top:4px;position:absolute;right:0;left:0;z-index:50;"], select.background, select.boxShadow, bordersTemplate(select.border));
21
- var StyledListItem = styled(List.Item).withConfig({
22
- displayName: "commonStyles__StyledListItem",
23
- componentId: "sc-v98ajk-3"
24
- })(function (_ref) {
25
- var theme = _ref.theme,
26
- highlighted = _ref.highlighted,
27
- active = _ref.active;
28
- var backgroundColor = highlighted === 'true' ? theme.states.hover.background : active === 'true' ? theme.states.active.background : theme.background;
29
- return css(["margin:0;list-style:none;background-color:", ";", ";cursor:", ";"], backgroundColor, typographyTemplate(theme.typography), highlighted === 'true' ? 'pointer' : 'default');
30
- });
31
- var StyledButton = styled(Button).withConfig({
32
- displayName: "commonStyles__StyledButton",
33
- componentId: "sc-v98ajk-4"
34
- })(function (_ref2) {
35
- var button = _ref2.theme.entities.button;
36
- return css(["position:absolute;right:", ";height:", ";width:", ";top:", ";color:", ";"], button.spacings.right, button.height, button.height, button.spacings.top, button.typography.color);
37
- });
38
- var StyledInputWrapper = styled.div.withConfig({
39
- displayName: "commonStyles__StyledInputWrapper",
40
- componentId: "sc-v98ajk-5"
41
- })(["position:relative;"]);
42
-
43
- export { Container, PaddedInput, StyledButton, StyledInputWrapper, StyledList, StyledListItem };