@equinor/eds-core-react 0.24.0 → 0.26.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/dist/eds-core-react.cjs.js +1820 -1633
  2. package/dist/esm/components/Autocomplete/Autocomplete.js +64 -70
  3. package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +1 -0
  4. package/dist/esm/components/Button/Button.js +1 -1
  5. package/dist/esm/components/Input/Input.js +129 -32
  6. package/dist/esm/components/Input/Input.tokens.js +84 -56
  7. package/dist/esm/components/InputWrapper/HelperText/HelperText.js +49 -0
  8. package/dist/esm/components/InputWrapper/HelperText/HelperText.token.js +28 -0
  9. package/dist/esm/components/InputWrapper/InputWrapper.js +68 -0
  10. package/dist/esm/components/InputWrapper/InputWrapper.tokens.js +164 -0
  11. package/dist/esm/components/Menu/Menu.js +2 -2
  12. package/dist/esm/components/Pagination/Pagination.js +3 -3
  13. package/dist/esm/components/Popover/Popover.js +71 -56
  14. package/dist/esm/components/Popover/Popover.tokens.js +17 -2
  15. package/dist/esm/components/Search/Search.js +60 -187
  16. package/dist/esm/components/SideBar/SideBar.context.js +53 -0
  17. package/dist/esm/components/SideBar/SideBar.js +79 -0
  18. package/dist/esm/components/SideBar/SideBar.tokens.js +110 -0
  19. package/dist/esm/components/SideBar/SideBarButton/index.js +86 -0
  20. package/dist/esm/components/SideBar/SideBarContent.js +27 -0
  21. package/dist/esm/components/SideBar/SideBarFooter.js +27 -0
  22. package/dist/esm/components/SideBar/SideBarToggle.js +57 -0
  23. package/dist/esm/components/SideBar/SidebarLink/index.js +106 -0
  24. package/dist/esm/components/SideBar/index.js +20 -0
  25. package/dist/esm/components/TextField/TextField.js +52 -46
  26. package/dist/esm/components/Textarea/Textarea.js +26 -43
  27. package/dist/esm/components/Tooltip/Tooltip.js +38 -37
  28. package/dist/esm/components/TopBar/Header.js +1 -1
  29. package/dist/esm/index.js +3 -0
  30. package/dist/types/components/Input/Input.d.ts +22 -15
  31. package/dist/types/components/InputWrapper/HelperText/HelperText.d.ts +18 -0
  32. package/dist/types/components/{TextField → InputWrapper}/HelperText/HelperText.token.d.ts +0 -5
  33. package/dist/types/components/InputWrapper/HelperText/index.d.ts +1 -0
  34. package/dist/types/components/InputWrapper/InputWrapper.d.ts +41 -0
  35. package/dist/types/components/InputWrapper/InputWrapper.tokens.d.ts +12 -0
  36. package/dist/types/components/InputWrapper/index.d.ts +2 -0
  37. package/dist/types/components/Popover/Popover.d.ts +10 -0
  38. package/dist/types/components/Search/Search.d.ts +2 -2
  39. package/dist/types/components/Select/commonStyles.d.ts +1 -7
  40. package/dist/types/components/SideBar/SideBar.context.d.ts +15 -0
  41. package/dist/types/components/SideBar/SideBar.d.ts +5 -0
  42. package/dist/types/components/SideBar/SideBar.tokens.d.ts +2 -0
  43. package/dist/types/components/SideBar/SideBarButton/index.d.ts +8 -0
  44. package/dist/types/components/SideBar/SideBarContent.d.ts +4 -0
  45. package/dist/types/components/SideBar/SideBarFooter.d.ts +4 -0
  46. package/dist/types/components/SideBar/SideBarToggle.d.ts +4 -0
  47. package/dist/types/components/SideBar/SidebarLink/index.d.ts +18 -0
  48. package/dist/types/components/SideBar/index.d.ts +17 -0
  49. package/dist/types/components/TextField/TextField.d.ts +15 -21
  50. package/dist/types/components/Textarea/Textarea.d.ts +3 -3
  51. package/dist/types/components/types.d.ts +1 -0
  52. package/dist/types/index.d.ts +2 -0
  53. package/package.json +3 -3
  54. package/dist/esm/components/Search/Search.tokens.js +0 -83
  55. package/dist/esm/components/TextField/Field.js +0 -151
  56. package/dist/esm/components/TextField/HelperText/HelperText.js +0 -89
  57. package/dist/esm/components/TextField/HelperText/HelperText.token.js +0 -45
  58. package/dist/esm/components/TextField/Icon/Icon.js +0 -65
  59. package/dist/esm/components/TextField/Icon/Icon.tokens.js +0 -42
  60. package/dist/esm/components/TextField/TextField.context.js +0 -48
  61. package/dist/esm/components/TextField/TextField.tokens.js +0 -120
  62. package/dist/types/components/Search/Search.tokens.d.ts +0 -4
  63. package/dist/types/components/TextField/Field.d.ts +0 -34
  64. package/dist/types/components/TextField/HelperText/HelperText.d.ts +0 -14
  65. package/dist/types/components/TextField/HelperText/index.d.ts +0 -1
  66. package/dist/types/components/TextField/Icon/Icon.d.ts +0 -13
  67. package/dist/types/components/TextField/Icon/Icon.tokens.d.ts +0 -14
  68. package/dist/types/components/TextField/Icon/index.d.ts +0 -1
  69. package/dist/types/components/TextField/TextField.context.d.ts +0 -17
  70. package/dist/types/components/TextField/TextField.tokens.d.ts +0 -10
  71. package/dist/types/components/TextField/types.d.ts +0 -6
@@ -2,7 +2,7 @@ import _typeof from '@babel/runtime/helpers/typeof';
2
2
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
4
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
5
- import { forwardRef, useRef, useState, useEffect, useMemo, useCallback, useLayoutEffect } from 'react';
5
+ import { forwardRef, useRef, useState, useEffect, useMemo, useCallback } from 'react';
6
6
  import { useMultipleSelection, useCombobox } from 'downshift';
7
7
  import styled, { css, ThemeProvider } from 'styled-components';
8
8
  import { Button } from '../Button/index.js';
@@ -13,43 +13,36 @@ import { multiSelect, selectTokens } from './Autocomplete.tokens.js';
13
13
  import { bordersTemplate, useToken } from '@equinor/eds-utils';
14
14
  import { AutocompleteOption } from './Option.js';
15
15
  import { useFloating, offset, flip, shift, size, useInteractions, autoUpdate, FloatingPortal } from '@floating-ui/react-dom-interactions';
16
- import { jsx, jsxs } from 'react/jsx-runtime';
17
- import { Input } from '../Input/Input.js';
16
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
18
17
  import { useEds } from '../EdsProvider/eds.context.js';
19
18
  import { Label } from '../Label/Label.js';
19
+ import { Input } from '../Input/Input.js';
20
20
 
21
21
  var _excluded = ["options", "label", "meta", "className", "style", "disabled", "readOnly", "hideClearButton", "onOptionsChange", "selectedOptions", "multiple", "initialSelectedOptions", "disablePortal", "optionDisabled", "optionsFilter", "autoWidth", "placeholder", "optionLabel", "clearSearchOnChange"];
22
22
  var Container = styled.div.withConfig({
23
23
  displayName: "Autocomplete__Container",
24
24
  componentId: "sc-yvif0e-0"
25
25
  })(["position:relative;"]);
26
- var StyledInput = styled(Input).withConfig({
27
- displayName: "Autocomplete__StyledInput",
28
- componentId: "sc-yvif0e-1"
29
- })(function (_ref) {
30
- var button = _ref.theme.entities.button;
31
- return css(["padding-right:calc( ", " + ", " + (", " * 2) );"], button.spacings.left, button.spacings.right, button.height);
32
- });
33
26
  var StyledList = styled(List).withConfig({
34
27
  displayName: "Autocomplete__StyledList",
35
- componentId: "sc-yvif0e-2"
36
- })(function (_ref2) {
37
- var theme = _ref2.theme;
28
+ componentId: "sc-yvif0e-1"
29
+ })(function (_ref) {
30
+ var theme = _ref.theme;
38
31
  return css(["background-color:", ";box-shadow:", ";", " overflow-y:auto;max-height:300px;padding:0;"], theme.background, theme.boxShadow, bordersTemplate(theme.border));
39
32
  });
40
33
  var StyledButton = styled(Button).withConfig({
41
34
  displayName: "Autocomplete__StyledButton",
42
- componentId: "sc-yvif0e-3"
43
- })(function (_ref3) {
44
- var button = _ref3.theme.entities.button;
45
- return css(["position:absolute;height:", ";width:", ";right:", ";top:", ";"], button.height, button.height, button.spacings.right, button.spacings.top);
35
+ componentId: "sc-yvif0e-2"
36
+ })(function (_ref2) {
37
+ var button = _ref2.theme.entities.button;
38
+ return css(["height:", ";width:", ";"], button.height, button.height);
46
39
  });
47
40
 
48
- var findIndex = function findIndex(_ref4) {
49
- var calc = _ref4.calc,
50
- index = _ref4.index,
51
- optionDisabled = _ref4.optionDisabled,
52
- availableItems = _ref4.availableItems;
41
+ var findIndex = function findIndex(_ref3) {
42
+ var calc = _ref3.calc,
43
+ index = _ref3.index,
44
+ optionDisabled = _ref3.optionDisabled,
45
+ availableItems = _ref3.availableItems;
53
46
  var nextItem = availableItems[index];
54
47
 
55
48
  if (optionDisabled(nextItem)) {
@@ -65,10 +58,10 @@ var findIndex = function findIndex(_ref4) {
65
58
  return index;
66
59
  };
67
60
 
68
- var findNextIndex = function findNextIndex(_ref5) {
69
- var index = _ref5.index,
70
- optionDisabled = _ref5.optionDisabled,
71
- availableItems = _ref5.availableItems;
61
+ var findNextIndex = function findNextIndex(_ref4) {
62
+ var index = _ref4.index,
63
+ optionDisabled = _ref4.optionDisabled,
64
+ availableItems = _ref4.availableItems;
72
65
  var options = {
73
66
  index: index,
74
67
  optionDisabled: optionDisabled,
@@ -89,10 +82,10 @@ var findNextIndex = function findNextIndex(_ref5) {
89
82
  return nextIndex;
90
83
  };
91
84
 
92
- var findPrevIndex = function findPrevIndex(_ref6) {
93
- var index = _ref6.index,
94
- optionDisabled = _ref6.optionDisabled,
95
- availableItems = _ref6.availableItems;
85
+ var findPrevIndex = function findPrevIndex(_ref5) {
86
+ var index = _ref5.index,
87
+ optionDisabled = _ref5.optionDisabled,
88
+ availableItems = _ref5.availableItems;
96
89
  var options = {
97
90
  index: index,
98
91
  optionDisabled: optionDisabled,
@@ -242,8 +235,8 @@ function AutocompleteInner(props, ref) {
242
235
  items: availableItems,
243
236
  initialSelectedItem: initialSelectedOptions[0],
244
237
  itemToString: getLabel,
245
- onInputValueChange: function onInputValueChange(_ref7) {
246
- var inputValue = _ref7.inputValue;
238
+ onInputValueChange: function onInputValueChange(_ref6) {
239
+ var inputValue = _ref6.inputValue;
247
240
  setAvailableItems(options.filter(function (item) {
248
241
  if (optionsFilter) {
249
242
  return optionsFilter(item, inputValue);
@@ -252,16 +245,16 @@ function AutocompleteInner(props, ref) {
252
245
  return getLabel(item).toLowerCase().includes(inputValue.toLowerCase());
253
246
  }));
254
247
  },
255
- onIsOpenChange: function onIsOpenChange(_ref8) {
256
- var selectedItem = _ref8.selectedItem;
248
+ onIsOpenChange: function onIsOpenChange(_ref7) {
249
+ var selectedItem = _ref7.selectedItem;
257
250
 
258
251
  if (!multiple && selectedItem !== null) {
259
252
  setAvailableItems(options);
260
253
  }
261
254
  },
262
- onStateChange: function onStateChange(_ref9) {
263
- var type = _ref9.type,
264
- selectedItem = _ref9.selectedItem;
255
+ onStateChange: function onStateChange(_ref8) {
256
+ var type = _ref8.type,
257
+ selectedItem = _ref8.selectedItem;
265
258
 
266
259
  switch (type) {
267
260
  case useCombobox.stateChangeTypes.InputChange:
@@ -417,10 +410,10 @@ function AutocompleteInner(props, ref) {
417
410
  middleware: [offset(4), flip(), shift({
418
411
  padding: 8
419
412
  }), size({
420
- apply: function apply(_ref10) {
421
- var rects = _ref10.rects,
422
- availableHeight = _ref10.availableHeight,
423
- elements = _ref10.elements;
413
+ apply: function apply(_ref9) {
414
+ var rects = _ref9.rects,
415
+ availableHeight = _ref9.availableHeight,
416
+ elements = _ref9.elements;
424
417
  var anchorWidth = "".concat(rects.reference.width, "px");
425
418
  Object.assign(elements.floating.style, {
426
419
  width: "".concat(autoWidth ? anchorWidth : 'auto'),
@@ -441,10 +434,10 @@ function AutocompleteInner(props, ref) {
441
434
  var _useInteractions = useInteractions([]),
442
435
  getFloatingProps = _useInteractions.getFloatingProps;
443
436
 
444
- useLayoutEffect(function () {
437
+ useEffect(function () {
445
438
  reference(anchorRef.current);
446
439
  }, [anchorRef, reference]);
447
- useLayoutEffect(function () {
440
+ useEffect(function () {
448
441
  if (refs.reference.current && refs.floating.current && isOpen) {
449
442
  return autoUpdate(refs.reference.current, refs.floating.current, update);
450
443
  }
@@ -467,7 +460,7 @@ function AutocompleteInner(props, ref) {
467
460
  position: strategy,
468
461
  top: y || 0,
469
462
  left: x || 0,
470
- zIndex: 1400
463
+ zIndex: 1500
471
464
  }
472
465
  })), {}, {
473
466
  children: /*#__PURE__*/jsx(StyledList, _objectSpread(_objectSpread({}, getMenuProps({
@@ -504,8 +497,8 @@ function AutocompleteInner(props, ref) {
504
497
  label: label,
505
498
  meta: meta,
506
499
  disabled: disabled
507
- })), /*#__PURE__*/jsxs(Container, _objectSpread(_objectSpread({}, getComboboxProps()), {}, {
508
- children: [/*#__PURE__*/jsx(StyledInput, _objectSpread(_objectSpread({}, getInputProps( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
500
+ })), /*#__PURE__*/jsx(Container, _objectSpread(_objectSpread({}, getComboboxProps()), {}, {
501
+ children: /*#__PURE__*/jsx(Input, _objectSpread(_objectSpread({}, getInputProps( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
509
502
  getDropdownProps({
510
503
  preventKeyAction: multiple ? isOpen : undefined,
511
504
  disabled: disabled,
@@ -519,31 +512,32 @@ function AutocompleteInner(props, ref) {
519
512
  placeholder: placeholderText,
520
513
  readOnly: readOnly,
521
514
  onFocus: openSelect,
522
- onClick: openSelect
523
- }, other)), showClearButton && /*#__PURE__*/jsx(StyledButton, {
524
- variant: "ghost_icon",
525
- disabled: disabled || readOnly,
526
- "aria-label": 'clear options',
527
- title: "clear",
528
- onClick: clear,
529
- style: {
530
- right: 32
531
- },
532
- children: /*#__PURE__*/jsx(Icon, {
533
- data: close,
534
- size: 16
535
- })
536
- }), /*#__PURE__*/jsx(StyledButton, _objectSpread(_objectSpread({
537
- variant: "ghost_icon"
538
- }, getToggleButtonProps({
539
- disabled: disabled || readOnly
540
- })), {}, {
541
- "aria-label": 'toggle options',
542
- title: "open",
543
- children: !readOnly && /*#__PURE__*/jsx(Icon, {
544
- data: isOpen ? arrow_drop_up : arrow_drop_down
515
+ onClick: openSelect,
516
+ rightAdornmentsWidth: 24 * 2 + 8 + 8,
517
+ rightAdornments: /*#__PURE__*/jsxs(Fragment, {
518
+ children: [showClearButton && /*#__PURE__*/jsx(StyledButton, {
519
+ variant: "ghost_icon",
520
+ disabled: disabled || readOnly,
521
+ "aria-label": 'clear options',
522
+ title: "clear",
523
+ onClick: clear,
524
+ children: /*#__PURE__*/jsx(Icon, {
525
+ data: close,
526
+ size: 16
527
+ })
528
+ }), !readOnly && /*#__PURE__*/jsx(StyledButton, _objectSpread(_objectSpread({
529
+ variant: "ghost_icon"
530
+ }, getToggleButtonProps({
531
+ disabled: disabled || readOnly
532
+ })), {}, {
533
+ "aria-label": 'toggle options',
534
+ title: "open",
535
+ children: /*#__PURE__*/jsx(Icon, {
536
+ data: isOpen ? arrow_drop_up : arrow_drop_down
537
+ })
538
+ }))]
545
539
  })
546
- }))]
540
+ }, other))
547
541
  })), disablePortal ? optionsList : /*#__PURE__*/jsx(FloatingPortal, {
548
542
  id: "eds-autocomplete-container",
549
543
  children: optionsList
@@ -47,6 +47,7 @@ var selectTokens = {
47
47
  entities: {
48
48
  button: {
49
49
  height: '24px',
50
+ width: '24px',
50
51
  spacings: {
51
52
  left: spacingSmall,
52
53
  right: spacingSmall,
@@ -60,7 +60,7 @@ var ButtonBase = styled.button.withConfig({
60
60
  var focus = states.focus,
61
61
  hover = states.hover,
62
62
  disabled = states.disabled;
63
- return css(["box-sizing:border-box;margin:0;padding:0;text-decoration:none;position:relative;cursor:pointer;display:inline-block;background:", ";height:", ";width:", ";svg{justify-self:center;}", " ", " ", " &::before{position:absolute;top:0;left:0;width:auto;min-height:auto;content:'';}&::after{position:absolute;top:-", ";left:-", ";width:", ";height:", ";content:'';}@media (hover:hover) and (pointer:fine){&:hover{background:", ";color:", ";", ";}}&:focus{outline:none;}&[data-focus-visible-added]:focus{", "}&:focus-visible{", "}&::-moz-focus-inner{border:0;}&:disabled{cursor:not-allowed;background:", ";", ";", ";@media (hover:hover) and (pointer:fine){&:hover{background:", ";}}}"], theme.background, theme.height, theme.width, spacingsTemplate(theme.spacings), bordersTemplate(theme.border), typographyTemplate(theme.typography), clickbound === null || clickbound === void 0 ? void 0 : (_clickbound$offset = clickbound.offset) === null || _clickbound$offset === void 0 ? void 0 : _clickbound$offset.top, clickbound === null || clickbound === void 0 ? void 0 : (_clickbound$offset2 = clickbound.offset) === null || _clickbound$offset2 === void 0 ? void 0 : _clickbound$offset2.left, clickbound === null || clickbound === void 0 ? void 0 : clickbound.width, clickbound === null || clickbound === void 0 ? void 0 : clickbound.height, hover.background, (_hover$typography = hover.typography) === null || _hover$typography === void 0 ? void 0 : _hover$typography.color, bordersTemplate(hover === null || hover === void 0 ? void 0 : hover.border), outlineTemplate(focus.outline), outlineTemplate(focus.outline), disabled.background, bordersTemplate(disabled.border), typographyTemplate(disabled.typography), disabled.background);
63
+ return css(["box-sizing:border-box;margin:0;padding:0;text-decoration:none;position:relative;cursor:pointer;display:inline-block;background:", ";height:", ";width:", ";svg{justify-self:center;}", " ", " ", " &::before{position:absolute;top:0;left:0;width:auto;min-height:auto;content:'';}&::after{position:absolute;top:-", ";left:-", ";width:", ";height:", ";content:'';}@media (hover:hover) and (pointer:fine){&:hover{background:", ";color:", ";", ";}}&:focus{outline:none;}&[data-focus-visible-added]:focus{", "}&:focus-visible{", "}&::-moz-focus-inner{border:0;}&:disabled,&[aria-disabled='true']{cursor:not-allowed;background:", ";", ";", ";@media (hover:hover) and (pointer:fine){&:hover{background:", ";}}}"], theme.background, theme.height, theme.width, spacingsTemplate(theme.spacings), bordersTemplate(theme.border), typographyTemplate(theme.typography), clickbound === null || clickbound === void 0 ? void 0 : (_clickbound$offset = clickbound.offset) === null || _clickbound$offset === void 0 ? void 0 : _clickbound$offset.top, clickbound === null || clickbound === void 0 ? void 0 : (_clickbound$offset2 = clickbound.offset) === null || _clickbound$offset2 === void 0 ? void 0 : _clickbound$offset2.left, clickbound === null || clickbound === void 0 ? void 0 : clickbound.width, clickbound === null || clickbound === void 0 ? void 0 : clickbound.height, hover.background, (_hover$typography = hover.typography) === null || _hover$typography === void 0 ? void 0 : _hover$typography.color, bordersTemplate(hover === null || hover === void 0 ? void 0 : hover.border), outlineTemplate(focus.outline), outlineTemplate(focus.outline), disabled.background, bordersTemplate(disabled.border), typographyTemplate(disabled.typography), disabled.background);
64
64
  });
65
65
  var Button = /*#__PURE__*/forwardRef(function Button(_ref2, ref) {
66
66
  var _ref2$color = _ref2.color,
@@ -1,55 +1,152 @@
1
1
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
3
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
- import { forwardRef } from 'react';
4
- import styled, { css, ThemeProvider } from 'styled-components';
4
+ import { forwardRef, useState, useCallback } from 'react';
5
+ import styled, { css } from 'styled-components';
6
+ import { outlineTemplate, spacingsTemplate, typographyMixin, useToken } from '@equinor/eds-utils';
5
7
  import { inputToken } from './Input.tokens.js';
6
- import { outlineTemplate, typographyTemplate, spacingsTemplate, useToken } from '@equinor/eds-utils';
7
- import { jsx } from 'react/jsx-runtime';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
9
  import { useEds } from '../EdsProvider/eds.context.js';
9
10
 
10
- var _excluded = ["variant", "disabled", "type"];
11
- var StyledInput = styled.input.withConfig({
12
- displayName: "Input__StyledInput",
11
+ var _excluded = ["variant", "disabled", "type", "leftAdornments", "rightAdornments", "readOnly", "className", "style", "leftAdornmentsProps", "rightAdornmentsProps", "leftAdornmentsWidth", "rightAdornmentsWidth"];
12
+ var Container = styled.div.withConfig({
13
+ displayName: "Input__Container",
13
14
  componentId: "sc-1ykv024-0"
14
15
  })(function (_ref) {
15
- var theme = _ref.theme;
16
- var _theme$states = theme.states,
17
- focusOutline = _theme$states.focus.outline,
18
- activeOutline = _theme$states.active.outline,
19
- disabled = _theme$states.disabled,
20
- readOnly = _theme$states.readOnly,
21
- boxShadow = theme.boxShadow;
22
- return css(["width:100%;box-sizing:border-box;margin:0;appearance:none;background:", ";border:none;height:", ";box-shadow:", ";", " ", " ", ";&::placeholder{color:", ";}&:active,&:focus{outline-offset:0;box-shadow:none;", "}&:disabled{color:", ";cursor:not-allowed;box-shadow:none;outline:none;&:focus,&:active{outline:none;}}&[readOnly]{background:", ";box-shadow:", ";}"], theme.background, theme.minHeight, boxShadow, outlineTemplate(activeOutline), typographyTemplate(theme.typography), spacingsTemplate(theme.spacings), theme.entities.placeholder.typography.color, outlineTemplate(focusOutline), disabled.typography.color, readOnly.background, readOnly.boxShadow);
16
+ var _entities$adornment, _entities$adornment$s;
17
+
18
+ var token = _ref.token,
19
+ disabled = _ref.disabled,
20
+ readOnly = _ref.readOnly;
21
+ var states = token.states,
22
+ entities = token.entities;
23
+ return css(["--eds-input-adornment-color:", ";--eds-input-color:", ";position:relative;height:", ";width:", ";display:flex;flex-direction:row;border:none;box-sizing:border-box;box-shadow:", ";background:", ";", " &:focus-within{--eds-input-adornment-color:", ";box-shadow:none;", "}", " ", ""], entities.adornment.typography.color, token.typography.color, token.height, token.width, token.boxShadow, token.background, outlineTemplate(token.outline), (_entities$adornment = entities.adornment) === null || _entities$adornment === void 0 ? void 0 : (_entities$adornment$s = _entities$adornment.states.focus) === null || _entities$adornment$s === void 0 ? void 0 : _entities$adornment$s.outline.color, outlineTemplate(states.focus.outline), disabled && css(["--eds-input-adornment-color:", ";--eds-input-color:", ";cursor:not-allowed;box-shadow:none;"], states.disabled.typography.color, states.disabled.typography.color), readOnly && css({
24
+ background: states.readOnly.background,
25
+ boxShadow: states.readOnly.boxShadow
26
+ }));
27
+ });
28
+ var StyledInput = styled.input.withConfig({
29
+ displayName: "Input__StyledInput",
30
+ componentId: "sc-1ykv024-1"
31
+ })(function (_ref2) {
32
+ var token = _ref2.token,
33
+ paddingLeft = _ref2.paddingLeft,
34
+ paddingRight = _ref2.paddingRight;
35
+ return css(["width:100%;border:none;background:transparent;", " ", " outline:none;padding-left:", ";padding-right:", ";&::placeholder{color:", ";}&:disabled{color:var(--eds-input-color);cursor:not-allowed;}"], spacingsTemplate(token.spacings), typographyMixin(token.typography), paddingLeft, paddingRight, token.entities.placeholder.typography.color);
36
+ });
37
+ var Adornments = styled.div.withConfig({
38
+ displayName: "Input__Adornments",
39
+ componentId: "sc-1ykv024-2"
40
+ })(function (_ref3) {
41
+ var token = _ref3.token;
42
+ return css(["position:absolute;top:", ";bottom:", ";display:flex;align-items:center;", " color:var(--eds-input-adornment-color);"], token.spacings.top, token.spacings.bottom, typographyMixin(token.entities.adornment.typography));
43
+ });
44
+ var LeftAdornments = styled(Adornments).withConfig({
45
+ displayName: "Input__LeftAdornments",
46
+ componentId: "sc-1ykv024-3"
47
+ })(function (_ref4) {
48
+ var token = _ref4.token;
49
+ return css(["left:0;padding-left:", ";"], token.entities.adornment.spacings.left);
23
50
  });
24
- var Input = /*#__PURE__*/forwardRef(function Input(_ref2, ref) {
25
- var _ref2$variant = _ref2.variant,
26
- variant = _ref2$variant === void 0 ? 'default' : _ref2$variant,
27
- _ref2$disabled = _ref2.disabled,
28
- disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
29
- _ref2$type = _ref2.type,
30
- type = _ref2$type === void 0 ? 'text' : _ref2$type,
31
- other = _objectWithoutProperties(_ref2, _excluded);
32
-
33
- var actualVariant = variant === 'default' ? 'input' : variant;
34
- var inputVariant = inputToken[actualVariant];
51
+ var RightAdornments = styled(Adornments).withConfig({
52
+ displayName: "Input__RightAdornments",
53
+ componentId: "sc-1ykv024-4"
54
+ })(function (_ref5) {
55
+ var token = _ref5.token;
56
+ return css(["right:0;padding-right:", ";"], token.entities.adornment.spacings.right);
57
+ });
58
+ var Input = /*#__PURE__*/forwardRef(function Input(_ref6, ref) {
59
+ var variant = _ref6.variant,
60
+ _ref6$disabled = _ref6.disabled,
61
+ disabled = _ref6$disabled === void 0 ? false : _ref6$disabled,
62
+ _ref6$type = _ref6.type,
63
+ type = _ref6$type === void 0 ? 'text' : _ref6$type,
64
+ leftAdornments = _ref6.leftAdornments,
65
+ rightAdornments = _ref6.rightAdornments,
66
+ readOnly = _ref6.readOnly,
67
+ className = _ref6.className,
68
+ style = _ref6.style,
69
+ leftAdornmentsProps = _ref6.leftAdornmentsProps,
70
+ rightAdornmentsProps = _ref6.rightAdornmentsProps,
71
+ leftAdornmentsWidth = _ref6.leftAdornmentsWidth,
72
+ rightAdornmentsWidth = _ref6.rightAdornmentsWidth,
73
+ other = _objectWithoutProperties(_ref6, _excluded);
74
+
75
+ var inputVariant = inputToken[variant] ? inputToken[variant] : inputToken.input;
35
76
 
36
77
  var _useEds = useEds(),
37
78
  density = _useEds.density;
38
79
 
39
- var token = useToken({
80
+ var _token = useToken({
40
81
  density: density
41
- }, inputVariant);
82
+ }, inputVariant)();
83
+
84
+ var _useState = useState(),
85
+ _useState2 = _slicedToArray(_useState, 2),
86
+ rightAdornmentsRef = _useState2[0],
87
+ setRightAdornmentsRef = _useState2[1];
88
+
89
+ var _useState3 = useState(),
90
+ _useState4 = _slicedToArray(_useState3, 2),
91
+ leftAdornmentsRef = _useState4[0],
92
+ setLeftAdornmentsRef = _useState4[1];
93
+
94
+ var token = useCallback(function () {
95
+ var _leftAdornmentsWidth = leftAdornmentsWidth || (leftAdornmentsRef ? leftAdornmentsRef.clientWidth : 0);
96
+
97
+ var _rightAdornmentsWidth = rightAdornmentsWidth || (rightAdornmentsRef ? rightAdornmentsRef.clientWidth : 0);
98
+
99
+ return _objectSpread(_objectSpread({}, _token), {}, {
100
+ spacings: _objectSpread(_objectSpread({}, _token.spacings), {}, {
101
+ left: "".concat(_leftAdornmentsWidth + parseInt(_token.spacings.left), "px"),
102
+ right: "".concat(_rightAdornmentsWidth + parseInt(_token.spacings.right), "px")
103
+ })
104
+ });
105
+ }, [leftAdornmentsWidth, leftAdornmentsRef, rightAdornmentsWidth, rightAdornmentsRef, _token])();
42
106
 
43
107
  var inputProps = _objectSpread({
44
108
  ref: ref,
45
109
  type: type,
46
- disabled: disabled
110
+ disabled: disabled,
111
+ readOnly: readOnly,
112
+ token: token,
113
+ style: {
114
+ resize: 'none'
115
+ }
47
116
  }, other);
48
117
 
49
- return /*#__PURE__*/jsx(ThemeProvider, {
50
- theme: token,
51
- children: /*#__PURE__*/jsx(StyledInput, _objectSpread({}, inputProps))
118
+ var containerProps = {
119
+ disabled: disabled,
120
+ readOnly: readOnly,
121
+ className: className,
122
+ style: style,
123
+ token: token
124
+ };
125
+
126
+ var _leftAdornmentProps = _objectSpread(_objectSpread({}, leftAdornmentsProps), {}, {
127
+ ref: setLeftAdornmentsRef,
128
+ token: token
129
+ });
130
+
131
+ var _rightAdornmentProps = _objectSpread(_objectSpread({}, rightAdornmentsProps), {}, {
132
+ ref: setRightAdornmentsRef,
133
+ token: token
52
134
  });
135
+
136
+ return (
137
+ /*#__PURE__*/
138
+ // Not using <ThemeProvider> because of cascading styling messing with adornments
139
+ jsxs(Container, _objectSpread(_objectSpread({}, containerProps), {}, {
140
+ children: [leftAdornments ? /*#__PURE__*/jsx(LeftAdornments, _objectSpread(_objectSpread({}, _leftAdornmentProps), {}, {
141
+ children: leftAdornments
142
+ })) : null, /*#__PURE__*/jsx(StyledInput, _objectSpread({
143
+ paddingLeft: token.spacings.left,
144
+ paddingRight: token.spacings.right
145
+ }, inputProps)), rightAdornments ? /*#__PURE__*/jsx(RightAdornments, _objectSpread(_objectSpread({}, _rightAdornmentProps), {}, {
146
+ children: rightAdornments
147
+ })) : null]
148
+ }))
149
+ );
53
150
  });
54
151
 
55
152
  export { Input };
@@ -22,7 +22,8 @@ var _tokens$colors = tokens$1.colors,
22
22
  typography = tokens$1.typography,
23
23
  shape = tokens$1.shape;
24
24
  var input = {
25
- minHeight: shape.straight.minHeight,
25
+ height: shape.straight.minHeight,
26
+ width: '100%',
26
27
  background: background,
27
28
  spacings: {
28
29
  left: small,
@@ -33,11 +34,34 @@ var input = {
33
34
  typography: _objectSpread(_objectSpread({}, typography.input.text), {}, {
34
35
  color: static_icons__default.rgba
35
36
  }),
37
+ outline: {
38
+ type: 'outline',
39
+ color: 'transparent',
40
+ width: '1px',
41
+ style: 'solid',
42
+ offset: '0px'
43
+ },
36
44
  entities: {
37
45
  placeholder: {
38
46
  typography: {
39
47
  color: static_icons__tertiary.rgba
40
48
  }
49
+ },
50
+ adornment: {
51
+ typography: _objectSpread(_objectSpread({}, typography.input.label), {}, {
52
+ color: static_icons__tertiary.rgba
53
+ }),
54
+ spacings: {
55
+ left: small,
56
+ right: small
57
+ },
58
+ states: {
59
+ disabled: {
60
+ typography: {
61
+ color: disabled__text.rgba
62
+ }
63
+ }
64
+ }
41
65
  }
42
66
  },
43
67
  states: {
@@ -50,15 +74,7 @@ var input = {
50
74
  background: 'transparent',
51
75
  boxShadow: 'none'
52
76
  },
53
- active: {
54
- outline: {
55
- type: 'outline',
56
- color: 'transparent',
57
- width: '1px',
58
- style: 'solid',
59
- offset: '0px'
60
- }
61
- },
77
+ active: {},
62
78
  focus: {
63
79
  outline: {
64
80
  type: 'outline',
@@ -72,7 +88,7 @@ var input = {
72
88
  boxShadow: 'inset 0px -1px 0px 0px ' + static_icons__tertiary.rgba,
73
89
  modes: {
74
90
  compact: {
75
- minHeight: shape._modes.compact.straight.minHeight,
91
+ height: shape._modes.compact.straight.minHeight,
76
92
  spacings: {
77
93
  left: x_small,
78
94
  right: x_small,
@@ -83,70 +99,82 @@ var input = {
83
99
  }
84
100
  };
85
101
  var error = mergeDeepRight(input, {
86
- boxShadow: 'inset 0px -1px 0px 0px transparent',
102
+ boxShadow: 'none',
103
+ outline: {
104
+ color: danger__resting.rgba
105
+ },
87
106
  states: {
88
- active: {
89
- outline: {
90
- type: 'outline',
91
- color: danger__resting.rgba,
92
- width: '1px',
93
- style: 'solid',
94
- offset: '0px'
95
- }
96
- },
97
107
  focus: {
98
108
  outline: {
99
- type: 'outline',
100
- width: '2px',
101
- color: danger__hover.rgba,
102
- style: 'solid',
103
- offset: '0px'
109
+ color: danger__hover.rgba
110
+ }
111
+ }
112
+ },
113
+ entities: {
114
+ adornment: {
115
+ typography: _objectSpread(_objectSpread({}, typography.input.label), {}, {
116
+ color: danger__resting.rgba
117
+ }),
118
+ states: {
119
+ focus: {
120
+ outline: {
121
+ color: danger__hover.rgba
122
+ }
123
+ }
104
124
  }
105
125
  }
106
126
  }
107
127
  });
108
128
  var warning = mergeDeepRight(input, {
109
- boxShadow: 'inset 0px -1px 0px 0px transparent',
129
+ boxShadow: 'none',
130
+ outline: {
131
+ color: warning__resting.rgba
132
+ },
110
133
  states: {
111
- active: {
112
- outline: {
113
- type: 'outline',
114
- color: warning__resting.rgba,
115
- width: '1px',
116
- style: 'solid',
117
- offset: '0px'
118
- }
119
- },
120
134
  focus: {
121
135
  outline: {
122
- type: 'outline',
123
- width: '2px',
124
- color: warning__hover.rgba,
125
- style: 'solid',
126
- offset: '0px'
136
+ color: warning__hover.rgba
137
+ }
138
+ }
139
+ },
140
+ entities: {
141
+ adornment: {
142
+ typography: _objectSpread(_objectSpread({}, typography.input.label), {}, {
143
+ color: warning__resting.rgba
144
+ }),
145
+ states: {
146
+ focus: {
147
+ outline: {
148
+ color: warning__hover.rgba
149
+ }
150
+ }
127
151
  }
128
152
  }
129
153
  }
130
154
  });
131
155
  var success = mergeDeepRight(input, {
132
- boxShadow: 'inset 0px -1px 0px 0px transparent',
156
+ boxShadow: 'none',
157
+ outline: {
158
+ color: success__resting.rgba
159
+ },
133
160
  states: {
134
- active: {
135
- outline: {
136
- type: 'outline',
137
- color: success__resting.rgba,
138
- width: '1px',
139
- style: 'solid',
140
- offset: '0px'
141
- }
142
- },
143
161
  focus: {
144
162
  outline: {
145
- type: 'outline',
146
- width: '2px',
147
- color: success__hover.rgba,
148
- style: 'solid',
149
- offset: '0px'
163
+ color: success__hover.rgba
164
+ }
165
+ }
166
+ },
167
+ entities: {
168
+ adornment: {
169
+ typography: _objectSpread(_objectSpread({}, typography.input.label), {}, {
170
+ color: success__resting.rgba
171
+ }),
172
+ states: {
173
+ focus: {
174
+ outline: {
175
+ color: success__hover.rgba
176
+ }
177
+ }
150
178
  }
151
179
  }
152
180
  }