@atlaskit/react-select 0.0.2
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 +9 -0
- package/LICENSE.md +11 -0
- package/README.md +10 -0
- package/async/package.json +15 -0
- package/base/package.json +15 -0
- package/creatable/package.json +15 -0
- package/dist/cjs/accessibility/helpers.js +34 -0
- package/dist/cjs/accessibility/index.js +74 -0
- package/dist/cjs/async-creatable.js +27 -0
- package/dist/cjs/async.js +30 -0
- package/dist/cjs/builtins.js +18 -0
- package/dist/cjs/components/containers.js +100 -0
- package/dist/cjs/components/control.js +67 -0
- package/dist/cjs/components/group.js +79 -0
- package/dist/cjs/components/index.js +53 -0
- package/dist/cjs/components/indicators.js +214 -0
- package/dist/cjs/components/input.js +93 -0
- package/dist/cjs/components/internal/a11y-text.js +34 -0
- package/dist/cjs/components/internal/dummy-input.js +43 -0
- package/dist/cjs/components/internal/index.js +34 -0
- package/dist/cjs/components/internal/required-input.js +43 -0
- package/dist/cjs/components/internal/scroll-manager.js +57 -0
- package/dist/cjs/components/internal/use-scroll-capture.js +132 -0
- package/dist/cjs/components/internal/use-scroll-lock.js +149 -0
- package/dist/cjs/components/live-region.js +153 -0
- package/dist/cjs/components/menu.js +464 -0
- package/dist/cjs/components/multi-value.js +129 -0
- package/dist/cjs/components/option.js +62 -0
- package/dist/cjs/components/placeholder.js +39 -0
- package/dist/cjs/components/single-value.js +46 -0
- package/dist/cjs/creatable.js +30 -0
- package/dist/cjs/diacritics.js +274 -0
- package/dist/cjs/filters.js +50 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/nonce-provider.js +30 -0
- package/dist/cjs/select.js +1803 -0
- package/dist/cjs/state-manager.js +31 -0
- package/dist/cjs/styles.js +66 -0
- package/dist/cjs/theme.js +42 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/use-async.js +156 -0
- package/dist/cjs/use-creatable.js +114 -0
- package/dist/cjs/use-state-manager.js +83 -0
- package/dist/cjs/utils.js +357 -0
- package/dist/es2019/accessibility/helpers.js +24 -0
- package/dist/es2019/accessibility/index.js +72 -0
- package/dist/es2019/async-creatable.js +17 -0
- package/dist/es2019/async.js +16 -0
- package/dist/es2019/builtins.js +4 -0
- package/dist/es2019/components/containers.js +100 -0
- package/dist/es2019/components/control.js +62 -0
- package/dist/es2019/components/group.js +74 -0
- package/dist/es2019/components/index.js +41 -0
- package/dist/es2019/components/indicators.js +211 -0
- package/dist/es2019/components/input.js +88 -0
- package/dist/es2019/components/internal/a11y-text.js +25 -0
- package/dist/es2019/components/internal/dummy-input.js +36 -0
- package/dist/es2019/components/internal/index.js +4 -0
- package/dist/es2019/components/internal/required-input.js +35 -0
- package/dist/es2019/components/internal/scroll-manager.js +49 -0
- package/dist/es2019/components/internal/use-scroll-capture.js +128 -0
- package/dist/es2019/components/internal/use-scroll-lock.js +143 -0
- package/dist/es2019/components/live-region.js +151 -0
- package/dist/es2019/components/menu.js +466 -0
- package/dist/es2019/components/multi-value.js +134 -0
- package/dist/es2019/components/option.js +57 -0
- package/dist/es2019/components/placeholder.js +34 -0
- package/dist/es2019/components/single-value.js +41 -0
- package/dist/es2019/creatable.js +15 -0
- package/dist/es2019/diacritics.js +264 -0
- package/dist/es2019/filters.js +36 -0
- package/dist/es2019/index.js +8 -0
- package/dist/es2019/nonce-provider.js +19 -0
- package/dist/es2019/select.js +1766 -0
- package/dist/es2019/state-manager.js +22 -0
- package/dist/es2019/styles.js +56 -0
- package/dist/es2019/theme.js +36 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/use-async.js +117 -0
- package/dist/es2019/use-creatable.js +81 -0
- package/dist/es2019/use-state-manager.js +60 -0
- package/dist/es2019/utils.js +309 -0
- package/dist/esm/accessibility/helpers.js +24 -0
- package/dist/esm/accessibility/index.js +68 -0
- package/dist/esm/async-creatable.js +17 -0
- package/dist/esm/async.js +16 -0
- package/dist/esm/builtins.js +12 -0
- package/dist/esm/components/containers.js +96 -0
- package/dist/esm/components/control.js +62 -0
- package/dist/esm/components/group.js +74 -0
- package/dist/esm/components/index.js +43 -0
- package/dist/esm/components/indicators.js +209 -0
- package/dist/esm/components/input.js +88 -0
- package/dist/esm/components/internal/a11y-text.js +27 -0
- package/dist/esm/components/internal/dummy-input.js +37 -0
- package/dist/esm/components/internal/index.js +4 -0
- package/dist/esm/components/internal/required-input.js +36 -0
- package/dist/esm/components/internal/scroll-manager.js +49 -0
- package/dist/esm/components/internal/use-scroll-capture.js +126 -0
- package/dist/esm/components/internal/use-scroll-lock.js +143 -0
- package/dist/esm/components/live-region.js +148 -0
- package/dist/esm/components/menu.js +460 -0
- package/dist/esm/components/multi-value.js +122 -0
- package/dist/esm/components/option.js +57 -0
- package/dist/esm/components/placeholder.js +34 -0
- package/dist/esm/components/single-value.js +41 -0
- package/dist/esm/creatable.js +15 -0
- package/dist/esm/diacritics.js +268 -0
- package/dist/esm/filters.js +43 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/nonce-provider.js +20 -0
- package/dist/esm/select.js +1794 -0
- package/dist/esm/state-manager.js +22 -0
- package/dist/esm/styles.js +58 -0
- package/dist/esm/theme.js +36 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/use-async.js +149 -0
- package/dist/esm/use-creatable.js +107 -0
- package/dist/esm/use-state-manager.js +76 -0
- package/dist/esm/utils.js +328 -0
- package/dist/types/accessibility/helpers.d.ts +5 -0
- package/dist/types/accessibility/index.d.ts +125 -0
- package/dist/types/async-creatable.d.ts +10 -0
- package/dist/types/async.d.ts +9 -0
- package/dist/types/builtins.d.ts +5 -0
- package/dist/types/components/containers.d.ts +50 -0
- package/dist/types/components/control.d.ts +33 -0
- package/dist/types/components/group.d.ts +53 -0
- package/dist/types/components/index.d.ts +73 -0
- package/dist/types/components/indicators.d.ts +72 -0
- package/dist/types/components/input.d.ts +33 -0
- package/dist/types/components/internal/a11y-text.d.ts +8 -0
- package/dist/types/components/internal/dummy-input.d.ts +9 -0
- package/dist/types/components/internal/index.d.ts +4 -0
- package/dist/types/components/internal/required-input.d.ts +10 -0
- package/dist/types/components/internal/scroll-manager.d.ts +17 -0
- package/dist/types/components/internal/use-scroll-capture.d.ts +12 -0
- package/dist/types/components/internal/use-scroll-lock.d.ts +9 -0
- package/dist/types/components/live-region.d.ts +24 -0
- package/dist/types/components/menu.d.ts +130 -0
- package/dist/types/components/multi-value.d.ts +47 -0
- package/dist/types/components/option.d.ts +49 -0
- package/dist/types/components/placeholder.d.ts +22 -0
- package/dist/types/components/single-value.d.ts +28 -0
- package/dist/types/creatable.d.ts +10 -0
- package/dist/types/diacritics.d.ts +1 -0
- package/dist/types/filters.d.ts +15 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/nonce-provider.d.ts +8 -0
- package/dist/types/select.d.ts +616 -0
- package/dist/types/state-manager.d.ts +17 -0
- package/dist/types/styles.d.ts +68 -0
- package/dist/types/theme.d.ts +27 -0
- package/dist/types/types.d.ts +134 -0
- package/dist/types/use-async.d.ts +31 -0
- package/dist/types/use-creatable.d.ts +46 -0
- package/dist/types/use-state-manager.d.ts +15 -0
- package/dist/types/utils.d.ts +44 -0
- package/dist/types-ts4.5/accessibility/helpers.d.ts +5 -0
- package/dist/types-ts4.5/accessibility/index.d.ts +125 -0
- package/dist/types-ts4.5/async-creatable.d.ts +10 -0
- package/dist/types-ts4.5/async.d.ts +9 -0
- package/dist/types-ts4.5/builtins.d.ts +5 -0
- package/dist/types-ts4.5/components/containers.d.ts +50 -0
- package/dist/types-ts4.5/components/control.d.ts +33 -0
- package/dist/types-ts4.5/components/group.d.ts +53 -0
- package/dist/types-ts4.5/components/index.d.ts +73 -0
- package/dist/types-ts4.5/components/indicators.d.ts +72 -0
- package/dist/types-ts4.5/components/input.d.ts +33 -0
- package/dist/types-ts4.5/components/internal/a11y-text.d.ts +8 -0
- package/dist/types-ts4.5/components/internal/dummy-input.d.ts +9 -0
- package/dist/types-ts4.5/components/internal/index.d.ts +4 -0
- package/dist/types-ts4.5/components/internal/required-input.d.ts +10 -0
- package/dist/types-ts4.5/components/internal/scroll-manager.d.ts +17 -0
- package/dist/types-ts4.5/components/internal/use-scroll-capture.d.ts +12 -0
- package/dist/types-ts4.5/components/internal/use-scroll-lock.d.ts +9 -0
- package/dist/types-ts4.5/components/live-region.d.ts +24 -0
- package/dist/types-ts4.5/components/menu.d.ts +130 -0
- package/dist/types-ts4.5/components/multi-value.d.ts +47 -0
- package/dist/types-ts4.5/components/option.d.ts +49 -0
- package/dist/types-ts4.5/components/placeholder.d.ts +22 -0
- package/dist/types-ts4.5/components/single-value.d.ts +28 -0
- package/dist/types-ts4.5/creatable.d.ts +10 -0
- package/dist/types-ts4.5/diacritics.d.ts +1 -0
- package/dist/types-ts4.5/filters.d.ts +15 -0
- package/dist/types-ts4.5/index.d.ts +28 -0
- package/dist/types-ts4.5/nonce-provider.d.ts +8 -0
- package/dist/types-ts4.5/select.d.ts +616 -0
- package/dist/types-ts4.5/state-manager.d.ts +17 -0
- package/dist/types-ts4.5/styles.d.ts +68 -0
- package/dist/types-ts4.5/theme.d.ts +27 -0
- package/dist/types-ts4.5/types.d.ts +134 -0
- package/dist/types-ts4.5/use-async.d.ts +31 -0
- package/dist/types-ts4.5/use-creatable.d.ts +46 -0
- package/dist/types-ts4.5/use-state-manager.d.ts +15 -0
- package/dist/types-ts4.5/utils.d.ts +44 -0
- package/package.json +83 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useScrollLock;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];
|
|
9
|
+
var LOCK_STYLES = {
|
|
10
|
+
boxSizing: 'border-box',
|
|
11
|
+
// account for possible declaration `width: 100%;` on body
|
|
12
|
+
overflow: 'hidden',
|
|
13
|
+
position: 'relative',
|
|
14
|
+
height: '100%'
|
|
15
|
+
};
|
|
16
|
+
function preventTouchMove(e) {
|
|
17
|
+
e.preventDefault();
|
|
18
|
+
}
|
|
19
|
+
function allowTouchMove(e) {
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
}
|
|
22
|
+
function preventInertiaScroll() {
|
|
23
|
+
var top = this.scrollTop;
|
|
24
|
+
var totalScroll = this.scrollHeight;
|
|
25
|
+
var currentScroll = top + this.offsetHeight;
|
|
26
|
+
if (top === 0) {
|
|
27
|
+
this.scrollTop = 1;
|
|
28
|
+
} else if (currentScroll === totalScroll) {
|
|
29
|
+
this.scrollTop = top - 1;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// `ontouchstart` check works on most browsers
|
|
34
|
+
// `maxTouchPoints` works on IE10/11 and Surface
|
|
35
|
+
function isTouchDevice() {
|
|
36
|
+
// eslint-disable-next-line compat/compat
|
|
37
|
+
return 'ontouchstart' in window || navigator.maxTouchPoints;
|
|
38
|
+
}
|
|
39
|
+
var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
|
|
40
|
+
var activeScrollLocks = 0;
|
|
41
|
+
var listenerOptions = {
|
|
42
|
+
capture: false,
|
|
43
|
+
passive: false
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// TODO: Fill in the hook {description}.
|
|
47
|
+
/**
|
|
48
|
+
* {description}.
|
|
49
|
+
*/
|
|
50
|
+
function useScrollLock(_ref) {
|
|
51
|
+
var isEnabled = _ref.isEnabled,
|
|
52
|
+
_ref$accountForScroll = _ref.accountForScrollbars,
|
|
53
|
+
accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;
|
|
54
|
+
var originalStyles = (0, _react.useRef)({});
|
|
55
|
+
var scrollTarget = (0, _react.useRef)(null);
|
|
56
|
+
var addScrollLock = (0, _react.useCallback)(function (touchScrollTarget) {
|
|
57
|
+
if (!canUseDOM) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
var target = document.body;
|
|
61
|
+
var targetStyle = target && target.style;
|
|
62
|
+
if (accountForScrollbars) {
|
|
63
|
+
// store any styles already applied to the body
|
|
64
|
+
STYLE_KEYS.forEach(function (key) {
|
|
65
|
+
var val = targetStyle && targetStyle[key];
|
|
66
|
+
originalStyles.current[key] = val;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// apply the lock styles and padding if this is the first scroll lock
|
|
71
|
+
if (accountForScrollbars && activeScrollLocks < 1) {
|
|
72
|
+
var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;
|
|
73
|
+
var clientWidth = document.body ? document.body.clientWidth : 0;
|
|
74
|
+
var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;
|
|
75
|
+
Object.keys(LOCK_STYLES).forEach(function (key) {
|
|
76
|
+
var val = LOCK_STYLES[key];
|
|
77
|
+
if (targetStyle) {
|
|
78
|
+
targetStyle[key] = val;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if (targetStyle) {
|
|
82
|
+
targetStyle.paddingRight = "".concat(adjustedPadding, "px");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// account for touch devices
|
|
87
|
+
if (target && isTouchDevice()) {
|
|
88
|
+
// Mobile Safari ignores { overflow: hidden } declaration on the body.
|
|
89
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
90
|
+
target.addEventListener('touchmove', preventTouchMove, listenerOptions);
|
|
91
|
+
|
|
92
|
+
// Allow scroll on provided target
|
|
93
|
+
if (touchScrollTarget) {
|
|
94
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
95
|
+
touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);
|
|
96
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
97
|
+
touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// increment active scroll locks
|
|
102
|
+
activeScrollLocks += 1;
|
|
103
|
+
}, [accountForScrollbars]);
|
|
104
|
+
var removeScrollLock = (0, _react.useCallback)(function (touchScrollTarget) {
|
|
105
|
+
if (!canUseDOM) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
var target = document.body;
|
|
109
|
+
var targetStyle = target && target.style;
|
|
110
|
+
|
|
111
|
+
// safely decrement active scroll locks
|
|
112
|
+
activeScrollLocks = Math.max(activeScrollLocks - 1, 0);
|
|
113
|
+
|
|
114
|
+
// reapply original body styles, if any
|
|
115
|
+
if (accountForScrollbars && activeScrollLocks < 1) {
|
|
116
|
+
STYLE_KEYS.forEach(function (key) {
|
|
117
|
+
var val = originalStyles.current[key];
|
|
118
|
+
if (targetStyle) {
|
|
119
|
+
targetStyle[key] = val;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// remove touch listeners
|
|
125
|
+
if (target && isTouchDevice()) {
|
|
126
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
127
|
+
target.removeEventListener('touchmove', preventTouchMove, listenerOptions);
|
|
128
|
+
if (touchScrollTarget) {
|
|
129
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
130
|
+
touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);
|
|
131
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
132
|
+
touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, [accountForScrollbars]);
|
|
136
|
+
(0, _react.useEffect)(function () {
|
|
137
|
+
if (!isEnabled) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
var element = scrollTarget.current;
|
|
141
|
+
addScrollLock(element);
|
|
142
|
+
return function () {
|
|
143
|
+
removeScrollLock(element);
|
|
144
|
+
};
|
|
145
|
+
}, [isEnabled, addScrollLock, removeScrollLock]);
|
|
146
|
+
return function (element) {
|
|
147
|
+
scrollTarget.current = element;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _react2 = require("@emotion/react");
|
|
11
|
+
var _accessibility = require("../accessibility");
|
|
12
|
+
var _a11yText = _interopRequireDefault(require("./internal/a11y-text"));
|
|
13
|
+
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; }
|
|
14
|
+
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; } /**
|
|
15
|
+
* @jsxRuntime classic
|
|
16
|
+
* @jsx jsx
|
|
17
|
+
*/
|
|
18
|
+
// ==============================
|
|
19
|
+
// Root Container
|
|
20
|
+
// ==============================
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
23
|
+
var LiveRegion = function LiveRegion(props) {
|
|
24
|
+
var ariaSelection = props.ariaSelection,
|
|
25
|
+
focusedOption = props.focusedOption,
|
|
26
|
+
focusedValue = props.focusedValue,
|
|
27
|
+
focusableOptions = props.focusableOptions,
|
|
28
|
+
isFocused = props.isFocused,
|
|
29
|
+
selectValue = props.selectValue,
|
|
30
|
+
selectProps = props.selectProps,
|
|
31
|
+
id = props.id,
|
|
32
|
+
isAppleDevice = props.isAppleDevice;
|
|
33
|
+
var ariaLiveMessages = selectProps.ariaLiveMessages,
|
|
34
|
+
getOptionLabel = selectProps.getOptionLabel,
|
|
35
|
+
inputValue = selectProps.inputValue,
|
|
36
|
+
isMulti = selectProps.isMulti,
|
|
37
|
+
isOptionDisabled = selectProps.isOptionDisabled,
|
|
38
|
+
isSearchable = selectProps.isSearchable,
|
|
39
|
+
menuIsOpen = selectProps.menuIsOpen,
|
|
40
|
+
options = selectProps.options,
|
|
41
|
+
screenReaderStatus = selectProps.screenReaderStatus,
|
|
42
|
+
tabSelectsValue = selectProps.tabSelectsValue,
|
|
43
|
+
isLoading = selectProps.isLoading;
|
|
44
|
+
var ariaLabel = selectProps['aria-label'];
|
|
45
|
+
var ariaLive = selectProps['aria-live'];
|
|
46
|
+
|
|
47
|
+
// Update aria live message configuration when prop changes
|
|
48
|
+
var messages = (0, _react.useMemo)(function () {
|
|
49
|
+
return _objectSpread(_objectSpread({}, _accessibility.defaultAriaLiveMessages), ariaLiveMessages || {});
|
|
50
|
+
}, [ariaLiveMessages]);
|
|
51
|
+
|
|
52
|
+
// Update aria live selected option when prop changes
|
|
53
|
+
var ariaSelected = (0, _react.useMemo)(function () {
|
|
54
|
+
var message = '';
|
|
55
|
+
if (ariaSelection && messages.onChange) {
|
|
56
|
+
var option = ariaSelection.option,
|
|
57
|
+
selectedOptions = ariaSelection.options,
|
|
58
|
+
removedValue = ariaSelection.removedValue,
|
|
59
|
+
removedValues = ariaSelection.removedValues,
|
|
60
|
+
value = ariaSelection.value;
|
|
61
|
+
// select-option when !isMulti does not return option so we assume selected option is value
|
|
62
|
+
var asOption = function asOption(val) {
|
|
63
|
+
return !Array.isArray(val) ? val : null;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// If there is just one item from the action then get its label
|
|
67
|
+
var selected = removedValue || option || asOption(value);
|
|
68
|
+
var label = selected ? getOptionLabel(selected) : '';
|
|
69
|
+
|
|
70
|
+
// If there are multiple items from the action then return an array of labels
|
|
71
|
+
var multiSelected = selectedOptions || removedValues || undefined;
|
|
72
|
+
var labels = multiSelected ? multiSelected.map(getOptionLabel) : [];
|
|
73
|
+
var onChangeProps = _objectSpread({
|
|
74
|
+
// multiSelected items are usually items that have already been selected
|
|
75
|
+
// or set by the user as a default value so we assume they are not disabled
|
|
76
|
+
isDisabled: selected && isOptionDisabled(selected, selectValue),
|
|
77
|
+
label: label,
|
|
78
|
+
labels: labels
|
|
79
|
+
}, ariaSelection);
|
|
80
|
+
message = messages.onChange(onChangeProps);
|
|
81
|
+
}
|
|
82
|
+
return message;
|
|
83
|
+
}, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]);
|
|
84
|
+
var ariaFocused = (0, _react.useMemo)(function () {
|
|
85
|
+
var focusMsg = '';
|
|
86
|
+
var focused = focusedOption || focusedValue;
|
|
87
|
+
var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));
|
|
88
|
+
if (focused && messages.onFocus) {
|
|
89
|
+
var onFocusProps = {
|
|
90
|
+
focused: focused,
|
|
91
|
+
label: getOptionLabel(focused),
|
|
92
|
+
isDisabled: isOptionDisabled(focused, selectValue),
|
|
93
|
+
isSelected: isSelected,
|
|
94
|
+
options: focusableOptions,
|
|
95
|
+
context: focused === focusedOption ? 'menu' : 'value',
|
|
96
|
+
selectValue: selectValue,
|
|
97
|
+
isAppleDevice: isAppleDevice
|
|
98
|
+
};
|
|
99
|
+
focusMsg = messages.onFocus(onFocusProps);
|
|
100
|
+
}
|
|
101
|
+
return focusMsg;
|
|
102
|
+
}, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue, isAppleDevice]);
|
|
103
|
+
var ariaResults = (0, _react.useMemo)(function () {
|
|
104
|
+
var resultsMsg = '';
|
|
105
|
+
if (menuIsOpen && options.length && !isLoading && messages.onFilter) {
|
|
106
|
+
var resultsMessage = screenReaderStatus({
|
|
107
|
+
count: focusableOptions.length
|
|
108
|
+
});
|
|
109
|
+
resultsMsg = messages.onFilter({
|
|
110
|
+
inputValue: inputValue,
|
|
111
|
+
resultsMessage: resultsMessage
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return resultsMsg;
|
|
115
|
+
}, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus, isLoading]);
|
|
116
|
+
var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus';
|
|
117
|
+
var ariaGuidance = (0, _react.useMemo)(function () {
|
|
118
|
+
var guidanceMsg = '';
|
|
119
|
+
if (messages.guidance) {
|
|
120
|
+
var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';
|
|
121
|
+
guidanceMsg = messages.guidance({
|
|
122
|
+
'aria-label': ariaLabel,
|
|
123
|
+
context: context,
|
|
124
|
+
isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue),
|
|
125
|
+
isMulti: isMulti,
|
|
126
|
+
isSearchable: isSearchable,
|
|
127
|
+
tabSelectsValue: tabSelectsValue,
|
|
128
|
+
isInitialFocus: isInitialFocus
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return guidanceMsg;
|
|
132
|
+
}, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue, isInitialFocus]);
|
|
133
|
+
var ScreenReaderText = (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("span", {
|
|
134
|
+
id: "aria-selection"
|
|
135
|
+
}, ariaSelected), (0, _react2.jsx)("span", {
|
|
136
|
+
id: "aria-focused"
|
|
137
|
+
}, ariaFocused), (0, _react2.jsx)("span", {
|
|
138
|
+
id: "aria-results"
|
|
139
|
+
}, ariaResults), (0, _react2.jsx)("span", {
|
|
140
|
+
id: "aria-guidance"
|
|
141
|
+
}, ariaGuidance));
|
|
142
|
+
return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_a11yText.default, {
|
|
143
|
+
id: id
|
|
144
|
+
}, isInitialFocus && ScreenReaderText), (0, _react2.jsx)(_a11yText.default, {
|
|
145
|
+
"aria-live": ariaLive,
|
|
146
|
+
"aria-atomic": "false",
|
|
147
|
+
"aria-relevant": "additions text",
|
|
148
|
+
role: "log"
|
|
149
|
+
}, isFocused && !isInitialFocus && ScreenReaderText));
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
153
|
+
var _default = exports.default = LiveRegion;
|