@atlaskit/react-select 2.1.0 → 2.2.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 (109) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/emotion/components/containers.js +111 -0
  3. package/dist/cjs/emotion/components/control.js +110 -0
  4. package/dist/cjs/emotion/components/group.js +71 -0
  5. package/dist/cjs/emotion/components/index.js +52 -0
  6. package/dist/cjs/emotion/components/indicators.js +137 -0
  7. package/dist/cjs/emotion/components/input.js +94 -0
  8. package/dist/cjs/emotion/components/internal/a11y-text.js +36 -0
  9. package/dist/cjs/emotion/components/internal/dummy-input.js +44 -0
  10. package/dist/cjs/emotion/components/internal/index.js +34 -0
  11. package/dist/cjs/emotion/components/internal/notify-open-layer-observer.js +21 -0
  12. package/dist/cjs/emotion/components/internal/required-input.js +43 -0
  13. package/dist/cjs/emotion/components/internal/scroll-manager.js +57 -0
  14. package/dist/cjs/emotion/components/internal/use-scroll-capture.js +132 -0
  15. package/dist/cjs/emotion/components/internal/use-scroll-lock.js +149 -0
  16. package/dist/cjs/emotion/components/live-region.js +182 -0
  17. package/dist/cjs/emotion/components/menu.js +456 -0
  18. package/dist/cjs/emotion/components/multi-value.js +224 -0
  19. package/dist/cjs/emotion/components/option.js +82 -0
  20. package/dist/cjs/emotion/components/placeholder.js +34 -0
  21. package/dist/cjs/emotion/components/single-value.js +40 -0
  22. package/dist/cjs/select.js +11 -8
  23. package/dist/es2019/emotion/components/containers.js +109 -0
  24. package/dist/es2019/emotion/components/control.js +107 -0
  25. package/dist/es2019/emotion/components/group.js +59 -0
  26. package/dist/es2019/emotion/components/index.js +41 -0
  27. package/dist/es2019/emotion/components/indicators.js +128 -0
  28. package/dist/es2019/emotion/components/input.js +86 -0
  29. package/dist/es2019/emotion/components/internal/a11y-text.js +27 -0
  30. package/dist/es2019/emotion/components/internal/dummy-input.js +37 -0
  31. package/dist/es2019/emotion/components/internal/index.js +4 -0
  32. package/dist/es2019/emotion/components/internal/notify-open-layer-observer.js +16 -0
  33. package/dist/es2019/emotion/components/internal/required-input.js +35 -0
  34. package/dist/es2019/emotion/components/internal/scroll-manager.js +49 -0
  35. package/dist/es2019/emotion/components/internal/use-scroll-capture.js +128 -0
  36. package/dist/es2019/emotion/components/internal/use-scroll-lock.js +143 -0
  37. package/dist/es2019/emotion/components/live-region.js +178 -0
  38. package/dist/es2019/emotion/components/menu.js +450 -0
  39. package/dist/es2019/emotion/components/multi-value.js +227 -0
  40. package/dist/es2019/emotion/components/option.js +78 -0
  41. package/dist/es2019/emotion/components/placeholder.js +28 -0
  42. package/dist/es2019/emotion/components/single-value.js +34 -0
  43. package/dist/es2019/select.js +11 -8
  44. package/dist/esm/emotion/components/containers.js +105 -0
  45. package/dist/esm/emotion/components/control.js +103 -0
  46. package/dist/esm/emotion/components/group.js +65 -0
  47. package/dist/esm/emotion/components/index.js +43 -0
  48. package/dist/esm/emotion/components/indicators.js +132 -0
  49. package/dist/esm/emotion/components/input.js +89 -0
  50. package/dist/esm/emotion/components/internal/a11y-text.js +29 -0
  51. package/dist/esm/emotion/components/internal/dummy-input.js +38 -0
  52. package/dist/esm/emotion/components/internal/index.js +4 -0
  53. package/dist/esm/emotion/components/internal/notify-open-layer-observer.js +15 -0
  54. package/dist/esm/emotion/components/internal/required-input.js +36 -0
  55. package/dist/esm/emotion/components/internal/scroll-manager.js +49 -0
  56. package/dist/esm/emotion/components/internal/use-scroll-capture.js +126 -0
  57. package/dist/esm/emotion/components/internal/use-scroll-lock.js +143 -0
  58. package/dist/esm/emotion/components/live-region.js +175 -0
  59. package/dist/esm/emotion/components/menu.js +454 -0
  60. package/dist/esm/emotion/components/multi-value.js +217 -0
  61. package/dist/esm/emotion/components/option.js +75 -0
  62. package/dist/esm/emotion/components/placeholder.js +27 -0
  63. package/dist/esm/emotion/components/single-value.js +33 -0
  64. package/dist/esm/select.js +11 -8
  65. package/dist/types/components/internal/notify-open-layer-observer.d.ts +4 -2
  66. package/dist/types/emotion/components/containers.d.ts +54 -0
  67. package/dist/types/emotion/components/control.d.ts +42 -0
  68. package/dist/types/emotion/components/group.d.ts +52 -0
  69. package/dist/types/emotion/components/index.d.ts +67 -0
  70. package/dist/types/emotion/components/indicators.d.ts +73 -0
  71. package/dist/types/emotion/components/input.d.ts +37 -0
  72. package/dist/types/emotion/components/internal/a11y-text.d.ts +8 -0
  73. package/dist/types/emotion/components/internal/dummy-input.d.ts +9 -0
  74. package/dist/types/emotion/components/internal/index.d.ts +4 -0
  75. package/dist/types/emotion/components/internal/notify-open-layer-observer.d.ts +11 -0
  76. package/dist/types/emotion/components/internal/required-input.d.ts +10 -0
  77. package/dist/types/emotion/components/internal/scroll-manager.d.ts +17 -0
  78. package/dist/types/emotion/components/internal/use-scroll-capture.d.ts +12 -0
  79. package/dist/types/emotion/components/internal/use-scroll-lock.d.ts +9 -0
  80. package/dist/types/emotion/components/live-region.d.ts +25 -0
  81. package/dist/types/emotion/components/menu.d.ts +116 -0
  82. package/dist/types/emotion/components/multi-value.d.ts +47 -0
  83. package/dist/types/emotion/components/option.d.ts +49 -0
  84. package/dist/types/emotion/components/placeholder.d.ts +22 -0
  85. package/dist/types/emotion/components/single-value.d.ts +28 -0
  86. package/dist/types/select.d.ts +7 -4
  87. package/dist/types-ts4.5/components/internal/notify-open-layer-observer.d.ts +4 -2
  88. package/dist/types-ts4.5/emotion/components/containers.d.ts +54 -0
  89. package/dist/types-ts4.5/emotion/components/control.d.ts +42 -0
  90. package/dist/types-ts4.5/emotion/components/group.d.ts +52 -0
  91. package/dist/types-ts4.5/emotion/components/index.d.ts +67 -0
  92. package/dist/types-ts4.5/emotion/components/indicators.d.ts +73 -0
  93. package/dist/types-ts4.5/emotion/components/input.d.ts +37 -0
  94. package/dist/types-ts4.5/emotion/components/internal/a11y-text.d.ts +8 -0
  95. package/dist/types-ts4.5/emotion/components/internal/dummy-input.d.ts +9 -0
  96. package/dist/types-ts4.5/emotion/components/internal/index.d.ts +4 -0
  97. package/dist/types-ts4.5/emotion/components/internal/notify-open-layer-observer.d.ts +11 -0
  98. package/dist/types-ts4.5/emotion/components/internal/required-input.d.ts +10 -0
  99. package/dist/types-ts4.5/emotion/components/internal/scroll-manager.d.ts +17 -0
  100. package/dist/types-ts4.5/emotion/components/internal/use-scroll-capture.d.ts +12 -0
  101. package/dist/types-ts4.5/emotion/components/internal/use-scroll-lock.d.ts +9 -0
  102. package/dist/types-ts4.5/emotion/components/live-region.d.ts +25 -0
  103. package/dist/types-ts4.5/emotion/components/menu.d.ts +116 -0
  104. package/dist/types-ts4.5/emotion/components/multi-value.d.ts +47 -0
  105. package/dist/types-ts4.5/emotion/components/option.d.ts +49 -0
  106. package/dist/types-ts4.5/emotion/components/placeholder.d.ts +22 -0
  107. package/dist/types-ts4.5/emotion/components/single-value.d.ts +28 -0
  108. package/dist/types-ts4.5/select.d.ts +7 -4
  109. package/package.json +3 -3
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.optionCSS = exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = require("@emotion/react");
10
+ var _utils = require("../../utils");
11
+ /**
12
+ * @jsxRuntime classic
13
+ * @jsx jsx
14
+ */
15
+
16
+ var optionCSS = exports.optionCSS = function optionCSS(_ref) {
17
+ var isDisabled = _ref.isDisabled,
18
+ isFocused = _ref.isFocused,
19
+ isSelected = _ref.isSelected;
20
+ var color = "var(--ds-text, #172B4D)";
21
+ if (isDisabled) {
22
+ color = "var(--ds-text-disabled, #091E424F)";
23
+ } else if (isSelected) {
24
+ color = "var(--ds-text-selected, #0C66E4)";
25
+ }
26
+ var boxShadow;
27
+ var backgroundColor;
28
+ if (isDisabled) {
29
+ backgroundColor = undefined;
30
+ } else if (isSelected && isFocused) {
31
+ backgroundColor = "var(--ds-background-selected-hovered, #CCE0FF)";
32
+ } else if (isSelected) {
33
+ backgroundColor = "var(--ds-background-selected, #E9F2FF)";
34
+ } else if (isFocused) {
35
+ backgroundColor = "var(--ds-background-neutral-subtle-hovered, #091E420F)";
36
+ }
37
+ if (!isDisabled && (isFocused || isSelected)) {
38
+ boxShadow = "inset 2px 0px 0px ".concat("var(--ds-border-selected, #0C66E4)");
39
+ }
40
+ var cursor = isDisabled ? 'not-allowed' : 'default';
41
+ return {
42
+ label: 'option',
43
+ display: 'block',
44
+ // eslint-disable-next-line @atlaskit/design-system/use-tokens-typography
45
+ fontSize: 'inherit',
46
+ width: '100%',
47
+ userSelect: 'none',
48
+ WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',
49
+ padding: "var(--ds-space-075, 6px)".concat(" ", "var(--ds-space-150, 12px)"),
50
+ backgroundColor: backgroundColor,
51
+ color: color,
52
+ cursor: cursor,
53
+ boxShadow: boxShadow,
54
+ ':active': {
55
+ backgroundColor: !isDisabled ? isSelected ? "var(--ds-background-selected-pressed, #85B8FF)" : "var(--ds-background-neutral-subtle-pressed, #091E4224)" : undefined
56
+ },
57
+ '@media screen and (-ms-high-contrast: active)': {
58
+ borderLeft: !isDisabled && (isFocused || isSelected) ? '2px solid transparent' : ''
59
+ }
60
+ };
61
+ };
62
+ var Option = function Option(props) {
63
+ var children = props.children,
64
+ isDisabled = props.isDisabled,
65
+ isFocused = props.isFocused,
66
+ isSelected = props.isSelected,
67
+ innerRef = props.innerRef,
68
+ innerProps = props.innerProps;
69
+ return (0, _react.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'option', {
70
+ option: true,
71
+ 'option--is-disabled': isDisabled,
72
+ 'option--is-focused': isFocused,
73
+ 'option--is-selected': isSelected
74
+ }), {
75
+ ref: innerRef
76
+ }, innerProps, {
77
+ tabIndex: -1
78
+ }), children);
79
+ };
80
+
81
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
82
+ var _default = exports.default = Option;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.placeholderCSS = exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = require("@emotion/react");
10
+ var _utils = require("../../utils");
11
+ /**
12
+ * @jsxRuntime classic
13
+ * @jsx jsx
14
+ */
15
+
16
+ var placeholderCSS = exports.placeholderCSS = function placeholderCSS(_ref) {
17
+ var isDisabled = _ref.isDisabled;
18
+ return {
19
+ label: 'placeholder',
20
+ gridArea: '1 / 1 / 2 / 3',
21
+ margin: "0 ".concat("var(--ds-space-025, 2px)"),
22
+ color: isDisabled ? "var(--ds-text-disabled, #091E424F)" : "var(--ds-text-subtlest, #626F86)"
23
+ };
24
+ };
25
+ var Placeholder = function Placeholder(props) {
26
+ var children = props.children,
27
+ innerProps = props.innerProps;
28
+ return (0, _react.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'placeholder', {
29
+ placeholder: true
30
+ }), innerProps), children);
31
+ };
32
+
33
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
34
+ var _default = exports.default = Placeholder;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.css = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = require("@emotion/react");
10
+ var _utils = require("../../utils");
11
+ /**
12
+ * @jsxRuntime classic
13
+ * @jsx jsx
14
+ */
15
+
16
+ var css = exports.css = function css(_ref) {
17
+ var isDisabled = _ref.isDisabled;
18
+ return {
19
+ label: 'singleValue',
20
+ gridArea: '1 / 1 / 2 / 3',
21
+ maxWidth: '100%',
22
+ overflow: 'hidden',
23
+ textOverflow: 'ellipsis',
24
+ whiteSpace: 'nowrap',
25
+ margin: "0 ".concat("var(--ds-space-025, 2px)"),
26
+ color: isDisabled ? "var(--ds-text-disabled, #091E424F)" : "var(--ds-text, #172B4D)"
27
+ };
28
+ };
29
+ var SingleValue = function SingleValue(props) {
30
+ var children = props.children,
31
+ isDisabled = props.isDisabled,
32
+ innerProps = props.innerProps;
33
+ return (0, _react.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'singleValue', {
34
+ 'single-value': true,
35
+ 'single-value--is-disabled': isDisabled
36
+ }), innerProps), children);
37
+ };
38
+
39
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
40
+ var _default = exports.default = SingleValue;
@@ -80,7 +80,8 @@ var defaultProps = exports.defaultProps = {
80
80
  },
81
81
  styles: {},
82
82
  tabIndex: 0,
83
- tabSelectsValue: true
83
+ tabSelectsValue: true,
84
+ UNSAFE_is_experimental_generic: false
84
85
  };
85
86
  function toCategorizedOption(props, option, selectValue, index) {
86
87
  var isDisabled = _isOptionDisabled(props, option, selectValue);
@@ -1269,14 +1270,14 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
1269
1270
  'aria-errormessage': this.props['aria-errormessage'],
1270
1271
  'aria-expanded': menuIsOpen,
1271
1272
  // TODO: aria-haspopup is implied as listbox with role="combobox" and was deprecated for aria 1.2, we still might need to keep it for back compat
1272
- 'aria-haspopup': 'listbox',
1273
+ 'aria-haspopup': this.props['UNSAFE_is_experimental_generic'] ? 'dialog' : 'listbox',
1273
1274
  'aria-describedby': this.props['aria-describedby'] || descriptionId,
1274
1275
  'aria-invalid': this.props['aria-invalid'] || isInvalid,
1275
1276
  'aria-label': this.props['aria-label'] || label,
1276
1277
  'aria-labelledby': this.props['aria-labelledby'] || labelId,
1277
1278
  'aria-required': required || isRequired,
1278
1279
  role: 'combobox',
1279
- 'aria-activedescendant': this.state.focusedOptionId || this.state.focusedValueId || undefined
1280
+ 'aria-activedescendant': this.props['UNSAFE_is_experimental_generic'] ? undefined : this.state.focusedOptionId || this.state.focusedValueId || undefined
1280
1281
  }, menuIsOpen && {
1281
1282
  'aria-controls': this.getElementId('listbox')
1282
1283
  }), !isSearchable && {
@@ -1543,8 +1544,8 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
1543
1544
  onClick: onSelect,
1544
1545
  onMouseMove: onHover,
1545
1546
  onMouseOver: onHover,
1546
- role: 'option',
1547
- 'aria-selected': isSelected,
1547
+ role: _this4.props['UNSAFE_is_experimental_generic'] ? 'listitem' : 'option',
1548
+ 'aria-selected': _this4.props['UNSAFE_is_experimental_generic'] ? undefined : isSelected,
1548
1549
  // We don't want aria-disabled if it's false. It's just noisy.
1549
1550
  'aria-disabled': !isDisabled && (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? undefined : isDisabled,
1550
1551
  'aria-describedby': (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? headingId : undefined
@@ -1669,8 +1670,8 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
1669
1670
  scrollTargetRef(instance);
1670
1671
  },
1671
1672
  innerProps: _objectSpread(_objectSpread({
1672
- role: 'listbox',
1673
- 'aria-multiselectable': (_this4.isVoiceOver || !commonProps.isMulti) && (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? undefined : commonProps.isMulti,
1673
+ role: _this4.props['UNSAFE_is_experimental_generic'] ? 'dialog' : 'listbox',
1674
+ 'aria-multiselectable': (_this4.isVoiceOver || !commonProps.isMulti) && (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') || _this4.props['UNSAFE_is_experimental_generic'] ? undefined : commonProps.isMulti,
1674
1675
  id: _this4.getElementId('listbox')
1675
1676
  }, testId && {
1676
1677
  'data-testid': "".concat(testId, "-select--listbox")
@@ -1678,7 +1679,9 @@ var Select = exports.default = /*#__PURE__*/function (_Component) {
1678
1679
  isLoading: isLoading,
1679
1680
  maxHeight: maxHeight,
1680
1681
  focusedOption: focusedOption
1681
- }), menuUI);
1682
+ }), _this4.props['UNSAFE_is_experimental_generic'] ? /*#__PURE__*/_react.default.createElement("div", {
1683
+ role: "list"
1684
+ }, menuUI) : menuUI);
1682
1685
  }));
1683
1686
  });
1684
1687
 
@@ -0,0 +1,109 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
6
+
7
+ import { jsx } from '@emotion/react';
8
+ import { fg } from '@atlaskit/platform-feature-flags';
9
+ import { media } from '@atlaskit/primitives';
10
+ import { getStyleProps } from '../../utils';
11
+
12
+ // ==============================
13
+ // Root Container
14
+ // ==============================
15
+
16
+ export const containerCSS = ({
17
+ isDisabled,
18
+ isRtl
19
+ }) => ({
20
+ label: 'container',
21
+ direction: isRtl ? 'rtl' : undefined,
22
+ position: 'relative',
23
+ font: fg('platform_design_system_team_safari_input_fix') ? "var(--ds-font-body-large, normal 400 16px/24px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)" : "var(--ds-font-body, normal 400 14px/20px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
24
+ pointerEvents: 'all',
25
+ cursor: isDisabled ? 'not-allowed' : undefined,
26
+ [`${media.above.xs}`]: {
27
+ font: fg('platform_design_system_team_safari_input_fix') ? "var(--ds-font-body, normal 400 14px/20px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)" : undefined
28
+ }
29
+ });
30
+
31
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
32
+ export const SelectContainer = props => {
33
+ const {
34
+ children,
35
+ innerProps,
36
+ isDisabled,
37
+ isRtl
38
+ } = props;
39
+ return jsx("div", _extends({}, getStyleProps(props, 'container', {
40
+ '--is-disabled': isDisabled,
41
+ '--is-rtl': isRtl
42
+ }), innerProps), children);
43
+ };
44
+
45
+ // ==============================
46
+ // Value Container
47
+ // ==============================
48
+
49
+ export const valueContainerCSS = ({
50
+ isMulti,
51
+ hasValue,
52
+ isCompact,
53
+ selectProps: {
54
+ controlShouldRenderValue
55
+ }
56
+ }) => ({
57
+ alignItems: 'center',
58
+ display: isMulti && hasValue && controlShouldRenderValue ? 'flex' : 'grid',
59
+ flex: 1,
60
+ flexWrap: 'wrap',
61
+ WebkitOverflowScrolling: 'touch',
62
+ position: 'relative',
63
+ overflow: 'hidden',
64
+ padding: `${isCompact ? 0 : "var(--ds-space-025, 2px)"} ${"var(--ds-space-075, 6px)"}`
65
+ });
66
+
67
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
68
+ export const ValueContainer = props => {
69
+ const {
70
+ children,
71
+ innerProps,
72
+ isMulti,
73
+ hasValue
74
+ } = props;
75
+ const styles = getStyleProps(props, 'valueContainer', {
76
+ 'value-container': true,
77
+ 'value-container--is-multi': isMulti,
78
+ 'value-container--has-value': hasValue
79
+ });
80
+ return jsx("div", _extends({
81
+ css: styles.css
82
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
83
+ ,
84
+ className: styles.className || 'value-container'
85
+ }, innerProps), children);
86
+ };
87
+
88
+ // ==============================
89
+ // Indicator Container
90
+ // ==============================
91
+
92
+ export const indicatorsContainerCSS = () => ({
93
+ alignItems: 'center',
94
+ alignSelf: 'stretch',
95
+ display: 'flex',
96
+ flexShrink: 0,
97
+ paddingRight: "var(--ds-space-050, 4px)"
98
+ });
99
+
100
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
101
+ export const IndicatorsContainer = props => {
102
+ const {
103
+ children,
104
+ innerProps
105
+ } = props;
106
+ return jsx("div", _extends({}, getStyleProps(props, 'indicatorsContainer', {
107
+ indicators: true
108
+ }), innerProps), children);
109
+ };
@@ -0,0 +1,107 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
6
+
7
+ import { jsx } from '@emotion/react';
8
+ import { getStyleProps } from '../../utils';
9
+ export const css = ({
10
+ isDisabled,
11
+ isFocused,
12
+ isInvalid,
13
+ isCompact,
14
+ appearance
15
+ }) => {
16
+ let borderColor = isFocused ? "var(--ds-border-focused, #388BFF)" : "var(--ds-border-input, #8590A2)";
17
+ let backgroundColor = isFocused ? "var(--ds-background-input-pressed, #FFFFFF)" : "var(--ds-background-input, #FFFFFF)";
18
+ let backgroundColorHover = isFocused ? "var(--ds-background-input-pressed, #FFFFFF)" : "var(--ds-background-input-hovered, #F7F8F9)";
19
+ let borderColorHover = isFocused ? "var(--ds-border-focused, #388BFF)" : "var(--ds-border-input, #8590A2)";
20
+ if (isDisabled) {
21
+ backgroundColor = "var(--ds-background-disabled, #091E4208)";
22
+ borderColor = "var(--ds-background-disabled, #091E4208)";
23
+ }
24
+ if (isInvalid) {
25
+ borderColor = "var(--ds-border-danger, #E2483D)";
26
+ borderColorHover = "var(--ds-border-danger, #E2483D)";
27
+ }
28
+ const transitionDuration = '200ms';
29
+ if (appearance === 'subtle') {
30
+ borderColor = isFocused ? "var(--ds-border-focused, #388BFF)" : 'transparent';
31
+ backgroundColor = isFocused ? "var(--ds-surface, #FFFFFF)" : 'transparent';
32
+ backgroundColorHover = isFocused ? "var(--ds-background-input-pressed, #FFFFFF)" : "var(--ds-background-input-hovered, #F7F8F9)";
33
+ }
34
+ if (appearance === 'none') {
35
+ borderColor = 'transparent';
36
+ backgroundColor = 'transparent';
37
+ backgroundColorHover = 'transparent';
38
+ borderColorHover = 'transparent';
39
+ }
40
+ return {
41
+ label: 'control',
42
+ alignItems: 'center',
43
+ cursor: 'default',
44
+ display: 'flex',
45
+ flexWrap: 'wrap',
46
+ justifyContent: 'space-between',
47
+ outline: '0 !important',
48
+ position: 'relative',
49
+ // Turn pointer events off when disabled - this makes it so hover etc don't work.
50
+ pointerEvents: isDisabled ? 'none' : undefined,
51
+ backgroundColor,
52
+ borderColor,
53
+ borderStyle: 'solid',
54
+ borderRadius: "var(--ds-border-radius-100, 3px)",
55
+ borderWidth: "var(--ds-border-width, 1px)",
56
+ boxShadow: isInvalid ? `inset 0 0 0 ${"var(--ds-border-width, 1px)"} ${borderColor}` : 'none',
57
+ '&:focus-within': {
58
+ boxShadow: `inset 0 0 0 ${"var(--ds-border-width, 1px)"} ${borderColor}`
59
+ },
60
+ minHeight: isCompact ? 32 : 40,
61
+ padding: 0,
62
+ transition: `background-color ${transitionDuration} ease-in-out,
63
+ border-color ${transitionDuration} ease-in-out`,
64
+ '::-webkit-scrollbar': {
65
+ height: 8,
66
+ width: 8
67
+ },
68
+ '::-webkit-scrollbar-corner': {
69
+ display: 'none'
70
+ },
71
+ ':hover': {
72
+ '::-webkit-scrollbar-thumb': {
73
+ // scrollbars occur only if the user passes in a custom component with overflow: scroll
74
+ backgroundColor: 'rgba(0,0,0,0.2)'
75
+ },
76
+ cursor: 'pointer',
77
+ backgroundColor: backgroundColorHover,
78
+ borderColor: borderColorHover
79
+ },
80
+ '::-webkit-scrollbar-thumb:hover': {
81
+ backgroundColor: 'rgba(0,0,0,0.4)'
82
+ }
83
+ };
84
+ };
85
+ const Control = props => {
86
+ const {
87
+ children,
88
+ isDisabled,
89
+ isFocused,
90
+ innerRef,
91
+ innerProps,
92
+ menuIsOpen
93
+ } = props;
94
+ return jsx("div", _extends({
95
+ ref: innerRef
96
+ }, getStyleProps(props, 'control', {
97
+ control: true,
98
+ 'control--is-disabled': isDisabled,
99
+ 'control--is-focused': isFocused,
100
+ 'control--menu-is-open': menuIsOpen
101
+ }), innerProps, {
102
+ "aria-disabled": isDisabled || undefined
103
+ }), children);
104
+ };
105
+
106
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
107
+ export default Control;
@@ -0,0 +1,59 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
6
+
7
+ import { jsx } from '@emotion/react';
8
+ import { cleanCommonProps, getStyleProps } from '../../utils';
9
+ export const groupCSS = ({}) => ({
10
+ paddingBottom: "var(--ds-space-100, 8px)",
11
+ paddingTop: "var(--ds-space-100, 8px)"
12
+ });
13
+ const Group = props => {
14
+ const {
15
+ children,
16
+ cx,
17
+ getStyles,
18
+ getClassNames,
19
+ Heading,
20
+ headingProps,
21
+ innerProps,
22
+ label,
23
+ selectProps
24
+ } = props;
25
+ return jsx("div", _extends({}, getStyleProps(props, 'group', {
26
+ group: true
27
+ }), innerProps), jsx(Heading, _extends({}, headingProps, {
28
+ selectProps: selectProps,
29
+ getStyles: getStyles,
30
+ getClassNames: getClassNames,
31
+ cx: cx
32
+ }), label), jsx("div", null, children));
33
+ };
34
+ export const groupHeadingCSS = ({}) => ({
35
+ label: 'group',
36
+ cursor: 'default',
37
+ display: 'block',
38
+ marginBottom: '0.25em',
39
+ paddingLeft: "var(--ds-space-150, 12px)",
40
+ paddingRight: "var(--ds-space-150, 12px)",
41
+ font: "var(--ds-font-body-small, normal 400 11px/16px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
42
+ color: "var(--ds-text-subtle, #44546F)",
43
+ fontWeight: "var(--ds-font-weight-bold, 700)",
44
+ textTransform: 'none'
45
+ });
46
+
47
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
48
+ export const GroupHeading = props => {
49
+ const {
50
+ data,
51
+ ...innerProps
52
+ } = cleanCommonProps(props);
53
+ return jsx("div", _extends({}, getStyleProps(props, 'groupHeading', {
54
+ 'group-heading': true
55
+ }), innerProps));
56
+ };
57
+
58
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
59
+ export default Group;
@@ -0,0 +1,41 @@
1
+ import { IndicatorsContainer, SelectContainer, ValueContainer } from './containers';
2
+ import Control from './control';
3
+ import Group, { GroupHeading } from './group';
4
+ import { ClearIndicator, DropdownIndicator, LoadingIndicator } from './indicators';
5
+ import Input from './input';
6
+ import Menu, { LoadingMessage, MenuList, MenuPortal, NoOptionsMessage } from './menu';
7
+ import MultiValue, { MultiValueContainer, MultiValueLabel, MultiValueRemove } from './multi-value';
8
+ import Option from './option';
9
+ import Placeholder from './placeholder';
10
+ import SingleValue from './single-value';
11
+
12
+ // Required export for external packages
13
+
14
+ export const components = {
15
+ ClearIndicator: ClearIndicator,
16
+ Control: Control,
17
+ DropdownIndicator: DropdownIndicator,
18
+ Group: Group,
19
+ GroupHeading: GroupHeading,
20
+ IndicatorsContainer: IndicatorsContainer,
21
+ Input: Input,
22
+ LoadingIndicator: LoadingIndicator,
23
+ Menu: Menu,
24
+ MenuList: MenuList,
25
+ MenuPortal: MenuPortal,
26
+ LoadingMessage: LoadingMessage,
27
+ NoOptionsMessage: NoOptionsMessage,
28
+ MultiValue: MultiValue,
29
+ MultiValueContainer: MultiValueContainer,
30
+ MultiValueLabel: MultiValueLabel,
31
+ MultiValueRemove: MultiValueRemove,
32
+ Option: Option,
33
+ Placeholder: Placeholder,
34
+ SelectContainer: SelectContainer,
35
+ SingleValue: SingleValue,
36
+ ValueContainer: ValueContainer
37
+ };
38
+ export const defaultComponents = props => ({
39
+ ...components,
40
+ ...props.components
41
+ });
@@ -0,0 +1,128 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
6
+
7
+ import { jsx } from '@emotion/react';
8
+ import DownIcon from '@atlaskit/icon/utility/migration/chevron-down';
9
+ import CrossIcon from '@atlaskit/icon/utility/migration/cross-circle--select-clear';
10
+ import { Inline, Pressable, xcss } from '@atlaskit/primitives';
11
+ import Spinner from '@atlaskit/spinner';
12
+ import { getStyleProps } from '../../utils';
13
+
14
+ // ==============================
15
+ // Dropdown & Clear Icons
16
+ // ==============================
17
+
18
+ const iconContainerStyles = xcss({
19
+ all: 'unset',
20
+ outline: 'revert',
21
+ display: 'flex',
22
+ alignItems: 'center',
23
+ justifyContent: 'center',
24
+ padding: 'space.025'
25
+ });
26
+ const dropdownWrapperStyles = xcss({
27
+ padding: 'space.075'
28
+ });
29
+
30
+ // ==============================
31
+ // Dropdown & Clear Buttons
32
+ // ==============================
33
+
34
+ export const dropdownIndicatorCSS = ({
35
+ isCompact,
36
+ isDisabled
37
+ }) => ({
38
+ label: 'indicatorContainer',
39
+ display: 'flex',
40
+ transition: 'color 150ms',
41
+ color: isDisabled ? "var(--ds-text-disabled, #091E424F)" : "var(--ds-text-subtle, #44546F)",
42
+ padding: `${isCompact ? 0 : "var(--ds-space-075, 6px)"} ${"var(--ds-space-025, 2px)"}`,
43
+ ':hover': {
44
+ color: "var(--ds-text-subtle, #44546F)"
45
+ }
46
+ });
47
+
48
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
49
+ export const DropdownIndicator = props => {
50
+ const {
51
+ innerProps,
52
+ children
53
+ } = props;
54
+ return jsx("div", _extends({}, getStyleProps(props, 'dropdownIndicator', {
55
+ indicator: true,
56
+ 'dropdown-indicator': true
57
+ }), innerProps), children ? children : jsx(Inline, {
58
+ as: "span",
59
+ xcss: dropdownWrapperStyles
60
+ }, jsx(DownIcon, {
61
+ color: "currentColor",
62
+ label: "open",
63
+ LEGACY_margin: "var(--ds-space-negative-075, -0.375rem)"
64
+ })));
65
+ };
66
+ export const clearIndicatorCSS = ({
67
+ isCompact
68
+ }) => ({
69
+ label: 'indicatorContainer',
70
+ display: 'flex',
71
+ transition: 'color 150ms',
72
+ color: "var(--ds-text-subtlest, #626F86)",
73
+ padding: `${isCompact ? 0 : "var(--ds-space-075, 6px)"} ${"var(--ds-space-025, 2px)"}`,
74
+ ':hover': {
75
+ color: "var(--ds-text-subtle, #44546F)"
76
+ }
77
+ });
78
+
79
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
80
+ export const ClearIndicator = props => {
81
+ const {
82
+ innerProps,
83
+ clearControlLabel = 'clear'
84
+ } = props;
85
+ return jsx("div", _extends({}, getStyleProps(props, 'clearIndicator', {
86
+ indicator: true,
87
+ 'clear-indicator': true
88
+ }), innerProps), jsx(Pressable, {
89
+ xcss: iconContainerStyles,
90
+ tabIndex: -1,
91
+ "aria-label": clearControlLabel
92
+ }, jsx(CrossIcon, {
93
+ label: "",
94
+ color: "currentColor",
95
+ LEGACY_size: "small",
96
+ LEGACY_margin: "var(--ds-space-negative-025, -0.125rem)"
97
+ })));
98
+ };
99
+
100
+ // ==============================
101
+ // Loading
102
+ // ==============================
103
+
104
+ export const loadingIndicatorCSS = ({
105
+ isCompact
106
+ }) => ({
107
+ label: 'loadingIndicator',
108
+ padding: `${isCompact ? 0 : "var(--ds-space-075, 6px)"} ${"var(--ds-space-100, 8px)"}`
109
+ });
110
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
111
+ export const LoadingIndicator = ({
112
+ innerProps,
113
+ isRtl,
114
+ size = 4,
115
+ ...restProps
116
+ }) => {
117
+ return jsx("div", _extends({}, getStyleProps({
118
+ ...restProps,
119
+ innerProps,
120
+ isRtl,
121
+ size
122
+ }, 'loadingIndicator', {
123
+ indicator: true,
124
+ 'loading-indicator': true
125
+ }), innerProps), jsx(Spinner, {
126
+ size: "small"
127
+ }));
128
+ };