@carbon/ibm-products 2.25.0 → 2.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. package/css/index-full-carbon.css +556 -63
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +50 -16
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +556 -63
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +527 -55
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/BigNumbers/BigNumbers.d.ts +11 -0
  18. package/es/components/BigNumbers/BigNumbers.js +238 -0
  19. package/es/components/BigNumbers/constants.d.ts +13 -0
  20. package/es/components/BigNumbers/constants.js +67 -0
  21. package/es/components/BigNumbers/index.d.ts +1 -0
  22. package/es/components/Cascade/Cascade.d.ts +19 -2
  23. package/es/components/Cascade/Cascade.js +12 -9
  24. package/es/components/Coachmark/CoachmarkTagline.js +1 -2
  25. package/es/components/CoachmarkStack/CoachmarkStackHome.js +1 -1
  26. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  27. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  28. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  29. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.js +17 -0
  30. package/es/components/Datagrid/Datagrid/Datagrid.js +9 -2
  31. package/es/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  32. package/es/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  33. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +21 -8
  34. package/es/components/Datagrid/Datagrid/DatagridRow.js +15 -2
  35. package/es/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  36. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +21 -4
  37. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +32 -9
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  39. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -1
  40. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +35 -3
  41. package/es/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  42. package/es/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  43. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +3 -3
  44. package/es/components/Datagrid/useSelectAllToggle.js +5 -3
  45. package/es/components/Datagrid/useSortableColumns.js +2 -2
  46. package/es/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  47. package/es/components/FullPageError/FullPageError.js +41 -15
  48. package/es/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  49. package/es/components/FullPageError/assets/Error403SVG.js +714 -0
  50. package/es/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  51. package/es/components/FullPageError/assets/Error404SVG.js +623 -0
  52. package/es/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  53. package/es/components/InterstitialScreen/InterstitialScreen.js +1 -1
  54. package/es/components/SidePanel/SidePanel.js +13 -6
  55. package/es/components/SidePanel/motion/variants.d.ts +39 -12
  56. package/es/components/SidePanel/motion/variants.js +42 -11
  57. package/es/components/StringFormatter/StringFormatter.d.ts +6 -0
  58. package/es/components/StringFormatter/StringFormatter.js +79 -0
  59. package/es/components/StringFormatter/index.d.ts +1 -0
  60. package/es/components/StringFormatter/utils/enums.d.ts +14 -0
  61. package/es/components/StringFormatter/utils/enums.js +23 -0
  62. package/es/components/Tearsheet/TearsheetShell.js +26 -8
  63. package/es/components/UserAvatar/UserAvatar.js +59 -44
  64. package/es/components/index.d.ts +2 -0
  65. package/es/global/js/hooks/index.d.ts +2 -0
  66. package/es/global/js/hooks/useFocus.d.ts +11 -0
  67. package/es/global/js/hooks/useFocus.js +76 -0
  68. package/es/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  69. package/es/global/js/hooks/useIsomorphicEffect.js +14 -0
  70. package/es/global/js/package-settings.d.ts +2 -0
  71. package/es/global/js/package-settings.js +2 -0
  72. package/es/index.js +2 -0
  73. package/es/settings.d.ts +2 -0
  74. package/lib/components/BigNumbers/BigNumbers.d.ts +11 -0
  75. package/lib/components/BigNumbers/BigNumbers.js +244 -0
  76. package/lib/components/BigNumbers/constants.d.ts +13 -0
  77. package/lib/components/BigNumbers/constants.js +76 -0
  78. package/lib/components/BigNumbers/index.d.ts +1 -0
  79. package/lib/components/Cascade/Cascade.d.ts +19 -2
  80. package/lib/components/Cascade/Cascade.js +12 -9
  81. package/lib/components/Coachmark/CoachmarkTagline.js +3 -4
  82. package/lib/components/CoachmarkStack/CoachmarkStackHome.js +2 -2
  83. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  84. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  85. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  86. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.js +21 -0
  87. package/lib/components/Datagrid/Datagrid/Datagrid.js +9 -2
  88. package/lib/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  89. package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  90. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +20 -7
  91. package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -1
  92. package/lib/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  93. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +20 -3
  94. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +30 -7
  95. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  96. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -0
  97. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +33 -1
  98. package/lib/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  99. package/lib/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  100. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +3 -3
  101. package/lib/components/Datagrid/useSelectAllToggle.js +4 -2
  102. package/lib/components/Datagrid/useSortableColumns.js +2 -2
  103. package/lib/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  104. package/lib/components/FullPageError/FullPageError.js +41 -15
  105. package/lib/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  106. package/lib/components/FullPageError/assets/Error403SVG.js +722 -0
  107. package/lib/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  108. package/lib/components/FullPageError/assets/Error404SVG.js +631 -0
  109. package/lib/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  110. package/lib/components/InterstitialScreen/InterstitialScreen.js +3 -3
  111. package/lib/components/SidePanel/SidePanel.js +11 -4
  112. package/lib/components/SidePanel/motion/variants.d.ts +39 -12
  113. package/lib/components/SidePanel/motion/variants.js +42 -10
  114. package/lib/components/StringFormatter/StringFormatter.d.ts +6 -0
  115. package/lib/components/StringFormatter/StringFormatter.js +85 -0
  116. package/lib/components/StringFormatter/index.d.ts +1 -0
  117. package/lib/components/StringFormatter/utils/enums.d.ts +14 -0
  118. package/lib/components/StringFormatter/utils/enums.js +27 -0
  119. package/lib/components/Tearsheet/TearsheetShell.js +26 -8
  120. package/lib/components/UserAvatar/UserAvatar.js +59 -44
  121. package/lib/components/index.d.ts +2 -0
  122. package/lib/global/js/hooks/index.d.ts +2 -0
  123. package/lib/global/js/hooks/useFocus.d.ts +11 -0
  124. package/lib/global/js/hooks/useFocus.js +80 -0
  125. package/lib/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  126. package/lib/global/js/hooks/useIsomorphicEffect.js +18 -0
  127. package/lib/global/js/package-settings.d.ts +2 -0
  128. package/lib/global/js/package-settings.js +2 -0
  129. package/lib/index.js +10 -0
  130. package/lib/settings.d.ts +2 -0
  131. package/package.json +7 -7
  132. package/scss/components/BigNumbers/_big-numbers.scss +151 -0
  133. package/scss/components/BigNumbers/_carbon-imports.scss +11 -0
  134. package/scss/components/BigNumbers/_index-with-carbon.scss +9 -0
  135. package/scss/components/BigNumbers/_index.scss +8 -0
  136. package/scss/components/Datagrid/styles/_datagrid.scss +19 -0
  137. package/scss/components/FilterSummary/_filter-summary.scss +1 -1
  138. package/scss/components/FullPageError/_full-page-error.scss +20 -2
  139. package/scss/components/ProductiveCard/_productive-card.scss +1 -1
  140. package/scss/components/SidePanel/_side-panel.scss +1 -1
  141. package/scss/components/StringFormatter/_carbon-imports.scss +10 -0
  142. package/scss/components/StringFormatter/_index-with-carbon.scss +9 -0
  143. package/scss/components/StringFormatter/_index.scss +8 -0
  144. package/scss/components/StringFormatter/_string-formatter.scss +97 -0
  145. package/scss/components/Tearsheet/_tearsheet.scss +34 -2
  146. package/scss/components/UserAvatar/_user-avatar.scss +47 -4
  147. package/scss/components/_index-with-carbon.scss +2 -0
  148. package/scss/components/_index.scss +2 -0
  149. package/es/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  150. package/es/node_modules/@carbon/icon-helpers/es/index.js +0 -140
  151. package/es/node_modules/@carbon/icons-react/es/Icon.js +0 -73
  152. package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -2985
  153. package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -2900
  154. package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3004
  155. package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -14
  156. package/lib/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  157. package/lib/node_modules/@carbon/icon-helpers/es/index.js +0 -145
  158. package/lib/node_modules/@carbon/icons-react/es/Icon.js +0 -81
  159. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -3117
  160. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3032
  161. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3136
  162. package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -18
@@ -118,7 +118,7 @@ export namespace HTTPErrorContent {
118
118
  "aria-posinset"?: React.Validator<number | null | undefined> | undefined;
119
119
  "aria-pressed"?: React.Validator<boolean | "true" | "false" | "mixed" | null | undefined> | undefined;
120
120
  "aria-readonly"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
121
- "aria-relevant"?: React.Validator<"text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
121
+ "aria-relevant"?: React.Validator<"all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
122
122
  "aria-required"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
123
123
  "aria-roledescription"?: React.Validator<string | null | undefined> | undefined;
124
124
  "aria-rowcount"?: React.Validator<number | null | undefined> | undefined;
@@ -16,10 +16,10 @@ var index$1 = require('../../node_modules/classnames/index.js');
16
16
  var devtools = require('../../global/js/utils/devtools.js');
17
17
  var settings = require('../../settings.js');
18
18
  var lodash = require('lodash');
19
+ var icons = require('@carbon/react/icons');
19
20
  var react = require('@carbon/react');
20
21
  var Carousel = require('../Carousel/Carousel.js');
21
22
  var SteppedAnimatedMedia = require('../SteppedAnimatedMedia/SteppedAnimatedMedia.js');
22
- var bucket0 = require('../../node_modules/@carbon/icons-react/es/generated/bucket-0.js');
23
23
 
24
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
25
 
@@ -301,7 +301,7 @@ exports.InterstitialScreen = /*#__PURE__*/React__default["default"].forwardRef(f
301
301
  onClick: handleClickPrev
302
302
  }, previousButtonLabel), isMultiStep && progStep < progStepCeil && /*#__PURE__*/React__default["default"].createElement(react.Button, {
303
303
  className: "".concat(blockClass, "--next-btn"),
304
- renderIcon: bucket0.ArrowRight,
304
+ renderIcon: icons.ArrowRight,
305
305
  ref: nextButtonRef,
306
306
  size: "lg",
307
307
  title: nextButtonLabel,
@@ -309,7 +309,7 @@ exports.InterstitialScreen = /*#__PURE__*/React__default["default"].forwardRef(f
309
309
  }, nextButtonLabel), isMultiStep && progStep === progStepCeil && /*#__PURE__*/React__default["default"].createElement(react.Button, {
310
310
  className: "".concat(blockClass, "--start-btn"),
311
311
  ref: startButtonRef,
312
- renderIcon: bucket0.ArrowRight,
312
+ renderIcon: icons.ArrowRight,
313
313
  size: "lg",
314
314
  title: startButtonLabel,
315
315
  onClick: handleClose
@@ -25,8 +25,8 @@ var react = require('@carbon/react');
25
25
  var icons = require('@carbon/react/icons');
26
26
  var variants = require('./motion/variants.js');
27
27
  var pconsole = require('../../global/js/utils/pconsole.js');
28
- var usePreviousValue = require('../../global/js/hooks/usePreviousValue.js');
29
28
  var ActionSet = require('../ActionSet/ActionSet.js');
29
+ var usePreviousValue = require('../../global/js/hooks/usePreviousValue.js');
30
30
 
31
31
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
32
 
@@ -48,6 +48,7 @@ var defaults = {
48
48
  placement: 'right',
49
49
  size: 'md'
50
50
  };
51
+ var MotionActionSet = framerMotion.motion(ActionSet.ActionSet);
51
52
 
52
53
  /**
53
54
  * Side panels keep users in-context of a page while performing tasks like navigating, editing, viewing details, or configuring something new.
@@ -115,6 +116,7 @@ exports.SidePanel = /*#__PURE__*/React__default["default"].forwardRef(function (
115
116
  _useState6 = _rollupPluginBabelHelpers.slicedToArray(_useState5, 2),
116
117
  doAnimateTitle = _useState6[0],
117
118
  setDoAnimateTitle = _useState6[1];
119
+ var shouldReduceMotion = framerMotion.useReducedMotion();
118
120
  React.useEffect(function () {
119
121
  setDoAnimateTitle(animateTitle);
120
122
  }, [animateTitle]);
@@ -437,7 +439,10 @@ exports.SidePanel = /*#__PURE__*/React__default["default"].forwardRef(function (
437
439
  initial: "hidden",
438
440
  animate: "visible",
439
441
  exit: "exit",
440
- custom: placement
442
+ custom: {
443
+ placement: placement,
444
+ shouldReduceMotion: shouldReduceMotion
445
+ }
441
446
  }), /*#__PURE__*/React__default["default"].createElement("span", {
442
447
  ref: startTrapRef,
443
448
  tabIndex: "0",
@@ -446,10 +451,12 @@ exports.SidePanel = /*#__PURE__*/React__default["default"].forwardRef(function (
446
451
  }, "Focus sentinel"), doAnimateTitle ? /*#__PURE__*/React__default["default"].createElement("div", {
447
452
  ref: animatedScrollRef,
448
453
  className: "".concat(blockClass, "__animated-scroll-wrapper ").concat(blockClass, "--scrolls")
449
- }, renderHeader(), renderMain()) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderHeader(), renderMain()), /*#__PURE__*/React__default["default"].createElement(ActionSet.ActionSet, {
454
+ }, renderHeader(), renderMain()) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderHeader(), renderMain()), /*#__PURE__*/React__default["default"].createElement(MotionActionSet, {
450
455
  actions: actions,
451
456
  className: primaryActionContainerClassNames,
452
- size: size === 'xs' ? 'sm' : size
457
+ size: size === 'xs' ? 'sm' : size,
458
+ custom: shouldReduceMotion,
459
+ variants: variants.actionSetVariants
453
460
  }), /*#__PURE__*/React__default["default"].createElement("span", {
454
461
  ref: endTrapRef,
455
462
  tabIndex: "0",
@@ -16,27 +16,54 @@ export namespace overlayVariants {
16
16
  }
17
17
  }
18
18
  export namespace panelVariants {
19
- export namespace visible_1 {
20
- export let x: number;
21
- export namespace transition_1 {
22
- let duration_1: number;
23
- export { duration_1 as duration };
24
- let ease_1: number[];
25
- export { ease_1 as ease };
26
- }
27
- export { transition_1 as transition };
28
- }
19
+ export function visible_1({ shouldReduceMotion }: {
20
+ shouldReduceMotion: any;
21
+ }): {
22
+ x: number;
23
+ transition: {
24
+ duration: number;
25
+ ease: number[];
26
+ };
27
+ opacity: any;
28
+ };
29
29
  export { visible_1 as visible };
30
- export function hidden_1(placement: any): {
30
+ export function hidden_1({ placement, shouldReduceMotion }: {
31
+ placement: any;
32
+ shouldReduceMotion: any;
33
+ }): {
31
34
  x: string | number;
35
+ opacity: any;
32
36
  };
33
37
  export { hidden_1 as hidden };
34
- export function exit_1(placement: any): {
38
+ export function exit_1({ placement, shouldReduceMotion }: {
39
+ placement: any;
40
+ shouldReduceMotion: any;
41
+ }): {
35
42
  x: string | number;
36
43
  transition: {
37
44
  duration: number;
38
45
  ease: number[];
39
46
  };
47
+ opacity: any;
40
48
  };
41
49
  export { exit_1 as exit };
42
50
  }
51
+ export namespace actionSetVariants {
52
+ export function hidden_2(shouldReduceMotion: any): {
53
+ opacity: number;
54
+ transition: {
55
+ duration: number;
56
+ ease: number | number[];
57
+ };
58
+ };
59
+ export { hidden_2 as hidden };
60
+ export function visible_2(shouldReduceMotion: any): {
61
+ opacity: number;
62
+ transition: {
63
+ duration: number;
64
+ ease: number | number[];
65
+ delay: number;
66
+ };
67
+ };
68
+ export { visible_2 as visible };
69
+ }
@@ -27,28 +27,60 @@ var overlayVariants = {
27
27
  }
28
28
  };
29
29
  var panelVariants = {
30
- visible: {
31
- x: 0,
32
- transition: {
33
- duration: motionConstants.DURATIONS.moderate02,
34
- ease: motionConstants.EASINGS.productive.standard
35
- }
30
+ visible: function visible(_ref) {
31
+ var shouldReduceMotion = _ref.shouldReduceMotion;
32
+ return {
33
+ x: 0,
34
+ transition: {
35
+ duration: motionConstants.DURATIONS.moderate02,
36
+ ease: motionConstants.EASINGS.productive.standard
37
+ },
38
+ opacity: shouldReduceMotion && 1
39
+ };
36
40
  },
37
- hidden: function hidden(placement) {
41
+ hidden: function hidden(_ref2) {
42
+ var placement = _ref2.placement,
43
+ shouldReduceMotion = _ref2.shouldReduceMotion;
38
44
  return {
39
- x: placement === 'right' ? '100%' : -320
45
+ x: placement === 'right' ? shouldReduceMotion ? 0 : '100%' : shouldReduceMotion ? 0 : -320,
46
+ opacity: shouldReduceMotion && 0
40
47
  };
41
48
  },
42
- exit: function exit(placement) {
49
+ exit: function exit(_ref3) {
50
+ var placement = _ref3.placement,
51
+ shouldReduceMotion = _ref3.shouldReduceMotion;
43
52
  return {
44
- x: placement === 'right' ? '100%' : -320,
53
+ x: placement === 'right' ? shouldReduceMotion ? 0 : '100%' : shouldReduceMotion ? 0 : -320,
45
54
  transition: {
46
55
  duration: motionConstants.DURATIONS.moderate01,
47
56
  ease: motionConstants.EASINGS.productive.exit
57
+ },
58
+ opacity: shouldReduceMotion && 0
59
+ };
60
+ }
61
+ };
62
+ var actionSetVariants = {
63
+ hidden: function hidden(shouldReduceMotion) {
64
+ return {
65
+ opacity: shouldReduceMotion ? 0 : 1,
66
+ transition: {
67
+ duration: shouldReduceMotion ? motionConstants.DURATIONS.moderate01 : motionConstants.DURATIONS.fast01,
68
+ ease: shouldReduceMotion ? 0 : motionConstants.EASINGS.productive.exit
69
+ }
70
+ };
71
+ },
72
+ visible: function visible(shouldReduceMotion) {
73
+ return {
74
+ opacity: 1,
75
+ transition: {
76
+ duration: shouldReduceMotion ? motionConstants.DURATIONS.moderate01 : motionConstants.DURATIONS.fast02,
77
+ ease: shouldReduceMotion ? 0 : motionConstants.EASINGS.productive.entrance,
78
+ delay: shouldReduceMotion ? 0.075 : 0
48
79
  }
49
80
  };
50
81
  }
51
82
  };
52
83
 
84
+ exports.actionSetVariants = actionSetVariants;
53
85
  exports.overlayVariants = overlayVariants;
54
86
  exports.panelVariants = panelVariants;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * StringFormatter allows for truncating text while displaying a tooltip
3
+ * overlay on hover or focus with the entirety of the provided copy.
4
+ */
5
+ export let StringFormatter: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
6
+ import React from 'react';
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var React = require('react');
14
+ var index$1 = require('../../node_modules/prop-types/index.js');
15
+ var index = require('../../node_modules/classnames/index.js');
16
+ var devtools = require('../../global/js/utils/devtools.js');
17
+ var settings = require('../../settings.js');
18
+ var react = require('@carbon/react');
19
+ var enums = require('./utils/enums.js');
20
+
21
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
+
23
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
+
25
+ var _excluded = ["className", "lines", "tooltipDirection", "truncate", "width", "value"];
26
+ var blockClass = "".concat(settings.pkg.prefix, "--string-formatter");
27
+ var componentName = 'StringFormatter';
28
+ var defaults = {
29
+ lines: 1,
30
+ tooltipDirection: enums.StringFormatterAlignment.BOTTOM_LEFT,
31
+ truncate: false,
32
+ width: null
33
+ };
34
+
35
+ /**
36
+ * StringFormatter allows for truncating text while displaying a tooltip
37
+ * overlay on hover or focus with the entirety of the provided copy.
38
+ */
39
+ exports.StringFormatter = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
40
+ var className = _ref.className,
41
+ _ref$lines = _ref.lines,
42
+ lines = _ref$lines === void 0 ? defaults.lines : _ref$lines,
43
+ _ref$tooltipDirection = _ref.tooltipDirection,
44
+ tooltipDirection = _ref$tooltipDirection === void 0 ? defaults.tooltipDirection : _ref$tooltipDirection,
45
+ _ref$truncate = _ref.truncate,
46
+ truncate = _ref$truncate === void 0 ? defaults.truncate : _ref$truncate,
47
+ _ref$width = _ref.width,
48
+ width = _ref$width === void 0 ? defaults.width : _ref$width,
49
+ value = _ref.value,
50
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
51
+ var stringFormatterContent = /*#__PURE__*/React__default["default"].createElement("span", {
52
+ className: index["default"]("".concat(blockClass, "--content"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "--truncate"), truncate)),
53
+ style: {
54
+ maxWidth: width,
55
+ WebkitLineClamp: lines
56
+ }
57
+ }, value);
58
+ return /*#__PURE__*/React__default["default"].createElement("span", _rollupPluginBabelHelpers["extends"]({}, rest, {
59
+ className: index["default"](blockClass, className),
60
+ ref: ref
61
+ }, devtools.getDevtoolsProps(componentName)), truncate ? /*#__PURE__*/React__default["default"].createElement(react.DefinitionTooltip, {
62
+ className: "".concat(blockClass, "__tooltip"),
63
+ align: tooltipDirection,
64
+ definition: value,
65
+ openOnHover: true
66
+ }, stringFormatterContent) : stringFormatterContent);
67
+ });
68
+ exports.StringFormatter = settings.pkg.checkComponentEnabled(exports.StringFormatter, componentName);
69
+ exports.StringFormatter.displayName = componentName;
70
+ exports.StringFormatter.propTypes = {
71
+ /**
72
+ * Provide an optional class to be applied to the containing node.
73
+ */
74
+ className: index$1["default"].string,
75
+ /** Number of lines to clamp value. */
76
+ lines: index$1["default"].number,
77
+ /** Specify the direction of the tooltip. Can be either top or bottom. */
78
+ tooltipDirection: index$1["default"].oneOf(Object.values(enums.StringFormatterAlignment)),
79
+ /** Whether or not the value should be truncated. */
80
+ truncate: index$1["default"].bool,
81
+ /** Value to format. */
82
+ value: index$1["default"].string.isRequired,
83
+ /** Maximum width of value which should include */
84
+ width: index$1["default"].string
85
+ };
@@ -0,0 +1 @@
1
+ export { StringFormatter } from "./StringFormatter";
@@ -0,0 +1,14 @@
1
+ export namespace StringFormatterAlignment {
2
+ let TOP: string;
3
+ let TOP_LEFT: string;
4
+ let TOP_RIGHT: string;
5
+ let BOTTOM: string;
6
+ let BOTTOM_LEFT: string;
7
+ let BOTTOM_RIGHT: string;
8
+ let LEFT: string;
9
+ let LEFT_BOTTOM: string;
10
+ let LEFT_TOP: string;
11
+ let RIGHT: string;
12
+ let RIGHT_BOTTOM: string;
13
+ let RIGHT_TOP: string;
14
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var StringFormatterAlignment = {
13
+ TOP: 'top',
14
+ TOP_LEFT: 'top-left',
15
+ TOP_RIGHT: 'top-right',
16
+ BOTTOM: 'bottom',
17
+ BOTTOM_LEFT: 'bottom-left',
18
+ BOTTOM_RIGHT: 'bottom-right',
19
+ LEFT: 'left',
20
+ LEFT_BOTTOM: 'left-bottom',
21
+ LEFT_TOP: 'left-top',
22
+ RIGHT: 'right',
23
+ RIGHT_BOTTOM: 'right-bottom',
24
+ RIGHT_TOP: 'right-top'
25
+ };
26
+
27
+ exports.StringFormatterAlignment = StringFormatterAlignment;
@@ -20,13 +20,14 @@ var getNodeTextContent = require('../../global/js/utils/getNodeTextContent.js');
20
20
  var react = require('@carbon/react');
21
21
  var Wrap = require('../../global/js/utils/Wrap.js');
22
22
  var usePortalTarget = require('../../global/js/hooks/usePortalTarget.js');
23
+ var useFocus = require('../../global/js/hooks/useFocus.js');
23
24
  var ActionSet = require('../ActionSet/ActionSet.js');
24
25
 
25
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
27
 
27
28
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
29
 
29
- var _excluded = ["actions", "ariaLabel", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "portalTarget", "title", "verticalPosition"];
30
+ var _excluded = ["actions", "ariaLabel", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "portalTarget", "selectorPrimaryFocus", "size", "slug", "title", "verticalPosition"];
30
31
 
31
32
  // The block part of our conventional BEM class names (bc__E--M).
32
33
  var bc = "".concat(settings.pkg.prefix, "--tearsheet");
@@ -78,9 +79,10 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
78
79
  navigation = _ref.navigation,
79
80
  onClose = _ref.onClose,
80
81
  open = _ref.open,
82
+ portalTargetIn = _ref.portalTarget,
81
83
  selectorPrimaryFocus = _ref.selectorPrimaryFocus,
82
84
  size = _ref.size,
83
- portalTargetIn = _ref.portalTarget,
85
+ slug = _ref.slug,
84
86
  title = _ref.title,
85
87
  verticalPosition = _ref.verticalPosition,
86
88
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
@@ -89,9 +91,13 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
89
91
  var renderPortalUse = usePortalTarget.usePortalTarget(portalTargetIn);
90
92
  var localRef = React.useRef();
91
93
  var resizer = React.useRef(null);
94
+ var modalBodyRef = React.useRef(null);
92
95
  var modalRef = ref || localRef;
93
96
  var _useResizeObserver = useResizeObserver.useResizeObserver(resizer),
94
97
  width = _useResizeObserver.width;
98
+ var _useFocus = useFocus.useFocus(modalRef),
99
+ firstElement = _useFocus.firstElement,
100
+ keyDownListener = _useFocus.keyDownListener;
95
101
  var wide = size === 'wide';
96
102
 
97
103
  // Keep track of the stack depth and our position in it (1-based, 0=closed)
@@ -129,11 +135,16 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
129
135
 
130
136
  // Callback to give the tearsheet the opportunity to claim focus
131
137
  handleStackChange.claimFocus = function () {
132
- var element = selectorPrimaryFocus ? modalRef.current.querySelector(selectorPrimaryFocus) : modalRef.current;
133
- setTimeout(function () {
134
- return element.focus();
135
- }, 1);
138
+ firstElement === null || firstElement === void 0 || firstElement.focus();
136
139
  };
140
+ React.useEffect(function () {
141
+ if (open) {
142
+ // Focusing the first element
143
+ setTimeout(function () {
144
+ firstElement === null || firstElement === void 0 || firstElement.focus();
145
+ }, 0);
146
+ }
147
+ }, [open, firstElement]);
137
148
  React.useEffect(function () {
138
149
  var notify = function notify() {
139
150
  return stack.all.forEach(function (handler) {
@@ -188,15 +199,17 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
188
199
  var includeActions = actions && (actions === null || actions === void 0 ? void 0 : actions.length) > 0;
189
200
  return renderPortalUse( /*#__PURE__*/React__default["default"].createElement(react.ComposedModal, _rollupPluginBabelHelpers["extends"]({}, rest, {
190
201
  "aria-label": ariaLabel || getNodeTextContent.getNodeTextContent(title),
191
- className: index["default"](bc, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
202
+ className: index["default"](bc, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
192
203
  // Don't apply this on the initial open of a single tearsheet.
193
- depth > 1 || depth === 1 && prevDepth.current > 1), "".concat(bc, "--wide"), wide), "".concat(bc, "--narrow"), !wide)),
204
+ depth > 1 || depth === 1 && prevDepth.current > 1), "".concat(bc, "--wide"), wide), "".concat(bc, "--narrow"), !wide), "".concat(bc, "--has-slug"), slug), "".concat(bc, "--has-close"), effectiveHasCloseIcon)),
205
+ slug: slug,
194
206
  style: _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "--".concat(bc, "--stacking-scale-factor-single"), (width - 32) / width), "--".concat(bc, "--stacking-scale-factor-double"), (width - 64) / width),
195
207
  containerClassName: index["default"]("".concat(bc, "__container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "__container--lower"), verticalPosition === 'lower')),
196
208
  onClose: onClose,
197
209
  open: open,
198
210
  selectorPrimaryFocus: selectorPrimaryFocus,
199
211
  onFocus: handleFocus,
212
+ onKeyDown: keyDownListener,
200
213
  preventCloseOnClickOutside: !isPassive,
201
214
  ref: modalRef,
202
215
  selectorsFloatingMenus: [".".concat(carbonPrefix, "--overflow-menu-options"), ".".concat(carbonPrefix, "--tooltip"), '.flatpickr-calendar', ".".concat(bc, "__container")],
@@ -224,6 +237,7 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
224
237
  }, headerActions)), /*#__PURE__*/React__default["default"].createElement(Wrap.Wrap, {
225
238
  className: "".concat(bc, "__header-navigation")
226
239
  }, navigation)), /*#__PURE__*/React__default["default"].createElement(Wrap.Wrap, {
240
+ ref: modalBodyRef,
227
241
  element: react.ModalBody,
228
242
  className: "".concat(bc, "__body")
229
243
  }, /*#__PURE__*/React__default["default"].createElement(Wrap.Wrap, {
@@ -390,6 +404,10 @@ TearsheetShell.propTypes = _rollupPluginBabelHelpers.objectSpread2({
390
404
  * Specifies the width of the tearsheet, 'narrow' or 'wide'.
391
405
  */
392
406
  size: index$1["default"].oneOf(['narrow', 'wide']).isRequired,
407
+ /**
408
+ * **Experimental:** Provide a `Slug` component to be rendered inside the `SidePanel` component
409
+ */
410
+ slug: index$1["default"].node,
393
411
  /**
394
412
  * The main title of the tearsheet, displayed in the header area.
395
413
  */
@@ -15,16 +15,15 @@ var index = require('../../node_modules/prop-types/index.js');
15
15
  var index$1 = require('../../node_modules/classnames/index.js');
16
16
  var devtools = require('../../global/js/utils/devtools.js');
17
17
  var settings = require('../../settings.js');
18
- var icons = require('@carbon/react/icons');
19
18
  var react = require('@carbon/react');
19
+ var icons = require('@carbon/react/icons');
20
20
  var TooltipTrigger = require('../TooltipTrigger/TooltipTrigger.js');
21
21
 
22
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
23
 
24
24
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
25
 
26
- var _excluded = ["backgroundColor", "className", "renderIcon", "tooltipText", "tooltipAlignment"];
27
- var _User, _User2, _Group;
26
+ var _excluded = ["backgroundColor", "className", "name", "renderIcon", "size", "tooltipText", "tooltipAlignment"];
28
27
  // Carbon and package components we use.
29
28
  /* TODO: @import(s) of carbon components and other package components. */
30
29
 
@@ -53,69 +52,77 @@ var componentName = 'UserAvatar';
53
52
  */
54
53
 
55
54
  var defaults = {
56
- renderIcon: function renderIcon() {
57
- return _User || (_User = /*#__PURE__*/React__default["default"].createElement(icons.User, {
58
- size: 32
59
- }));
60
- },
61
- tooltipAlignment: 'bottom',
62
- tooltipText: 'Thomas J. Watson'
55
+ size: 'md',
56
+ tooltipAlignment: 'bottom'
63
57
  };
64
58
  exports.UserAvatar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
65
- var _SetItem;
66
59
  var backgroundColor = _ref.backgroundColor,
67
60
  className = _ref.className,
68
- _ref$renderIcon = _ref.renderIcon,
69
- renderIcon = _ref$renderIcon === void 0 ? defaults.renderIcon : _ref$renderIcon,
70
- _ref$tooltipText = _ref.tooltipText,
71
- tooltipText = _ref$tooltipText === void 0 ? defaults.tooltipText : _ref$tooltipText,
61
+ name = _ref.name,
62
+ RenderIcon = _ref.renderIcon,
63
+ _ref$size = _ref.size,
64
+ size = _ref$size === void 0 ? defaults.size : _ref$size,
65
+ tooltipText = _ref.tooltipText,
72
66
  _ref$tooltipAlignment = _ref.tooltipAlignment,
73
67
  tooltipAlignment = _ref$tooltipAlignment === void 0 ? defaults.tooltipAlignment : _ref$tooltipAlignment,
74
68
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
75
69
  var carbonPrefix = react.usePrefix();
76
- var icons$1 = {
77
- user: {
78
- md: _User2 || (_User2 = /*#__PURE__*/React__default["default"].createElement(icons.User, {
79
- size: 32
80
- }))
81
- },
82
- group: {
83
- md: _Group || (_Group = /*#__PURE__*/React__default["default"].createElement(icons.Group, {
84
- size: 32
85
- }))
70
+ var iconSize = {
71
+ sm: 16,
72
+ md: 20,
73
+ lg: 24,
74
+ xl: 32
75
+ };
76
+ var formatInitials = function formatInitials() {
77
+ var _ref2;
78
+ var parts = name.split(' ');
79
+ var firstChar = parts[0].charAt(0).toUpperCase();
80
+ var secondChar = parts[0].charAt(1).toUpperCase();
81
+ if (parts.length === 1) {
82
+ return firstChar + secondChar;
86
83
  }
84
+ var lastChar = parts[parts.length - 1].charAt(0).toUpperCase();
85
+ var initials = [firstChar];
86
+ if (lastChar) {
87
+ initials.push(lastChar);
88
+ }
89
+ return (_ref2 = '').concat.apply(_ref2, initials);
87
90
  };
88
- var getItem = function getItem(renderIcon) {
89
- if (renderIcon === icons.User) {
90
- return icons$1.user['md'];
91
- } else if (renderIcon === icons.Group) {
92
- return icons$1.group['md'];
93
- } else {
94
- return renderIcon;
91
+ var getItem = function getItem() {
92
+ var iconProps = {
93
+ size: iconSize[size]
94
+ };
95
+ if (RenderIcon) {
96
+ return /*#__PURE__*/React__default["default"].createElement(RenderIcon, iconProps);
97
+ }
98
+ if (name) {
99
+ return formatInitials();
95
100
  }
101
+ return /*#__PURE__*/React__default["default"].createElement(icons.User, iconProps);
96
102
  };
97
- var SetItem = getItem(renderIcon);
98
- var renderUserAvatar = function renderUserAvatar() {
103
+ var Avatar = function Avatar() {
99
104
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
100
- tabIndex: 0,
101
105
  className: index$1["default"](blockClass,
102
106
  // Apply the block class to the main HTML element
103
107
  className, // Apply any supplied class names to the main HTML element.
104
- "".concat(blockClass, "--").concat(backgroundColor),
108
+ "".concat(blockClass, "--").concat(backgroundColor), "".concat(blockClass, "--").concat(size),
105
109
  // example: `${blockClass}__template-string-class-${kind}-n-${size}`,
106
110
  {
107
111
  // switched classes dependant on props or state
108
112
  // example: [`${blockClass}__here-if-small`]: size === 'sm',
109
113
  }),
110
114
  ref: ref,
111
- role: "button"
112
- }, devtools.getDevtoolsProps(componentName)), _SetItem || (_SetItem = /*#__PURE__*/React__default["default"].createElement(SetItem, null)));
115
+ role: "img"
116
+ }, devtools.getDevtoolsProps(componentName)), getItem());
113
117
  };
114
- return SetItem && (tooltipText ? /*#__PURE__*/React__default["default"].createElement(react.Tooltip, {
115
- align: tooltipAlignment,
116
- label: tooltipText,
117
- className: "".concat(blockClass, "__tooltip ").concat(carbonPrefix, "--icon-tooltip")
118
- }, /*#__PURE__*/React__default["default"].createElement(TooltipTrigger.TooltipTrigger, null, renderUserAvatar())) : renderUserAvatar());
118
+ if (tooltipText) {
119
+ return /*#__PURE__*/React__default["default"].createElement(react.Tooltip, {
120
+ align: tooltipAlignment,
121
+ label: tooltipText,
122
+ className: "".concat(blockClass, "__tooltip ").concat(carbonPrefix, "--icon-tooltip")
123
+ }, /*#__PURE__*/React__default["default"].createElement(TooltipTrigger.TooltipTrigger, null, /*#__PURE__*/React__default["default"].createElement(Avatar, null)));
124
+ }
125
+ return /*#__PURE__*/React__default["default"].createElement(Avatar, null);
119
126
  });
120
127
 
121
128
  // Return a placeholder if not released and not enabled by feature flag
@@ -137,10 +144,18 @@ exports.UserAvatar.propTypes = {
137
144
  * Provide an optional class to be applied to the containing node.
138
145
  */
139
146
  className: index["default"].string,
147
+ /**
148
+ * When passing the name prop, either send the initials to be used or the user's full name. The first two capital letters of the user's name will be used as the name.
149
+ */
150
+ name: index["default"].string,
140
151
  /**
141
152
  * Provide a custom icon to use if you need to use an icon other than the default one
142
153
  */
143
- renderIcon: index["default"].func,
154
+ renderIcon: index["default"].oneOfType([index["default"].func, index["default"].object]),
155
+ /**
156
+ * Set the size of the avatar circle
157
+ */
158
+ size: index["default"].oneOf(['xl', 'lg', 'md', 'sm']),
144
159
  /**
145
160
  * Specify how the trigger should align with the tooltip
146
161
  */
@@ -34,6 +34,7 @@ export { CoachmarkOverlayElement } from "./CoachmarkOverlayElement";
34
34
  export { CoachmarkOverlayElements } from "./CoachmarkOverlayElements";
35
35
  export { CoachmarkStack } from "./CoachmarkStack";
36
36
  export { NonLinearReading } from "./NonLinearReading";
37
+ export { BigNumbers } from "./BigNumbers";
37
38
  export { TruncatedList } from "./TruncatedList";
38
39
  export { InterstitialScreen } from "./InterstitialScreen";
39
40
  export { InterstitialScreenView } from "./InterstitialScreenView";
@@ -41,6 +42,7 @@ export { InterstitialScreenViewModule } from "./InterstitialScreenViewModule";
41
42
  export { DelimitedList } from "./DelimitedList";
42
43
  export { FullPageError } from "./FullPageError";
43
44
  export { SearchBar } from "./SearchBar";
45
+ export { StringFormatter } from "./StringFormatter";
44
46
  export { UserAvatar } from "./UserAvatar";
45
47
  export { ComboButton, ComboButtonItem } from "./ComboButton";
46
48
  export { CreateFullPage, CreateFullPageStep } from "./CreateFullPage";