@atlaskit/react-select 2.2.1 → 2.4.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.
- package/CHANGELOG.md +29 -0
- package/dist/cjs/compiled/components/containers.compiled.css +26 -0
- package/dist/cjs/compiled/components/containers.js +119 -0
- package/dist/cjs/compiled/components/control.compiled.css +51 -0
- package/dist/cjs/compiled/components/control.js +66 -0
- package/dist/cjs/compiled/components/group.compiled.css +12 -0
- package/dist/cjs/compiled/components/group.js +81 -0
- package/dist/cjs/compiled/components/indicators.compiled.css +24 -0
- package/dist/cjs/compiled/components/indicators.js +157 -0
- package/dist/cjs/compiled/components/input.compiled.css +49 -0
- package/dist/cjs/compiled/components/input.js +69 -0
- package/dist/cjs/compiled/components/internal/a11y-text.compiled.css +15 -0
- package/dist/cjs/compiled/components/internal/a11y-text.js +23 -0
- package/dist/cjs/compiled/components/internal/dummy-input.compiled.css +17 -0
- package/dist/cjs/compiled/components/internal/dummy-input.js +30 -0
- package/dist/cjs/compiled/components/internal/required-input.compiled.css +8 -0
- package/dist/cjs/compiled/components/internal/required-input.js +34 -0
- package/dist/cjs/compiled/components/live-region.js +177 -0
- package/dist/cjs/compiled/components/menu.compiled.css +19 -0
- package/dist/cjs/compiled/components/menu.js +491 -0
- package/dist/cjs/compiled/components/multi-value.compiled.css +56 -0
- package/dist/cjs/compiled/components/multi-value.js +199 -0
- package/dist/cjs/compiled/components/option.compiled.css +22 -0
- package/dist/cjs/compiled/components/option.js +57 -0
- package/dist/cjs/compiled/components/placeholder.compiled.css +7 -0
- package/dist/cjs/compiled/components/placeholder.js +45 -0
- package/dist/cjs/compiled/components/single-value.compiled.css +13 -0
- package/dist/cjs/compiled/components/single-value.js +46 -0
- package/dist/cjs/components/containers.js +12 -72
- package/dist/cjs/components/control.js +11 -96
- package/dist/cjs/components/group.js +15 -53
- package/dist/cjs/components/indicators.js +15 -107
- package/dist/cjs/components/input.js +12 -81
- package/dist/cjs/components/internal/a11y-text.js +6 -25
- package/dist/cjs/components/internal/dummy-input.js +8 -36
- package/dist/cjs/components/internal/notify-open-layer-observer.js +1 -0
- package/dist/cjs/components/internal/required-input.js +7 -31
- package/dist/cjs/components/internal/scroll-manager.js +19 -17
- package/dist/cjs/components/live-region.js +6 -164
- package/dist/cjs/components/menu.js +24 -399
- package/dist/cjs/components/multi-value.js +21 -197
- package/dist/cjs/components/option.js +11 -68
- package/dist/cjs/components/placeholder.js +11 -20
- package/dist/cjs/components/single-value.js +11 -26
- package/dist/cjs/emotion/components/containers.js +2 -0
- package/dist/cjs/emotion/components/control.js +2 -0
- package/dist/cjs/emotion/components/group.js +1 -0
- package/dist/cjs/emotion/components/indicators.js +1 -0
- package/dist/cjs/emotion/components/input.js +1 -1
- package/dist/cjs/emotion/components/internal/a11y-text.js +1 -0
- package/dist/cjs/emotion/components/internal/dummy-input.js +1 -0
- package/dist/cjs/emotion/components/internal/required-input.js +2 -0
- package/dist/cjs/emotion/components/internal/scroll-manager.js +2 -0
- package/dist/cjs/emotion/components/live-region.js +1 -1
- package/dist/cjs/emotion/components/menu.js +1 -1
- package/dist/cjs/emotion/components/multi-value.js +1 -1
- package/dist/cjs/emotion/components/option.js +2 -0
- package/dist/cjs/emotion/components/placeholder.js +2 -0
- package/dist/cjs/emotion/components/single-value.js +2 -0
- package/dist/cjs/utils.js +2 -1
- package/dist/es2019/compiled/components/containers.compiled.css +26 -0
- package/dist/es2019/compiled/components/containers.js +115 -0
- package/dist/es2019/compiled/components/control.compiled.css +51 -0
- package/dist/es2019/compiled/components/control.js +58 -0
- package/dist/es2019/compiled/components/group.compiled.css +12 -0
- package/dist/es2019/compiled/components/group.js +72 -0
- package/dist/es2019/compiled/components/indicators.compiled.css +24 -0
- package/dist/es2019/compiled/components/indicators.js +144 -0
- package/dist/es2019/compiled/components/input.compiled.css +49 -0
- package/dist/es2019/compiled/components/input.js +59 -0
- package/dist/es2019/compiled/components/internal/a11y-text.compiled.css +15 -0
- package/dist/es2019/compiled/components/internal/a11y-text.js +11 -0
- package/dist/es2019/compiled/components/internal/dummy-input.compiled.css +17 -0
- package/dist/es2019/compiled/components/internal/dummy-input.js +19 -0
- package/dist/es2019/compiled/components/internal/required-input.compiled.css +8 -0
- package/dist/es2019/compiled/components/internal/required-input.js +23 -0
- package/dist/es2019/compiled/components/live-region.js +171 -0
- package/dist/es2019/compiled/components/menu.compiled.css +19 -0
- package/dist/es2019/compiled/components/menu.js +478 -0
- package/dist/es2019/compiled/components/multi-value.compiled.css +56 -0
- package/dist/es2019/compiled/components/multi-value.js +190 -0
- package/dist/es2019/compiled/components/option.compiled.css +22 -0
- package/dist/es2019/compiled/components/option.js +48 -0
- package/dist/es2019/compiled/components/placeholder.compiled.css +7 -0
- package/dist/es2019/compiled/components/placeholder.js +36 -0
- package/dist/es2019/compiled/components/single-value.compiled.css +13 -0
- package/dist/es2019/compiled/components/single-value.js +37 -0
- package/dist/es2019/components/containers.js +10 -87
- package/dist/es2019/components/control.js +8 -103
- package/dist/es2019/components/group.js +9 -54
- package/dist/es2019/components/indicators.js +11 -113
- package/dist/es2019/components/input.js +7 -83
- package/dist/es2019/components/internal/a11y-text.js +6 -26
- package/dist/es2019/components/internal/dummy-input.js +7 -36
- package/dist/es2019/components/internal/notify-open-layer-observer.js +1 -0
- package/dist/es2019/components/internal/required-input.js +6 -32
- package/dist/es2019/components/internal/scroll-manager.js +16 -16
- package/dist/es2019/components/live-region.js +5 -168
- package/dist/es2019/components/menu.js +14 -412
- package/dist/es2019/components/multi-value.js +12 -216
- package/dist/es2019/components/option.js +7 -75
- package/dist/es2019/components/placeholder.js +7 -25
- package/dist/es2019/components/single-value.js +7 -31
- package/dist/es2019/emotion/components/containers.js +1 -0
- package/dist/es2019/emotion/components/control.js +1 -0
- package/dist/es2019/emotion/components/group.js +1 -0
- package/dist/es2019/emotion/components/indicators.js +1 -0
- package/dist/es2019/emotion/components/input.js +1 -0
- package/dist/es2019/emotion/components/internal/a11y-text.js +1 -0
- package/dist/es2019/emotion/components/internal/dummy-input.js +1 -0
- package/dist/es2019/emotion/components/internal/required-input.js +1 -0
- package/dist/es2019/emotion/components/internal/scroll-manager.js +2 -0
- package/dist/es2019/emotion/components/live-region.js +2 -0
- package/dist/es2019/emotion/components/menu.js +2 -0
- package/dist/es2019/emotion/components/multi-value.js +1 -0
- package/dist/es2019/emotion/components/option.js +1 -0
- package/dist/es2019/emotion/components/placeholder.js +1 -0
- package/dist/es2019/emotion/components/single-value.js +1 -0
- package/dist/es2019/utils.js +1 -0
- package/dist/esm/compiled/components/containers.compiled.css +26 -0
- package/dist/esm/compiled/components/containers.js +110 -0
- package/dist/esm/compiled/components/control.compiled.css +51 -0
- package/dist/esm/compiled/components/control.js +57 -0
- package/dist/esm/compiled/components/group.compiled.css +12 -0
- package/dist/esm/compiled/components/group.js +71 -0
- package/dist/esm/compiled/components/indicators.compiled.css +24 -0
- package/dist/esm/compiled/components/indicators.js +148 -0
- package/dist/esm/compiled/components/input.compiled.css +49 -0
- package/dist/esm/compiled/components/input.js +59 -0
- package/dist/esm/compiled/components/internal/a11y-text.compiled.css +15 -0
- package/dist/esm/compiled/components/internal/a11y-text.js +13 -0
- package/dist/esm/compiled/components/internal/dummy-input.compiled.css +17 -0
- package/dist/esm/compiled/components/internal/dummy-input.js +20 -0
- package/dist/esm/compiled/components/internal/required-input.compiled.css +8 -0
- package/dist/esm/compiled/components/internal/required-input.js +24 -0
- package/dist/esm/compiled/components/live-region.js +168 -0
- package/dist/esm/compiled/components/menu.compiled.css +19 -0
- package/dist/esm/compiled/components/menu.js +485 -0
- package/dist/esm/compiled/components/multi-value.compiled.css +56 -0
- package/dist/esm/compiled/components/multi-value.js +187 -0
- package/dist/esm/compiled/components/option.compiled.css +22 -0
- package/dist/esm/compiled/components/option.js +47 -0
- package/dist/esm/compiled/components/placeholder.compiled.css +7 -0
- package/dist/esm/compiled/components/placeholder.js +35 -0
- package/dist/esm/compiled/components/single-value.compiled.css +13 -0
- package/dist/esm/compiled/components/single-value.js +36 -0
- package/dist/esm/components/containers.js +12 -73
- package/dist/esm/components/control.js +8 -97
- package/dist/esm/components/group.js +11 -54
- package/dist/esm/components/indicators.js +15 -109
- package/dist/esm/components/input.js +8 -83
- package/dist/esm/components/internal/a11y-text.js +6 -26
- package/dist/esm/components/internal/dummy-input.js +7 -37
- package/dist/esm/components/internal/notify-open-layer-observer.js +1 -0
- package/dist/esm/components/internal/required-input.js +7 -32
- package/dist/esm/components/internal/scroll-manager.js +16 -16
- package/dist/esm/components/live-region.js +5 -163
- package/dist/esm/components/menu.js +21 -401
- package/dist/esm/components/multi-value.js +17 -199
- package/dist/esm/components/option.js +8 -69
- package/dist/esm/components/placeholder.js +8 -21
- package/dist/esm/components/single-value.js +8 -27
- package/dist/esm/emotion/components/containers.js +1 -0
- package/dist/esm/emotion/components/control.js +1 -0
- package/dist/esm/emotion/components/group.js +1 -0
- package/dist/esm/emotion/components/indicators.js +1 -0
- package/dist/esm/emotion/components/input.js +1 -0
- package/dist/esm/emotion/components/internal/a11y-text.js +1 -0
- package/dist/esm/emotion/components/internal/dummy-input.js +1 -0
- package/dist/esm/emotion/components/internal/required-input.js +1 -0
- package/dist/esm/emotion/components/internal/scroll-manager.js +2 -0
- package/dist/esm/emotion/components/live-region.js +2 -0
- package/dist/esm/emotion/components/menu.js +2 -0
- package/dist/esm/emotion/components/multi-value.js +1 -0
- package/dist/esm/emotion/components/option.js +1 -0
- package/dist/esm/emotion/components/placeholder.js +1 -0
- package/dist/esm/emotion/components/single-value.js +1 -0
- package/dist/esm/utils.js +2 -1
- package/dist/types/compiled/components/containers.d.ts +53 -0
- package/dist/types/compiled/components/control.d.ts +41 -0
- package/dist/types/compiled/components/group.d.ts +54 -0
- package/dist/types/compiled/components/indicators.d.ts +72 -0
- package/dist/types/compiled/components/input.d.ts +36 -0
- package/dist/types/compiled/components/internal/a11y-text.d.ts +3 -0
- package/dist/types/compiled/components/internal/dummy-input.d.ts +8 -0
- package/dist/types/compiled/components/internal/required-input.d.ts +10 -0
- package/dist/types/compiled/components/live-region.d.ts +19 -0
- package/dist/types/compiled/components/menu.d.ts +115 -0
- package/dist/types/compiled/components/multi-value.d.ts +57 -0
- package/dist/types/compiled/components/option.d.ts +48 -0
- package/dist/types/compiled/components/placeholder.d.ts +21 -0
- package/dist/types/compiled/components/single-value.d.ts +27 -0
- package/dist/types/components/containers.d.ts +6 -11
- package/dist/types/components/control.d.ts +4 -9
- package/dist/types/components/group.d.ts +8 -10
- package/dist/types/components/index.d.ts +21 -21
- package/dist/types/components/indicators.d.ts +7 -12
- package/dist/types/components/input.d.ts +3 -8
- package/dist/types/components/internal/a11y-text.d.ts +2 -7
- package/dist/types/components/internal/dummy-input.d.ts +3 -8
- package/dist/types/components/internal/required-input.d.ts +0 -4
- package/dist/types/components/internal/scroll-manager.d.ts +2 -7
- package/dist/types/components/live-region.d.ts +2 -8
- package/dist/types/components/menu.d.ts +10 -15
- package/dist/types/components/multi-value.d.ts +19 -13
- package/dist/types/components/option.d.ts +3 -8
- package/dist/types/components/placeholder.d.ts +3 -8
- package/dist/types/components/single-value.d.ts +3 -8
- package/dist/types/select.d.ts +21 -21
- package/dist/types/types.d.ts +3 -0
- package/dist/types-ts4.5/compiled/components/containers.d.ts +53 -0
- package/dist/types-ts4.5/compiled/components/control.d.ts +41 -0
- package/dist/types-ts4.5/compiled/components/group.d.ts +54 -0
- package/dist/types-ts4.5/compiled/components/indicators.d.ts +72 -0
- package/dist/types-ts4.5/compiled/components/input.d.ts +36 -0
- package/dist/types-ts4.5/compiled/components/internal/a11y-text.d.ts +3 -0
- package/dist/types-ts4.5/compiled/components/internal/dummy-input.d.ts +8 -0
- package/dist/types-ts4.5/compiled/components/internal/required-input.d.ts +10 -0
- package/dist/types-ts4.5/compiled/components/live-region.d.ts +19 -0
- package/dist/types-ts4.5/compiled/components/menu.d.ts +115 -0
- package/dist/types-ts4.5/compiled/components/multi-value.d.ts +57 -0
- package/dist/types-ts4.5/compiled/components/option.d.ts +48 -0
- package/dist/types-ts4.5/compiled/components/placeholder.d.ts +21 -0
- package/dist/types-ts4.5/compiled/components/single-value.d.ts +27 -0
- package/dist/types-ts4.5/components/containers.d.ts +6 -11
- package/dist/types-ts4.5/components/control.d.ts +4 -9
- package/dist/types-ts4.5/components/group.d.ts +8 -10
- package/dist/types-ts4.5/components/index.d.ts +21 -21
- package/dist/types-ts4.5/components/indicators.d.ts +7 -12
- package/dist/types-ts4.5/components/input.d.ts +3 -8
- package/dist/types-ts4.5/components/internal/a11y-text.d.ts +2 -7
- package/dist/types-ts4.5/components/internal/dummy-input.d.ts +3 -8
- package/dist/types-ts4.5/components/internal/required-input.d.ts +0 -4
- package/dist/types-ts4.5/components/internal/scroll-manager.d.ts +2 -7
- package/dist/types-ts4.5/components/live-region.d.ts +2 -8
- package/dist/types-ts4.5/components/menu.d.ts +10 -15
- package/dist/types-ts4.5/components/multi-value.d.ts +19 -13
- package/dist/types-ts4.5/components/option.d.ts +3 -8
- package/dist/types-ts4.5/components/placeholder.d.ts +3 -8
- package/dist/types-ts4.5/components/single-value.d.ts +3 -8
- package/dist/types-ts4.5/select.d.ts +21 -21
- package/dist/types-ts4.5/types.d.ts +3 -0
- package/package.json +11 -3
- package/dist/cjs/emotion/components/index.js +0 -52
- package/dist/cjs/emotion/components/internal/notify-open-layer-observer.js +0 -21
- package/dist/es2019/emotion/components/index.js +0 -41
- package/dist/es2019/emotion/components/internal/notify-open-layer-observer.js +0 -16
- package/dist/esm/emotion/components/index.js +0 -43
- package/dist/esm/emotion/components/internal/notify-open-layer-observer.js +0 -15
- package/dist/types/emotion/components/index.d.ts +0 -67
- package/dist/types/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
- package/dist/types-ts4.5/emotion/components/index.d.ts +0 -67
- package/dist/types-ts4.5/emotion/components/internal/notify-open-layer-observer.d.ts +0 -11
|
@@ -1,181 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
var
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _react2 = require("@emotion/react");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
9
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
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) { (0, _defineProperty2.default)(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; } /* eslint-disable @atlaskit/platform/ensure-feature-flag-prefix */ /**
|
|
19
|
-
* @jsxRuntime classic
|
|
20
|
-
* @jsx jsx
|
|
21
|
-
* @jsxFrag React.Fragment
|
|
22
|
-
*/
|
|
10
|
+
var _liveRegion = _interopRequireDefault(require("../compiled/components/live-region"));
|
|
11
|
+
var _liveRegion2 = _interopRequireDefault(require("../emotion/components/live-region"));
|
|
12
|
+
/* eslint-disable @repo/internal/react/no-unsafe-spread-props */
|
|
13
|
+
|
|
23
14
|
// ==============================
|
|
24
15
|
// Root Container
|
|
25
16
|
// ==============================
|
|
26
17
|
|
|
27
18
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
28
19
|
var LiveRegion = function LiveRegion(props) {
|
|
29
|
-
|
|
30
|
-
focusedOption = props.focusedOption,
|
|
31
|
-
focusedValue = props.focusedValue,
|
|
32
|
-
focusableOptions = props.focusableOptions,
|
|
33
|
-
isFocused = props.isFocused,
|
|
34
|
-
selectValue = props.selectValue,
|
|
35
|
-
selectProps = props.selectProps,
|
|
36
|
-
id = props.id,
|
|
37
|
-
isAppleDevice = props.isAppleDevice;
|
|
38
|
-
var ariaLiveMessages = selectProps.ariaLiveMessages,
|
|
39
|
-
getOptionLabel = selectProps.getOptionLabel,
|
|
40
|
-
inputValue = selectProps.inputValue,
|
|
41
|
-
isMulti = selectProps.isMulti,
|
|
42
|
-
isOptionDisabled = selectProps.isOptionDisabled,
|
|
43
|
-
isSearchable = selectProps.isSearchable,
|
|
44
|
-
label = selectProps.label,
|
|
45
|
-
menuIsOpen = selectProps.menuIsOpen,
|
|
46
|
-
options = selectProps.options,
|
|
47
|
-
screenReaderStatus = selectProps.screenReaderStatus,
|
|
48
|
-
tabSelectsValue = selectProps.tabSelectsValue,
|
|
49
|
-
isLoading = selectProps.isLoading;
|
|
50
|
-
var ariaLabel = selectProps['aria-label'] || label;
|
|
51
|
-
var ariaLive = selectProps['aria-live'];
|
|
52
|
-
|
|
53
|
-
// for safari, we will use minimum support from aria-live region
|
|
54
|
-
var isA11yImprovementEnabled = (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') && !isAppleDevice;
|
|
55
|
-
|
|
56
|
-
// Update aria live message configuration when prop changes
|
|
57
|
-
var messages = (0, _react.useMemo)(function () {
|
|
58
|
-
return _objectSpread(_objectSpread({}, _accessibility.defaultAriaLiveMessages), ariaLiveMessages || {});
|
|
59
|
-
}, [ariaLiveMessages]);
|
|
60
|
-
|
|
61
|
-
// Update aria live selected option when prop changes
|
|
62
|
-
var ariaSelected = (0, _react.useMemo)(function () {
|
|
63
|
-
var message = '';
|
|
64
|
-
if (isA11yImprovementEnabled && menuIsOpen) {
|
|
65
|
-
// we don't need to have selected message when the menu is open
|
|
66
|
-
return '';
|
|
67
|
-
}
|
|
68
|
-
if (ariaSelection && messages.onChange) {
|
|
69
|
-
var option = ariaSelection.option,
|
|
70
|
-
selectedOptions = ariaSelection.options,
|
|
71
|
-
removedValue = ariaSelection.removedValue,
|
|
72
|
-
removedValues = ariaSelection.removedValues,
|
|
73
|
-
value = ariaSelection.value;
|
|
74
|
-
// select-option when !isMulti does not return option so we assume selected option is value
|
|
75
|
-
var asOption = function asOption(val) {
|
|
76
|
-
return !Array.isArray(val) ? val : null;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
// If there is just one item from the action then get its label
|
|
80
|
-
var selected = removedValue || option || asOption(value);
|
|
81
|
-
var _label = selected ? getOptionLabel(selected) : '';
|
|
82
|
-
|
|
83
|
-
// If there are multiple items from the action then return an array of labels
|
|
84
|
-
var multiSelected = selectedOptions || removedValues || undefined;
|
|
85
|
-
var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];
|
|
86
|
-
if (isA11yImprovementEnabled && !_label && !labels.length) {
|
|
87
|
-
// return empty string if no labels provided
|
|
88
|
-
return '';
|
|
89
|
-
}
|
|
90
|
-
var onChangeProps = _objectSpread({
|
|
91
|
-
// multiSelected items are usually items that have already been selected
|
|
92
|
-
// or set by the user as a default value so we assume they are not disabled
|
|
93
|
-
isDisabled: selected && isOptionDisabled(selected, selectValue),
|
|
94
|
-
label: _label,
|
|
95
|
-
labels: labels
|
|
96
|
-
}, ariaSelection);
|
|
97
|
-
message = messages.onChange(onChangeProps);
|
|
98
|
-
}
|
|
99
|
-
return message;
|
|
100
|
-
}, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel, isA11yImprovementEnabled, menuIsOpen]);
|
|
101
|
-
var prevInputValue = (0, _react.useRef)('');
|
|
102
|
-
var ariaFocused = (0, _react.useMemo)(function () {
|
|
103
|
-
var focusMsg = '';
|
|
104
|
-
var focused = focusedOption || focusedValue;
|
|
105
|
-
var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));
|
|
106
|
-
if (inputValue === prevInputValue.current && isA11yImprovementEnabled) {
|
|
107
|
-
// only announce focus option when searching when ff is on and the input value changed
|
|
108
|
-
// for safari, we will announce for all
|
|
109
|
-
return '';
|
|
110
|
-
}
|
|
111
|
-
if (focused && messages.onFocus) {
|
|
112
|
-
var onFocusProps = {
|
|
113
|
-
focused: focused,
|
|
114
|
-
label: getOptionLabel(focused),
|
|
115
|
-
isDisabled: isOptionDisabled(focused, selectValue),
|
|
116
|
-
isSelected: isSelected,
|
|
117
|
-
options: focusableOptions,
|
|
118
|
-
context: focused === focusedOption ? 'menu' : 'value',
|
|
119
|
-
selectValue: selectValue,
|
|
120
|
-
isMulti: isMulti
|
|
121
|
-
};
|
|
122
|
-
focusMsg = messages.onFocus(onFocusProps);
|
|
123
|
-
}
|
|
124
|
-
prevInputValue.current = inputValue;
|
|
125
|
-
return focusMsg;
|
|
126
|
-
}, [inputValue, focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue, isA11yImprovementEnabled, isMulti]);
|
|
127
|
-
var ariaResults = (0, _react.useMemo)(function () {
|
|
128
|
-
var resultsMsg = '';
|
|
129
|
-
if (menuIsOpen && options.length && !isLoading && messages.onFilter) {
|
|
130
|
-
var resultsMessage = screenReaderStatus({
|
|
131
|
-
count: focusableOptions.length
|
|
132
|
-
});
|
|
133
|
-
resultsMsg = messages.onFilter({
|
|
134
|
-
inputValue: inputValue,
|
|
135
|
-
resultsMessage: resultsMessage
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
return resultsMsg;
|
|
139
|
-
}, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus, isLoading]);
|
|
140
|
-
var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';
|
|
141
|
-
var ariaGuidance = (0, _react.useMemo)(function () {
|
|
142
|
-
if ((0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement')) {
|
|
143
|
-
// don't announce guidance at all when ff is on
|
|
144
|
-
return '';
|
|
145
|
-
}
|
|
146
|
-
var guidanceMsg = '';
|
|
147
|
-
if (messages.guidance) {
|
|
148
|
-
var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';
|
|
149
|
-
guidanceMsg = messages.guidance({
|
|
150
|
-
'aria-label': ariaLabel,
|
|
151
|
-
context: context,
|
|
152
|
-
isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),
|
|
153
|
-
isMulti: isMulti,
|
|
154
|
-
isSearchable: isSearchable,
|
|
155
|
-
tabSelectsValue: tabSelectsValue,
|
|
156
|
-
isInitialFocus: isInitialFocus
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
return guidanceMsg;
|
|
160
|
-
}, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue, isInitialFocus]);
|
|
161
|
-
var ScreenReaderText = (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("span", {
|
|
162
|
-
id: "aria-selection"
|
|
163
|
-
}, ariaSelected), (0, _react2.jsx)("span", {
|
|
164
|
-
id: "aria-results"
|
|
165
|
-
}, ariaResults), !(0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') && (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("span", {
|
|
166
|
-
id: "aria-focused"
|
|
167
|
-
}, ariaFocused), (0, _react2.jsx)("span", {
|
|
168
|
-
id: "aria-guidance"
|
|
169
|
-
}, ariaGuidance)));
|
|
170
|
-
return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_a11yText.default, {
|
|
171
|
-
id: id
|
|
172
|
-
}, isInitialFocus && ScreenReaderText), (0, _react2.jsx)(_a11yText.default, {
|
|
173
|
-
"aria-live": ariaLive // Should be undefined by default unless a specific use case requires it
|
|
174
|
-
,
|
|
175
|
-
"aria-atomic": (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? undefined : 'false',
|
|
176
|
-
"aria-relevant": (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? undefined : 'additions text',
|
|
177
|
-
role: (0, _platformFeatureFlags.fg)('design_system_select-a11y-improvement') ? 'status' : 'log'
|
|
178
|
-
}, isFocused && !isInitialFocus && ScreenReaderText));
|
|
20
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_liveRegion.default, props) : /*#__PURE__*/_react.default.createElement(_liveRegion2.default, props);
|
|
179
21
|
};
|
|
180
22
|
|
|
181
23
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
@@ -1,318 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.noOptionsMessageCSS = exports.menuPortalCSS = exports.menuListCSS = exports.menuCSS = exports.loadingMessageCSS = exports.default = exports.NoOptionsMessage = exports.MenuPortal = exports.MenuPlacer = exports.MenuList = exports.LoadingMessage = void 0;
|
|
8
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
9
|
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
10
|
-
var
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
var _react = require("react");
|
|
14
|
-
var _react2 = require("@emotion/react");
|
|
15
|
-
var _dom = require("@floating-ui/dom");
|
|
16
|
-
var _reactDom = require("react-dom");
|
|
17
|
-
var _useIsomorphicLayoutEffect = _interopRequireDefault(require("use-isomorphic-layout-effect"));
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
18
11
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
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) { (0, _defineProperty2.default)(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; } /**
|
|
25
|
-
* @jsxRuntime classic
|
|
26
|
-
* @jsx jsx
|
|
27
|
-
*/
|
|
28
|
-
// ==============================
|
|
29
|
-
// Menu
|
|
30
|
-
// ==============================
|
|
31
|
-
|
|
32
|
-
// Get Menu Placement
|
|
33
|
-
// ------------------------------
|
|
34
|
-
|
|
35
|
-
function getMenuPlacement(_ref) {
|
|
36
|
-
var preferredMaxHeight = _ref.maxHeight,
|
|
37
|
-
menuEl = _ref.menuEl,
|
|
38
|
-
minHeight = _ref.minHeight,
|
|
39
|
-
preferredPlacement = _ref.placement,
|
|
40
|
-
shouldScroll = _ref.shouldScroll,
|
|
41
|
-
isFixedPosition = _ref.isFixedPosition,
|
|
42
|
-
controlHeight = _ref.controlHeight;
|
|
43
|
-
var scrollParent = (0, _utils.getScrollParent)(menuEl);
|
|
44
|
-
var defaultState = {
|
|
45
|
-
placement: 'bottom',
|
|
46
|
-
maxHeight: preferredMaxHeight
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// something went wrong, return default state
|
|
50
|
-
if (!menuEl || !menuEl.offsetParent) {
|
|
51
|
-
return defaultState;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// we can't trust `scrollParent.scrollHeight` --> it may increase when
|
|
55
|
-
// the menu is rendered
|
|
56
|
-
var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),
|
|
57
|
-
scrollHeight = _scrollParent$getBoun.height,
|
|
58
|
-
scrollParentTop = _scrollParent$getBoun.top;
|
|
59
|
-
var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),
|
|
60
|
-
menuBottom = _menuEl$getBoundingCl.bottom,
|
|
61
|
-
menuHeight = _menuEl$getBoundingCl.height,
|
|
62
|
-
menuTop = _menuEl$getBoundingCl.top;
|
|
63
|
-
var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),
|
|
64
|
-
containerTop = _menuEl$offsetParent$.top;
|
|
65
|
-
var viewHeight = isFixedPosition ? window.innerHeight : (0, _utils.normalizedHeight)(scrollParent);
|
|
66
|
-
var scrollTop = (0, _utils.getScrollTop)(scrollParent);
|
|
67
|
-
// use menuTop - scrollParentTop for the actual top space of menu in the scroll container
|
|
68
|
-
var menuTopFromParent = (0, _platformFeatureFlags.fg)('design-system-select-fix-placement') ? menuTop - scrollParentTop : menuTop;
|
|
69
|
-
var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);
|
|
70
|
-
var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);
|
|
71
|
-
var viewSpaceAbove = containerTop - marginTop;
|
|
72
|
-
var viewSpaceBelow = viewHeight - menuTopFromParent;
|
|
73
|
-
var scrollSpaceAbove = viewSpaceAbove + scrollTop;
|
|
74
|
-
var scrollSpaceBelow = scrollHeight - scrollTop - menuTopFromParent;
|
|
75
|
-
var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;
|
|
76
|
-
var scrollUp = scrollTop + menuTop - marginTop;
|
|
77
|
-
var scrollDuration = 160;
|
|
78
|
-
switch (preferredPlacement) {
|
|
79
|
-
case 'auto':
|
|
80
|
-
case 'bottom':
|
|
81
|
-
// 1: the menu will fit, do nothing
|
|
82
|
-
if (viewSpaceBelow >= menuHeight) {
|
|
83
|
-
return {
|
|
84
|
-
placement: 'bottom',
|
|
85
|
-
maxHeight: preferredMaxHeight
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// 2: the menu will fit, if scrolled
|
|
90
|
-
if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {
|
|
91
|
-
if (shouldScroll) {
|
|
92
|
-
(0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
placement: 'bottom',
|
|
96
|
-
maxHeight: preferredMaxHeight
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// 3: the menu will fit, if constrained
|
|
101
|
-
if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {
|
|
102
|
-
if (shouldScroll) {
|
|
103
|
-
(0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// we want to provide as much of the menu as possible to the user,
|
|
107
|
-
// so give them whatever is available below rather than the minHeight.
|
|
108
|
-
var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;
|
|
109
|
-
return {
|
|
110
|
-
placement: 'bottom',
|
|
111
|
-
maxHeight: constrainedHeight
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// 4. Forked beviour when there isn't enough space below
|
|
116
|
-
|
|
117
|
-
// AUTO: flip the menu, render above
|
|
118
|
-
if (preferredPlacement === 'auto' || isFixedPosition) {
|
|
119
|
-
// may need to be constrained after flipping
|
|
120
|
-
var _constrainedHeight = preferredMaxHeight;
|
|
121
|
-
var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;
|
|
122
|
-
if (spaceAbove >= minHeight) {
|
|
123
|
-
_constrainedHeight = Math.min(spaceAbove - marginBottom - controlHeight, preferredMaxHeight);
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
placement: 'top',
|
|
127
|
-
maxHeight: _constrainedHeight
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// BOTTOM: allow browser to increase scrollable area and immediately set scroll
|
|
132
|
-
if (preferredPlacement === 'bottom') {
|
|
133
|
-
if (shouldScroll) {
|
|
134
|
-
(0, _utils.scrollTo)(scrollParent, scrollDown);
|
|
135
|
-
}
|
|
136
|
-
return {
|
|
137
|
-
placement: 'bottom',
|
|
138
|
-
maxHeight: preferredMaxHeight
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
break;
|
|
142
|
-
case 'top':
|
|
143
|
-
// 1: the menu will fit, do nothing
|
|
144
|
-
if (viewSpaceAbove >= menuHeight) {
|
|
145
|
-
return {
|
|
146
|
-
placement: 'top',
|
|
147
|
-
maxHeight: preferredMaxHeight
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// 2: the menu will fit, if scrolled
|
|
152
|
-
if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {
|
|
153
|
-
if (shouldScroll) {
|
|
154
|
-
(0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);
|
|
155
|
-
}
|
|
156
|
-
return {
|
|
157
|
-
placement: 'top',
|
|
158
|
-
maxHeight: preferredMaxHeight
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// 3: the menu will fit, if constrained
|
|
163
|
-
if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
|
|
164
|
-
var _constrainedHeight2 = preferredMaxHeight;
|
|
165
|
-
|
|
166
|
-
// we want to provide as much of the menu as possible to the user,
|
|
167
|
-
// so give them whatever is available below rather than the minHeight.
|
|
168
|
-
if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {
|
|
169
|
-
_constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;
|
|
170
|
-
}
|
|
171
|
-
if (shouldScroll) {
|
|
172
|
-
(0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
placement: 'top',
|
|
176
|
-
maxHeight: _constrainedHeight2
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// 4. not enough space, the browser WILL NOT increase scrollable area when
|
|
181
|
-
// absolutely positioned element rendered above the viewport (only below).
|
|
182
|
-
// Flip the menu, render below
|
|
183
|
-
return {
|
|
184
|
-
placement: 'bottom',
|
|
185
|
-
maxHeight: preferredMaxHeight
|
|
186
|
-
};
|
|
187
|
-
default:
|
|
188
|
-
throw new Error("Invalid placement provided \"".concat(preferredPlacement, "\"."));
|
|
189
|
-
}
|
|
190
|
-
return defaultState;
|
|
191
|
-
}
|
|
12
|
+
var _menu = _interopRequireWildcard(require("../compiled/components/menu"));
|
|
13
|
+
var _menu2 = _interopRequireWildcard(require("../emotion/components/menu"));
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
/* eslint-disable @repo/internal/react/no-unsafe-spread-props */
|
|
192
17
|
|
|
193
18
|
// Menu Component
|
|
194
19
|
// ------------------------------
|
|
195
20
|
|
|
196
|
-
function
|
|
197
|
-
|
|
198
|
-
bottom: 'top',
|
|
199
|
-
top: 'bottom'
|
|
200
|
-
};
|
|
201
|
-
return placement ? placementToCSSProp[placement] : 'bottom';
|
|
202
|
-
}
|
|
203
|
-
var coercePlacement = function coercePlacement(p) {
|
|
204
|
-
return p === 'auto' ? 'bottom' : p;
|
|
205
|
-
};
|
|
206
|
-
var menuCSS = exports.menuCSS = function menuCSS(_ref2) {
|
|
207
|
-
var placement = _ref2.placement;
|
|
208
|
-
return (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
|
|
209
|
-
label: 'menu'
|
|
210
|
-
}, alignToControl(placement), '100%'), "position", 'absolute'), "width", '100%'), "zIndex", 1), "borderRadius", "var(--ds-border-radius, 4px)"), "marginBottom", "var(--ds-space-100, 8px)"), "marginTop", "var(--ds-space-100, 8px)"), "backgroundColor", "var(--ds-surface-overlay, white)"), "boxShadow", "var(--ds-shadow-overlay, 0 0 0 1px hsl(0deg 0% 0% / 10%), 0 4px 11px hsl(0deg 0% 0% / 10%))");
|
|
21
|
+
var menuCSS = exports.menuCSS = function menuCSS(props) {
|
|
22
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? (0, _menu.menuCSS)() : (0, _menu2.menuCSS)(props);
|
|
211
23
|
};
|
|
212
|
-
var PortalPlacementContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
213
24
|
|
|
214
25
|
// NOTE: internal only
|
|
215
26
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
216
27
|
var MenuPlacer = exports.MenuPlacer = function MenuPlacer(props) {
|
|
217
|
-
|
|
218
|
-
minMenuHeight = props.minMenuHeight,
|
|
219
|
-
maxMenuHeight = props.maxMenuHeight,
|
|
220
|
-
menuPlacement = props.menuPlacement,
|
|
221
|
-
menuPosition = props.menuPosition,
|
|
222
|
-
menuShouldScrollIntoView = props.menuShouldScrollIntoView;
|
|
223
|
-
var _ref4 = (0, _react.useContext)(PortalPlacementContext) || {},
|
|
224
|
-
setPortalPlacement = _ref4.setPortalPlacement;
|
|
225
|
-
var ref = (0, _react.useRef)(null);
|
|
226
|
-
var _useState = (0, _react.useState)(maxMenuHeight),
|
|
227
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
228
|
-
maxHeight = _useState2[0],
|
|
229
|
-
setMaxHeight = _useState2[1];
|
|
230
|
-
var _useState3 = (0, _react.useState)(null),
|
|
231
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
232
|
-
placement = _useState4[0],
|
|
233
|
-
setPlacement = _useState4[1];
|
|
234
|
-
// The minimum height of the control
|
|
235
|
-
var controlHeight = 38;
|
|
236
|
-
(0, _useIsomorphicLayoutEffect.default)(function () {
|
|
237
|
-
var menuEl = ref.current;
|
|
238
|
-
if (!menuEl) {
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// DO NOT scroll if position is fixed
|
|
243
|
-
var isFixedPosition = menuPosition === 'fixed';
|
|
244
|
-
var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;
|
|
245
|
-
var state = getMenuPlacement({
|
|
246
|
-
maxHeight: maxMenuHeight,
|
|
247
|
-
menuEl: menuEl,
|
|
248
|
-
minHeight: minMenuHeight,
|
|
249
|
-
placement: menuPlacement,
|
|
250
|
-
shouldScroll: shouldScroll,
|
|
251
|
-
isFixedPosition: isFixedPosition,
|
|
252
|
-
controlHeight: controlHeight
|
|
253
|
-
});
|
|
254
|
-
setMaxHeight(state.maxHeight);
|
|
255
|
-
setPlacement(state.placement);
|
|
256
|
-
setPortalPlacement === null || setPortalPlacement === void 0 || setPortalPlacement(state.placement);
|
|
257
|
-
}, [maxMenuHeight, menuPlacement, menuPosition, menuShouldScrollIntoView, minMenuHeight, setPortalPlacement, controlHeight]);
|
|
258
|
-
return children({
|
|
259
|
-
ref: ref,
|
|
260
|
-
placerProps: _objectSpread(_objectSpread({}, props), {}, {
|
|
261
|
-
placement: placement || coercePlacement(menuPlacement),
|
|
262
|
-
maxHeight: maxHeight
|
|
263
|
-
})
|
|
264
|
-
});
|
|
28
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.MenuPlacer, props) : /*#__PURE__*/_react.default.createElement(_menu2.MenuPlacer, props);
|
|
265
29
|
};
|
|
266
30
|
var Menu = function Menu(props) {
|
|
267
|
-
|
|
268
|
-
innerRef = props.innerRef,
|
|
269
|
-
innerProps = props.innerProps;
|
|
270
|
-
return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'menu', {
|
|
271
|
-
menu: true
|
|
272
|
-
}), {
|
|
273
|
-
ref: innerRef
|
|
274
|
-
}, innerProps), children);
|
|
31
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.default, props) : /*#__PURE__*/_react.default.createElement(_menu2.default, props);
|
|
275
32
|
};
|
|
276
33
|
|
|
277
34
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
278
35
|
var _default = exports.default = Menu; // ==============================
|
|
279
36
|
// Menu List
|
|
280
37
|
// ==============================
|
|
281
|
-
var menuListCSS = exports.menuListCSS = function menuListCSS(
|
|
282
|
-
|
|
283
|
-
return {
|
|
284
|
-
maxHeight: maxHeight,
|
|
285
|
-
overflowY: 'auto',
|
|
286
|
-
position: 'relative',
|
|
287
|
-
// required for offset[Height, Top] > keyboard scroll
|
|
288
|
-
WebkitOverflowScrolling: 'touch',
|
|
289
|
-
paddingTop: "var(--ds-space-100, 8px)",
|
|
290
|
-
paddingBottom: "var(--ds-space-100, 8px)"
|
|
291
|
-
};
|
|
38
|
+
var menuListCSS = exports.menuListCSS = function menuListCSS(props) {
|
|
39
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? (0, _menu.menuListCSS)() : (0, _menu2.menuListCSS)(props);
|
|
292
40
|
};
|
|
293
41
|
|
|
294
42
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
295
43
|
var MenuList = exports.MenuList = function MenuList(props) {
|
|
296
|
-
|
|
297
|
-
innerProps = props.innerProps,
|
|
298
|
-
innerRef = props.innerRef,
|
|
299
|
-
isMulti = props.isMulti;
|
|
300
|
-
return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(props, 'menuList', {
|
|
301
|
-
'menu-list': true,
|
|
302
|
-
'menu-list--is-multi': isMulti
|
|
303
|
-
}), {
|
|
304
|
-
ref: innerRef
|
|
305
|
-
}, innerProps, {
|
|
306
|
-
tabIndex: -1
|
|
307
|
-
}), children);
|
|
44
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.MenuList, props) : /*#__PURE__*/_react.default.createElement(_menu2.MenuList, props);
|
|
308
45
|
};
|
|
309
46
|
|
|
310
47
|
// ==============================
|
|
311
48
|
// Menu Notices
|
|
312
49
|
// ==============================
|
|
313
50
|
|
|
314
|
-
var noticeCSS = function noticeCSS(
|
|
315
|
-
(0, _objectDestructuringEmpty2.default)(
|
|
51
|
+
var noticeCSS = function noticeCSS(_ref) {
|
|
52
|
+
(0, _objectDestructuringEmpty2.default)(_ref);
|
|
316
53
|
return {
|
|
317
54
|
textAlign: 'center',
|
|
318
55
|
padding: "var(--ds-space-100, 8px)".concat(" ", "var(--ds-space-150, 12px)")
|
|
@@ -321,136 +58,24 @@ var noticeCSS = function noticeCSS(_ref6) {
|
|
|
321
58
|
var noOptionsMessageCSS = exports.noOptionsMessageCSS = noticeCSS;
|
|
322
59
|
var loadingMessageCSS = exports.loadingMessageCSS = noticeCSS;
|
|
323
60
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
324
|
-
var NoOptionsMessage = exports.NoOptionsMessage = function NoOptionsMessage(
|
|
325
|
-
|
|
326
|
-
children = _ref7$children === void 0 ? 'No options' : _ref7$children,
|
|
327
|
-
innerProps = _ref7.innerProps,
|
|
328
|
-
restProps = (0, _objectWithoutProperties2.default)(_ref7, _excluded);
|
|
329
|
-
return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, restProps), {}, {
|
|
330
|
-
children: children,
|
|
331
|
-
innerProps: innerProps
|
|
332
|
-
}), 'noOptionsMessage', {
|
|
333
|
-
'menu-notice': true,
|
|
334
|
-
'menu-notice--no-options': true
|
|
335
|
-
}), {
|
|
336
|
-
// eslint-disable-next-line jsx-a11y/role-has-required-aria-props
|
|
337
|
-
role: "option"
|
|
338
|
-
}, innerProps), (0, _react2.jsx)(_primitives.Text, {
|
|
339
|
-
color: "color.text.subtle"
|
|
340
|
-
}, children));
|
|
61
|
+
var NoOptionsMessage = exports.NoOptionsMessage = function NoOptionsMessage(props) {
|
|
62
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.NoOptionsMessage, props) : /*#__PURE__*/_react.default.createElement(_menu2.NoOptionsMessage, props);
|
|
341
63
|
};
|
|
342
64
|
|
|
343
65
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
344
|
-
var LoadingMessage = exports.LoadingMessage = function LoadingMessage(
|
|
345
|
-
|
|
346
|
-
children = _ref8$children === void 0 ? 'Loading...' : _ref8$children,
|
|
347
|
-
innerProps = _ref8.innerProps,
|
|
348
|
-
restProps = (0, _objectWithoutProperties2.default)(_ref8, _excluded2);
|
|
349
|
-
return (0, _react2.jsx)("div", (0, _extends2.default)({}, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, restProps), {}, {
|
|
350
|
-
children: children,
|
|
351
|
-
innerProps: innerProps
|
|
352
|
-
}), 'loadingMessage', {
|
|
353
|
-
'menu-notice': true,
|
|
354
|
-
'menu-notice--loading': true
|
|
355
|
-
}), innerProps, {
|
|
356
|
-
// eslint-disable-next-line jsx-a11y/role-has-required-aria-props
|
|
357
|
-
role: "option"
|
|
358
|
-
}), (0, _react2.jsx)(_primitives.Text, {
|
|
359
|
-
color: "color.text.subtle"
|
|
360
|
-
}, children));
|
|
66
|
+
var LoadingMessage = exports.LoadingMessage = function LoadingMessage(props) {
|
|
67
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.LoadingMessage, props) : /*#__PURE__*/_react.default.createElement(_menu2.LoadingMessage, props);
|
|
361
68
|
};
|
|
362
69
|
|
|
363
70
|
// ==============================
|
|
364
71
|
// Menu Portal
|
|
365
72
|
// ==============================
|
|
366
73
|
|
|
367
|
-
var menuPortalCSS = exports.menuPortalCSS = function menuPortalCSS(
|
|
368
|
-
|
|
369
|
-
offset = _ref9.offset,
|
|
370
|
-
position = _ref9.position;
|
|
371
|
-
return {
|
|
372
|
-
left: rect.left,
|
|
373
|
-
position: position,
|
|
374
|
-
top: offset,
|
|
375
|
-
width: rect.width,
|
|
376
|
-
zIndex: 1
|
|
377
|
-
};
|
|
74
|
+
var menuPortalCSS = exports.menuPortalCSS = function menuPortalCSS(props) {
|
|
75
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? (0, _menu.menuPortalCSS)() : (0, _menu2.menuPortalCSS)(props);
|
|
378
76
|
};
|
|
77
|
+
|
|
379
78
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
380
79
|
var MenuPortal = exports.MenuPortal = function MenuPortal(props) {
|
|
381
|
-
|
|
382
|
-
children = props.children,
|
|
383
|
-
controlElement = props.controlElement,
|
|
384
|
-
innerProps = props.innerProps,
|
|
385
|
-
menuPlacement = props.menuPlacement,
|
|
386
|
-
menuPosition = props.menuPosition;
|
|
387
|
-
var menuPortalRef = (0, _react.useRef)(null);
|
|
388
|
-
var cleanupRef = (0, _react.useRef)(null);
|
|
389
|
-
var _useState5 = (0, _react.useState)(coercePlacement(menuPlacement)),
|
|
390
|
-
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
391
|
-
placement = _useState6[0],
|
|
392
|
-
setPortalPlacement = _useState6[1];
|
|
393
|
-
var portalPlacementContext = (0, _react.useMemo)(function () {
|
|
394
|
-
return {
|
|
395
|
-
setPortalPlacement: setPortalPlacement
|
|
396
|
-
};
|
|
397
|
-
}, []);
|
|
398
|
-
var _useState7 = (0, _react.useState)(null),
|
|
399
|
-
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
400
|
-
computedPosition = _useState8[0],
|
|
401
|
-
setComputedPosition = _useState8[1];
|
|
402
|
-
var updateComputedPosition = (0, _react.useCallback)(function () {
|
|
403
|
-
if (!controlElement) {
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
var rect = (0, _utils.getBoundingClientObj)(controlElement);
|
|
407
|
-
var scrollDistance = menuPosition === 'fixed' ? 0 : window.pageYOffset;
|
|
408
|
-
var offset = rect[placement] + scrollDistance;
|
|
409
|
-
if (offset !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset) || rect.left !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left) || rect.width !== (computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width)) {
|
|
410
|
-
setComputedPosition({
|
|
411
|
-
offset: offset,
|
|
412
|
-
rect: rect
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
}, [controlElement, menuPosition, placement, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.offset, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.left, computedPosition === null || computedPosition === void 0 ? void 0 : computedPosition.rect.width]);
|
|
416
|
-
(0, _useIsomorphicLayoutEffect.default)(function () {
|
|
417
|
-
updateComputedPosition();
|
|
418
|
-
}, [updateComputedPosition]);
|
|
419
|
-
var runAutoUpdate = (0, _react.useCallback)(function () {
|
|
420
|
-
if (typeof cleanupRef.current === 'function') {
|
|
421
|
-
cleanupRef.current();
|
|
422
|
-
cleanupRef.current = null;
|
|
423
|
-
}
|
|
424
|
-
if (controlElement && menuPortalRef.current) {
|
|
425
|
-
cleanupRef.current = (0, _dom.autoUpdate)(controlElement, menuPortalRef.current, updateComputedPosition, {
|
|
426
|
-
elementResize: 'ResizeObserver' in window
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
}, [controlElement, updateComputedPosition]);
|
|
430
|
-
(0, _useIsomorphicLayoutEffect.default)(function () {
|
|
431
|
-
runAutoUpdate();
|
|
432
|
-
}, [runAutoUpdate]);
|
|
433
|
-
var setMenuPortalElement = (0, _react.useCallback)(function (menuPortalElement) {
|
|
434
|
-
menuPortalRef.current = menuPortalElement;
|
|
435
|
-
runAutoUpdate();
|
|
436
|
-
}, [runAutoUpdate]);
|
|
437
|
-
|
|
438
|
-
// bail early if required elements aren't present
|
|
439
|
-
if (!appendTo && menuPosition !== 'fixed' || !computedPosition) {
|
|
440
|
-
return null;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// same wrapper element whether fixed or portalled
|
|
444
|
-
var menuWrapper = (0, _react2.jsx)("div", (0, _extends2.default)({
|
|
445
|
-
ref: setMenuPortalElement
|
|
446
|
-
}, (0, _utils.getStyleProps)(_objectSpread(_objectSpread({}, props), {}, {
|
|
447
|
-
offset: computedPosition.offset,
|
|
448
|
-
position: menuPosition,
|
|
449
|
-
rect: computedPosition.rect
|
|
450
|
-
}), 'menuPortal', {
|
|
451
|
-
'menu-portal': true
|
|
452
|
-
}), innerProps), children);
|
|
453
|
-
return (0, _react2.jsx)(PortalPlacementContext.Provider, {
|
|
454
|
-
value: portalPlacementContext
|
|
455
|
-
}, appendTo ? /*#__PURE__*/(0, _reactDom.createPortal)(menuWrapper, appendTo) : menuWrapper);
|
|
80
|
+
return (0, _platformFeatureFlags.fg)('compiled-react-select') ? /*#__PURE__*/_react.default.createElement(_menu.MenuPortal, props) : /*#__PURE__*/_react.default.createElement(_menu2.MenuPortal, props);
|
|
456
81
|
};
|