@carbon/react 1.84.0 → 1.85.0-rc.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/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +784 -784
- package/es/components/AILabel/index.js +6 -1
- package/es/components/Checkbox/Checkbox.d.ts +2 -2
- package/es/components/Checkbox/Checkbox.js +8 -8
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
- package/es/components/CheckboxGroup/CheckboxGroup.js +9 -8
- package/es/components/CodeSnippet/CodeSnippet.js +2 -4
- package/es/components/ComboBox/ComboBox.d.ts +1 -1
- package/es/components/ComboBox/ComboBox.js +8 -7
- package/es/components/ComposedModal/ComposedModal.d.ts +1 -1
- package/es/components/ComposedModal/ComposedModal.js +15 -10
- package/es/components/ContainedList/ContainedList.d.ts +1 -1
- package/es/components/ContainedList/ContainedList.js +4 -2
- package/es/components/ContentSwitcher/ContentSwitcher.js +6 -5
- package/es/components/DataTable/DataTable.js +3 -0
- package/es/components/DataTable/TableDecoratorRow.d.ts +2 -2
- package/es/components/DataTable/TableDecoratorRow.js +8 -8
- package/es/components/DataTable/TableExpandRow.d.ts +1 -1
- package/es/components/DataTable/TableExpandRow.js +15 -6
- package/es/components/DataTable/TableHeader.js +10 -10
- package/es/components/DataTable/TableRow.js +12 -4
- package/es/components/DataTable/tools/normalize.js +2 -1
- package/es/components/DatePickerInput/DatePickerInput.js +8 -7
- package/es/components/Dialog/index.d.ts +5 -1
- package/es/components/Dialog/index.js +20 -0
- package/es/components/Dropdown/Dropdown.d.ts +1 -1
- package/es/components/Dropdown/Dropdown.js +8 -10
- package/es/components/FileUploader/FileUploaderButton.js +2 -2
- package/es/components/FileUploader/FileUploaderDropContainer.js +2 -2
- package/es/components/FileUploader/FileUploaderItem.js +2 -2
- package/es/components/Layer/index.d.ts +1 -3
- package/es/components/Layer/index.js +9 -8
- package/es/components/Menu/Menu.js +0 -6
- package/es/components/Modal/Modal.d.ts +2 -2
- package/es/components/Modal/Modal.js +20 -9
- package/es/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
- package/es/components/MultiSelect/FilterableMultiSelect.js +8 -7
- package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/es/components/MultiSelect/MultiSelect.js +8 -7
- package/es/components/NumberInput/NumberInput.d.ts +1 -1
- package/es/components/NumberInput/NumberInput.js +9 -8
- package/es/components/PageHeader/PageHeader.js +2 -2
- package/es/components/Popover/index.js +2 -1
- package/es/components/RadioButton/RadioButton.d.ts +2 -2
- package/es/components/RadioButton/RadioButton.js +8 -8
- package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +2 -2
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +9 -8
- package/es/components/RadioTile/RadioTile.d.ts +1 -1
- package/es/components/RadioTile/RadioTile.js +8 -7
- package/es/components/Select/Select.d.ts +2 -2
- package/es/components/Select/Select.js +8 -7
- package/es/components/Tag/DismissibleTag.d.ts +1 -1
- package/es/components/Tag/DismissibleTag.js +9 -8
- package/es/components/Tag/Tag.d.ts +1 -1
- package/es/components/Tag/Tag.js +9 -8
- package/es/components/TextArea/TextArea.js +8 -7
- package/es/components/TextInput/TextInput.d.ts +1 -1
- package/es/components/TextInput/TextInput.js +20 -9
- package/es/components/Tile/Tile.d.ts +2 -2
- package/es/components/Tile/Tile.js +30 -36
- package/es/components/Toggletip/index.js +2 -2
- package/es/components/Tooltip/DefinitionTooltip.js +1 -0
- package/es/components/TreeView/TreeNode.js +3 -3
- package/es/components/TreeView/TreeView.js +3 -3
- package/es/components/UIShell/Content.d.ts +5 -3
- package/es/components/UIShell/HeaderPanel.d.ts +2 -2
- package/es/components/UIShell/HeaderPanel.js +9 -5
- package/es/internal/Selection.js +8 -3
- package/es/internal/environment.js +1 -12
- package/es/internal/{__mocks__/mockHTMLElement.d.ts → index.d.ts} +2 -4
- package/es/internal/useResizeObserver.d.ts +1 -1
- package/es/internal/utils.d.ts +14 -0
- package/es/internal/utils.js +18 -0
- package/es/tools/uniqueId.d.ts +1 -6
- package/lib/components/AILabel/index.js +6 -1
- package/lib/components/Checkbox/Checkbox.d.ts +2 -2
- package/lib/components/Checkbox/Checkbox.js +7 -7
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
- package/lib/components/CheckboxGroup/CheckboxGroup.js +8 -7
- package/lib/components/CodeSnippet/CodeSnippet.js +2 -4
- package/lib/components/ComboBox/ComboBox.d.ts +1 -1
- package/lib/components/ComboBox/ComboBox.js +11 -10
- package/lib/components/ComposedModal/ComposedModal.d.ts +1 -1
- package/lib/components/ComposedModal/ComposedModal.js +16 -11
- package/lib/components/ContainedList/ContainedList.d.ts +1 -1
- package/lib/components/ContainedList/ContainedList.js +4 -2
- package/lib/components/ContentSwitcher/ContentSwitcher.js +5 -4
- package/lib/components/DataTable/DataTable.js +3 -0
- package/lib/components/DataTable/TableDecoratorRow.d.ts +2 -2
- package/lib/components/DataTable/TableDecoratorRow.js +8 -8
- package/lib/components/DataTable/TableExpandRow.d.ts +1 -1
- package/lib/components/DataTable/TableExpandRow.js +14 -5
- package/lib/components/DataTable/TableHeader.js +9 -9
- package/lib/components/DataTable/TableRow.js +11 -3
- package/lib/components/DataTable/tools/normalize.js +2 -1
- package/lib/components/DatePickerInput/DatePickerInput.js +7 -6
- package/lib/components/Dialog/index.d.ts +5 -1
- package/lib/components/Dialog/index.js +20 -0
- package/lib/components/Dropdown/Dropdown.d.ts +1 -1
- package/lib/components/Dropdown/Dropdown.js +12 -14
- package/lib/components/FileUploader/FileUploaderButton.js +2 -2
- package/lib/components/FileUploader/FileUploaderDropContainer.js +2 -2
- package/lib/components/FileUploader/FileUploaderItem.js +2 -2
- package/lib/components/Layer/index.d.ts +1 -3
- package/lib/components/Layer/index.js +9 -8
- package/lib/components/Menu/Menu.js +0 -6
- package/lib/components/Modal/Modal.d.ts +2 -2
- package/lib/components/Modal/Modal.js +28 -17
- package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/FilterableMultiSelect.js +12 -11
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/MultiSelect.js +13 -12
- package/lib/components/NumberInput/NumberInput.d.ts +1 -1
- package/lib/components/NumberInput/NumberInput.js +8 -7
- package/lib/components/PageHeader/PageHeader.js +2 -2
- package/lib/components/Popover/index.js +2 -1
- package/lib/components/RadioButton/RadioButton.d.ts +2 -2
- package/lib/components/RadioButton/RadioButton.js +7 -7
- package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +2 -2
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +10 -9
- package/lib/components/RadioTile/RadioTile.d.ts +1 -1
- package/lib/components/RadioTile/RadioTile.js +7 -6
- package/lib/components/Select/Select.d.ts +2 -2
- package/lib/components/Select/Select.js +7 -6
- package/lib/components/Tag/DismissibleTag.d.ts +1 -1
- package/lib/components/Tag/DismissibleTag.js +8 -7
- package/lib/components/Tag/Tag.d.ts +1 -1
- package/lib/components/Tag/Tag.js +8 -7
- package/lib/components/TextArea/TextArea.js +7 -6
- package/lib/components/TextInput/TextInput.d.ts +1 -1
- package/lib/components/TextInput/TextInput.js +19 -8
- package/lib/components/Tile/Tile.d.ts +2 -2
- package/lib/components/Tile/Tile.js +29 -35
- package/lib/components/Toggletip/index.js +2 -2
- package/lib/components/Tooltip/DefinitionTooltip.js +1 -0
- package/lib/components/TreeView/TreeNode.js +3 -3
- package/lib/components/TreeView/TreeView.js +3 -3
- package/lib/components/UIShell/Content.d.ts +5 -3
- package/lib/components/UIShell/HeaderPanel.d.ts +2 -2
- package/lib/components/UIShell/HeaderPanel.js +8 -4
- package/lib/internal/Selection.js +8 -3
- package/lib/internal/environment.js +1 -12
- package/lib/internal/{__mocks__/mockHTMLElement.d.ts → index.d.ts} +2 -4
- package/lib/internal/useResizeObserver.d.ts +1 -1
- package/lib/internal/utils.d.ts +14 -0
- package/lib/internal/utils.js +22 -0
- package/lib/tools/uniqueId.d.ts +1 -6
- package/package.json +11 -20
- package/telemetry.yml +1 -0
- package/es/tools/uniqueId.js +0 -14
- package/lib/tools/uniqueId.js +0 -18
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2016,
|
|
2
|
+
* Copyright IBM Corp. 2016, 2025
|
|
3
3
|
*
|
|
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 React, { ReactNode } from 'react';
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
8
|
import type { RadioButtonProps } from '../RadioButton';
|
|
9
9
|
export declare const RadioButtonGroupContext: React.Context<null>;
|
|
10
10
|
type ExcludedAttributes = 'onChange';
|
|
@@ -13,12 +13,14 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
|
|
|
13
13
|
var PropTypes = require('prop-types');
|
|
14
14
|
var React = require('react');
|
|
15
15
|
var cx = require('classnames');
|
|
16
|
-
var index = require('../Text/index.js');
|
|
16
|
+
var index$1 = require('../Text/index.js');
|
|
17
17
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
18
18
|
var iconsReact = require('@carbon/icons-react');
|
|
19
19
|
var deprecate = require('../../prop-types/deprecate.js');
|
|
20
20
|
var mergeRefs = require('../../tools/mergeRefs.js');
|
|
21
21
|
var useId = require('../../internal/useId.js');
|
|
22
|
+
var index = require('../AILabel/index.js');
|
|
23
|
+
var utils = require('../../internal/utils.js');
|
|
22
24
|
|
|
23
25
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
26
|
|
|
@@ -113,13 +115,12 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
|
|
|
113
115
|
const divRef = React.useRef(null);
|
|
114
116
|
|
|
115
117
|
// AILabel is always size `mini`
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
118
|
+
const candidate = slug ?? decorator;
|
|
119
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
120
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
121
|
+
size: 'mini',
|
|
122
|
+
kind: 'default'
|
|
123
|
+
}) : null;
|
|
123
124
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
124
125
|
className: wrapperClasses,
|
|
125
126
|
ref: mergeRefs["default"](divRef, ref)
|
|
@@ -128,7 +129,7 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
|
|
|
128
129
|
disabled: disabled,
|
|
129
130
|
"data-invalid": invalid ? true : undefined,
|
|
130
131
|
"aria-describedby": showHelper && helperText ? helperId : undefined
|
|
131
|
-
}, rest), legendText && /*#__PURE__*/React__default["default"].createElement(index.Legend, {
|
|
132
|
+
}, rest), legendText && /*#__PURE__*/React__default["default"].createElement(index$1.Legend, {
|
|
132
133
|
className: `${prefix}--label`
|
|
133
134
|
}, legendText, slug ? normalizedDecorator : decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
134
135
|
className: `${prefix}--radio-button-group-inner--decorator`
|
|
@@ -22,6 +22,8 @@ var deprecate = require('../../prop-types/deprecate.js');
|
|
|
22
22
|
var noopFn = require('../../internal/noopFn.js');
|
|
23
23
|
require('../Text/index.js');
|
|
24
24
|
var index = require('../FeatureFlags/index.js');
|
|
25
|
+
var index$1 = require('../AILabel/index.js');
|
|
26
|
+
var utils = require('../../internal/utils.js');
|
|
25
27
|
var Text = require('../Text/Text.js');
|
|
26
28
|
|
|
27
29
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -82,12 +84,11 @@ const RadioTile = /*#__PURE__*/React__default["default"].forwardRef(function Rad
|
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
// AILabel is always size `xs`
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
87
|
+
const candidate = slug ?? decorator;
|
|
88
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
|
|
89
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
90
|
+
size: 'xs'
|
|
91
|
+
}) : null;
|
|
91
92
|
return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("input", {
|
|
92
93
|
checked: checked,
|
|
93
94
|
className: `${prefix}--tile-input`,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2016,
|
|
2
|
+
* Copyright IBM Corp. 2016, 2025
|
|
3
3
|
*
|
|
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 React, { ChangeEventHandler, ComponentPropsWithRef, ReactNode } from 'react';
|
|
7
|
+
import React, { type ChangeEventHandler, type ComponentPropsWithRef, type ReactNode } from 'react';
|
|
8
8
|
type ExcludedAttributes = 'size';
|
|
9
9
|
export interface SelectProps extends Omit<ComponentPropsWithRef<'select'>, ExcludedAttributes> {
|
|
10
10
|
/**
|
|
@@ -21,6 +21,8 @@ var FormContext = require('../FluidForm/FormContext.js');
|
|
|
21
21
|
var useId = require('../../internal/useId.js');
|
|
22
22
|
var events = require('../../tools/events.js');
|
|
23
23
|
require('../Text/index.js');
|
|
24
|
+
var index = require('../AILabel/index.js');
|
|
25
|
+
var utils = require('../../internal/utils.js');
|
|
24
26
|
var Text = require('../Text/Text.js');
|
|
25
27
|
|
|
26
28
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -144,12 +146,11 @@ const Select = /*#__PURE__*/React__default["default"].forwardRef(function Select
|
|
|
144
146
|
};
|
|
145
147
|
|
|
146
148
|
// AILabel always size `mini`
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
149
|
+
const candidate = slug ?? decorator;
|
|
150
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
151
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
152
|
+
size: 'mini'
|
|
153
|
+
}) : null;
|
|
153
154
|
const input = (() => {
|
|
154
155
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("select", _rollupPluginBabelHelpers["extends"]({}, other, ariaProps, {
|
|
155
156
|
id: id,
|
|
@@ -4,7 +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 React, { ReactNode } from 'react';
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
8
|
import { PolymorphicProps } from '../../types/common';
|
|
9
9
|
import { SIZES, TYPES } from './Tag';
|
|
10
10
|
export interface DismissibleTagBaseProps {
|
|
@@ -23,6 +23,8 @@ var Tooltip = require('../Tooltip/Tooltip.js');
|
|
|
23
23
|
require('../Text/index.js');
|
|
24
24
|
var isEllipsisActive = require('./isEllipsisActive.js');
|
|
25
25
|
var mergeRefs = require('../../tools/mergeRefs.js');
|
|
26
|
+
var index = require('../AILabel/index.js');
|
|
27
|
+
var utils = require('../../internal/utils.js');
|
|
26
28
|
var Text = require('../Text/Text.js');
|
|
27
29
|
|
|
28
30
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -64,13 +66,12 @@ const DismissibleTag = /*#__PURE__*/React.forwardRef(({
|
|
|
64
66
|
onClose(event);
|
|
65
67
|
}
|
|
66
68
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
69
|
+
const candidate = slug ?? decorator;
|
|
70
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
71
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
72
|
+
size: 'sm',
|
|
73
|
+
kind: 'inline'
|
|
74
|
+
}) : null;
|
|
74
75
|
const tooltipClasses = cx__default["default"](`${prefix}--icon-tooltip`, `${prefix}--tag-label-tooltip`);
|
|
75
76
|
|
|
76
77
|
// Removing onClick from the spread operator
|
|
@@ -4,7 +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 React, { ReactNode } from 'react';
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
8
|
import { PolymorphicComponentPropWithRef } from '../../internal/PolymorphicProps';
|
|
9
9
|
import { SelectableTagBaseProps } from './SelectableTag';
|
|
10
10
|
import { OperationalTagBaseProps } from './OperationalTag';
|
|
@@ -22,6 +22,8 @@ var DefinitionTooltip = require('../Tooltip/DefinitionTooltip.js');
|
|
|
22
22
|
require('../Tooltip/Tooltip.js');
|
|
23
23
|
var isEllipsisActive = require('./isEllipsisActive.js');
|
|
24
24
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
25
|
+
var index = require('../AILabel/index.js');
|
|
26
|
+
var utils = require('../../internal/utils.js');
|
|
25
27
|
var Text = require('../Text/Text.js');
|
|
26
28
|
|
|
27
29
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -104,13 +106,12 @@ const TagBase = /*#__PURE__*/React__default["default"].forwardRef(({
|
|
|
104
106
|
};
|
|
105
107
|
|
|
106
108
|
// AILabel is always size `sm` and `inline`
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
109
|
+
const candidate = slug ?? decorator;
|
|
110
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
111
|
+
const normalizedDecorator = candidateIsAILabel && !isInteractiveTag ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
112
|
+
size: 'sm',
|
|
113
|
+
kind: 'inline'
|
|
114
|
+
}) : null;
|
|
114
115
|
if (filter) {
|
|
115
116
|
const ComponentTag = BaseComponent ?? 'div';
|
|
116
117
|
return /*#__PURE__*/React__default["default"].createElement(ComponentTag, _rollupPluginBabelHelpers["extends"]({
|
|
@@ -24,6 +24,8 @@ var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
|
24
24
|
var useId = require('../../internal/useId.js');
|
|
25
25
|
var noopFn = require('../../internal/noopFn.js');
|
|
26
26
|
require('../Text/index.js');
|
|
27
|
+
var index = require('../AILabel/index.js');
|
|
28
|
+
var utils = require('../../internal/utils.js');
|
|
27
29
|
var Text = require('../Text/Text.js');
|
|
28
30
|
|
|
29
31
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -268,12 +270,11 @@ const TextArea = frFn((props, forwardRef) => {
|
|
|
268
270
|
}));
|
|
269
271
|
|
|
270
272
|
// AILabel is always size `mini`
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
273
|
+
const candidate = slug ?? decorator;
|
|
274
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
275
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
276
|
+
size: 'mini'
|
|
277
|
+
}) : null;
|
|
277
278
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
278
279
|
className: formItemClasses
|
|
279
280
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -4,7 +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 React, { ReactNode } from 'react';
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
8
|
type ExcludedAttributes = 'defaultValue' | 'id' | 'size' | 'value';
|
|
9
9
|
export interface TextInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes> {
|
|
10
10
|
/**
|
|
@@ -17,9 +17,12 @@ var deprecate = require('../../prop-types/deprecate.js');
|
|
|
17
17
|
var util = require('./util.js');
|
|
18
18
|
require('../FluidForm/FluidForm.js');
|
|
19
19
|
var FormContext = require('../FluidForm/FormContext.js');
|
|
20
|
+
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
20
21
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
21
22
|
var getAnnouncement = require('../../internal/getAnnouncement.js');
|
|
22
23
|
require('../Text/index.js');
|
|
24
|
+
var index = require('../AILabel/index.js');
|
|
25
|
+
var utils = require('../../internal/utils.js');
|
|
23
26
|
var Text = require('../Text/Text.js');
|
|
24
27
|
|
|
25
28
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -58,7 +61,16 @@ const TextInput = /*#__PURE__*/React__default["default"].forwardRef(function Tex
|
|
|
58
61
|
defaultValue,
|
|
59
62
|
value
|
|
60
63
|
} = rest;
|
|
61
|
-
const
|
|
64
|
+
const inputRef = React.useRef(null);
|
|
65
|
+
const mergedRef = useMergedRefs.useMergedRefs([ref, inputRef]);
|
|
66
|
+
function getInitialTextCount() {
|
|
67
|
+
const targetValue = defaultValue || value || inputRef.current?.value || '';
|
|
68
|
+
return targetValue.toString().length;
|
|
69
|
+
}
|
|
70
|
+
const [textCount, setTextCount] = React.useState(getInitialTextCount());
|
|
71
|
+
React.useEffect(() => {
|
|
72
|
+
setTextCount(getInitialTextCount());
|
|
73
|
+
}, [value, defaultValue, enableCounter]);
|
|
62
74
|
const normalizedProps = useNormalizedInputProps.useNormalizedInputProps({
|
|
63
75
|
id,
|
|
64
76
|
readOnly,
|
|
@@ -91,7 +103,7 @@ const TextInput = /*#__PURE__*/React__default["default"].forwardRef(function Tex
|
|
|
91
103
|
},
|
|
92
104
|
placeholder,
|
|
93
105
|
type,
|
|
94
|
-
ref,
|
|
106
|
+
ref: mergedRef,
|
|
95
107
|
className: textInputClasses,
|
|
96
108
|
title: placeholder,
|
|
97
109
|
disabled: normalizedProps.disabled,
|
|
@@ -189,12 +201,11 @@ const TextInput = /*#__PURE__*/React__default["default"].forwardRef(function Tex
|
|
|
189
201
|
const Icon = normalizedProps.icon;
|
|
190
202
|
|
|
191
203
|
// AILabel is always size `mini`
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
204
|
+
const candidate = slug ?? decorator;
|
|
205
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
206
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
207
|
+
size: 'mini'
|
|
208
|
+
}) : null;
|
|
198
209
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
199
210
|
className: inputWrapperClasses
|
|
200
211
|
}, !inline ? labelWrapper : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -4,7 +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 React, { type
|
|
7
|
+
import React, { type HTMLAttributes, type KeyboardEvent, type MouseEvent, type ReactNode } from 'react';
|
|
8
8
|
export interface TileProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
9
|
children?: ReactNode;
|
|
10
10
|
className?: string;
|
|
@@ -105,7 +105,7 @@ export interface SelectableTileProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
105
105
|
/**
|
|
106
106
|
* The empty handler of the `<input>`.
|
|
107
107
|
*/
|
|
108
|
-
onChange?(event:
|
|
108
|
+
onChange?(event: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>, selected?: boolean, id?: string): void;
|
|
109
109
|
/**
|
|
110
110
|
* Specify the function to run when the SelectableTile is clicked
|
|
111
111
|
*/
|
|
@@ -26,6 +26,8 @@ var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
|
26
26
|
var index = require('../FeatureFlags/index.js');
|
|
27
27
|
var useId = require('../../internal/useId.js');
|
|
28
28
|
require('../Text/index.js');
|
|
29
|
+
var index$1 = require('../AILabel/index.js');
|
|
30
|
+
var utils = require('../../internal/utils.js');
|
|
29
31
|
var Text = require('../Text/Text.js');
|
|
30
32
|
|
|
31
33
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -234,7 +236,11 @@ const SelectableTile = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
234
236
|
const clickHandler = onClick;
|
|
235
237
|
const keyDownHandler = onKeyDown;
|
|
236
238
|
const [isSelected, setIsSelected] = React.useState(selected);
|
|
237
|
-
|
|
239
|
+
|
|
240
|
+
// Use useEffect to sync with prop changes instead of render-time logic
|
|
241
|
+
React.useEffect(() => {
|
|
242
|
+
setIsSelected(selected);
|
|
243
|
+
}, [selected]);
|
|
238
244
|
const classes = cx__default["default"](`${prefix}--tile`, `${prefix}--tile--selectable`, {
|
|
239
245
|
[`${prefix}--tile--is-selected`]: isSelected,
|
|
240
246
|
[`${prefix}--tile--light`]: light,
|
|
@@ -244,50 +250,40 @@ const SelectableTile = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
244
250
|
[`${prefix}--tile--decorator`]: decorator,
|
|
245
251
|
[`${prefix}--tile--decorator-rounded`]: decorator && hasRoundedCorners
|
|
246
252
|
}, className);
|
|
253
|
+
|
|
254
|
+
// Single function to handle selection changes
|
|
255
|
+
const handleSelectionChange = React.useCallback((evt, newSelected) => {
|
|
256
|
+
setIsSelected(newSelected);
|
|
257
|
+
onChange(evt, newSelected, id);
|
|
258
|
+
}, [onChange, id]);
|
|
247
259
|
function handleClick(evt) {
|
|
248
260
|
evt.preventDefault();
|
|
249
261
|
evt?.persist?.();
|
|
250
|
-
if (normalizedDecorator && decoratorRef.current && decoratorRef.current.contains(evt.target)) {
|
|
262
|
+
if (normalizedDecorator && decoratorRef.current && evt.target instanceof Node && decoratorRef.current.contains(evt.target)) {
|
|
251
263
|
return;
|
|
252
264
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
onChange(evt, newSelected, id);
|
|
256
|
-
return newSelected;
|
|
257
|
-
});
|
|
265
|
+
const newSelected = !isSelected;
|
|
266
|
+
handleSelectionChange(evt, newSelected);
|
|
258
267
|
clickHandler(evt);
|
|
259
268
|
}
|
|
260
269
|
function handleKeyDown(evt) {
|
|
261
270
|
evt?.persist?.();
|
|
262
271
|
if (match.matches(evt, [keys.Enter, keys.Space])) {
|
|
263
272
|
evt.preventDefault();
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
onChange(evt, newSelected, id);
|
|
267
|
-
return newSelected;
|
|
268
|
-
});
|
|
273
|
+
const newSelected = !isSelected;
|
|
274
|
+
handleSelectionChange(evt, newSelected);
|
|
269
275
|
}
|
|
270
276
|
keyDownHandler(evt);
|
|
271
277
|
}
|
|
272
|
-
function handleChange(event) {
|
|
273
|
-
const newSelected = event.target.checked;
|
|
274
|
-
setIsSelected(newSelected);
|
|
275
|
-
onChange(event, newSelected, id);
|
|
276
|
-
}
|
|
277
|
-
if (selected !== prevSelected) {
|
|
278
|
-
setIsSelected(selected);
|
|
279
|
-
setPrevSelected(selected);
|
|
280
|
-
}
|
|
281
278
|
|
|
282
279
|
// AILabel is always size `xs`
|
|
283
280
|
const decoratorRef = React.useRef(null);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
}
|
|
281
|
+
const candidate = slug ?? decorator;
|
|
282
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
|
|
283
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
284
|
+
size: 'xs',
|
|
285
|
+
ref: decoratorRef
|
|
286
|
+
}) : null;
|
|
291
287
|
return (
|
|
292
288
|
/*#__PURE__*/
|
|
293
289
|
// eslint-disable-next-line jsx-a11y/interactive-supports-focus
|
|
@@ -302,7 +298,6 @@ const SelectableTile = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
302
298
|
tabIndex: !disabled ? tabIndex : undefined,
|
|
303
299
|
ref: ref,
|
|
304
300
|
id: id,
|
|
305
|
-
onChange: !disabled ? handleChange : undefined,
|
|
306
301
|
title: title
|
|
307
302
|
}, rest), /*#__PURE__*/React__default["default"].createElement("span", {
|
|
308
303
|
className: `${prefix}--tile__checkmark ${prefix}--tile__checkmark--persistent`
|
|
@@ -515,12 +510,11 @@ const ExpandableTile = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
515
510
|
const belowTheFoldId = useId.useId('expandable-tile-interactive');
|
|
516
511
|
|
|
517
512
|
// AILabel is always size `xs`
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
513
|
+
const candidate = slug ?? decorator;
|
|
514
|
+
const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
|
|
515
|
+
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
516
|
+
size: 'xs'
|
|
517
|
+
}) : null;
|
|
524
518
|
return interactive ? /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
|
525
519
|
ref: ref,
|
|
526
520
|
className: interactiveClassNames
|
|
@@ -98,6 +98,7 @@ function Toggletip({
|
|
|
98
98
|
buttonProps: {
|
|
99
99
|
'aria-expanded': open,
|
|
100
100
|
'aria-controls': id,
|
|
101
|
+
'aria-describedby': open ? id : undefined,
|
|
101
102
|
onClick: actions.toggle
|
|
102
103
|
},
|
|
103
104
|
contentProps: {
|
|
@@ -269,8 +270,7 @@ const ToggletipContent = /*#__PURE__*/React__default["default"].forwardRef(funct
|
|
|
269
270
|
return /*#__PURE__*/React__default["default"].createElement(index.PopoverContent, _rollupPluginBabelHelpers["extends"]({
|
|
270
271
|
className: customClassName
|
|
271
272
|
}, toggletip?.contentProps, {
|
|
272
|
-
ref: ref
|
|
273
|
-
"aria-live": "polite"
|
|
273
|
+
ref: ref
|
|
274
274
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
275
275
|
className: `${prefix}--toggletip-content`
|
|
276
276
|
}, children));
|
|
@@ -67,6 +67,7 @@ const DefinitionTooltip = ({
|
|
|
67
67
|
}, /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
68
68
|
className: cx__default["default"](`${prefix}--definition-term`, triggerClassName),
|
|
69
69
|
"aria-controls": tooltipId,
|
|
70
|
+
"aria-describedby": tooltipId,
|
|
70
71
|
"aria-expanded": isOpen,
|
|
71
72
|
onBlur: () => {
|
|
72
73
|
setOpen(false);
|
|
@@ -18,7 +18,7 @@ var keys = require('../../internal/keyboard/keys.js');
|
|
|
18
18
|
var match = require('../../internal/keyboard/match.js');
|
|
19
19
|
var useControllableState = require('../../internal/useControllableState.js');
|
|
20
20
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
21
|
-
var
|
|
21
|
+
var useId = require('../../internal/useId.js');
|
|
22
22
|
var index = require('../FeatureFlags/index.js');
|
|
23
23
|
|
|
24
24
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -53,7 +53,7 @@ const TreeNode = /*#__PURE__*/React__default["default"].forwardRef(({
|
|
|
53
53
|
const enableTreeviewControllable = index.useFeatureFlag('enable-treeview-controllable');
|
|
54
54
|
const {
|
|
55
55
|
current: id
|
|
56
|
-
} = React.useRef(nodeId ||
|
|
56
|
+
} = React.useRef(nodeId || useId.useId());
|
|
57
57
|
const controllableExpandedState = useControllableState.useControllableState({
|
|
58
58
|
value: isExpanded,
|
|
59
59
|
onChange: newValue => {
|
|
@@ -82,7 +82,7 @@ const TreeNode = /*#__PURE__*/React__default["default"].forwardRef(({
|
|
|
82
82
|
function enhanceTreeNodes(children) {
|
|
83
83
|
return React__default["default"].Children.map(children, node => {
|
|
84
84
|
if (! /*#__PURE__*/React__default["default"].isValidElement(node)) return node;
|
|
85
|
-
const isTreeNode = node.type
|
|
85
|
+
const isTreeNode = node.type === TreeNode;
|
|
86
86
|
if (isTreeNode) {
|
|
87
87
|
return /*#__PURE__*/React__default["default"].cloneElement(node, {
|
|
88
88
|
active,
|
|
@@ -17,7 +17,7 @@ var keys = require('../../internal/keyboard/keys.js');
|
|
|
17
17
|
var match = require('../../internal/keyboard/match.js');
|
|
18
18
|
var useControllableState = require('../../internal/useControllableState.js');
|
|
19
19
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
20
|
-
var
|
|
20
|
+
var useId = require('../../internal/useId.js');
|
|
21
21
|
var index = require('../FeatureFlags/index.js');
|
|
22
22
|
var TreeNode = require('./TreeNode.js');
|
|
23
23
|
|
|
@@ -43,7 +43,7 @@ const TreeView = ({
|
|
|
43
43
|
const enableTreeviewControllable = index.useFeatureFlag('enable-treeview-controllable');
|
|
44
44
|
const {
|
|
45
45
|
current: treeId
|
|
46
|
-
} = React.useRef(rest.id ||
|
|
46
|
+
} = React.useRef(rest.id || useId.useId());
|
|
47
47
|
const prefix = usePrefix.usePrefix();
|
|
48
48
|
const treeClasses = cx__default["default"](className, `${prefix}--tree`, {
|
|
49
49
|
// @ts-ignore - will always be false according to prop types
|
|
@@ -122,7 +122,7 @@ const TreeView = ({
|
|
|
122
122
|
function enhanceTreeNodes(children) {
|
|
123
123
|
return React__default["default"].Children.map(children, child => {
|
|
124
124
|
if (! /*#__PURE__*/React__default["default"].isValidElement(child)) return child;
|
|
125
|
-
const isTreeNode = child.type
|
|
125
|
+
const isTreeNode = child.type === TreeNode["default"];
|
|
126
126
|
if (isTreeNode) {
|
|
127
127
|
const node = child;
|
|
128
128
|
const sharedNodeProps = {
|
|
@@ -75,6 +75,8 @@ declare const Content: {
|
|
|
75
75
|
inert?: boolean | undefined;
|
|
76
76
|
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
|
|
77
77
|
is?: string | undefined;
|
|
78
|
+
exportparts?: string | undefined;
|
|
79
|
+
part?: string | undefined;
|
|
78
80
|
"aria-activedescendant"?: string | undefined;
|
|
79
81
|
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
80
82
|
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
|
|
@@ -149,7 +151,7 @@ declare const Content: {
|
|
|
149
151
|
onBlurCapture?: React.FocusEventHandler<HTMLElement> | undefined;
|
|
150
152
|
onChange?: React.FormEventHandler<HTMLElement> | undefined;
|
|
151
153
|
onChangeCapture?: React.FormEventHandler<HTMLElement> | undefined;
|
|
152
|
-
onBeforeInput?: React.
|
|
154
|
+
onBeforeInput?: React.InputEventHandler<HTMLElement> | undefined;
|
|
153
155
|
onBeforeInputCapture?: React.FormEventHandler<HTMLElement> | undefined;
|
|
154
156
|
onInput?: React.FormEventHandler<HTMLElement> | undefined;
|
|
155
157
|
onInputCapture?: React.FormEventHandler<HTMLElement> | undefined;
|
|
@@ -199,8 +201,6 @@ declare const Content: {
|
|
|
199
201
|
onProgressCapture?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
200
202
|
onRateChange?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
201
203
|
onRateChangeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
202
|
-
onResize?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
203
|
-
onResizeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
204
204
|
onSeeked?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
205
205
|
onSeekedCapture?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
206
206
|
onSeeking?: React.ReactEventHandler<HTMLElement> | undefined;
|
|
@@ -281,6 +281,8 @@ declare const Content: {
|
|
|
281
281
|
onLostPointerCaptureCapture?: React.PointerEventHandler<HTMLElement> | undefined;
|
|
282
282
|
onScroll?: React.UIEventHandler<HTMLElement> | undefined;
|
|
283
283
|
onScrollCapture?: React.UIEventHandler<HTMLElement> | undefined;
|
|
284
|
+
onScrollEnd?: React.UIEventHandler<HTMLElement> | undefined;
|
|
285
|
+
onScrollEndCapture?: React.UIEventHandler<HTMLElement> | undefined;
|
|
284
286
|
onWheel?: React.WheelEventHandler<HTMLElement> | undefined;
|
|
285
287
|
onWheelCapture?: React.WheelEventHandler<HTMLElement> | undefined;
|
|
286
288
|
onAnimationStart?: React.AnimationEventHandler<HTMLElement> | undefined;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2016,
|
|
2
|
+
* Copyright IBM Corp. 2016, 2025
|
|
3
3
|
*
|
|
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 React, { ReactNode } from 'react';
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
8
|
export interface HeaderPanelProps {
|
|
9
9
|
/**
|
|
10
10
|
* Specify whether focus and blur listeners are added. They are by default.
|
|
@@ -18,6 +18,7 @@ var keys = require('../../internal/keyboard/keys.js');
|
|
|
18
18
|
var match = require('../../internal/keyboard/match.js');
|
|
19
19
|
var useEvent = require('../../internal/useEvent.js');
|
|
20
20
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
21
|
+
var Switcher = require('./Switcher.js');
|
|
21
22
|
|
|
22
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
24
|
|
|
@@ -68,10 +69,13 @@ const HeaderPanel = /*#__PURE__*/React__default["default"].forwardRef(function H
|
|
|
68
69
|
};
|
|
69
70
|
}
|
|
70
71
|
useEvent.useWindowEvent('click', () => {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (
|
|
72
|
+
const {
|
|
73
|
+
activeElement
|
|
74
|
+
} = document;
|
|
75
|
+
if (!(activeElement instanceof HTMLElement)) return;
|
|
76
|
+
setLastClickedElement(activeElement);
|
|
77
|
+
const isChildASwitcher = /*#__PURE__*/React.isValidElement(children) && typeof children.type !== 'string' && children.type === Switcher["default"];
|
|
78
|
+
if (isChildASwitcher && !activeElement.closest(`.${prefix}--header-panel--expanded`) && !activeElement.closest(`.${prefix}--header__action`) && !headerPanelReference?.current?.classList.contains(`${prefix}--switcher`) && expanded) {
|
|
75
79
|
setExpandedState(false);
|
|
76
80
|
onHeaderPanelFocus();
|
|
77
81
|
}
|
|
@@ -25,9 +25,14 @@ const callOnChangeHandler = ({
|
|
|
25
25
|
}) => {
|
|
26
26
|
if (isControlled) {
|
|
27
27
|
if (isMounted && onChangeHandlerControlled) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
// Use setTimeout to defer the controlled onChange call,
|
|
29
|
+
// avoiding React’s warning: "Cannot update a component while rendering a different component".
|
|
30
|
+
// This ensures the parent state updates after rendering completes.
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
onChangeHandlerControlled({
|
|
33
|
+
selectedItems
|
|
34
|
+
});
|
|
35
|
+
}, 0);
|
|
31
36
|
}
|
|
32
37
|
} else {
|
|
33
38
|
onChangeHandlerUncontrolled(selectedItems);
|