@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,65 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ import _extends from "@babel/runtime/helpers/extends";
3
+ import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
4
+ var _excluded = ["data"];
5
+ /**
6
+ * @jsxRuntime classic
7
+ * @jsx jsx
8
+ */
9
+
10
+ import { jsx } from '@emotion/react';
11
+ import { cleanCommonProps, getStyleProps } from '../../utils';
12
+ export var groupCSS = function groupCSS(_ref) {
13
+ _objectDestructuringEmpty(_ref);
14
+ return {
15
+ paddingBottom: "var(--ds-space-100, 8px)",
16
+ paddingTop: "var(--ds-space-100, 8px)"
17
+ };
18
+ };
19
+ var Group = function Group(props) {
20
+ var children = props.children,
21
+ cx = props.cx,
22
+ getStyles = props.getStyles,
23
+ getClassNames = props.getClassNames,
24
+ Heading = props.Heading,
25
+ headingProps = props.headingProps,
26
+ innerProps = props.innerProps,
27
+ label = props.label,
28
+ selectProps = props.selectProps;
29
+ return jsx("div", _extends({}, getStyleProps(props, 'group', {
30
+ group: true
31
+ }), innerProps), jsx(Heading, _extends({}, headingProps, {
32
+ selectProps: selectProps,
33
+ getStyles: getStyles,
34
+ getClassNames: getClassNames,
35
+ cx: cx
36
+ }), label), jsx("div", null, children));
37
+ };
38
+ export var groupHeadingCSS = function groupHeadingCSS(_ref2) {
39
+ _objectDestructuringEmpty(_ref2);
40
+ return {
41
+ label: 'group',
42
+ cursor: 'default',
43
+ display: 'block',
44
+ marginBottom: '0.25em',
45
+ paddingLeft: "var(--ds-space-150, 12px)",
46
+ paddingRight: "var(--ds-space-150, 12px)",
47
+ font: "var(--ds-font-body-small, normal 400 11px/16px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
48
+ color: "var(--ds-text-subtle, #44546F)",
49
+ fontWeight: "var(--ds-font-weight-bold, 700)",
50
+ textTransform: 'none'
51
+ };
52
+ };
53
+
54
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
55
+ export var GroupHeading = function GroupHeading(props) {
56
+ var _cleanCommonProps = cleanCommonProps(props),
57
+ data = _cleanCommonProps.data,
58
+ innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);
59
+ return jsx("div", _extends({}, getStyleProps(props, 'groupHeading', {
60
+ 'group-heading': true
61
+ }), innerProps));
62
+ };
63
+
64
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
65
+ export default Group;
@@ -0,0 +1,43 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { IndicatorsContainer, SelectContainer, ValueContainer } from './containers';
5
+ import Control from './control';
6
+ import Group, { GroupHeading } from './group';
7
+ import { ClearIndicator, DropdownIndicator, LoadingIndicator } from './indicators';
8
+ import Input from './input';
9
+ import Menu, { LoadingMessage, MenuList, MenuPortal, NoOptionsMessage } from './menu';
10
+ import MultiValue, { MultiValueContainer, MultiValueLabel, MultiValueRemove } from './multi-value';
11
+ import Option from './option';
12
+ import Placeholder from './placeholder';
13
+ import SingleValue from './single-value';
14
+
15
+ // Required export for external packages
16
+
17
+ export var components = {
18
+ ClearIndicator: ClearIndicator,
19
+ Control: Control,
20
+ DropdownIndicator: DropdownIndicator,
21
+ Group: Group,
22
+ GroupHeading: GroupHeading,
23
+ IndicatorsContainer: IndicatorsContainer,
24
+ Input: Input,
25
+ LoadingIndicator: LoadingIndicator,
26
+ Menu: Menu,
27
+ MenuList: MenuList,
28
+ MenuPortal: MenuPortal,
29
+ LoadingMessage: LoadingMessage,
30
+ NoOptionsMessage: NoOptionsMessage,
31
+ MultiValue: MultiValue,
32
+ MultiValueContainer: MultiValueContainer,
33
+ MultiValueLabel: MultiValueLabel,
34
+ MultiValueRemove: MultiValueRemove,
35
+ Option: Option,
36
+ Placeholder: Placeholder,
37
+ SelectContainer: SelectContainer,
38
+ SingleValue: SingleValue,
39
+ ValueContainer: ValueContainer
40
+ };
41
+ export var defaultComponents = function defaultComponents(props) {
42
+ return _objectSpread(_objectSpread({}, components), props.components);
43
+ };
@@ -0,0 +1,132 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _extends from "@babel/runtime/helpers/extends";
4
+ var _excluded = ["innerProps", "isRtl", "size"];
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ /**
8
+ * @jsxRuntime classic
9
+ * @jsx jsx
10
+ */
11
+
12
+ import { jsx } from '@emotion/react';
13
+ import DownIcon from '@atlaskit/icon/utility/migration/chevron-down';
14
+ import CrossIcon from '@atlaskit/icon/utility/migration/cross-circle--select-clear';
15
+ import { Inline, Pressable, xcss } from '@atlaskit/primitives';
16
+ import Spinner from '@atlaskit/spinner';
17
+ import { getStyleProps } from '../../utils';
18
+
19
+ // ==============================
20
+ // Dropdown & Clear Icons
21
+ // ==============================
22
+
23
+ var iconContainerStyles = xcss({
24
+ all: 'unset',
25
+ outline: 'revert',
26
+ display: 'flex',
27
+ alignItems: 'center',
28
+ justifyContent: 'center',
29
+ padding: 'space.025'
30
+ });
31
+ var dropdownWrapperStyles = xcss({
32
+ padding: 'space.075'
33
+ });
34
+
35
+ // ==============================
36
+ // Dropdown & Clear Buttons
37
+ // ==============================
38
+
39
+ export var dropdownIndicatorCSS = function dropdownIndicatorCSS(_ref) {
40
+ var isCompact = _ref.isCompact,
41
+ isDisabled = _ref.isDisabled;
42
+ return {
43
+ label: 'indicatorContainer',
44
+ display: 'flex',
45
+ transition: 'color 150ms',
46
+ color: isDisabled ? "var(--ds-text-disabled, #091E424F)" : "var(--ds-text-subtle, #44546F)",
47
+ padding: "".concat(isCompact ? 0 : "var(--ds-space-075, 6px)", " ", "var(--ds-space-025, 2px)"),
48
+ ':hover': {
49
+ color: "var(--ds-text-subtle, #44546F)"
50
+ }
51
+ };
52
+ };
53
+
54
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
55
+ export var DropdownIndicator = function DropdownIndicator(props) {
56
+ var innerProps = props.innerProps,
57
+ children = props.children;
58
+ return jsx("div", _extends({}, getStyleProps(props, 'dropdownIndicator', {
59
+ indicator: true,
60
+ 'dropdown-indicator': true
61
+ }), innerProps), children ? children : jsx(Inline, {
62
+ as: "span",
63
+ xcss: dropdownWrapperStyles
64
+ }, jsx(DownIcon, {
65
+ color: "currentColor",
66
+ label: "open",
67
+ LEGACY_margin: "var(--ds-space-negative-075, -0.375rem)"
68
+ })));
69
+ };
70
+ export var clearIndicatorCSS = function clearIndicatorCSS(_ref2) {
71
+ var isCompact = _ref2.isCompact;
72
+ return {
73
+ label: 'indicatorContainer',
74
+ display: 'flex',
75
+ transition: 'color 150ms',
76
+ color: "var(--ds-text-subtlest, #626F86)",
77
+ padding: "".concat(isCompact ? 0 : "var(--ds-space-075, 6px)", " ", "var(--ds-space-025, 2px)"),
78
+ ':hover': {
79
+ color: "var(--ds-text-subtle, #44546F)"
80
+ }
81
+ };
82
+ };
83
+
84
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
85
+ export var ClearIndicator = function ClearIndicator(props) {
86
+ var innerProps = props.innerProps,
87
+ _props$clearControlLa = props.clearControlLabel,
88
+ clearControlLabel = _props$clearControlLa === void 0 ? 'clear' : _props$clearControlLa;
89
+ return jsx("div", _extends({}, getStyleProps(props, 'clearIndicator', {
90
+ indicator: true,
91
+ 'clear-indicator': true
92
+ }), innerProps), jsx(Pressable, {
93
+ xcss: iconContainerStyles,
94
+ tabIndex: -1,
95
+ "aria-label": clearControlLabel
96
+ }, jsx(CrossIcon, {
97
+ label: "",
98
+ color: "currentColor",
99
+ LEGACY_size: "small",
100
+ LEGACY_margin: "var(--ds-space-negative-025, -0.125rem)"
101
+ })));
102
+ };
103
+
104
+ // ==============================
105
+ // Loading
106
+ // ==============================
107
+
108
+ export var loadingIndicatorCSS = function loadingIndicatorCSS(_ref3) {
109
+ var isCompact = _ref3.isCompact;
110
+ return {
111
+ label: 'loadingIndicator',
112
+ padding: "".concat(isCompact ? 0 : "var(--ds-space-075, 6px)", " ", "var(--ds-space-100, 8px)")
113
+ };
114
+ };
115
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
116
+ export var LoadingIndicator = function LoadingIndicator(_ref4) {
117
+ var innerProps = _ref4.innerProps,
118
+ isRtl = _ref4.isRtl,
119
+ _ref4$size = _ref4.size,
120
+ size = _ref4$size === void 0 ? 4 : _ref4$size,
121
+ restProps = _objectWithoutProperties(_ref4, _excluded);
122
+ return jsx("div", _extends({}, getStyleProps(_objectSpread(_objectSpread({}, restProps), {}, {
123
+ innerProps: innerProps,
124
+ isRtl: isRtl,
125
+ size: size
126
+ }), 'loadingIndicator', {
127
+ indicator: true,
128
+ 'loading-indicator': true
129
+ }), innerProps), jsx(Spinner, {
130
+ size: "small"
131
+ }));
132
+ };
@@ -0,0 +1,89 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ var _excluded = ["innerRef", "isDisabled", "isHidden", "inputClassName", "testId"];
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ /**
8
+ * @jsxRuntime classic
9
+ * @jsx jsx
10
+ */
11
+
12
+ import { jsx } from '@emotion/react';
13
+ import { cleanCommonProps, getStyleProps } from '../../utils';
14
+ export var inputCSS = function inputCSS(_ref) {
15
+ var isDisabled = _ref.isDisabled,
16
+ value = _ref.value;
17
+ return _objectSpread(_objectSpread({
18
+ visibility: isDisabled ? 'hidden' : 'visible',
19
+ // force css to recompute when value change due to @emotion bug.
20
+ // We can remove it whenever the bug is fixed.
21
+ transform: value ? 'translateZ(0)' : ''
22
+ }, containerStyle), {}, {
23
+ margin: "var(--ds-space-025, 2px)",
24
+ paddingBottom: "var(--ds-space-025, 2px)",
25
+ paddingTop: "var(--ds-space-025, 2px)",
26
+ color: "var(--ds-text, #172B4D)"
27
+ });
28
+ };
29
+ var spacingStyle = {
30
+ gridArea: '1 / 2',
31
+ font: 'inherit',
32
+ minWidth: '2px',
33
+ border: 0,
34
+ margin: 0,
35
+ outline: 0,
36
+ padding: 0
37
+ };
38
+ var containerStyle = {
39
+ flex: '1 1 auto',
40
+ display: 'inline-grid',
41
+ gridArea: '1 / 1 / 2 / 3',
42
+ gridTemplateColumns: '0 min-content',
43
+ '&:after': _objectSpread({
44
+ content: 'attr(data-value) " "',
45
+ visibility: 'hidden',
46
+ whiteSpace: 'pre'
47
+ }, spacingStyle)
48
+ };
49
+ var inputStyle = function inputStyle(isHidden) {
50
+ return _objectSpread({
51
+ label: 'input',
52
+ color: 'inherit',
53
+ background: 0,
54
+ opacity: isHidden ? 0 : 1,
55
+ width: '100%'
56
+ }, spacingStyle);
57
+ };
58
+ var Input = function Input(props) {
59
+ var cx = props.cx,
60
+ value = props.value;
61
+ var _cleanCommonProps = cleanCommonProps(props),
62
+ innerRef = _cleanCommonProps.innerRef,
63
+ isDisabled = _cleanCommonProps.isDisabled,
64
+ isHidden = _cleanCommonProps.isHidden,
65
+ inputClassName = _cleanCommonProps.inputClassName,
66
+ testId = _cleanCommonProps.testId,
67
+ innerProps = _objectWithoutProperties(_cleanCommonProps, _excluded);
68
+ var dataId = testId ? "".concat(testId, "-select--input") : null;
69
+ return jsx("div", _extends({}, getStyleProps(props, 'input', {
70
+ 'input-container': true
71
+ }), {
72
+ "data-value": value || '',
73
+ "data-testid": dataId && "".concat(dataId, "-container")
74
+ }), jsx("input", _extends({
75
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
76
+ className: cx({
77
+ input: true
78
+ }, inputClassName),
79
+ ref: innerRef
80
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
81
+ ,
82
+ style: inputStyle(isHidden),
83
+ disabled: isDisabled,
84
+ "data-testid": dataId
85
+ }, innerProps)));
86
+ };
87
+
88
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
89
+ export default Input;
@@ -0,0 +1,29 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
6
+ import { css, jsx } from '@emotion/react';
7
+
8
+ // Assistive text to describe visual elements. Hidden for sighted users.
9
+ var styles = css({
10
+ width: 1,
11
+ height: 1,
12
+ padding: 0,
13
+ position: 'absolute',
14
+ zIndex: 9999,
15
+ border: 0,
16
+ clip: 'rect(1px, 1px, 1px, 1px)',
17
+ label: 'a11yText',
18
+ overflow: 'hidden',
19
+ userSelect: 'none',
20
+ // while hidden text is sitting in the DOM, it should not be selectable
21
+ whiteSpace: 'nowrap'
22
+ });
23
+ var A11yText = function A11yText(props) {
24
+ return jsx("span", _extends({
25
+ css: styles
26
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
27
+ }, props));
28
+ };
29
+ export default A11yText;
@@ -0,0 +1,38 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["innerRef"];
4
+ /**
5
+ * @jsxRuntime classic
6
+ * @jsx jsx
7
+ */
8
+
9
+ import { css, jsx } from '@emotion/react';
10
+ import { removeProps } from '../../../utils';
11
+ var dummyInputStyles = css({
12
+ width: 1,
13
+ padding: 0,
14
+ position: 'relative',
15
+ background: 0,
16
+ border: 0,
17
+ caretColor: 'transparent',
18
+ color: 'transparent',
19
+ // eslint-disable-next-line @atlaskit/design-system/use-tokens-typography
20
+ fontSize: 'inherit',
21
+ gridArea: '1 / 1 / 2 / 3',
22
+ insetInlineStart: -100,
23
+ label: 'dummyInput',
24
+ opacity: 0,
25
+ outline: 0,
26
+ transform: 'scale(.01)'
27
+ });
28
+ export default function DummyInput(_ref) {
29
+ var innerRef = _ref.innerRef,
30
+ props = _objectWithoutProperties(_ref, _excluded);
31
+ // Remove animation props not meant for HTML elements
32
+ var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear');
33
+ return jsx("input", _extends({
34
+ ref: innerRef
35
+ }, filteredProps, {
36
+ css: dummyInputStyles
37
+ }));
38
+ }
@@ -0,0 +1,4 @@
1
+ export { default as A11yText } from './a11y-text';
2
+ export { default as DummyInput } from './dummy-input';
3
+ export { default as ScrollManager } from './scroll-manager';
4
+ export { default as RequiredInput } from './required-input';
@@ -0,0 +1,15 @@
1
+ import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
2
+ /**
3
+ * Functional component wrapper around `useNotifyOpenLayerObserver`.
4
+ *
5
+ * This is needed as Select is a class component, which cannot use hooks directly.
6
+ */
7
+ export function NotifyOpenLayerObserver(_ref) {
8
+ var isOpen = _ref.isOpen,
9
+ onClose = _ref.onClose;
10
+ useNotifyOpenLayerObserver({
11
+ isOpen: isOpen,
12
+ onClose: onClose
13
+ });
14
+ return null;
15
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+
6
+ import { css, jsx } from '@emotion/react';
7
+ import __noop from '@atlaskit/ds-lib/noop';
8
+ var styles = css({
9
+ width: '100%',
10
+ position: 'absolute',
11
+ insetBlockEnd: 0,
12
+ insetInlineEnd: 0,
13
+ insetInlineStart: 0,
14
+ label: 'requiredInput',
15
+ opacity: 0,
16
+ pointerEvents: 'none'
17
+ });
18
+ var RequiredInput = function RequiredInput(_ref) {
19
+ var name = _ref.name,
20
+ onFocus = _ref.onFocus;
21
+ return jsx("input", {
22
+ required: true,
23
+ name: name,
24
+ tabIndex: -1,
25
+ "aria-hidden": "true",
26
+ onFocus: onFocus,
27
+ css: styles
28
+ // Prevent `Switching from uncontrolled to controlled` error
29
+ ,
30
+ value: "",
31
+ onChange: __noop
32
+ });
33
+ };
34
+
35
+ // eslint-disable-next-line @repo/internal/react/require-jsdoc
36
+ export default RequiredInput;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import { Fragment } from 'react';
6
+ import { css, jsx } from '@emotion/react';
7
+ import useScrollCapture from './use-scroll-capture';
8
+ import useScrollLock from './use-scroll-lock';
9
+ var styles = css({
10
+ position: 'fixed',
11
+ insetBlockEnd: 0,
12
+ insetBlockStart: 0,
13
+ insetInlineEnd: 0,
14
+ insetInlineStart: 0
15
+ });
16
+ var blurSelectInput = function blurSelectInput(event) {
17
+ var element = event.target;
18
+ return element.ownerDocument.activeElement && element.ownerDocument.activeElement.blur();
19
+ };
20
+ export default function ScrollManager(_ref) {
21
+ var children = _ref.children,
22
+ lockEnabled = _ref.lockEnabled,
23
+ _ref$captureEnabled = _ref.captureEnabled,
24
+ captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,
25
+ onBottomArrive = _ref.onBottomArrive,
26
+ onBottomLeave = _ref.onBottomLeave,
27
+ onTopArrive = _ref.onTopArrive,
28
+ onTopLeave = _ref.onTopLeave;
29
+ var setScrollCaptureTarget = useScrollCapture({
30
+ isEnabled: captureEnabled,
31
+ onBottomArrive: onBottomArrive,
32
+ onBottomLeave: onBottomLeave,
33
+ onTopArrive: onTopArrive,
34
+ onTopLeave: onTopLeave
35
+ });
36
+ var setScrollLockTarget = useScrollLock({
37
+ isEnabled: lockEnabled
38
+ });
39
+ var targetRef = function targetRef(element) {
40
+ setScrollCaptureTarget(element);
41
+ setScrollLockTarget(element);
42
+ };
43
+ return jsx(Fragment, null, lockEnabled &&
44
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
45
+ jsx("div", {
46
+ onClick: blurSelectInput,
47
+ css: styles
48
+ }), children(targetRef));
49
+ }
@@ -0,0 +1,126 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ import { supportsPassiveEvents } from '../../../utils';
3
+ var cancelScroll = function cancelScroll(event) {
4
+ if (event.cancelable) {
5
+ event.preventDefault();
6
+ }
7
+ event.stopPropagation();
8
+ };
9
+ // TODO: Fill in the hook {description}.
10
+ /**
11
+ * {description}.
12
+ */
13
+ export default function useScrollCapture(_ref) {
14
+ var isEnabled = _ref.isEnabled,
15
+ onBottomArrive = _ref.onBottomArrive,
16
+ onBottomLeave = _ref.onBottomLeave,
17
+ onTopArrive = _ref.onTopArrive,
18
+ onTopLeave = _ref.onTopLeave;
19
+ var isBottom = useRef(false);
20
+ var isTop = useRef(false);
21
+ var touchStart = useRef(0);
22
+ var scrollTarget = useRef(null);
23
+ var handleEventDelta = useCallback(function (event, delta) {
24
+ if (scrollTarget.current === null) {
25
+ return;
26
+ }
27
+ var _scrollTarget$current = scrollTarget.current,
28
+ scrollTop = _scrollTarget$current.scrollTop,
29
+ scrollHeight = _scrollTarget$current.scrollHeight,
30
+ clientHeight = _scrollTarget$current.clientHeight;
31
+ var target = scrollTarget.current;
32
+ var isDeltaPositive = delta > 0;
33
+ var availableScroll = scrollHeight - clientHeight - scrollTop;
34
+ var shouldCancelScroll = false;
35
+
36
+ // reset bottom/top flags
37
+ if (availableScroll > delta && isBottom.current) {
38
+ if (onBottomLeave) {
39
+ onBottomLeave(event);
40
+ }
41
+ isBottom.current = false;
42
+ }
43
+ if (isDeltaPositive && isTop.current) {
44
+ if (onTopLeave) {
45
+ onTopLeave(event);
46
+ }
47
+ isTop.current = false;
48
+ }
49
+
50
+ // bottom limit
51
+ if (isDeltaPositive && delta > availableScroll) {
52
+ if (onBottomArrive && !isBottom.current) {
53
+ onBottomArrive(event);
54
+ }
55
+ target.scrollTop = scrollHeight;
56
+ shouldCancelScroll = true;
57
+ isBottom.current = true;
58
+
59
+ // top limit
60
+ } else if (!isDeltaPositive && -delta > scrollTop) {
61
+ if (onTopArrive && !isTop.current) {
62
+ onTopArrive(event);
63
+ }
64
+ target.scrollTop = 0;
65
+ shouldCancelScroll = true;
66
+ isTop.current = true;
67
+ }
68
+
69
+ // cancel scroll
70
+ if (shouldCancelScroll) {
71
+ cancelScroll(event);
72
+ }
73
+ }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]);
74
+ var onWheel = useCallback(function (event) {
75
+ handleEventDelta(event, event.deltaY);
76
+ }, [handleEventDelta]);
77
+ var onTouchStart = useCallback(function (event) {
78
+ // set touch start so we can calculate touchmove delta
79
+ touchStart.current = event.changedTouches[0].clientY;
80
+ }, []);
81
+ var onTouchMove = useCallback(function (event) {
82
+ var deltaY = touchStart.current - event.changedTouches[0].clientY;
83
+ handleEventDelta(event, deltaY);
84
+ }, [handleEventDelta]);
85
+ var startListening = useCallback(function (el) {
86
+ // bail early if no element is available to attach to
87
+ if (!el) {
88
+ return;
89
+ }
90
+ var notPassive = supportsPassiveEvents ? {
91
+ passive: false
92
+ } : false;
93
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
94
+ el.addEventListener('wheel', onWheel, notPassive);
95
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
96
+ el.addEventListener('touchstart', onTouchStart, notPassive);
97
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
98
+ el.addEventListener('touchmove', onTouchMove, notPassive);
99
+ }, [onTouchMove, onTouchStart, onWheel]);
100
+ var stopListening = useCallback(function (el) {
101
+ // bail early if no element is available to detach from
102
+ if (!el) {
103
+ return;
104
+ }
105
+
106
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
107
+ el.removeEventListener('wheel', onWheel, false);
108
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
109
+ el.removeEventListener('touchstart', onTouchStart, false);
110
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
111
+ el.removeEventListener('touchmove', onTouchMove, false);
112
+ }, [onTouchMove, onTouchStart, onWheel]);
113
+ useEffect(function () {
114
+ if (!isEnabled) {
115
+ return;
116
+ }
117
+ var element = scrollTarget.current;
118
+ startListening(element);
119
+ return function () {
120
+ stopListening(element);
121
+ };
122
+ }, [isEnabled, startListening, stopListening]);
123
+ return function (element) {
124
+ scrollTarget.current = element;
125
+ };
126
+ }