@carbon/react 1.102.0-rc.0 → 1.103.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.
Files changed (172) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +976 -976
  2. package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
  3. package/es/components/Button/Button.Skeleton.js +2 -1
  4. package/es/components/Button/Button.d.ts +4 -4
  5. package/es/components/Button/Button.js +4 -4
  6. package/es/components/Button/index.js +1 -1
  7. package/es/components/ButtonSet/ButtonSet.js +1 -1
  8. package/es/components/Checkbox/index.js +1 -1
  9. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  10. package/es/components/CheckboxGroup/CheckboxGroup.js +2 -2
  11. package/es/components/ComboBox/ComboBox.js +3 -4
  12. package/es/components/ComposedModal/ComposedModal.js +0 -3
  13. package/es/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
  14. package/es/components/ComposedModal/ComposedModalPresence.js +14 -1
  15. package/es/components/ComposedModal/index.d.ts +1 -1
  16. package/es/components/ContainedList/index.js +1 -1
  17. package/es/components/ContentSwitcher/ContentSwitcher.js +3 -2
  18. package/es/components/DataTable/TableExpandRow.js +2 -2
  19. package/es/components/DataTable/TableHeader.js +1 -1
  20. package/es/components/DataTable/TableRow.js +1 -1
  21. package/es/components/DataTable/TableToolbarMenu.js +1 -1
  22. package/es/components/DataTable/tools/normalize.js +2 -1
  23. package/es/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
  24. package/es/components/DatePicker/DatePicker.Skeleton.js +2 -2
  25. package/es/components/DatePicker/DatePicker.js +3 -2
  26. package/es/components/DatePicker/index.js +1 -1
  27. package/es/components/DatePickerInput/DatePickerInput.js +1 -1
  28. package/es/components/Dialog/Dialog.js +1 -1
  29. package/es/components/Dropdown/Dropdown.js +1 -3
  30. package/es/components/Dropdown/index.js +1 -1
  31. package/es/components/ExpandableSearch/ExpandableSearch.js +1 -1
  32. package/es/components/FeatureFlags/index.d.ts +8 -18
  33. package/es/components/FeatureFlags/index.js +23 -103
  34. package/es/components/FileUploader/FileUploader.Skeleton.js +1 -1
  35. package/es/components/FileUploader/FileUploaderButton.d.ts +1 -1
  36. package/es/components/FileUploader/FileUploaderButton.js +3 -7
  37. package/es/components/Icon/Icon.Skeleton.js +1 -1
  38. package/es/components/IconIndicator/index.js +1 -1
  39. package/es/components/Menu/MenuItem.js +1 -1
  40. package/es/components/Modal/ModalPresence.d.ts +9 -1
  41. package/es/components/Modal/ModalPresence.js +14 -1
  42. package/es/components/Modal/index.d.ts +2 -2
  43. package/es/components/MultiSelect/MultiSelect.js +9 -10
  44. package/es/components/Notification/Notification.js +1 -1
  45. package/es/components/NumberInput/NumberInput.js +15 -13
  46. package/es/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  47. package/es/components/OverflowMenu/OverflowMenu.js +3 -5
  48. package/es/components/OverflowMenuV2/index.js +1 -1
  49. package/es/components/PageHeader/PageHeader.js +2 -23
  50. package/es/components/Pagination/Pagination.Skeleton.js +1 -1
  51. package/es/components/Pagination/Pagination.d.ts +4 -0
  52. package/es/components/Pagination/Pagination.js +6 -1
  53. package/es/components/Pagination/experimental/Pagination.js +12 -1
  54. package/es/components/Popover/index.js +1 -1
  55. package/es/components/ProgressIndicator/ProgressIndicator.js +3 -3
  56. package/es/components/RadioButton/RadioButton.Skeleton.js +1 -1
  57. package/es/components/Search/index.js +1 -1
  58. package/es/components/Select/index.js +1 -1
  59. package/es/components/ShapeIndicator/index.js +1 -1
  60. package/es/components/Slider/Slider.d.ts +1 -1
  61. package/es/components/Slider/Slider.js +230 -255
  62. package/es/components/Slider/SliderHandles.js +65 -53
  63. package/es/components/Switch/IconSwitch.js +1 -1
  64. package/es/components/Tabs/Tabs.js +2 -6
  65. package/es/components/Tag/Tag.Skeleton.js +1 -1
  66. package/es/components/TextArea/TextArea.js +1 -1
  67. package/es/components/TextArea/index.js +1 -1
  68. package/es/components/TextInput/index.js +1 -1
  69. package/es/components/Tile/Tile.js +1 -1
  70. package/es/components/TileGroup/TileGroup.d.ts +1 -1
  71. package/es/components/TileGroup/TileGroup.js +2 -1
  72. package/es/components/Toggle/Toggle.Skeleton.js +1 -1
  73. package/es/components/Toggletip/index.js +1 -1
  74. package/es/components/UIShell/HeaderMenu.js +1 -1
  75. package/es/components/UIShell/HeaderPanel.js +3 -2
  76. package/es/components/UIShell/SideNav.d.ts +1 -4
  77. package/es/components/UIShell/SideNav.js +10 -25
  78. package/es/components/UIShell/SideNavContext.d.ts +17 -0
  79. package/es/components/UIShell/SideNavContext.js +24 -0
  80. package/es/components/UIShell/SideNavItems.d.ts +1 -1
  81. package/es/components/UIShell/SideNavItems.js +12 -16
  82. package/es/components/UIShell/SideNavLink.js +8 -4
  83. package/es/components/UIShell/SideNavMenu.js +7 -5
  84. package/es/components/UIShell/Switcher.js +5 -4
  85. package/es/index.js +30 -30
  86. package/es/internal/useNoInteractiveChildren.js +25 -30
  87. package/es/internal/useOverflowItems.d.ts +1 -5
  88. package/es/internal/useOverflowItems.js +6 -27
  89. package/es/internal/usePresence.d.ts +1 -1
  90. package/es/internal/usePresence.js +14 -17
  91. package/lib/components/Button/Button.Skeleton.js +2 -1
  92. package/lib/components/Button/Button.d.ts +4 -4
  93. package/lib/components/Button/Button.js +4 -4
  94. package/lib/components/Button/index.js +1 -1
  95. package/lib/components/ButtonSet/ButtonSet.js +1 -1
  96. package/lib/components/Checkbox/index.js +1 -1
  97. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  98. package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
  99. package/lib/components/ComboBox/ComboBox.js +3 -4
  100. package/lib/components/ComposedModal/ComposedModal.js +0 -3
  101. package/lib/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
  102. package/lib/components/ComposedModal/ComposedModalPresence.js +14 -0
  103. package/lib/components/ComposedModal/index.d.ts +1 -1
  104. package/lib/components/ContainedList/index.js +0 -3
  105. package/lib/components/ContentSwitcher/ContentSwitcher.js +2 -1
  106. package/lib/components/DataTable/TableExpandRow.js +1 -1
  107. package/lib/components/DataTable/TableToolbarMenu.js +1 -1
  108. package/lib/components/DataTable/tools/normalize.js +2 -1
  109. package/lib/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
  110. package/lib/components/DatePicker/DatePicker.Skeleton.js +2 -2
  111. package/lib/components/DatePicker/DatePicker.js +3 -2
  112. package/lib/components/DatePicker/index.js +1 -1
  113. package/lib/components/Dropdown/Dropdown.js +1 -3
  114. package/lib/components/Dropdown/index.js +1 -1
  115. package/lib/components/FeatureFlags/index.d.ts +8 -18
  116. package/lib/components/FeatureFlags/index.js +21 -102
  117. package/lib/components/FileUploader/FileUploader.Skeleton.js +1 -1
  118. package/lib/components/FileUploader/FileUploaderButton.d.ts +1 -1
  119. package/lib/components/FileUploader/FileUploaderButton.js +2 -6
  120. package/lib/components/Icon/Icon.Skeleton.js +0 -3
  121. package/lib/components/IconIndicator/index.js +0 -3
  122. package/lib/components/Modal/ModalPresence.d.ts +9 -1
  123. package/lib/components/Modal/ModalPresence.js +14 -0
  124. package/lib/components/Modal/index.d.ts +2 -2
  125. package/lib/components/MultiSelect/MultiSelect.js +8 -9
  126. package/lib/components/NumberInput/NumberInput.js +14 -12
  127. package/lib/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  128. package/lib/components/OverflowMenu/OverflowMenu.js +2 -7
  129. package/lib/components/OverflowMenuV2/index.js +1 -1
  130. package/lib/components/PageHeader/PageHeader.js +2 -23
  131. package/lib/components/Pagination/Pagination.Skeleton.js +0 -3
  132. package/lib/components/Pagination/Pagination.d.ts +4 -0
  133. package/lib/components/Pagination/Pagination.js +6 -1
  134. package/lib/components/Pagination/experimental/Pagination.js +12 -1
  135. package/lib/components/ProgressIndicator/ProgressIndicator.js +3 -3
  136. package/lib/components/RadioButton/RadioButton.Skeleton.js +0 -3
  137. package/lib/components/Search/index.js +1 -1
  138. package/lib/components/Select/index.js +1 -1
  139. package/lib/components/ShapeIndicator/index.js +0 -3
  140. package/lib/components/Slider/Slider.d.ts +1 -1
  141. package/lib/components/Slider/Slider.js +229 -254
  142. package/lib/components/Slider/SliderHandles.js +64 -52
  143. package/lib/components/Tabs/Tabs.js +1 -5
  144. package/lib/components/Tag/Tag.Skeleton.js +0 -3
  145. package/lib/components/TextArea/index.js +1 -1
  146. package/lib/components/TextInput/index.js +1 -1
  147. package/lib/components/TileGroup/TileGroup.d.ts +1 -1
  148. package/lib/components/TileGroup/TileGroup.js +2 -1
  149. package/lib/components/Toggle/Toggle.Skeleton.js +0 -3
  150. package/lib/components/Toggletip/index.js +0 -3
  151. package/lib/components/UIShell/HeaderPanel.js +2 -1
  152. package/lib/components/UIShell/SideNav.d.ts +1 -4
  153. package/lib/components/UIShell/SideNav.js +8 -24
  154. package/lib/components/UIShell/SideNavContext.d.ts +17 -0
  155. package/lib/components/UIShell/SideNavContext.js +27 -0
  156. package/lib/components/UIShell/SideNavItems.d.ts +1 -1
  157. package/lib/components/UIShell/SideNavItems.js +11 -15
  158. package/lib/components/UIShell/SideNavLink.js +7 -3
  159. package/lib/components/UIShell/SideNavMenu.js +8 -6
  160. package/lib/components/UIShell/Switcher.js +4 -3
  161. package/lib/index.js +102 -100
  162. package/lib/internal/useNoInteractiveChildren.js +25 -30
  163. package/lib/internal/useOverflowItems.d.ts +1 -5
  164. package/lib/internal/useOverflowItems.js +6 -27
  165. package/lib/internal/usePresence.d.ts +1 -1
  166. package/lib/internal/usePresence.js +13 -16
  167. package/package.json +8 -8
  168. package/telemetry.yml +2 -1
  169. package/es/components/UIShell/_utils.d.ts +0 -7
  170. package/es/components/UIShell/_utils.js +0 -10
  171. package/lib/components/UIShell/_utils.d.ts +0 -7
  172. package/lib/components/UIShell/_utils.js +0 -12
@@ -25,6 +25,7 @@ var Tooltip = require('../Tooltip/Tooltip.js');
25
25
  var SliderHandles = require('./SliderHandles.js');
26
26
  var clamp = require('../../internal/clamp.js');
27
27
  var useNormalizedInputProps = require('../../internal/useNormalizedInputProps.js');
28
+ var useId = require('../../internal/useId.js');
28
29
  var throttle = require('../../node_modules/es-toolkit/dist/compat/function/throttle.js');
29
30
 
30
31
  const ThumbWrapper = ({
@@ -62,6 +63,7 @@ const defaultTranslateWithId = (messageId, args) => {
62
63
  const defaultFormatLabel = (value, label) => {
63
64
  return `${value}${label ?? ''}`;
64
65
  };
66
+ const hasUpperValue = valueUpper => typeof valueUpper !== 'undefined';
65
67
 
66
68
  // TODO: Assuming a 16ms throttle corresponds to 60 FPS, should it be halved,
67
69
  // since many systems can handle 120 FPS? If it doesn't correspond to 60 FPS,
@@ -78,7 +80,6 @@ var HandlePosition = /*#__PURE__*/function (HandlePosition) {
78
80
  return HandlePosition;
79
81
  }(HandlePosition || {}); // TODO: Delete this type and directory type the properties in the function.
80
82
  const Slider = props => {
81
- var _Fragment, _Fragment2, _Fragment3, _Fragment4;
82
83
  // TODO: Move destructured `props` from the IIFE to here.
83
84
 
84
85
  const initialState = {
@@ -115,14 +116,9 @@ const Slider = props => {
115
116
  const filledTrackRef = React.useRef(null);
116
117
  const elementRef = React.useRef(null);
117
118
  const trackRef = React.useRef(null);
118
- const inputIdRef = React.useRef('');
119
-
120
- // TODO: Delete this function and set its return value as the value of
121
- // `twoHandles`.
122
- const hasTwoHandles = () => {
123
- return typeof state.valueUpper !== 'undefined';
124
- };
125
- const twoHandles = hasTwoHandles();
119
+ const generatedId = useId.useId();
120
+ const prefix = usePrefix.usePrefix();
121
+ const twoHandles = hasUpperValue(state.valueUpper);
126
122
 
127
123
  /**
128
124
  * Sets up initial slider position and value in response to component mount.
@@ -130,7 +126,7 @@ const Slider = props => {
130
126
  React.useEffect(() => {
131
127
  if (elementRef.current) {
132
128
  const isRtl = document?.dir === 'rtl';
133
- if (hasTwoHandles()) {
129
+ if (twoHandles) {
134
130
  const {
135
131
  value,
136
132
  left
@@ -182,7 +178,7 @@ const Slider = props => {
182
178
 
183
179
  // Fire onChange event handler if present, if there's a usable value, and
184
180
  // if the value is different from the last one
185
- if (hasTwoHandles()) {
181
+ if (twoHandles) {
186
182
  if (filledTrackRef.current) {
187
183
  filledTrackRef.current.style.transform = state.isRtl ? `translate(${100 - state.leftUpper}%, -50%) scaleX(${(state.leftUpper - state.left) / 100})` : `translate(${state.left}%, -50%) scaleX(${(state.leftUpper - state.left) / 100})`;
188
184
  }
@@ -275,8 +271,7 @@ const Slider = props => {
275
271
  * @returns The value rounded to the precision determined by the step.
276
272
  */
277
273
  const nearestStepValue = (value = 0) => {
278
- // TODO: Use a nullish coalescing operator.
279
- const decimals = (props.step?.toString().split('.')[1] || '').length;
274
+ const decimals = (props.step?.toString().split('.')[1] ?? '').length;
280
275
  return Number(value.toFixed(decimals));
281
276
  };
282
277
  const handleDrag = event => {
@@ -316,7 +311,7 @@ const Slider = props => {
316
311
  });
317
312
  const clientX = getClientXFromEvent(evt.nativeEvent);
318
313
  let activeHandle;
319
- if (hasTwoHandles()) {
314
+ if (twoHandles) {
320
315
  if (evt.target == thumbRef.current) {
321
316
  activeHandle = HandlePosition.LOWER;
322
317
  } else if (evt.target == thumbRefUpper.current) {
@@ -336,7 +331,7 @@ const Slider = props => {
336
331
  const focusOptions = {
337
332
  preventScroll: true
338
333
  };
339
- if (hasTwoHandles()) {
334
+ if (twoHandles) {
340
335
  if (thumbRef.current && activeHandle === HandlePosition.LOWER) {
341
336
  thumbRef.current.focus(focusOptions);
342
337
  } else if (thumbRefUpper.current && activeHandle === HandlePosition.UPPER) {
@@ -409,7 +404,7 @@ const Slider = props => {
409
404
  });
410
405
  // If we're set to two handles, negotiate which drag handle is closest to
411
406
  // the users' interaction.
412
- if (hasTwoHandles() && activeHandle) {
407
+ if (twoHandles && activeHandle) {
413
408
  setValueLeftForHandle(activeHandle, {
414
409
  value: nearestStepValue(value),
415
410
  left
@@ -467,7 +462,7 @@ const Slider = props => {
467
462
  if (evt.shiftKey) {
468
463
  delta *= stepMultiplier;
469
464
  }
470
- if (hasTwoHandles() && state.activeHandle) {
465
+ if (twoHandles && state.activeHandle) {
471
466
  const currentValue = state.activeHandle === HandlePosition.LOWER ? state.value : state.valueUpper;
472
467
  const {
473
468
  value,
@@ -521,7 +516,7 @@ const Slider = props => {
521
516
  // Avoid calling calcValue for invalid numbers, but still update the state.
522
517
  const activeHandle = evt.target.dataset.handlePosition ?? HandlePosition.LOWER;
523
518
  const targetValue = Number.parseFloat(evt.target.value);
524
- if (hasTwoHandles()) {
519
+ if (twoHandles) {
525
520
  if (isNaN(targetValue)) {
526
521
  setValueForHandle(activeHandle, evt.target.value);
527
522
  } else if (isValidValueForPosition({
@@ -937,13 +932,7 @@ const Slider = props => {
937
932
  unstable_ariaLabelInputUpper: ariaLabelInputUpper,
938
933
  className,
939
934
  hideTextInput = false,
940
- id = inputIdRef.current = inputIdRef.current ||
941
- // TODO:
942
- // 1. Why isn't `inputId` just set to this value instead of an empty
943
- // string?
944
- // 2. Why this value instead of something else, like
945
- // `crypto.randomUUID()` or `useId()`?
946
- `__carbon-slider_${Math.random().toString(36).substr(2)}`,
935
+ id: idProp,
947
936
  min,
948
937
  minLabel,
949
938
  max,
@@ -952,9 +941,6 @@ const Slider = props => {
952
941
  labelText,
953
942
  hideLabel,
954
943
  step = 1,
955
- // TODO: Other properties are deleted below. Why isn't this one?
956
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
957
- stepMultiplier: _stepMultiplier,
958
944
  inputType = 'number',
959
945
  invalidText,
960
946
  required,
@@ -968,6 +954,7 @@ const Slider = props => {
968
954
  translateWithId: t = defaultTranslateWithId,
969
955
  ...other
970
956
  } = props;
957
+ const id = idProp ?? generatedId;
971
958
  const {
972
959
  value,
973
960
  valueUpper,
@@ -991,232 +978,220 @@ const Slider = props => {
991
978
  invalid: !isValidUpper,
992
979
  warn
993
980
  });
994
-
995
- // TODO: Delete this IIFE. It was added to maintain whitespace and to make it clear
996
- // what exactly has changed.
997
- return (() => {
998
- delete other.onRelease;
999
- delete other.invalid;
1000
- delete other.unstable_valueUpper;
1001
- const showWarning = normalizedProps.warn ||
1002
- // TODO: https://github.com/carbon-design-system/carbon/issues/18991#issuecomment-2795709637
1003
- // eslint-disable-next-line valid-typeof , no-constant-binary-expression -- https://github.com/carbon-design-system/carbon/issues/20452
1004
- typeof correctedValue !== null && correctedPosition === HandlePosition.LOWER && isValid;
1005
- const showWarningUpper = normalizedUpperProps.warn ||
1006
- // TODO: https://github.com/carbon-design-system/carbon/issues/18991#issuecomment-2795709637
1007
- // eslint-disable-next-line valid-typeof, no-constant-binary-expression -- https://github.com/carbon-design-system/carbon/issues/20452
1008
- typeof correctedValue !== null && correctedPosition === (twoHandles ? HandlePosition.UPPER : HandlePosition.LOWER) && (twoHandles ? isValidUpper : isValid);
1009
- return /*#__PURE__*/React.createElement(usePrefix.PrefixContext.Consumer, null, prefix => {
1010
- const labelId = `${id}-label`;
1011
- const labelClasses = cx(`${prefix}--label`, {
1012
- [`${prefix}--visually-hidden`]: hideLabel,
1013
- [`${prefix}--label--disabled`]: disabled
1014
- });
1015
- const containerClasses = cx(`${prefix}--slider-container`, {
1016
- [`${prefix}--slider-container--two-handles`]: twoHandles,
1017
- [`${prefix}--slider-container--disabled`]: disabled,
1018
- [`${prefix}--slider-container--readonly`]: readOnly,
1019
- [`${prefix}--slider-container--rtl`]: isRtl
1020
- });
1021
- const sliderClasses = cx(`${prefix}--slider`, {
1022
- [`${prefix}--slider--disabled`]: disabled,
1023
- [`${prefix}--slider--readonly`]: readOnly
1024
- });
1025
- const fixedInputClasses = [`${prefix}--text-input`, `${prefix}--slider-text-input`];
1026
- const conditionalInputClasses = {
1027
- [`${prefix}--text-input--light`]: light
1028
- };
1029
- const lowerInputClasses = cx([...fixedInputClasses, `${prefix}--slider-text-input--lower`, conditionalInputClasses, {
1030
- [`${prefix}--text-input--invalid`]: normalizedProps.invalid,
1031
- [`${prefix}--slider-text-input--warn`]: showWarning
1032
- }]);
1033
- const upperInputClasses = cx([...fixedInputClasses, `${prefix}--slider-text-input--upper`, conditionalInputClasses, {
1034
- [`${prefix}--text-input--invalid`]: twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid,
1035
- [`${prefix}--slider-text-input--warn`]: showWarningUpper
1036
- }]);
1037
- const lowerInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--lower`, {
1038
- [`${prefix}--text-input-wrapper--readonly`]: readOnly,
1039
- [`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
1040
- }]);
1041
- const upperInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--upper`, {
1042
- [`${prefix}--text-input-wrapper--readonly`]: readOnly,
1043
- [`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
1044
- }]);
1045
- const lowerThumbClasses = cx(`${prefix}--slider__thumb`, {
1046
- [`${prefix}--slider__thumb--lower`]: twoHandles
1047
- });
1048
- const upperThumbClasses = cx(`${prefix}--slider__thumb`, {
1049
- [`${prefix}--slider__thumb--upper`]: twoHandles
1050
- });
1051
- const lowerThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
1052
- [`${prefix}--slider__thumb-wrapper--lower`]: twoHandles
1053
- }]);
1054
- const upperThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
1055
- [`${prefix}--slider__thumb-wrapper--upper`]: twoHandles
1056
- }]);
1057
- const lowerThumbWrapperProps = {
1058
- style: {
1059
- insetInlineStart: `${state.left}%`
1060
- }
1061
- };
1062
- const upperThumbWrapperProps = {
1063
- style: {
1064
- insetInlineStart: `${state.leftUpper}%`
1065
- }
1066
- };
1067
- return /*#__PURE__*/React.createElement("div", {
1068
- className: cx(`${prefix}--form-item`, className)
1069
- }, /*#__PURE__*/React.createElement(Text.Text, {
1070
- as: "label",
1071
- htmlFor: twoHandles ? undefined : id,
1072
- className: labelClasses,
1073
- id: labelId
1074
- }, labelText), /*#__PURE__*/React.createElement("div", {
1075
- className: containerClasses
1076
- }, twoHandles ? /*#__PURE__*/React.createElement("div", {
1077
- className: lowerInputWrapperClasses
1078
- }, /*#__PURE__*/React.createElement("input", {
1079
- type: hideTextInput ? 'hidden' : inputType,
1080
- id: `${id}-lower-input-for-slider`,
1081
- name: name,
1082
- className: lowerInputClasses,
1083
- value: value,
1084
- "aria-label": ariaLabelInput,
1085
- disabled: disabled,
1086
- required: required,
1087
- min: min,
1088
- max: max,
1089
- step: step,
1090
- onChange: onChangeInput,
1091
- onBlur: onBlurInput,
1092
- onKeyUp: props.onInputKeyUp,
1093
- onKeyDown: onInputKeyDown,
1094
- "data-invalid": normalizedProps.invalid ? true : null,
1095
- "data-handle-position": HandlePosition.LOWER,
1096
- "aria-invalid": normalizedProps.invalid ? true : undefined,
1097
- readOnly: readOnly
1098
- }), normalizedProps.invalid && /*#__PURE__*/React.createElement(iconsReact.WarningFilled, {
1099
- className: `${prefix}--slider__invalid-icon`
1100
- }), showWarning && /*#__PURE__*/React.createElement(iconsReact.WarningAltFilled, {
1101
- className: `${prefix}--slider__invalid-icon ${prefix}--slider__invalid-icon--warning`
1102
- })) : null, /*#__PURE__*/React.createElement(Text.Text, {
1103
- className: `${prefix}--slider__range-label`
1104
- }, formatLabel(min, minLabel)), /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
1105
- className: sliderClasses,
1106
- ref: node => {
1107
- elementRef.current = node;
1108
- },
1109
- onMouseDown: onDragStart,
1110
- onTouchStart: onDragStart,
1111
- onKeyDown: onKeyDown,
1112
- role: "presentation",
1113
- tabIndex: -1,
1114
- "data-invalid": (twoHandles ? normalizedProps.invalid || normalizedUpperProps.invalid : normalizedProps.invalid) ? true : null
1115
- }, other), /*#__PURE__*/React.createElement(ThumbWrapper, _rollupPluginBabelHelpers.extends({
1116
- hasTooltip: hideTextInput,
1117
- className: lowerThumbWrapperClasses,
1118
- label: formatLabel(value, undefined),
1119
- align: "top"
1120
- }, lowerThumbWrapperProps), /*#__PURE__*/React.createElement("div", {
1121
- className: lowerThumbClasses,
1122
- role: "slider",
1123
- id: twoHandles ? undefined : id,
1124
- tabIndex: readOnly || disabled ? undefined : 0,
1125
- "aria-valuetext": formatLabel(value, undefined),
1126
- "aria-valuemax": twoHandles ? valueUpper : max,
1127
- "aria-valuemin": min,
1128
- "aria-valuenow": value,
1129
- "aria-labelledby": twoHandles ? undefined : labelId,
1130
- "aria-label": twoHandles ? ariaLabelInput : undefined,
1131
- ref: thumbRef,
1132
- onFocus: () => setState({
1133
- activeHandle: HandlePosition.LOWER
1134
- })
1135
- }, twoHandles && !isRtl ? _Fragment || (_Fragment = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.LowerHandle, {
1136
- "aria-label": ariaLabelInput
1137
- }), /*#__PURE__*/React.createElement(SliderHandles.LowerHandleFocus, {
1138
- "aria-label": ariaLabelInput
1139
- }))) : twoHandles && isRtl ? _Fragment2 || (_Fragment2 = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.UpperHandle, {
1140
- "aria-label": ariaLabelInputUpper
1141
- }), /*#__PURE__*/React.createElement(SliderHandles.UpperHandleFocus, {
1142
- "aria-label": ariaLabelInputUpper
1143
- }))) : undefined)), twoHandles ? /*#__PURE__*/React.createElement(ThumbWrapper, _rollupPluginBabelHelpers.extends({
1144
- hasTooltip: hideTextInput,
1145
- className: upperThumbWrapperClasses,
1146
- label: formatLabel(valueUpper ?? 0, undefined),
1147
- align: "top"
1148
- }, upperThumbWrapperProps), /*#__PURE__*/React.createElement("div", {
1149
- className: upperThumbClasses,
1150
- role: "slider",
1151
- tabIndex: readOnly || disabled ? undefined : 0,
1152
- "aria-valuemax": max,
1153
- "aria-valuemin": value,
1154
- "aria-valuenow": valueUpper,
1155
- "aria-label": ariaLabelInputUpper,
1156
- ref: thumbRefUpper,
1157
- onFocus: () => setState({
1158
- activeHandle: HandlePosition.UPPER
1159
- })
1160
- }, twoHandles && !isRtl ? _Fragment3 || (_Fragment3 = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.UpperHandle, {
1161
- "aria-label": ariaLabelInputUpper
1162
- }), /*#__PURE__*/React.createElement(SliderHandles.UpperHandleFocus, {
1163
- "aria-label": ariaLabelInputUpper
1164
- }))) : twoHandles && isRtl ? _Fragment4 || (_Fragment4 = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.LowerHandle, {
1165
- "aria-label": ariaLabelInput
1166
- }), /*#__PURE__*/React.createElement(SliderHandles.LowerHandleFocus, {
1167
- "aria-label": ariaLabelInput
1168
- }))) : undefined)) : null, /*#__PURE__*/React.createElement("div", {
1169
- className: `${prefix}--slider__track`,
1170
- ref: node => {
1171
- trackRef.current = node;
1172
- }
1173
- }), /*#__PURE__*/React.createElement("div", {
1174
- className: `${prefix}--slider__filled-track`,
1175
- ref: filledTrackRef
1176
- })), /*#__PURE__*/React.createElement(Text.Text, {
1177
- className: `${prefix}--slider__range-label`
1178
- }, formatLabel(max, maxLabel)), /*#__PURE__*/React.createElement("div", {
1179
- className: upperInputWrapperClasses
1180
- }, /*#__PURE__*/React.createElement("input", {
1181
- type: hideTextInput ? 'hidden' : inputType,
1182
- id: `${id}-${twoHandles ? 'upper-' : ''}input-for-slider`,
1183
- name: twoHandles ? nameUpper : name,
1184
- className: upperInputClasses,
1185
- value: twoHandles ? valueUpper : value,
1186
- "aria-labelledby": !ariaLabelInput && !twoHandles ? labelId : undefined,
1187
- "aria-label": twoHandles ? ariaLabelInputUpper : ariaLabelInput ? ariaLabelInput : undefined,
1188
- disabled: disabled,
1189
- required: required,
1190
- min: min,
1191
- max: max,
1192
- step: step,
1193
- onChange: onChangeInput,
1194
- onBlur: onBlurInput,
1195
- onKeyDown: onInputKeyDown,
1196
- onKeyUp: props.onInputKeyUp,
1197
- "data-invalid": (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) ? true : null,
1198
- "data-handle-position": twoHandles ? HandlePosition.UPPER : null,
1199
- "aria-invalid": (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) ? true : undefined,
1200
- readOnly: readOnly
1201
- }), (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) && /*#__PURE__*/React.createElement(iconsReact.WarningFilled, {
1202
- className: `${prefix}--slider__invalid-icon`
1203
- }), showWarningUpper && /*#__PURE__*/React.createElement(iconsReact.WarningAltFilled, {
1204
- className: `${prefix}--slider__invalid-icon ${prefix}--slider__invalid-icon--warning`
1205
- }))), (normalizedProps.invalid || normalizedUpperProps.invalid) && /*#__PURE__*/React.createElement(Text.Text, {
1206
- as: "div",
1207
- className: cx(`${prefix}--slider__validation-msg`, `${prefix}--slider__validation-msg--invalid`, `${prefix}--form-requirement`)
1208
- }, invalidText), (normalizedProps.warn || normalizedUpperProps.warn) && /*#__PURE__*/React.createElement(Text.Text, {
1209
- as: "div",
1210
- className: cx(`${prefix}--slider__validation-msg`, `${prefix}--form-requirement`)
1211
- }, warnText), correctedValue && /*#__PURE__*/React.createElement(Text.Text, {
1212
- as: "div",
1213
- role: "alert",
1214
- className: cx(`${prefix}--slider__status-msg`, `${prefix}--form-requirement`)
1215
- }, t(translationIds['carbon.slider.auto-correct-announcement'], {
1216
- correctedValue
1217
- })));
1218
- });
1219
- })();
981
+ delete other.invalid;
982
+ delete other.onRelease;
983
+ delete other.stepMultiplier;
984
+ delete other.unstable_valueUpper;
985
+ const showWarning = normalizedProps.warn || correctedPosition === HandlePosition.LOWER && isValid;
986
+ const showWarningUpper = normalizedUpperProps.warn || correctedPosition === (twoHandles ? HandlePosition.UPPER : HandlePosition.LOWER) && (twoHandles ? isValidUpper : isValid);
987
+ const labelId = `${id}-label`;
988
+ const labelClasses = cx(`${prefix}--label`, {
989
+ [`${prefix}--visually-hidden`]: hideLabel,
990
+ [`${prefix}--label--disabled`]: disabled
991
+ });
992
+ const containerClasses = cx(`${prefix}--slider-container`, {
993
+ [`${prefix}--slider-container--two-handles`]: twoHandles,
994
+ [`${prefix}--slider-container--disabled`]: disabled,
995
+ [`${prefix}--slider-container--readonly`]: readOnly,
996
+ [`${prefix}--slider-container--rtl`]: isRtl
997
+ });
998
+ const sliderClasses = cx(`${prefix}--slider`, {
999
+ [`${prefix}--slider--disabled`]: disabled,
1000
+ [`${prefix}--slider--readonly`]: readOnly
1001
+ });
1002
+ const fixedInputClasses = [`${prefix}--text-input`, `${prefix}--slider-text-input`];
1003
+ const conditionalInputClasses = {
1004
+ [`${prefix}--text-input--light`]: light
1005
+ };
1006
+ const lowerInputClasses = cx([...fixedInputClasses, `${prefix}--slider-text-input--lower`, conditionalInputClasses, {
1007
+ [`${prefix}--text-input--invalid`]: normalizedProps.invalid,
1008
+ [`${prefix}--slider-text-input--warn`]: showWarning
1009
+ }]);
1010
+ const upperInputClasses = cx([...fixedInputClasses, `${prefix}--slider-text-input--upper`, conditionalInputClasses, {
1011
+ [`${prefix}--text-input--invalid`]: twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid,
1012
+ [`${prefix}--slider-text-input--warn`]: showWarningUpper
1013
+ }]);
1014
+ const lowerInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--lower`, {
1015
+ [`${prefix}--text-input-wrapper--readonly`]: readOnly,
1016
+ [`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
1017
+ }]);
1018
+ const upperInputWrapperClasses = cx([`${prefix}--text-input-wrapper`, `${prefix}--slider-text-input-wrapper`, `${prefix}--slider-text-input-wrapper--upper`, {
1019
+ [`${prefix}--text-input-wrapper--readonly`]: readOnly,
1020
+ [`${prefix}--slider-text-input-wrapper--hidden`]: hideTextInput
1021
+ }]);
1022
+ const lowerThumbClasses = cx(`${prefix}--slider__thumb`, {
1023
+ [`${prefix}--slider__thumb--lower`]: twoHandles
1024
+ });
1025
+ const upperThumbClasses = cx(`${prefix}--slider__thumb`, {
1026
+ [`${prefix}--slider__thumb--upper`]: twoHandles
1027
+ });
1028
+ const lowerThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
1029
+ [`${prefix}--slider__thumb-wrapper--lower`]: twoHandles
1030
+ }]);
1031
+ const upperThumbWrapperClasses = cx([`${prefix}--icon-tooltip`, `${prefix}--slider__thumb-wrapper`, {
1032
+ [`${prefix}--slider__thumb-wrapper--upper`]: twoHandles
1033
+ }]);
1034
+ const lowerThumbWrapperProps = {
1035
+ style: {
1036
+ insetInlineStart: `${state.left}%`
1037
+ }
1038
+ };
1039
+ const upperThumbWrapperProps = {
1040
+ style: {
1041
+ insetInlineStart: `${state.leftUpper}%`
1042
+ }
1043
+ };
1044
+ return /*#__PURE__*/React.createElement("div", {
1045
+ className: cx(`${prefix}--form-item`, className)
1046
+ }, /*#__PURE__*/React.createElement(Text.Text, {
1047
+ as: "label",
1048
+ htmlFor: twoHandles ? undefined : id,
1049
+ className: labelClasses,
1050
+ id: labelId
1051
+ }, labelText), /*#__PURE__*/React.createElement("div", {
1052
+ className: containerClasses
1053
+ }, twoHandles ? /*#__PURE__*/React.createElement("div", {
1054
+ className: lowerInputWrapperClasses
1055
+ }, /*#__PURE__*/React.createElement("input", {
1056
+ type: hideTextInput ? 'hidden' : inputType,
1057
+ id: `${id}-lower-input-for-slider`,
1058
+ name: name,
1059
+ className: lowerInputClasses,
1060
+ value: value,
1061
+ "aria-label": ariaLabelInput,
1062
+ disabled: disabled,
1063
+ required: required,
1064
+ min: min,
1065
+ max: max,
1066
+ step: step,
1067
+ onChange: onChangeInput,
1068
+ onBlur: onBlurInput,
1069
+ onKeyUp: props.onInputKeyUp,
1070
+ onKeyDown: onInputKeyDown,
1071
+ "data-invalid": normalizedProps.invalid ? true : null,
1072
+ "data-handle-position": HandlePosition.LOWER,
1073
+ "aria-invalid": normalizedProps.invalid ? true : undefined,
1074
+ readOnly: readOnly
1075
+ }), normalizedProps.invalid && /*#__PURE__*/React.createElement(iconsReact.WarningFilled, {
1076
+ className: `${prefix}--slider__invalid-icon`
1077
+ }), showWarning && /*#__PURE__*/React.createElement(iconsReact.WarningAltFilled, {
1078
+ className: `${prefix}--slider__invalid-icon ${prefix}--slider__invalid-icon--warning`
1079
+ })) : null, /*#__PURE__*/React.createElement(Text.Text, {
1080
+ className: `${prefix}--slider__range-label`
1081
+ }, formatLabel(min, minLabel)), /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
1082
+ className: sliderClasses,
1083
+ ref: node => {
1084
+ elementRef.current = node;
1085
+ },
1086
+ onMouseDown: onDragStart,
1087
+ onTouchStart: onDragStart,
1088
+ onKeyDown: onKeyDown,
1089
+ role: "presentation",
1090
+ tabIndex: -1,
1091
+ "data-invalid": (twoHandles ? normalizedProps.invalid || normalizedUpperProps.invalid : normalizedProps.invalid) ? true : null
1092
+ }, other), /*#__PURE__*/React.createElement(ThumbWrapper, _rollupPluginBabelHelpers.extends({
1093
+ hasTooltip: hideTextInput,
1094
+ className: lowerThumbWrapperClasses,
1095
+ label: formatLabel(value, undefined),
1096
+ align: "top"
1097
+ }, lowerThumbWrapperProps), /*#__PURE__*/React.createElement("div", {
1098
+ className: lowerThumbClasses,
1099
+ role: "slider",
1100
+ id: twoHandles ? undefined : id,
1101
+ tabIndex: readOnly || disabled ? undefined : 0,
1102
+ "aria-valuetext": formatLabel(value, undefined),
1103
+ "aria-valuemax": twoHandles ? valueUpper : max,
1104
+ "aria-valuemin": min,
1105
+ "aria-valuenow": value,
1106
+ "aria-labelledby": twoHandles ? undefined : labelId,
1107
+ "aria-label": twoHandles ? ariaLabelInput : undefined,
1108
+ ref: thumbRef,
1109
+ onFocus: () => setState({
1110
+ activeHandle: HandlePosition.LOWER
1111
+ })
1112
+ }, twoHandles && !isRtl ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.LowerHandle, {
1113
+ "aria-label": ariaLabelInput
1114
+ }), /*#__PURE__*/React.createElement(SliderHandles.LowerHandleFocus, {
1115
+ "aria-label": ariaLabelInput
1116
+ })) : twoHandles && isRtl ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.UpperHandle, {
1117
+ "aria-label": ariaLabelInputUpper
1118
+ }), /*#__PURE__*/React.createElement(SliderHandles.UpperHandleFocus, {
1119
+ "aria-label": ariaLabelInputUpper
1120
+ })) : undefined)), hasUpperValue(valueUpper) ? /*#__PURE__*/React.createElement(ThumbWrapper, _rollupPluginBabelHelpers.extends({
1121
+ hasTooltip: hideTextInput,
1122
+ className: upperThumbWrapperClasses,
1123
+ label: formatLabel(valueUpper, undefined),
1124
+ align: "top"
1125
+ }, upperThumbWrapperProps), /*#__PURE__*/React.createElement("div", {
1126
+ className: upperThumbClasses,
1127
+ role: "slider",
1128
+ tabIndex: readOnly || disabled ? undefined : 0,
1129
+ "aria-valuemax": max,
1130
+ "aria-valuemin": value,
1131
+ "aria-valuenow": valueUpper,
1132
+ "aria-label": ariaLabelInputUpper,
1133
+ ref: thumbRefUpper,
1134
+ onFocus: () => setState({
1135
+ activeHandle: HandlePosition.UPPER
1136
+ })
1137
+ }, !isRtl ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.UpperHandle, {
1138
+ "aria-label": ariaLabelInputUpper
1139
+ }), /*#__PURE__*/React.createElement(SliderHandles.UpperHandleFocus, {
1140
+ "aria-label": ariaLabelInputUpper
1141
+ })) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SliderHandles.LowerHandle, {
1142
+ "aria-label": ariaLabelInput
1143
+ }), /*#__PURE__*/React.createElement(SliderHandles.LowerHandleFocus, {
1144
+ "aria-label": ariaLabelInput
1145
+ })))) : null, /*#__PURE__*/React.createElement("div", {
1146
+ className: `${prefix}--slider__track`,
1147
+ ref: node => {
1148
+ trackRef.current = node;
1149
+ }
1150
+ }), /*#__PURE__*/React.createElement("div", {
1151
+ className: `${prefix}--slider__filled-track`,
1152
+ ref: filledTrackRef
1153
+ })), /*#__PURE__*/React.createElement(Text.Text, {
1154
+ className: `${prefix}--slider__range-label`
1155
+ }, formatLabel(max, maxLabel)), /*#__PURE__*/React.createElement("div", {
1156
+ className: upperInputWrapperClasses
1157
+ }, /*#__PURE__*/React.createElement("input", {
1158
+ type: hideTextInput ? 'hidden' : inputType,
1159
+ id: `${id}-${twoHandles ? 'upper-' : ''}input-for-slider`,
1160
+ name: twoHandles ? nameUpper : name,
1161
+ className: upperInputClasses,
1162
+ value: twoHandles ? valueUpper : value,
1163
+ "aria-labelledby": !ariaLabelInput && !twoHandles ? labelId : undefined,
1164
+ "aria-label": twoHandles ? ariaLabelInputUpper : ariaLabelInput ? ariaLabelInput : undefined,
1165
+ disabled: disabled,
1166
+ required: required,
1167
+ min: min,
1168
+ max: max,
1169
+ step: step,
1170
+ onChange: onChangeInput,
1171
+ onBlur: onBlurInput,
1172
+ onKeyDown: onInputKeyDown,
1173
+ onKeyUp: props.onInputKeyUp,
1174
+ "data-invalid": (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) ? true : null,
1175
+ "data-handle-position": twoHandles ? HandlePosition.UPPER : null,
1176
+ "aria-invalid": (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) ? true : undefined,
1177
+ readOnly: readOnly
1178
+ }), (twoHandles ? normalizedUpperProps.invalid : normalizedProps.invalid) && /*#__PURE__*/React.createElement(iconsReact.WarningFilled, {
1179
+ className: `${prefix}--slider__invalid-icon`
1180
+ }), showWarningUpper && /*#__PURE__*/React.createElement(iconsReact.WarningAltFilled, {
1181
+ className: `${prefix}--slider__invalid-icon ${prefix}--slider__invalid-icon--warning`
1182
+ }))), (normalizedProps.invalid || normalizedUpperProps.invalid) && /*#__PURE__*/React.createElement(Text.Text, {
1183
+ as: "div",
1184
+ className: cx(`${prefix}--slider__validation-msg`, `${prefix}--slider__validation-msg--invalid`, `${prefix}--form-requirement`)
1185
+ }, invalidText), (normalizedProps.warn || normalizedUpperProps.warn) && /*#__PURE__*/React.createElement(Text.Text, {
1186
+ as: "div",
1187
+ className: cx(`${prefix}--slider__validation-msg`, `${prefix}--form-requirement`)
1188
+ }, warnText), correctedValue && /*#__PURE__*/React.createElement(Text.Text, {
1189
+ as: "div",
1190
+ role: "alert",
1191
+ className: cx(`${prefix}--slider__status-msg`, `${prefix}--form-requirement`)
1192
+ }, t(translationIds['carbon.slider.auto-correct-announcement'], {
1193
+ correctedValue
1194
+ })));
1220
1195
  };
1221
1196
  Slider.propTypes = {
1222
1197
  /**