@coinbase/cds-web 8.19.1 → 8.20.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 (56) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dts/alpha/select/DefaultSelectAllOption.d.ts +12 -0
  3. package/dts/alpha/select/DefaultSelectAllOption.d.ts.map +1 -0
  4. package/dts/alpha/select/DefaultSelectControl.d.ts +13 -0
  5. package/dts/alpha/select/DefaultSelectControl.d.ts.map +1 -0
  6. package/dts/alpha/select/DefaultSelectDropdown.d.ts +12 -0
  7. package/dts/alpha/select/DefaultSelectDropdown.d.ts.map +1 -0
  8. package/dts/alpha/select/DefaultSelectEmptyDropdownContents.d.ts +3 -0
  9. package/dts/alpha/select/DefaultSelectEmptyDropdownContents.d.ts.map +1 -0
  10. package/dts/alpha/select/DefaultSelectOption.d.ts +9 -0
  11. package/dts/alpha/select/DefaultSelectOption.d.ts.map +1 -0
  12. package/dts/alpha/select/Select.d.ts +470 -0
  13. package/dts/alpha/select/Select.d.ts.map +1 -0
  14. package/dts/alpha/select/index.d.ts +7 -0
  15. package/dts/alpha/select/index.d.ts.map +1 -0
  16. package/dts/cells/Cell.d.ts.map +1 -1
  17. package/dts/chips/Chip.d.ts.map +1 -1
  18. package/dts/chips/ChipProps.d.ts +15 -4
  19. package/dts/chips/ChipProps.d.ts.map +1 -1
  20. package/dts/chips/InputChip.d.ts.map +1 -1
  21. package/dts/controls/InputStack.d.ts +65 -63
  22. package/dts/controls/InputStack.d.ts.map +1 -1
  23. package/dts/controls/SearchInput.d.ts +1 -1
  24. package/dts/controls/Select.d.ts +4 -1
  25. package/dts/controls/Select.d.ts.map +1 -1
  26. package/dts/controls/SelectStack.d.ts +1 -1
  27. package/dts/controls/TextInput.d.ts +1 -1
  28. package/dts/hooks/useClickOutside.d.ts +22 -0
  29. package/dts/hooks/useClickOutside.d.ts.map +1 -0
  30. package/dts/overlays/FocusTrap.d.ts +4 -0
  31. package/dts/overlays/FocusTrap.d.ts.map +1 -1
  32. package/dts/overlays/modal/FullscreenModalLayout.d.ts +1 -1
  33. package/dts/system/Interactable.d.ts +45 -38
  34. package/dts/system/Interactable.d.ts.map +1 -1
  35. package/dts/utils/findClosestNonDisabledNodeIndex.d.ts +11 -0
  36. package/dts/utils/findClosestNonDisabledNodeIndex.d.ts.map +1 -0
  37. package/esm/alpha/select/DefaultSelectAllOption.js +47 -0
  38. package/esm/alpha/select/DefaultSelectControl.css +1 -0
  39. package/esm/alpha/select/DefaultSelectControl.js +234 -0
  40. package/esm/alpha/select/DefaultSelectDropdown.js +233 -0
  41. package/esm/alpha/select/DefaultSelectEmptyDropdownContents.js +23 -0
  42. package/esm/alpha/select/DefaultSelectOption.css +2 -0
  43. package/esm/alpha/select/DefaultSelectOption.js +103 -0
  44. package/esm/alpha/select/Select.js +222 -0
  45. package/esm/alpha/select/index.js +6 -0
  46. package/esm/cells/Cell.js +5 -4
  47. package/esm/chips/Chip.js +3 -2
  48. package/esm/chips/InputChip.js +7 -5
  49. package/esm/chips/__figma__/InputChip.figma.js +1 -1
  50. package/esm/controls/InputStack.js +4 -2
  51. package/esm/controls/Select.js +3 -0
  52. package/esm/hooks/useClickOutside.js +37 -0
  53. package/esm/overlays/FocusTrap.js +23 -14
  54. package/esm/system/Interactable.js +34 -11
  55. package/esm/utils/findClosestNonDisabledNodeIndex.js +24 -0
  56. package/package.json +3 -3
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Finds the closest non-disabled node to the start index, searching forward and backward
3
+ * @param valueNodes - The nodes to search through
4
+ * @param startIndex - The index to start searching from
5
+ * @returns The index of the closest non-disabled node or null if there are no non-disabled nodes
6
+ */
7
+ export const findClosestNonDisabledNodeIndex = (valueNodes, startIndex) => {
8
+ let nextIndex = null;
9
+ let prevIndex = null;
10
+ for (let i = 0; i < valueNodes.length; i++) {
11
+ const isDisabled = valueNodes[i].hasAttribute('disabled');
12
+ if (isDisabled) continue;
13
+ if (i > startIndex && nextIndex === null) nextIndex = i;
14
+ if (i < startIndex) prevIndex = i;
15
+ }
16
+
17
+ // If there are no non-disabled nodes, return null
18
+ if (nextIndex === null && prevIndex === null) return null;
19
+
20
+ // Return the closest non-disabled node
21
+ if (nextIndex === null) return prevIndex;
22
+ if (prevIndex === null) return nextIndex;
23
+ return startIndex - prevIndex < nextIndex - startIndex ? prevIndex : nextIndex;
24
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "8.19.1",
3
+ "version": "8.20.1",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -147,9 +147,9 @@
147
147
  "react-dom": "^18.3.1"
148
148
  },
149
149
  "dependencies": {
150
- "@coinbase/cds-common": "^8.19.1",
150
+ "@coinbase/cds-common": "^8.20.1",
151
151
  "@coinbase/cds-icons": "^5.5.1",
152
- "@coinbase/cds-illustrations": "^4.26.0",
152
+ "@coinbase/cds-illustrations": "^4.26.1",
153
153
  "@coinbase/cds-lottie-files": "^3.3.3",
154
154
  "@coinbase/cds-utils": "^2.3.4",
155
155
  "@floating-ui/react-dom": "^2.1.1",