carbon-react 106.3.2 → 106.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.
@@ -10,6 +10,7 @@ import withFilter from "../utils/with-filter.hoc";
10
10
  import StyledSelect from "../select.style";
11
11
  import SelectList from "../select-list/select-list.component";
12
12
  import isExpectedOption from "../utils/is-expected-option";
13
+ import isNavigationKey from "../utils/is-navigation-key";
13
14
  const FilterableSelectList = withFilter(SelectList);
14
15
  const FilterableSelect = /*#__PURE__*/React.forwardRef(({
15
16
  value,
@@ -386,10 +387,6 @@ const FilterableSelect = /*#__PURE__*/React.forwardRef(({
386
387
  };
387
388
  }
388
389
 
389
- function isNavigationKey(key) {
390
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
391
- }
392
-
393
390
  const selectList = /*#__PURE__*/React.createElement(FilterableSelectList, {
394
391
  ref: listboxRef,
395
392
  id: selectListId.current,
@@ -12,6 +12,7 @@ import { StyledSelectPillContainer, StyledSelectMultiSelect, StyledAccessibility
12
12
  import Pill from "../../pill";
13
13
  import isExpectedOption from "../utils/is-expected-option";
14
14
  import isExpectedValue from "../utils/is-expected-value";
15
+ import isNavigationKey from "../utils/is-navigation-key";
15
16
  const FilterableSelectList = withFilter(SelectList);
16
17
  const MultiSelect = /*#__PURE__*/React.forwardRef(({
17
18
  value,
@@ -401,10 +402,6 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
401
402
  };
402
403
  }
403
404
 
404
- function isNavigationKey(key) {
405
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
406
- }
407
-
408
405
  const selectList = /*#__PURE__*/React.createElement(FilterableSelectList, {
409
406
  ref: listboxRef,
410
407
  "aria-multiselectable": true,
@@ -9,6 +9,7 @@ import OptionRow from "../option-row/option-row.component";
9
9
  import updateListScrollTop from "./update-list-scroll";
10
10
  import getNextChildByText from "../utils/get-next-child-by-text";
11
11
  import getNextIndexByKey from "../utils/get-next-index-by-key";
12
+ import isNavigationKey from "../utils/is-navigation-key";
12
13
  import ListActionButton from "../list-action-button/list-action-button.component";
13
14
  import StyledSelectListContainer from "./select-list-container.style";
14
15
  import Loader from "../../loader";
@@ -276,10 +277,6 @@ const SelectList = /*#__PURE__*/React.forwardRef(({
276
277
  enabled: flipEnabled
277
278
  }], [flipEnabled]);
278
279
 
279
- function isNavigationKey(keyEvent) {
280
- return keyEvent === "ArrowDown" || keyEvent === "ArrowUp" || keyEvent === "Home" || keyEvent === "End";
281
- }
282
-
283
280
  const loader = () => /*#__PURE__*/React.createElement(StyledSelectLoaderContainer, {
284
281
  key: "loader",
285
282
  as: multiColumn ? "div" : "li"
@@ -11,6 +11,7 @@ import SelectList from "../select-list/select-list.component";
11
11
  import guid from "../../../__internal__/utils/helpers/guid";
12
12
  import getNextChildByText from "../utils/get-next-child-by-text";
13
13
  import isExpectedOption from "../utils/is-expected-option";
14
+ import isNavigationKey from "../utils/is-navigation-key";
14
15
  const SimpleSelect = /*#__PURE__*/React.forwardRef(({
15
16
  value,
16
17
  defaultValue,
@@ -285,10 +286,6 @@ const SimpleSelect = /*#__PURE__*/React.forwardRef(({
285
286
  setOpenState(false);
286
287
  }
287
288
 
288
- function isNavigationKey(key) {
289
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
290
- }
291
-
292
289
  function assignInput(input) {
293
290
  setTextboxRef(input.current);
294
291
 
@@ -1 +1,2 @@
1
1
  export default function getNextIndexByKey(key: any, currentIndex: any, lastIndex: any, isLoading: any): any;
2
+ export const PAGE_SIZE: 4;
@@ -1,27 +1,59 @@
1
+ export const PAGE_SIZE = 4;
1
2
  export default function getNextIndexByKey(key, currentIndex, lastIndex, isLoading) {
2
3
  const isNoOptionSelected = currentIndex === -1;
3
4
  let newIndex = currentIndex;
4
5
 
5
- if (key === "Home") {
6
- newIndex = 0;
7
- } else if (key === "End") {
8
- newIndex = lastIndex;
9
- } else if (key === "ArrowDown") {
10
- if (isLoading && currentIndex === lastIndex) {
11
- return lastIndex;
12
- }
13
-
14
- if (currentIndex === lastIndex || isNoOptionSelected) {
6
+ switch (key) {
7
+ case "Home":
15
8
  newIndex = 0;
16
- } else {
17
- newIndex = currentIndex + 1;
18
- }
19
- } else if (key === "ArrowUp") {
20
- if (currentIndex === 0 || isNoOptionSelected) {
9
+ break;
10
+
11
+ case "End":
21
12
  newIndex = lastIndex;
22
- } else {
23
- newIndex = currentIndex - 1;
24
- }
13
+ break;
14
+
15
+ case "ArrowDown":
16
+ if (isLoading && currentIndex === lastIndex) {
17
+ return lastIndex;
18
+ }
19
+
20
+ if (currentIndex === lastIndex || isNoOptionSelected) {
21
+ newIndex = 0;
22
+ } else {
23
+ newIndex = currentIndex + 1;
24
+ }
25
+
26
+ break;
27
+
28
+ case "ArrowUp":
29
+ if (currentIndex === 0 || isNoOptionSelected) {
30
+ newIndex = lastIndex;
31
+ } else {
32
+ newIndex = currentIndex - 1;
33
+ }
34
+
35
+ break;
36
+
37
+ case "PageDown":
38
+ if (isNoOptionSelected) {
39
+ newIndex = Math.min(PAGE_SIZE - 1, lastIndex);
40
+ } else {
41
+ newIndex = Math.min(currentIndex + PAGE_SIZE, lastIndex);
42
+ }
43
+
44
+ break;
45
+
46
+ case "PageUp":
47
+ if (isNoOptionSelected) {
48
+ newIndex = Math.max(lastIndex + 1 - PAGE_SIZE, 0);
49
+ } else {
50
+ newIndex = Math.max(currentIndex - PAGE_SIZE, 0);
51
+ }
52
+
53
+ break;
54
+
55
+ default:
56
+ break;
25
57
  }
26
58
 
27
59
  return newIndex;
@@ -0,0 +1 @@
1
+ export default function isNavigationKey(key: any): boolean;
@@ -0,0 +1,4 @@
1
+ export default function isNavigationKey(key) {
2
+ const navigationKeys = ["ArrowDown", "ArrowUp", "Home", "End", "PageUp", "PageDown"];
3
+ return navigationKeys.includes(key);
4
+ }
@@ -25,6 +25,8 @@ var _selectList = _interopRequireDefault(require("../select-list/select-list.com
25
25
 
26
26
  var _isExpectedOption = _interopRequireDefault(require("../utils/is-expected-option"));
27
27
 
28
+ var _isNavigationKey = _interopRequireDefault(require("../utils/is-navigation-key"));
29
+
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
31
 
30
32
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -171,7 +173,7 @@ const FilterableSelect = /*#__PURE__*/_react.default.forwardRef(({
171
173
  return;
172
174
  }
173
175
 
174
- if (!event.defaultPrevented && isNavigationKey(key)) {
176
+ if (!event.defaultPrevented && (0, _isNavigationKey.default)(key)) {
175
177
  event.preventDefault();
176
178
  setOpen(true);
177
179
  }
@@ -410,10 +412,6 @@ const FilterableSelect = /*#__PURE__*/_react.default.forwardRef(({
410
412
  };
411
413
  }
412
414
 
413
- function isNavigationKey(key) {
414
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
415
- }
416
-
417
415
  const selectList = /*#__PURE__*/_react.default.createElement(FilterableSelectList, {
418
416
  ref: listboxRef,
419
417
  id: selectListId.current,
@@ -29,6 +29,8 @@ var _isExpectedOption = _interopRequireDefault(require("../utils/is-expected-opt
29
29
 
30
30
  var _isExpectedValue = _interopRequireDefault(require("../utils/is-expected-value"));
31
31
 
32
+ var _isNavigationKey = _interopRequireDefault(require("../utils/is-navigation-key"));
33
+
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
35
 
34
36
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -155,7 +157,7 @@ const MultiSelect = /*#__PURE__*/_react.default.forwardRef(({
155
157
  return;
156
158
  }
157
159
 
158
- if (!event.defaultPrevented && isNavigationKey(key)) {
160
+ if (!event.defaultPrevented && (0, _isNavigationKey.default)(key)) {
159
161
  event.preventDefault();
160
162
  setOpen();
161
163
  }
@@ -428,10 +430,6 @@ const MultiSelect = /*#__PURE__*/_react.default.forwardRef(({
428
430
  };
429
431
  }
430
432
 
431
- function isNavigationKey(key) {
432
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
433
- }
434
-
435
433
  const selectList = /*#__PURE__*/_react.default.createElement(FilterableSelectList, {
436
434
  ref: listboxRef,
437
435
  "aria-multiselectable": true,
@@ -23,6 +23,8 @@ var _getNextChildByText = _interopRequireDefault(require("../utils/get-next-chil
23
23
 
24
24
  var _getNextIndexByKey = _interopRequireDefault(require("../utils/get-next-index-by-key"));
25
25
 
26
+ var _isNavigationKey = _interopRequireDefault(require("../utils/is-navigation-key"));
27
+
26
28
  var _listActionButton = _interopRequireDefault(require("../list-action-button/list-action-button.component"));
27
29
 
28
30
  var _selectListContainer = _interopRequireDefault(require("./select-list-container.style"));
@@ -221,7 +223,7 @@ const SelectList = /*#__PURE__*/_react.default.forwardRef(({
221
223
  value,
222
224
  selectionType: "enterKey"
223
225
  });
224
- } else if (isNavigationKey(key)) {
226
+ } else if ((0, _isNavigationKey.default)(key)) {
225
227
  focusOnAnchor();
226
228
  highlightNextItem(key);
227
229
  }
@@ -305,10 +307,6 @@ const SelectList = /*#__PURE__*/_react.default.forwardRef(({
305
307
  enabled: flipEnabled
306
308
  }], [flipEnabled]);
307
309
 
308
- function isNavigationKey(keyEvent) {
309
- return keyEvent === "ArrowDown" || keyEvent === "ArrowUp" || keyEvent === "Home" || keyEvent === "End";
310
- }
311
-
312
310
  const loader = () => /*#__PURE__*/_react.default.createElement(_selectList.StyledSelectLoaderContainer, {
313
311
  key: "loader",
314
312
  as: multiColumn ? "div" : "li"
@@ -27,6 +27,8 @@ var _getNextChildByText = _interopRequireDefault(require("../utils/get-next-chil
27
27
 
28
28
  var _isExpectedOption = _interopRequireDefault(require("../utils/is-expected-option"));
29
29
 
30
+ var _isNavigationKey = _interopRequireDefault(require("../utils/is-navigation-key"));
31
+
30
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
33
 
32
34
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -145,7 +147,7 @@ const SimpleSelect = /*#__PURE__*/_react.default.forwardRef(({
145
147
  return;
146
148
  }
147
149
 
148
- if (key === "Enter" || key === " " || isNavigationKey(key)) {
150
+ if (key === "Enter" || key === " " || (0, _isNavigationKey.default)(key)) {
149
151
  event.preventDefault();
150
152
  setOpenState(isAlreadyOpen => {
151
153
  if (!isAlreadyOpen && onOpen) {
@@ -309,10 +311,6 @@ const SimpleSelect = /*#__PURE__*/_react.default.forwardRef(({
309
311
  setOpenState(false);
310
312
  }
311
313
 
312
- function isNavigationKey(key) {
313
- return key === "ArrowDown" || key === "ArrowUp" || key === "Home" || key === "End";
314
- }
315
-
316
314
  function assignInput(input) {
317
315
  setTextboxRef(input.current);
318
316
 
@@ -1 +1,2 @@
1
1
  export default function getNextIndexByKey(key: any, currentIndex: any, lastIndex: any, isLoading: any): any;
2
+ export const PAGE_SIZE: 4;
@@ -4,31 +4,65 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = getNextIndexByKey;
7
+ exports.PAGE_SIZE = void 0;
8
+ const PAGE_SIZE = 4;
9
+ exports.PAGE_SIZE = PAGE_SIZE;
7
10
 
8
11
  function getNextIndexByKey(key, currentIndex, lastIndex, isLoading) {
9
12
  const isNoOptionSelected = currentIndex === -1;
10
13
  let newIndex = currentIndex;
11
14
 
12
- if (key === "Home") {
13
- newIndex = 0;
14
- } else if (key === "End") {
15
- newIndex = lastIndex;
16
- } else if (key === "ArrowDown") {
17
- if (isLoading && currentIndex === lastIndex) {
18
- return lastIndex;
19
- }
20
-
21
- if (currentIndex === lastIndex || isNoOptionSelected) {
15
+ switch (key) {
16
+ case "Home":
22
17
  newIndex = 0;
23
- } else {
24
- newIndex = currentIndex + 1;
25
- }
26
- } else if (key === "ArrowUp") {
27
- if (currentIndex === 0 || isNoOptionSelected) {
18
+ break;
19
+
20
+ case "End":
28
21
  newIndex = lastIndex;
29
- } else {
30
- newIndex = currentIndex - 1;
31
- }
22
+ break;
23
+
24
+ case "ArrowDown":
25
+ if (isLoading && currentIndex === lastIndex) {
26
+ return lastIndex;
27
+ }
28
+
29
+ if (currentIndex === lastIndex || isNoOptionSelected) {
30
+ newIndex = 0;
31
+ } else {
32
+ newIndex = currentIndex + 1;
33
+ }
34
+
35
+ break;
36
+
37
+ case "ArrowUp":
38
+ if (currentIndex === 0 || isNoOptionSelected) {
39
+ newIndex = lastIndex;
40
+ } else {
41
+ newIndex = currentIndex - 1;
42
+ }
43
+
44
+ break;
45
+
46
+ case "PageDown":
47
+ if (isNoOptionSelected) {
48
+ newIndex = Math.min(PAGE_SIZE - 1, lastIndex);
49
+ } else {
50
+ newIndex = Math.min(currentIndex + PAGE_SIZE, lastIndex);
51
+ }
52
+
53
+ break;
54
+
55
+ case "PageUp":
56
+ if (isNoOptionSelected) {
57
+ newIndex = Math.max(lastIndex + 1 - PAGE_SIZE, 0);
58
+ } else {
59
+ newIndex = Math.max(currentIndex - PAGE_SIZE, 0);
60
+ }
61
+
62
+ break;
63
+
64
+ default:
65
+ break;
32
66
  }
33
67
 
34
68
  return newIndex;
@@ -0,0 +1 @@
1
+ export default function isNavigationKey(key: any): boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = isNavigationKey;
7
+
8
+ function isNavigationKey(key) {
9
+ const navigationKeys = ["ArrowDown", "ArrowUp", "Home", "End", "PageUp", "PageDown"];
10
+ return navigationKeys.includes(key);
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "106.3.2",
3
+ "version": "106.4.0",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "engineStrict": true,
6
6
  "engines": {