@carbon/react 1.59.0 → 1.60.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 (115) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +813 -813
  2. package/es/_virtual/_rollupPluginBabelHelpers.js +23 -34
  3. package/es/components/Button/ButtonBase.d.ts +1 -1
  4. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +27 -0
  5. package/es/components/CheckboxGroup/CheckboxGroup.js +5 -5
  6. package/es/components/ComboBox/ComboBox.d.ts +6 -0
  7. package/es/components/ComboBox/ComboBox.js +36 -3
  8. package/es/components/ComboButton/index.d.ts +1 -1
  9. package/es/components/ComposedModal/ModalHeader.js +0 -1
  10. package/es/components/DataTable/DataTable.d.ts +3 -0
  11. package/es/components/DataTable/DataTable.js +4 -1
  12. package/es/components/DataTable/TableSelectAll.d.ts +14 -3
  13. package/es/components/DataTable/TableSelectAll.js +10 -3
  14. package/es/components/DataTable/TableSelectRow.d.ts +16 -4
  15. package/es/components/DataTable/TableSelectRow.js +11 -4
  16. package/es/components/DatePicker/DatePicker.d.ts +1 -1
  17. package/es/components/DatePicker/DatePicker.js +0 -1
  18. package/es/components/DatePicker/index.d.ts +2 -2
  19. package/es/components/DatePickerInput/DatePickerInput.d.ts +1 -1
  20. package/es/components/DatePickerInput/index.d.ts +2 -2
  21. package/es/components/FileUploader/FileUploaderItem.js +7 -4
  22. package/es/components/Heading/index.d.ts +1 -1
  23. package/es/components/Link/Link.d.ts +1 -1
  24. package/es/components/ListBox/ListBoxMenu.js +0 -1
  25. package/es/components/Menu/Menu.d.ts +2 -1
  26. package/es/components/Menu/Menu.js +18 -12
  27. package/es/components/MenuButton/index.d.ts +2 -1
  28. package/es/components/MenuButton/index.js +50 -29
  29. package/es/components/MultiSelect/FilterableMultiSelect.js +3 -5
  30. package/es/components/MultiSelect/MultiSelect.js +0 -1
  31. package/es/components/NumberInput/NumberInput.js +1 -0
  32. package/es/components/Pagination/Pagination.js +2 -0
  33. package/es/components/PaginationNav/PaginationNav.js +2 -0
  34. package/es/components/Popover/index.js +0 -1
  35. package/es/components/PrimaryButton/PrimaryButton.d.ts +1 -1
  36. package/es/components/RadioButton/RadioButton.d.ts +2 -2
  37. package/es/components/RadioButton/index.d.ts +2 -1
  38. package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -3
  39. package/es/components/RadioButtonGroup/RadioButtonGroup.js +8 -10
  40. package/es/components/RadioButtonGroup/index.d.ts +2 -1
  41. package/es/components/SecondaryButton/SecondaryButton.d.ts +1 -1
  42. package/es/components/Tabs/Tabs.js +7 -4
  43. package/es/components/Tag/DismissibleTag.d.ts +1 -1
  44. package/es/components/Tag/OperationalTag.d.ts +1 -1
  45. package/es/components/Tag/SelectableTag.d.ts +1 -1
  46. package/es/components/Tag/Tag.d.ts +1 -1
  47. package/es/components/Text/index.d.ts +2 -2
  48. package/es/components/TextArea/TextArea.js +1 -0
  49. package/es/components/Toggletip/index.d.ts +1 -1
  50. package/es/components/Tooltip/DefinitionTooltip.js +22 -1
  51. package/es/components/UIShell/Content.d.ts +4 -7
  52. package/es/components/UIShell/Link.d.ts +1 -1
  53. package/es/components/UIShell/Link.js +1 -0
  54. package/es/components/UIShell/SideNav.js +1 -0
  55. package/es/components/UIShell/SwitcherItem.d.ts +1 -1
  56. package/es/index.js +1 -1
  57. package/es/internal/Selection.js +20 -17
  58. package/es/internal/useId.js +1 -1
  59. package/lib/_virtual/_rollupPluginBabelHelpers.js +23 -34
  60. package/lib/components/Button/ButtonBase.d.ts +1 -1
  61. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +27 -0
  62. package/lib/components/CheckboxGroup/CheckboxGroup.js +5 -5
  63. package/lib/components/ComboBox/ComboBox.d.ts +6 -0
  64. package/lib/components/ComboBox/ComboBox.js +35 -2
  65. package/lib/components/ComboButton/index.d.ts +1 -1
  66. package/lib/components/ComposedModal/ModalHeader.js +0 -1
  67. package/lib/components/DataTable/DataTable.d.ts +3 -0
  68. package/lib/components/DataTable/DataTable.js +4 -1
  69. package/lib/components/DataTable/TableSelectAll.d.ts +14 -3
  70. package/lib/components/DataTable/TableSelectAll.js +10 -3
  71. package/lib/components/DataTable/TableSelectRow.d.ts +16 -4
  72. package/lib/components/DataTable/TableSelectRow.js +11 -4
  73. package/lib/components/DatePicker/DatePicker.d.ts +1 -1
  74. package/lib/components/DatePicker/DatePicker.js +0 -1
  75. package/lib/components/DatePicker/index.d.ts +2 -2
  76. package/lib/components/DatePickerInput/DatePickerInput.d.ts +1 -1
  77. package/lib/components/DatePickerInput/index.d.ts +2 -2
  78. package/lib/components/FileUploader/FileUploaderItem.js +7 -4
  79. package/lib/components/Heading/index.d.ts +1 -1
  80. package/lib/components/Link/Link.d.ts +1 -1
  81. package/lib/components/ListBox/ListBoxMenu.js +0 -1
  82. package/lib/components/Menu/Menu.d.ts +2 -1
  83. package/lib/components/Menu/Menu.js +18 -12
  84. package/lib/components/MenuButton/index.d.ts +2 -1
  85. package/lib/components/MenuButton/index.js +46 -25
  86. package/lib/components/MultiSelect/FilterableMultiSelect.js +3 -5
  87. package/lib/components/MultiSelect/MultiSelect.js +0 -1
  88. package/lib/components/NumberInput/NumberInput.js +1 -0
  89. package/lib/components/Pagination/Pagination.js +2 -0
  90. package/lib/components/PaginationNav/PaginationNav.js +2 -0
  91. package/lib/components/Popover/index.js +0 -1
  92. package/lib/components/PrimaryButton/PrimaryButton.d.ts +1 -1
  93. package/lib/components/RadioButton/RadioButton.d.ts +2 -2
  94. package/lib/components/RadioButton/index.d.ts +2 -1
  95. package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -3
  96. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +8 -10
  97. package/lib/components/RadioButtonGroup/index.d.ts +2 -1
  98. package/lib/components/SecondaryButton/SecondaryButton.d.ts +1 -1
  99. package/lib/components/Tabs/Tabs.js +7 -4
  100. package/lib/components/Tag/DismissibleTag.d.ts +1 -1
  101. package/lib/components/Tag/OperationalTag.d.ts +1 -1
  102. package/lib/components/Tag/SelectableTag.d.ts +1 -1
  103. package/lib/components/Tag/Tag.d.ts +1 -1
  104. package/lib/components/Text/index.d.ts +2 -2
  105. package/lib/components/TextArea/TextArea.js +1 -0
  106. package/lib/components/Toggletip/index.d.ts +1 -1
  107. package/lib/components/Tooltip/DefinitionTooltip.js +22 -1
  108. package/lib/components/UIShell/Content.d.ts +4 -7
  109. package/lib/components/UIShell/Link.d.ts +1 -1
  110. package/lib/components/UIShell/Link.js +1 -0
  111. package/lib/components/UIShell/SideNav.js +1 -0
  112. package/lib/components/UIShell/SwitcherItem.d.ts +1 -1
  113. package/lib/index.js +2 -2
  114. package/lib/internal/Selection.js +19 -16
  115. package/package.json +10 -9
@@ -14,6 +14,7 @@ import { useMergedRefs } from '../../internal/useMergedRefs.js';
14
14
  import { usePrefix } from '../../internal/usePrefix.js';
15
15
  import { warning } from '../../internal/warning.js';
16
16
  import { MenuContext, menuReducer } from './MenuContext.js';
17
+ import { canUseDOM } from '../../internal/environment.js';
17
18
  import { useLayoutDirection } from '../LayoutDirection/useLayoutDirection.js';
18
19
  import { match } from '../../internal/keyboard/match.js';
19
20
  import { Escape, ArrowLeft, ArrowUp, ArrowDown } from '../../internal/keyboard/keys.js';
@@ -32,9 +33,9 @@ const Menu = /*#__PURE__*/forwardRef(function Menu(_ref, forwardRef) {
32
33
  onOpen,
33
34
  open,
34
35
  size = 'sm',
35
- // TODO: #16004
36
+ legacyAutoalign = 'true',
36
37
  // eslint-disable-next-line ssr-friendly/no-dom-globals-in-react-fc
37
- target = document.body,
38
+ target = canUseDOM && document.body,
38
39
  x = 0,
39
40
  y = 0,
40
41
  ...rest
@@ -86,16 +87,18 @@ const Menu = /*#__PURE__*/forwardRef(function Menu(_ref, forwardRef) {
86
87
  function handleOpen() {
87
88
  if (menu.current) {
88
89
  focusReturn.current = document.activeElement;
89
- const pos = calculatePosition();
90
- if ((document?.dir === 'rtl' || direction === 'rtl') && !rest?.id?.includes('MenuButton')) {
91
- menu.current.style.insetInlineStart = `initial`;
92
- menu.current.style.insetInlineEnd = `${pos[0]}px`;
93
- } else {
94
- menu.current.style.insetInlineStart = `${pos[0]}px`;
95
- menu.current.style.insetInlineEnd = `initial`;
90
+ if (legacyAutoalign) {
91
+ const pos = calculatePosition();
92
+ if ((document?.dir === 'rtl' || direction === 'rtl') && !rest?.id?.includes('MenuButton')) {
93
+ menu.current.style.insetInlineStart = `initial`;
94
+ menu.current.style.insetInlineEnd = `${pos[0]}px`;
95
+ } else {
96
+ menu.current.style.insetInlineStart = `${pos[0]}px`;
97
+ menu.current.style.insetInlineEnd = `initial`;
98
+ }
99
+ menu.current.style.insetBlockStart = `${pos[1]}px`;
100
+ setPosition(pos);
96
101
  }
97
- menu.current.style.insetBlockStart = `${pos[1]}px`;
98
- setPosition(pos);
99
102
  menu.current.focus();
100
103
  if (onOpen) {
101
104
  onOpen();
@@ -277,7 +280,7 @@ const Menu = /*#__PURE__*/forwardRef(function Menu(_ref, forwardRef) {
277
280
  // to avoid a flicker effect when opening.
278
281
  [`${prefix}--menu--box-shadow-top`]: menuAlignment && menuAlignment.slice(0, 3) === 'top',
279
282
  [`${prefix}--menu--open`]: open,
280
- [`${prefix}--menu--shown`]: position[0] >= 0 && position[1] >= 0,
283
+ [`${prefix}--menu--shown`]: open && !legacyAutoalign || position[0] >= 0 && position[1] >= 0,
281
284
  [`${prefix}--menu--with-icons`]: childContext.state.hasIcons
282
285
  });
283
286
  const rendered = /*#__PURE__*/React__default.createElement(MenuContext.Provider, {
@@ -291,6 +294,9 @@ const Menu = /*#__PURE__*/forwardRef(function Menu(_ref, forwardRef) {
291
294
  onKeyDown: handleKeyDown,
292
295
  onBlur: handleBlur
293
296
  }), children));
297
+ if (!target) {
298
+ return rendered;
299
+ }
294
300
  return isRoot ? open && /*#__PURE__*/createPortal(rendered, target) || null : rendered;
295
301
  });
296
302
  Menu.propTypes = {
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { ComponentProps, ReactNode } from 'react';
8
+ export type MenuAlignment = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';
8
9
  export interface MenuButtonProps extends ComponentProps<'div'> {
9
10
  /**
10
11
  * A collection of MenuItems to be rendered as actions for this MenuButton.
@@ -29,7 +30,7 @@ export interface MenuButtonProps extends ComponentProps<'div'> {
29
30
  /**
30
31
  * Experimental property. Specify how the menu should align with the button element
31
32
  */
32
- menuAlignment: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';
33
+ menuAlignment: MenuAlignment;
33
34
  /**
34
35
  * Specify the size of the button and menu.
35
36
  */
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { forwardRef, useRef, useState } from 'react';
9
+ import React__default, { forwardRef, useRef, useLayoutEffect } from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import cx from 'classnames';
12
12
  import { ChevronDown } from '@carbon/icons-react';
@@ -16,10 +16,10 @@ import { Menu } from '../Menu/Menu.js';
16
16
  import '../Menu/MenuItem.js';
17
17
  import { useAttachedMenu } from '../../internal/useAttachedMenu.js';
18
18
  import { useId } from '../../internal/useId.js';
19
- import { useMergedRefs } from '../../internal/useMergedRefs.js';
20
19
  import { usePrefix } from '../../internal/usePrefix.js';
20
+ import { flip, size, useFloating, autoUpdate } from '@floating-ui/react';
21
+ import mergeRefs from '../../tools/mergeRefs.js';
21
22
 
22
- const spacing = 0; // top and bottom spacing between the button and the menu. in px
23
23
  const validButtonKinds = ['primary', 'tertiary', 'ghost'];
24
24
  const defaultButtonKind = 'primary';
25
25
  const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, forwardRef) {
@@ -29,7 +29,7 @@ const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, forwardRef)
29
29
  disabled,
30
30
  kind = defaultButtonKind,
31
31
  label,
32
- size = 'lg',
32
+ size: size$1 = 'lg',
33
33
  menuAlignment = 'bottom',
34
34
  tabIndex = 0,
35
35
  ...rest
@@ -37,35 +37,57 @@ const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, forwardRef)
37
37
  const id = useId('MenuButton');
38
38
  const prefix = usePrefix();
39
39
  const triggerRef = useRef(null);
40
- const menuRef = useRef(null);
41
- const ref = useMergedRefs([forwardRef, triggerRef]);
42
- const [width, setWidth] = useState(0);
40
+ const middlewares = [flip({
41
+ crossAxis: false
42
+ })];
43
+ if (menuAlignment === 'bottom' || menuAlignment === 'top') {
44
+ middlewares.push(size({
45
+ apply(_ref2) {
46
+ let {
47
+ rects,
48
+ elements
49
+ } = _ref2;
50
+ Object.assign(elements.floating.style, {
51
+ width: `${rects.reference.width}px`
52
+ });
53
+ }
54
+ }));
55
+ }
56
+ const {
57
+ refs,
58
+ floatingStyles,
59
+ placement,
60
+ middlewareData
61
+ } = useFloating({
62
+ placement: menuAlignment,
63
+ // The floating element is positioned relative to its nearest
64
+ // containing block (usually the viewport). It will in many cases also
65
+ // “break” the floating element out of a clipping ancestor.
66
+ // https://floating-ui.com/docs/misc#clipping
67
+ strategy: 'fixed',
68
+ // Middleware order matters, arrow should be last
69
+ middleware: middlewares,
70
+ whileElementsMounted: autoUpdate
71
+ });
72
+ const ref = mergeRefs(forwardRef, triggerRef);
43
73
  const {
44
74
  open,
45
- x,
46
- y,
47
75
  handleClick: hookOnClick,
48
76
  handleMousedown,
49
77
  handleClose
50
78
  } = useAttachedMenu(triggerRef);
79
+ useLayoutEffect(() => {
80
+ Object.keys(floatingStyles).forEach(style => {
81
+ if (refs.floating.current) {
82
+ refs.floating.current.style[style] = floatingStyles[style];
83
+ }
84
+ });
85
+ }, [floatingStyles, refs.floating, middlewareData, placement, open]);
51
86
  function handleClick() {
52
87
  if (triggerRef.current) {
53
- const {
54
- width: w
55
- } = triggerRef.current.getBoundingClientRect();
56
- setWidth(w);
57
88
  hookOnClick();
58
89
  }
59
90
  }
60
- function handleOpen() {
61
- if (menuRef.current) {
62
- menuRef.current.style.inlineSize = `${width}px`;
63
- menuRef.current.style.minInlineSize = `${width}px`;
64
- if (menuAlignment !== 'bottom' && menuAlignment !== 'top') {
65
- menuRef.current.style.inlineSize = `fit-content`;
66
- }
67
- }
68
- }
69
91
  const containerClasses = cx(`${prefix}--menu-button__container`, className);
70
92
  const triggerClasses = cx(`${prefix}--menu-button__trigger`, {
71
93
  [`${prefix}--menu-button__trigger--open`]: open
@@ -76,8 +98,9 @@ const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, forwardRef)
76
98
  "aria-owns": open ? id : undefined,
77
99
  className: containerClasses
78
100
  }), /*#__PURE__*/React__default.createElement(Button, {
101
+ ref: refs.setReference,
79
102
  className: triggerClasses,
80
- size: size,
103
+ size: size$1,
81
104
  tabIndex: tabIndex,
82
105
  kind: kind,
83
106
  renderIcon: ChevronDown,
@@ -91,16 +114,14 @@ const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, forwardRef)
91
114
  containerRef: triggerRef,
92
115
  menuAlignment: menuAlignment,
93
116
  className: menuClasses,
94
- ref: menuRef,
117
+ ref: refs.setFloating,
95
118
  id: id,
119
+ legacyAutoalign: false,
96
120
  label: label,
97
121
  mode: "basic",
98
- size: size,
122
+ size: size$1,
99
123
  open: open,
100
- onClose: handleClose,
101
- onOpen: handleOpen,
102
- x: x,
103
- y: [y[0] - spacing, y[1] + spacing]
124
+ onClose: handleClose
104
125
  }, children));
105
126
  });
106
127
  MenuButton.propTypes = {
@@ -231,6 +231,8 @@ const FilterableMultiSelect = /*#__PURE__*/React__default.forwardRef(function Fi
231
231
  return changes;
232
232
  case InputBlur:
233
233
  case InputKeyDownEscape:
234
+ setInputFocused(false);
235
+ setInputValue('');
234
236
  setIsOpen(false);
235
237
  return changes;
236
238
  case FunctionToggleMenu:
@@ -414,11 +416,7 @@ const FilterableMultiSelect = /*#__PURE__*/React__default.forwardRef(function Fi
414
416
  $input.setSelectionRange($value.length, $value.length);
415
417
  }
416
418
  },
417
- onFocus: () => setInputFocused(true),
418
- onBlur() {
419
- setInputFocused(false);
420
- setInputValue('');
421
- }
419
+ onFocus: () => setInputFocused(true)
422
420
  }));
423
421
  const menuProps = getMenuProps({}, {
424
422
  suppressRefError: true
@@ -127,7 +127,6 @@ const MultiSelect = /*#__PURE__*/React__default.forwardRef((_ref, ref) => {
127
127
  }
128
128
  }
129
129
  }
130
-
131
130
  return true; // Return true if item is not an object with undefined values
132
131
  });
133
132
  }, [items]);
@@ -209,6 +209,7 @@ const NumberInput = /*#__PURE__*/React__default.forwardRef(function NumberInput(
209
209
  "data-invalid": normalizedProps.invalid ? true : undefined,
210
210
  "aria-invalid": normalizedProps.invalid,
211
211
  "aria-describedby": ariaDescribedBy,
212
+ "aria-readonly": readOnly,
212
213
  disabled: normalizedProps.disabled,
213
214
  ref: ref,
214
215
  id: id,
@@ -241,6 +241,7 @@ const Pagination = /*#__PURE__*/React__default.forwardRef(function Pagination(_r
241
241
  kind: "ghost",
242
242
  className: backButtonClasses,
243
243
  label: backwardText,
244
+ "aria-label": backwardText,
244
245
  onClick: decrementPage,
245
246
  ref: backBtnRef
246
247
  }, _CaretLeft || (_CaretLeft = /*#__PURE__*/React__default.createElement(CaretLeft, null))), /*#__PURE__*/React__default.createElement(IconButton, {
@@ -249,6 +250,7 @@ const Pagination = /*#__PURE__*/React__default.forwardRef(function Pagination(_r
249
250
  kind: "ghost",
250
251
  className: forwardButtonClasses,
251
252
  label: forwardText,
253
+ "aria-label": forwardText,
252
254
  onClick: incrementPage,
253
255
  ref: forwardBtnRef
254
256
  }, _CaretRight || (_CaretRight = /*#__PURE__*/React__default.createElement(CaretRight, null))))));
@@ -253,6 +253,7 @@ const PaginationNav = /*#__PURE__*/React__default.forwardRef(function Pagination
253
253
  className: `${prefix}--pagination-nav__list`
254
254
  }, /*#__PURE__*/React__default.createElement(DirectionButton, {
255
255
  direction: "backward",
256
+ "aria-label": t('carbon.pagination-nav.previous'),
256
257
  label: t('carbon.pagination-nav.previous'),
257
258
  disabled: backwardButtonDisabled,
258
259
  onClick: jumpToPrevious
@@ -297,6 +298,7 @@ const PaginationNav = /*#__PURE__*/React__default.forwardRef(function Pagination
297
298
  }
298
299
  }), /*#__PURE__*/React__default.createElement(DirectionButton, {
299
300
  direction: "forward",
301
+ "aria-label": t('carbon.pagination-nav.next'),
300
302
  label: t('carbon.pagination-nav.next'),
301
303
  disabled: forwardButtonDisabled,
302
304
  onClick: jumpToNext
@@ -132,7 +132,6 @@ const Popover = /*#__PURE__*/React__default.forwardRef(function PopoverRenderFun
132
132
  whileElementsMounted: autoUpdate
133
133
  } : {} // When autoAlign is turned off, floating-ui will not be used
134
134
  );
135
-
136
135
  const value = useMemo(() => {
137
136
  return {
138
137
  floating,
@@ -6,5 +6,5 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import { ButtonProps } from '../Button';
9
- declare const PrimaryButton: <T extends React.ElementType<any>>(props: ButtonProps<T>) => import("react/jsx-runtime").JSX.Element;
9
+ declare const PrimaryButton: <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>(props: ButtonProps<T>) => import("react/jsx-runtime").JSX.Element;
10
10
  export default PrimaryButton;
@@ -49,7 +49,7 @@ export interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInp
49
49
  * Provide an optional `onChange` hook that is called each time the value of
50
50
  * the underlying `<input>` changes
51
51
  */
52
- onChange?: (value: string | number, name: string | undefined, event: React.ChangeEvent<HTMLInputElement>) => void;
52
+ onChange?: (value: RadioButtonProps['value'], name: RadioButtonProps['name'], event: React.ChangeEvent<HTMLInputElement>) => void;
53
53
  /**
54
54
  * Provide a handler that is invoked when a user clicks on the control
55
55
  */
@@ -67,5 +67,5 @@ export interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInp
67
67
  */
68
68
  required?: boolean;
69
69
  }
70
- declare const RadioButton: React.ForwardRefExoticComponent<RadioButtonProps & React.RefAttributes<unknown>>;
70
+ declare const RadioButton: React.ForwardRefExoticComponent<RadioButtonProps & React.RefAttributes<HTMLInputElement>>;
71
71
  export default RadioButton;
@@ -4,6 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import RadioButton from './RadioButton';
7
+ import RadioButton, { RadioButtonProps } from './RadioButton';
8
8
  export default RadioButton;
9
9
  export { RadioButton };
10
+ export type { RadioButtonProps };
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
+ import type { RadioButtonProps } from '../RadioButton';
8
9
  export declare const RadioButtonGroupContext: React.Context<null>;
9
10
  type ExcludedAttributes = 'onChange';
10
11
  export interface RadioButtonGroupProps extends Omit<React.InputHTMLAttributes<HTMLFieldSetElement>, ExcludedAttributes> {
@@ -19,7 +20,7 @@ export interface RadioButtonGroupProps extends Omit<React.InputHTMLAttributes<HT
19
20
  /**
20
21
  * Specify the `<RadioButton>` to be selected by default
21
22
  */
22
- defaultSelected?: string | number;
23
+ defaultSelected?: RadioButtonProps['value'];
23
24
  /**
24
25
  * Specify whether the group is disabled
25
26
  */
@@ -53,7 +54,7 @@ export interface RadioButtonGroupProps extends Omit<React.InputHTMLAttributes<HT
53
54
  * Provide an optional `onChange` hook that is called whenever the value of
54
55
  * the group changes
55
56
  */
56
- onChange?: (selection: React.ReactNode, name: string, event: React.ChangeEvent<HTMLInputElement>) => void;
57
+ onChange?: (selection: RadioButtonProps['value'], name: RadioButtonGroupProps['name'], event: React.ChangeEvent<HTMLInputElement>) => void;
57
58
  /**
58
59
  * Provide where radio buttons should be placed
59
60
  */
@@ -77,7 +78,7 @@ export interface RadioButtonGroupProps extends Omit<React.InputHTMLAttributes<HT
77
78
  /**
78
79
  * Specify the value that is currently selected in the group
79
80
  */
80
- valueSelected?: string | number;
81
+ valueSelected?: RadioButtonProps['value'];
81
82
  /**
82
83
  * `true` to specify if input selection in group is required.
83
84
  */
@@ -55,23 +55,21 @@ const RadioButtonGroup = /*#__PURE__*/React__default.forwardRef((props, ref) =>
55
55
  }
56
56
  function getRadioButtons() {
57
57
  const mappedChildren = React__default.Children.map(children, radioButton => {
58
- const {
59
- value
60
- } = radioButton?.props ?? undefined;
58
+ if (!radioButton) {
59
+ return;
60
+ }
61
61
  const newProps = {
62
62
  name: name,
63
- key: value,
64
- value: value,
63
+ key: radioButton.props.value,
64
+ value: radioButton.props.value,
65
65
  onChange: handleOnChange,
66
- checked: value === selected,
66
+ checked: radioButton.props.value === selected,
67
67
  required: required
68
68
  };
69
- if (!selected && radioButton?.props.checked) {
69
+ if (!selected && radioButton.props.checked) {
70
70
  newProps.checked = true;
71
71
  }
72
- if (radioButton) {
73
- return /*#__PURE__*/React__default.cloneElement(radioButton, newProps);
74
- }
72
+ return /*#__PURE__*/React__default.cloneElement(radioButton, newProps);
75
73
  });
76
74
  return mappedChildren;
77
75
  }
@@ -4,6 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import RadioButtonGroup from './RadioButtonGroup';
7
+ import RadioButtonGroup, { RadioButtonGroupProps } from './RadioButtonGroup';
8
8
  export default RadioButtonGroup;
9
9
  export { RadioButtonGroup };
10
+ export type { RadioButtonGroupProps };
@@ -6,5 +6,5 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import { ButtonProps } from '../Button';
9
- declare const SecondaryButton: <T extends React.ElementType<any>>(props: ButtonProps<T>) => import("react/jsx-runtime").JSX.Element;
9
+ declare const SecondaryButton: <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>(props: ButtonProps<T>) => import("react/jsx-runtime").JSX.Element;
10
10
  export default SecondaryButton;
@@ -251,13 +251,14 @@ function TabList(_ref2) {
251
251
  }
252
252
  });
253
253
  useEffect(() => {
254
- setIsNextButtonVisible(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth < ref.current.scrollWidth : false);
254
+ //adding 1 in calculation for firefox support
255
+ setIsNextButtonVisible(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth + 1 < ref.current.scrollWidth : false);
255
256
  if (dismissable) {
256
257
  if (ref.current) {
257
258
  setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
258
259
  }
259
260
  }
260
- }, [scrollLeft, children, dismissable]);
261
+ }, [scrollLeft, children, dismissable, isScrollable]);
261
262
  useEffectOnce(() => {
262
263
  if (tabs.current[selectedIndex]?.disabled) {
263
264
  const activeTabs = tabs.current.filter(tab => {
@@ -271,11 +272,13 @@ function TabList(_ref2) {
271
272
  });
272
273
  useIsomorphicEffect(() => {
273
274
  if (ref.current) {
274
- setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
275
+ //adding 1 in calculation for firefox support
276
+ setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth + 1);
275
277
  }
276
278
  function handler() {
277
279
  if (ref.current) {
278
- setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth);
280
+ //adding 1 in calculation for firefox support
281
+ setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth + 1);
279
282
  }
280
283
  }
281
284
  const debouncedHandler = debounce(handler, 200);
@@ -54,7 +54,7 @@ export interface DismissibleTagBaseProps {
54
54
  }
55
55
  export type DismissibleTagProps<T extends React.ElementType> = PolymorphicProps<T, DismissibleTagBaseProps>;
56
56
  declare const DismissibleTag: {
57
- <T extends React.ElementType<any>>({ className, disabled, id, renderIcon, title, onClose, slug, size, text, type, ...other }: DismissibleTagProps<T>): import("react/jsx-runtime").JSX.Element;
57
+ <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, disabled, id, renderIcon, title, onClose, slug, size, text, type, ...other }: DismissibleTagProps<T>): import("react/jsx-runtime").JSX.Element;
58
58
  propTypes: {
59
59
  /**
60
60
  * Provide a custom className that is applied to the containing <span>
@@ -59,7 +59,7 @@ export interface OperationalTagBaseProps {
59
59
  }
60
60
  export type OperationalTagProps<T extends React.ElementType> = PolymorphicProps<T, OperationalTagBaseProps>;
61
61
  declare const OperationalTag: {
62
- <T extends React.ElementType<any>>({ className, disabled, id, renderIcon, slug, size, text, type, ...other }: OperationalTagProps<T>): import("react/jsx-runtime").JSX.Element;
62
+ <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, disabled, id, renderIcon, slug, size, text, type, ...other }: OperationalTagProps<T>): import("react/jsx-runtime").JSX.Element;
63
63
  propTypes: {
64
64
  /**
65
65
  * Provide a custom className that is applied to the containing <span>
@@ -46,7 +46,7 @@ export interface SelectableTagBaseProps {
46
46
  }
47
47
  export type SelectableTagProps<T extends React.ElementType> = PolymorphicProps<T, SelectableTagBaseProps>;
48
48
  declare const SelectableTag: {
49
- <T extends React.ElementType<any>>({ className, disabled, id, renderIcon, selected, slug, size, text, ...other }: SelectableTagProps<T>): import("react/jsx-runtime").JSX.Element;
49
+ <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, disabled, id, renderIcon, selected, slug, size, text, ...other }: SelectableTagProps<T>): import("react/jsx-runtime").JSX.Element;
50
50
  propTypes: {
51
51
  /**
52
52
  * Provide a custom className that is applied to the containing <span>
@@ -74,6 +74,6 @@ export interface TagBaseProps {
74
74
  type?: keyof typeof TYPES;
75
75
  }
76
76
  export type TagProps<T extends React.ElementType> = PolymorphicProps<T, TagBaseProps>;
77
- declare const Tag: React.ForwardRefExoticComponent<Omit<TagProps<React.ElementType<any>>, "ref"> & React.RefAttributes<HTMLElement | undefined>>;
77
+ declare const Tag: React.ForwardRefExoticComponent<Omit<TagProps<React.ElementType<any, keyof React.JSX.IntrinsicElements>>, "ref"> & React.RefAttributes<HTMLElement | undefined>>;
78
78
  export declare const types: string[];
79
79
  export default Tag;
@@ -9,10 +9,10 @@ import { Text, TextBaseProps, TextProps } from './Text';
9
9
  export { TextDirection, Text };
10
10
  export type { TextBaseProps, TextProps, TextDirectionProps, GetTextDirection, TextDir, };
11
11
  export declare const Label: {
12
- (props: TextProps<import("react").ElementType<any>>): import("react/jsx-runtime").JSX.Element;
12
+ (props: TextProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>): import("react/jsx-runtime").JSX.Element;
13
13
  displayName: string;
14
14
  };
15
15
  export declare const Legend: {
16
- (props: TextProps<import("react").ElementType<any>>): import("react/jsx-runtime").JSX.Element;
16
+ (props: TextProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>): import("react/jsx-runtime").JSX.Element;
17
17
  displayName: string;
18
18
  };
@@ -154,6 +154,7 @@ const TextArea = /*#__PURE__*/React__default.forwardRef((props, forwardRef) => {
154
154
  };
155
155
  const formItemClasses = cx(`${prefix}--form-item`, className);
156
156
  const textAreaWrapperClasses = cx(`${prefix}--text-area__wrapper`, {
157
+ [`${prefix}--text-area__wrapper--cols`]: other.cols,
157
158
  [`${prefix}--text-area__wrapper--readonly`]: other.readOnly,
158
159
  [`${prefix}--text-area__wrapper--warn`]: warn,
159
160
  [`${prefix}--text-area__wrapper--slug`]: slug
@@ -89,7 +89,7 @@ export type ToggleTipButtonProps<T extends React.ElementType> = PolymorphicProps
89
89
  * `ToggletipButton` controls the visibility of the Toggletip through mouse
90
90
  * clicks and keyboard interactions.
91
91
  */
92
- export declare const ToggletipButton: React.ForwardRefExoticComponent<Omit<ToggleTipButtonProps<React.ElementType<any>>, "ref"> & React.RefAttributes<unknown>>;
92
+ export declare const ToggletipButton: React.ForwardRefExoticComponent<Omit<ToggleTipButtonProps<React.ElementType<any, keyof React.JSX.IntrinsicElements>>, "ref"> & React.RefAttributes<unknown>>;
93
93
  interface ToggletipContentProps {
94
94
  children?: ReactNode;
95
95
  className?: string | undefined;
@@ -74,7 +74,28 @@ DefinitionTooltip.propTypes = {
74
74
  /**
75
75
  * Specify how the trigger should align with the tooltip
76
76
  */
77
- align: PropTypes.oneOf(['top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top']),
77
+ align: PropTypes.oneOf(['top', 'top-left',
78
+ // deprecated use top-start instead
79
+ 'top-right',
80
+ // deprecated use top-end instead
81
+
82
+ 'bottom', 'bottom-left',
83
+ // deprecated use bottom-start instead
84
+ 'bottom-right',
85
+ // deprecated use bottom-end instead
86
+
87
+ 'left', 'left-bottom',
88
+ // deprecated use left-end instead
89
+ 'left-top',
90
+ // deprecated use left-start instead
91
+
92
+ 'right', 'right-bottom',
93
+ // deprecated use right-end instead
94
+ 'right-top',
95
+ // deprecated use right-start instead
96
+
97
+ // new values to match floating-ui
98
+ 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-end', 'left-start', 'right-end', 'right-start']),
78
99
  /**
79
100
  * The `children` prop will be used as the value that is being defined
80
101
  */
@@ -29,7 +29,7 @@ declare const Content: {
29
29
  suppressHydrationWarning?: boolean | undefined;
30
30
  accessKey?: string | undefined;
31
31
  autoFocus?: boolean | undefined;
32
- contentEditable?: (boolean | "true" | "false") | "inherit" | undefined;
32
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
33
33
  contextMenu?: string | undefined;
34
34
  dir?: string | undefined;
35
35
  draggable?: (boolean | "true" | "false") | undefined;
@@ -37,7 +37,6 @@ declare const Content: {
37
37
  id?: string | undefined;
38
38
  lang?: string | undefined;
39
39
  nonce?: string | undefined;
40
- placeholder?: string | undefined;
41
40
  slot?: string | undefined;
42
41
  spellCheck?: (boolean | "true" | "false") | undefined;
43
42
  style?: React.CSSProperties | undefined;
@@ -69,7 +68,7 @@ declare const Content: {
69
68
  results?: number | undefined;
70
69
  security?: string | undefined;
71
70
  unselectable?: "on" | "off" | undefined;
72
- inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
71
+ inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
73
72
  is?: string | undefined;
74
73
  "aria-activedescendant"?: string | undefined;
75
74
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
@@ -83,7 +82,7 @@ declare const Content: {
83
82
  "aria-colindextext"?: string | undefined;
84
83
  "aria-colspan"?: number | undefined;
85
84
  "aria-controls"?: string | undefined;
86
- "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
85
+ "aria-current"?: boolean | "true" | "false" | "time" | "page" | "step" | "location" | "date" | undefined;
87
86
  "aria-describedby"?: string | undefined;
88
87
  "aria-description"?: string | undefined;
89
88
  "aria-details"?: string | undefined;
@@ -93,7 +92,7 @@ declare const Content: {
93
92
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
94
93
  "aria-flowto"?: string | undefined;
95
94
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
96
- "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
95
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
97
96
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
98
97
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
99
98
  "aria-keyshortcuts"?: string | undefined;
@@ -266,9 +265,7 @@ declare const Content: {
266
265
  onPointerCancel?: React.PointerEventHandler<HTMLElement> | undefined;
267
266
  onPointerCancelCapture?: React.PointerEventHandler<HTMLElement> | undefined;
268
267
  onPointerEnter?: React.PointerEventHandler<HTMLElement> | undefined;
269
- onPointerEnterCapture?: React.PointerEventHandler<HTMLElement> | undefined;
270
268
  onPointerLeave?: React.PointerEventHandler<HTMLElement> | undefined;
271
- onPointerLeaveCapture?: React.PointerEventHandler<HTMLElement> | undefined;
272
269
  onPointerOver?: React.PointerEventHandler<HTMLElement> | undefined;
273
270
  onPointerOverCapture?: React.PointerEventHandler<HTMLElement> | undefined;
274
271
  onPointerOut?: React.PointerEventHandler<HTMLElement> | undefined;
@@ -21,7 +21,7 @@ export type LinkProps<E extends ElementType> = PolymorphicProps<E, LinkBaseProps
21
21
  * in their own components to support use-cases like `react-router` or
22
22
  * `@reach/router`
23
23
  */
24
- declare const Link: (<E extends React.ElementType<any> = "a">(props: LinkProps<E>) => JSX.Element) & {
24
+ declare const Link: (<E extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = "a">(props: LinkProps<E>) => JSX.Element) & {
25
25
  displayName?: string | undefined;
26
26
  propTypes?: React.WeakValidationMap<LinkProps<any>> | undefined;
27
27
  };
@@ -12,6 +12,7 @@ import deprecate from '../../prop-types/deprecate.js';
12
12
 
13
13
  // Note: Maybe we should use `as` instead of `element`? `as` appears to be
14
14
  // standard and is used in other places in this project.
15
+
15
16
  function LinkRenderFunction(_ref, ref) {
16
17
  let {
17
18
  element,