@carbon/ibm-products 2.92.1 → 2.93.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 (152) hide show
  1. package/css/index-full-carbon.css +99 -20
  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 +70 -20
  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 +99 -20
  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 +70 -20
  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/Coachmark/next/Coachmark/Coachmark.d.ts +9 -12
  18. package/es/components/Coachmark/next/Coachmark/Coachmark.d.ts.map +1 -1
  19. package/es/components/Coachmark/next/Coachmark/Coachmark.js +16 -27
  20. package/es/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.d.ts +1 -1
  21. package/es/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.d.ts.map +1 -1
  22. package/es/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.js +3 -4
  23. package/es/components/Coachmark/next/Coachmark/CoachmarkContent.d.ts +8 -4
  24. package/es/components/Coachmark/next/Coachmark/CoachmarkContent.d.ts.map +1 -1
  25. package/es/components/Coachmark/next/Coachmark/CoachmarkContent.js +19 -5
  26. package/es/components/Coachmark/next/Coachmark/{ContentBody.d.ts → CoachmarkContentBody.d.ts} +5 -5
  27. package/es/components/Coachmark/next/Coachmark/CoachmarkContentBody.d.ts.map +1 -0
  28. package/es/components/Coachmark/next/Coachmark/{ContentBody.js → CoachmarkContentBody.js} +10 -6
  29. package/{lib/components/Coachmark/next/Coachmark/ContentHeader.d.ts → es/components/Coachmark/next/Coachmark/CoachmarkContentHeader.d.ts} +7 -3
  30. package/es/components/Coachmark/next/Coachmark/CoachmarkContentHeader.d.ts.map +1 -0
  31. package/es/components/Coachmark/next/Coachmark/{ContentHeader.js → CoachmarkContentHeader.js} +55 -12
  32. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.d.ts.map +1 -1
  33. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.js +2 -2
  34. package/es/components/Coachmark/next/Coachmark/index.d.ts +5 -4
  35. package/es/components/Coachmark/next/Coachmark/index.d.ts.map +1 -1
  36. package/es/components/ExpressiveCard/ExpressiveCard.d.ts +3 -3
  37. package/es/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
  38. package/es/components/ExpressiveCard/ExpressiveCard.js +3 -15
  39. package/es/components/InterstitialScreen/InterstitialScreenBody.js +1 -1
  40. package/es/components/PageHeader/next/PageHeader.d.ts.map +1 -1
  41. package/es/components/PageHeader/next/PageHeader.js +6 -2
  42. package/es/components/PageHeader/next/PageHeaderTabBar.d.ts +4 -0
  43. package/es/components/PageHeader/next/PageHeaderTabBar.d.ts.map +1 -1
  44. package/es/components/PageHeader/next/PageHeaderTabBar.js +7 -2
  45. package/es/components/PageHeader/next/context.d.ts +2 -0
  46. package/es/components/PageHeader/next/context.d.ts.map +1 -1
  47. package/es/components/PageHeader/next/context.js +3 -1
  48. package/es/components/ProductiveCard/ProductiveCard.d.ts +3 -3
  49. package/es/components/ProductiveCard/ProductiveCard.d.ts.map +1 -1
  50. package/es/components/ProductiveCard/ProductiveCard.js +3 -15
  51. package/es/components/Tearsheet/TearsheetShell.d.ts.map +1 -1
  52. package/es/components/Tearsheet/TearsheetShell.js +17 -8
  53. package/es/components/Tearsheet/next/Tearsheet.d.ts.map +1 -1
  54. package/es/components/Tearsheet/next/Tearsheet.js +21 -2
  55. package/es/components/Tearsheet/next/TearsheetBody.d.ts +16 -0
  56. package/es/components/Tearsheet/next/TearsheetBody.d.ts.map +1 -1
  57. package/es/components/Tearsheet/next/TearsheetBody.js +22 -4
  58. package/es/components/Tearsheet/next/TearsheetFooter.js +1 -1
  59. package/es/components/Tearsheet/next/TearsheetHeader.d.ts.map +1 -1
  60. package/es/components/Tearsheet/next/TearsheetHeader.js +3 -1
  61. package/es/components/Tearsheet/next/TearsheetHeaderActions.d.ts +1 -1
  62. package/es/components/Tearsheet/next/TearsheetHeaderActions.d.ts.map +1 -1
  63. package/es/components/Tearsheet/next/TearsheetHeaderActions.js +6 -3
  64. package/es/components/Tearsheet/next/TearsheetHeaderContent.d.ts.map +1 -1
  65. package/es/components/Tearsheet/next/TearsheetHeaderContent.js +9 -3
  66. package/es/components/Tearsheet/next/_story-assets/StepTearsheet.d.ts.map +1 -1
  67. package/es/components/Tearsheet/next/context.d.ts +1 -0
  68. package/es/components/Tearsheet/next/context.d.ts.map +1 -1
  69. package/es/components/Tearsheet/usePresence.d.ts.map +1 -1
  70. package/es/components/Tearsheet/usePresence.js +3 -2
  71. package/es/global/js/package-settings.d.ts +1 -0
  72. package/es/global/js/package-settings.d.ts.map +1 -1
  73. package/es/global/js/package-settings.js +1 -0
  74. package/es/global/js/utils/makeDraggable/makeDraggable.d.ts +8 -2
  75. package/es/global/js/utils/makeDraggable/makeDraggable.d.ts.map +1 -1
  76. package/es/global/js/utils/makeDraggable/makeDraggable.js +87 -17
  77. package/es/settings.d.ts +1 -0
  78. package/es/settings.d.ts.map +1 -1
  79. package/lib/components/Coachmark/next/Coachmark/Coachmark.d.ts +9 -12
  80. package/lib/components/Coachmark/next/Coachmark/Coachmark.d.ts.map +1 -1
  81. package/lib/components/Coachmark/next/Coachmark/Coachmark.js +16 -27
  82. package/lib/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.d.ts +1 -1
  83. package/lib/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.d.ts.map +1 -1
  84. package/lib/components/Coachmark/next/Coachmark/CoachmarkBeacon/CoachmarkBeacon.js +3 -4
  85. package/lib/components/Coachmark/next/Coachmark/CoachmarkContent.d.ts +8 -4
  86. package/lib/components/Coachmark/next/Coachmark/CoachmarkContent.d.ts.map +1 -1
  87. package/lib/components/Coachmark/next/Coachmark/CoachmarkContent.js +19 -5
  88. package/lib/components/Coachmark/next/Coachmark/{ContentBody.d.ts → CoachmarkContentBody.d.ts} +5 -5
  89. package/lib/components/Coachmark/next/Coachmark/CoachmarkContentBody.d.ts.map +1 -0
  90. package/lib/components/Coachmark/next/Coachmark/{ContentBody.js → CoachmarkContentBody.js} +10 -6
  91. package/{es/components/Coachmark/next/Coachmark/ContentHeader.d.ts → lib/components/Coachmark/next/Coachmark/CoachmarkContentHeader.d.ts} +7 -3
  92. package/lib/components/Coachmark/next/Coachmark/CoachmarkContentHeader.d.ts.map +1 -0
  93. package/lib/components/Coachmark/next/Coachmark/{ContentHeader.js → CoachmarkContentHeader.js} +54 -11
  94. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.d.ts.map +1 -1
  95. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.js +2 -2
  96. package/lib/components/Coachmark/next/Coachmark/index.d.ts +5 -4
  97. package/lib/components/Coachmark/next/Coachmark/index.d.ts.map +1 -1
  98. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts +3 -3
  99. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
  100. package/lib/components/ExpressiveCard/ExpressiveCard.js +3 -15
  101. package/lib/components/InterstitialScreen/InterstitialScreenBody.js +1 -1
  102. package/lib/components/PageHeader/next/PageHeader.d.ts.map +1 -1
  103. package/lib/components/PageHeader/next/PageHeader.js +6 -2
  104. package/lib/components/PageHeader/next/PageHeaderTabBar.d.ts +4 -0
  105. package/lib/components/PageHeader/next/PageHeaderTabBar.d.ts.map +1 -1
  106. package/lib/components/PageHeader/next/PageHeaderTabBar.js +6 -1
  107. package/lib/components/PageHeader/next/context.d.ts +2 -0
  108. package/lib/components/PageHeader/next/context.d.ts.map +1 -1
  109. package/lib/components/PageHeader/next/context.js +3 -1
  110. package/lib/components/ProductiveCard/ProductiveCard.d.ts +3 -3
  111. package/lib/components/ProductiveCard/ProductiveCard.d.ts.map +1 -1
  112. package/lib/components/ProductiveCard/ProductiveCard.js +3 -15
  113. package/lib/components/Tearsheet/TearsheetShell.d.ts.map +1 -1
  114. package/lib/components/Tearsheet/TearsheetShell.js +15 -6
  115. package/lib/components/Tearsheet/next/Tearsheet.d.ts.map +1 -1
  116. package/lib/components/Tearsheet/next/Tearsheet.js +21 -2
  117. package/lib/components/Tearsheet/next/TearsheetBody.d.ts +16 -0
  118. package/lib/components/Tearsheet/next/TearsheetBody.d.ts.map +1 -1
  119. package/lib/components/Tearsheet/next/TearsheetBody.js +22 -4
  120. package/lib/components/Tearsheet/next/TearsheetFooter.js +1 -1
  121. package/lib/components/Tearsheet/next/TearsheetHeader.d.ts.map +1 -1
  122. package/lib/components/Tearsheet/next/TearsheetHeader.js +3 -1
  123. package/lib/components/Tearsheet/next/TearsheetHeaderActions.d.ts +1 -1
  124. package/lib/components/Tearsheet/next/TearsheetHeaderActions.d.ts.map +1 -1
  125. package/lib/components/Tearsheet/next/TearsheetHeaderActions.js +5 -2
  126. package/lib/components/Tearsheet/next/TearsheetHeaderContent.d.ts.map +1 -1
  127. package/lib/components/Tearsheet/next/TearsheetHeaderContent.js +9 -3
  128. package/lib/components/Tearsheet/next/_story-assets/StepTearsheet.d.ts.map +1 -1
  129. package/lib/components/Tearsheet/next/context.d.ts +1 -0
  130. package/lib/components/Tearsheet/next/context.d.ts.map +1 -1
  131. package/lib/components/Tearsheet/usePresence.d.ts.map +1 -1
  132. package/lib/components/Tearsheet/usePresence.js +2 -1
  133. package/lib/global/js/package-settings.d.ts +1 -0
  134. package/lib/global/js/package-settings.d.ts.map +1 -1
  135. package/lib/global/js/package-settings.js +1 -0
  136. package/lib/global/js/utils/makeDraggable/makeDraggable.d.ts +8 -2
  137. package/lib/global/js/utils/makeDraggable/makeDraggable.d.ts.map +1 -1
  138. package/lib/global/js/utils/makeDraggable/makeDraggable.js +87 -17
  139. package/lib/settings.d.ts +1 -0
  140. package/lib/settings.d.ts.map +1 -1
  141. package/package.json +7 -7
  142. package/scss/components/Coachmark/_carbon-imports.scss +2 -1
  143. package/scss/components/Coachmark/_coachmark_next.scss +53 -0
  144. package/scss/components/Coachmark/_index.scss +4 -1
  145. package/scss/components/PageHeader/_page-header.scss +44 -8
  146. package/scss/components/Tearsheet/_tearsheet.scss +26 -2
  147. package/scss/components/Tearsheet/_tearsheet_next.scss +5 -0
  148. package/telemetry.yml +11 -3
  149. package/es/components/Coachmark/next/Coachmark/ContentBody.d.ts.map +0 -1
  150. package/es/components/Coachmark/next/Coachmark/ContentHeader.d.ts.map +0 -1
  151. package/lib/components/Coachmark/next/Coachmark/ContentBody.d.ts.map +0 -1
  152. package/lib/components/Coachmark/next/Coachmark/ContentHeader.d.ts.map +0 -1
@@ -52,6 +52,14 @@ export interface SummaryContentProps {
52
52
  onSummaryPanelClose?(): void;
53
53
  /** this can be set take full width without any padding */
54
54
  isFlush?: boolean;
55
+ /**
56
+ * Optional ref to the trigger button that opened the panel. Focus will return here when panel closes.
57
+ */
58
+ summaryPanelTriggerRef?: React.RefObject<HTMLElement>;
59
+ /**
60
+ * Optional aria-label for the summary panel. Defaults to "Summary panel".
61
+ */
62
+ summaryPanelAriaLabel?: string;
55
63
  }
56
64
  export declare const SummaryContent: React.ForwardRefExoticComponent<SummaryContentProps & React.RefAttributes<HTMLDivElement>>;
57
65
  export interface InfluencerProps {
@@ -68,6 +76,14 @@ export interface InfluencerProps {
68
76
  onInfluencerPanelClose?(): void;
69
77
  /** this can be set take full width without any padding */
70
78
  isFlush?: boolean;
79
+ /**
80
+ * Optional ref to the trigger button that opened the panel. Focus will return here when panel closes.
81
+ */
82
+ influencerPanelTriggerRef?: React.RefObject<HTMLElement>;
83
+ /**
84
+ * Optional aria-label for the influencer panel. Defaults to "Influencer panel".
85
+ */
86
+ influencerPanelAriaLabel?: string;
71
87
  }
72
88
  export declare const Influencer: React.ForwardRefExoticComponent<InfluencerProps & React.RefAttributes<HTMLDivElement>>;
73
89
  export default TearsheetBody;
@@ -1 +1 @@
1
- {"version":3,"file":"TearsheetBody.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetBody.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAOf;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,QAAA,MAAM,aAAa,2FAQlB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD;;;;GAIG;AACH,eAAO,MAAM,WAAW,yFAuDvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,eAAO,MAAM,cAAc,4FAiC1B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,sBAAsB,CAAC,IAAI,IAAI,CAAC;IAChC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,eAAO,MAAM,UAAU,wFAkCtB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"TearsheetBody.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetBody.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAOf;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,QAAA,MAAM,aAAa,2FAQlB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD;;;;GAIG;AACH,eAAO,MAAM,WAAW,yFAuDvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,sBAAsB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AACD,eAAO,MAAM,cAAc,4FAoD1B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,sBAAsB,CAAC,IAAI,IAAI,CAAC;IAChC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,yBAAyB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AACD,eAAO,MAAM,UAAU,wFAqDtB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -59,8 +59,15 @@ const MainContent = (0, react.forwardRef)(({ children, className, isFlush, ...re
59
59
  ...rest
60
60
  }, children);
61
61
  });
62
- const SummaryContent = (0, react.forwardRef)(({ children, className, summaryPanelOpen = false, onSummaryPanelClose, isFlush }, ref) => {
62
+ const SummaryContent = (0, react.forwardRef)(({ children, className, summaryPanelOpen = false, onSummaryPanelClose, isFlush, summaryPanelTriggerRef, summaryPanelAriaLabel = "Summary panel" }, ref) => {
63
63
  const { isSm } = (0, react.useContext)(require_context.TearsheetContext);
64
+ const prevOpenRef = (0, react.useRef)(summaryPanelOpen);
65
+ (0, react.useEffect)(() => {
66
+ if (prevOpenRef.current && !summaryPanelOpen && summaryPanelTriggerRef?.current) setTimeout(() => {
67
+ summaryPanelTriggerRef.current?.focus();
68
+ }, 100);
69
+ prevOpenRef.current = summaryPanelOpen;
70
+ }, [summaryPanelOpen, summaryPanelTriggerRef]);
64
71
  return !isSm ? /* @__PURE__ */ react.default.createElement("div", {
65
72
  className: (0, import_classnames.default)(`${require_context.blockClass}__summary-content`, className, { [`${require_context.blockClass}__flush`]: isFlush }),
66
73
  ref
@@ -68,11 +75,20 @@ const SummaryContent = (0, react.forwardRef)(({ children, className, summaryPane
68
75
  size: "sm",
69
76
  open: summaryPanelOpen,
70
77
  onRequestClose: onSummaryPanelClose,
71
- className: (0, import_classnames.default)(`${require_context.blockClass}__side-panel`, className)
78
+ className: (0, import_classnames.default)(`${require_context.blockClass}__side-panel`, className),
79
+ "aria-label": summaryPanelAriaLabel,
80
+ "aria-modal": "true"
72
81
  }, children);
73
82
  });
74
- const Influencer = (0, react.forwardRef)(({ children, className, influencerPanelOpen = false, onInfluencerPanelClose, isFlush }, ref) => {
83
+ const Influencer = (0, react.forwardRef)(({ children, className, influencerPanelOpen = false, onInfluencerPanelClose, isFlush, influencerPanelTriggerRef, influencerPanelAriaLabel = "Influencer panel" }, ref) => {
75
84
  const { isSm } = (0, react.useContext)(require_context.TearsheetContext);
85
+ const prevOpenRef = (0, react.useRef)(influencerPanelOpen);
86
+ (0, react.useEffect)(() => {
87
+ if (prevOpenRef.current && !influencerPanelOpen && influencerPanelTriggerRef?.current) setTimeout(() => {
88
+ influencerPanelTriggerRef.current?.focus();
89
+ }, 100);
90
+ prevOpenRef.current = influencerPanelOpen;
91
+ }, [influencerPanelOpen, influencerPanelTriggerRef]);
76
92
  return !isSm ? /* @__PURE__ */ react.default.createElement("aside", {
77
93
  className: (0, import_classnames.default)(`${require_context.blockClass}__influencer`, className, { [`${require_context.blockClass}__flush`]: isFlush }),
78
94
  ref
@@ -81,7 +97,9 @@ const Influencer = (0, react.forwardRef)(({ children, className, influencerPanel
81
97
  open: influencerPanelOpen,
82
98
  onRequestClose: onInfluencerPanelClose,
83
99
  placement: "left",
84
- className: (0, import_classnames.default)(`${require_context.blockClass}__side-panel`, className)
100
+ className: (0, import_classnames.default)(`${require_context.blockClass}__side-panel`, className),
101
+ "aria-label": influencerPanelAriaLabel,
102
+ "aria-modal": "true"
85
103
  }, children);
86
104
  });
87
105
  //#endregion
@@ -22,7 +22,7 @@ var import_classnames = /* @__PURE__ */ require_runtime.__toESM(require_index.de
22
22
  const TearsheetFooter = (0, react.forwardRef)(({ children, className, actions, buttonSize }, ref) => {
23
23
  const { variant } = (0, react.useContext)(require_context.TearsheetContext);
24
24
  const actionCount = actions?.length || 0;
25
- return /* @__PURE__ */ react.default.createElement("footer", {
25
+ return /* @__PURE__ */ react.default.createElement("div", {
26
26
  className: (0, import_classnames.default)(`${require_context.blockClass}__footer`, className, {
27
27
  [`${require_context.blockClass}__footer--three-actions`]: actionCount == 3,
28
28
  [`${require_context.blockClass}__footer--many-actions`]: actionCount > 3
@@ -1 +1 @@
1
- {"version":3,"file":"TearsheetHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeader.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,eAAe,EAAe,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAMf;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,QAAA,MAAM,eAAe,6FA2CpB,CAAC;AAEF,eAAe,eAAe,CAAC;AAE/B;;;;GAIG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,eAAO,MAAM,sBAAsB,oGAajC,CAAC;AAEH;;;;GAIG;AAEH,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,mGA6ChC,CAAC"}
1
+ {"version":3,"file":"TearsheetHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeader.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,eAAe,EAAe,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAMf;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,QAAA,MAAM,eAAe,6FA2CpB,CAAC;AAEF,eAAe,eAAe,CAAC;AAE/B;;;;GAIG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,eAAO,MAAM,sBAAsB,oGAajC,CAAC;AAEH;;;;GAIG;AAEH,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,mGAiDhC,CAAC"}
@@ -68,7 +68,9 @@ const TearsheetScrollButton = react.default.forwardRef(function PageHeaderExpand
68
68
  onClick?.(event);
69
69
  handleScroller(!!fullyCollapsed);
70
70
  },
71
- className: (0, import_classnames.default)(className, `${require_context.blockClass}__scroller-button`)
71
+ className: (0, import_classnames.default)(className, `${require_context.blockClass}__scroller-button`),
72
+ "aria-label": fullyCollapsed ? `${expandText} header` : `${collapseText} header`,
73
+ "aria-expanded": !fullyCollapsed
72
74
  }, /* @__PURE__ */ react.default.createElement(_carbon_react_icons.ChevronUp, { className: (0, import_classnames.default)(`${require_context.blockClass}__scroller-button-icon`, { [`${require_context.blockClass}__scroller-button-icon-collapsed`]: fullyCollapsed }) })));
73
75
  });
74
76
  //#endregion
@@ -29,7 +29,7 @@ export interface TearsheetHeaderActionsProps {
29
29
  */
30
30
  menuButtonProps?: MenuButtonProps;
31
31
  }
32
- export declare const TearsheetHeaderActions: ({ className, children, menuButtonProps, }: TearsheetHeaderActionsProps) => React.JSX.Element;
32
+ export declare const TearsheetHeaderActions: React.ForwardRefExoticComponent<TearsheetHeaderActionsProps & React.RefAttributes<HTMLDivElement>>;
33
33
  /**
34
34
  * ----------------
35
35
  * TearsheetHeaderActionsItem
@@ -1 +1 @@
1
- {"version":3,"file":"TearsheetHeaderActions.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeaderActions.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,eAAe,EAAY,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,EAAgB,SAAS,EAAoB,MAAM,OAAO,CAAC;AAKzE;;;;GAIG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/E,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AACD,eAAO,MAAM,sBAAsB,GAAI,2CAIpC,2BAA2B,sBA+F7B,CAAC;AAEF;;;;GAIG;AAEH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AACD,eAAO,MAAM,yBAAyB,GAAI,0BAGvC,8BAA8B,sBAMhC,CAAC"}
1
+ {"version":3,"file":"TearsheetHeaderActions.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeaderActions.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAc,eAAe,EAAY,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAKf;;;;GAIG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/E,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AACD,eAAO,MAAM,sBAAsB,oGAuGjC,CAAC;AAIH;;;;GAIG;AAEH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AACD,eAAO,MAAM,yBAAyB,GAAI,0BAGvC,8BAA8B,sBAMhC,CAAC"}
@@ -21,9 +21,10 @@ let _carbon_utilities = require("@carbon/utilities");
21
21
  * LICENSE file in the root directory of this source tree.
22
22
  */
23
23
  var import_classnames = /* @__PURE__ */ require_runtime.__toESM(require_index.default);
24
- const TearsheetHeaderActions = ({ className, children, menuButtonProps }) => {
24
+ const TearsheetHeaderActions = (0, react.forwardRef)(({ className, children, menuButtonProps }, ref) => {
25
25
  const containerRef = (0, react.useRef)(null);
26
26
  const offsetRef = (0, react.useRef)(null);
27
+ const menuButtonContainerRef = (0, react.useRef)(null);
27
28
  const [menuButtonVisibility, setMenuButtonVisibility] = (0, react.useState)(false);
28
29
  const [hiddenItems, setHiddenItems] = (0, react.useState)([]);
29
30
  const hasOtherChildType = (0, react.useRef)(false);
@@ -56,6 +57,7 @@ const TearsheetHeaderActions = ({ className, children, menuButtonProps }) => {
56
57
  ref: offsetRef,
57
58
  className: (0, import_classnames.default)(`${require_context.blockClass}__header-actions-menuButton`, { [`${require_context.blockClass}__header-actions-menuButton--hidden`]: hiddenItems.length === 0 })
58
59
  }, /* @__PURE__ */ react.default.createElement(_carbon_react.MenuButton, {
60
+ ref: menuButtonContainerRef,
59
61
  size: "sm",
60
62
  ...menuButtonProps
61
63
  }, hiddenItems.map((item) => {
@@ -68,7 +70,8 @@ const TearsheetHeaderActions = ({ className, children, menuButtonProps }) => {
68
70
  label: childProps.overflowItemLabel
69
71
  });
70
72
  }))));
71
- };
73
+ });
74
+ TearsheetHeaderActions.displayName = "TearsheetHeaderActions";
72
75
  const TearsheetHeaderActionItem = ({ children, className }) => {
73
76
  return /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-action-item ${className}` }, children);
74
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TearsheetHeaderContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeaderContent.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAIZ,SAAS,EAEV,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC;AAED,QAAA,MAAM,sBAAsB,oGA4G1B,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"TearsheetHeaderContent.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/TearsheetHeaderContent.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAIZ,SAAS,EAEV,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC;AAED,QAAA,MAAM,sBAAsB,oGA+G1B,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
@@ -24,9 +24,12 @@ var import_classnames = /* @__PURE__ */ require_runtime.__toESM(require_index.de
24
24
  const TearsheetHeaderContent = react.default.forwardRef((props, ref) => {
25
25
  const { children, label, title, description, headerActions, titleStart, titleEnd, ...rest } = props;
26
26
  const carbonPrefix = (0, _carbon_react.usePrefix)();
27
- const { isSm, onClose, decorator, closeIconDescription, hideCloseButton = false } = (0, react.useContext)(require_context.TearsheetContext);
27
+ const { isSm, onClose, decorator, closeIconDescription, hideCloseButton = false, titleId } = (0, react.useContext)(require_context.TearsheetContext);
28
28
  const normalizedDecorator = (0, react.isValidElement)(decorator) && decorator.type === _carbon_react.AILabel ? (0, react.cloneElement)(decorator, { size: "sm" }) : decorator;
29
- const headerContent = /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-content` }, label ? /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-label` }, label) : null, /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__content__title-wrapper` }, /* @__PURE__ */ react.default.createElement("h2", { className: (0, import_classnames.default)(`${require_context.blockClass}__header-title`) }, titleStart ? /* @__PURE__ */ react.default.createElement("span", { className: `${require_context.blockClass}__title-start` }, titleStart) : null, /* @__PURE__ */ react.default.createElement(require_TruncatedText.TruncatedText, {
29
+ const headerContent = /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-content` }, label ? /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-label` }, label) : null, /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__content__title-wrapper` }, /* @__PURE__ */ react.default.createElement("h2", {
30
+ className: (0, import_classnames.default)(`${require_context.blockClass}__header-title`),
31
+ id: titleId
32
+ }, titleStart ? /* @__PURE__ */ react.default.createElement("span", { className: `${require_context.blockClass}__title-start` }, titleStart) : null, /* @__PURE__ */ react.default.createElement(require_TruncatedText.TruncatedText, {
30
33
  id: `${require_context.blockClass}__header-title__truncatedText`,
31
34
  className: `${require_context.blockClass}__content__title`,
32
35
  align: "bottom",
@@ -34,7 +37,10 @@ const TearsheetHeaderContent = react.default.forwardRef((props, ref) => {
34
37
  value: title
35
38
  }), titleEnd ? /* @__PURE__ */ react.default.createElement("span", { className: `${require_context.blockClass}__title-end` }, titleEnd) : null)), /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-description` }, description), children && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-content--extra` }, children));
36
39
  const headerActionsElement = headerActions && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__header-actions` }, headerActions);
37
- const decoratorElement = decorator && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__decorator` }, normalizedDecorator);
40
+ const decoratorElement = decorator && /* @__PURE__ */ react.default.createElement("div", {
41
+ className: `${require_context.blockClass}__decorator`,
42
+ role: "complementary"
43
+ }, normalizedDecorator);
38
44
  const closeButtonElement = !hideCloseButton && /* @__PURE__ */ react.default.createElement("div", { className: `${require_context.blockClass}__close-button ${carbonPrefix}--modal-close-button` }, /* @__PURE__ */ react.default.createElement(_carbon_react.IconButton, {
39
45
  className: `${carbonPrefix}--modal-close`,
40
46
  label: closeIconDescription || "Close",
@@ -1 +1 @@
1
- {"version":3,"file":"StepTearsheet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tearsheet/next/_story-assets/StepTearsheet.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAC/D,OAAO,EAEL,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AAcjC,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,KAAK,SAAS,CAAC,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAC9C,iBAAiB,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,GAAI,kKAahC,KAAK,sBAuIP,CAAC"}
1
+ {"version":3,"file":"StepTearsheet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tearsheet/next/_story-assets/StepTearsheet.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AACzE,OAAO,EAEL,eAAe,EAEhB,MAAM,yBAAyB,CAAC;AAcjC,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,KAAK,SAAS,CAAC,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAC9C,iBAAiB,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,GAAI,kKAahC,KAAK,sBAsLP,CAAC"}
@@ -22,6 +22,7 @@ interface TearsheetContextType {
22
22
  decorator?: ReactNode;
23
23
  closeIconDescription?: string;
24
24
  hideCloseButton?: boolean;
25
+ titleId?: string;
25
26
  }
26
27
  export declare const TearsheetContext: import("react").Context<TearsheetContextType>;
27
28
  export declare const blockClass: string;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,SAAS,EAAyB,MAAM,OAAO,CAAC;AAGxE;;;;GAIG;AAEH,UAAU,oBAAoB;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AACD,eAAO,MAAM,gBAAgB,+CAQ3B,CAAC;AAEH,eAAO,MAAM,UAAU,QAAmC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/Tearsheet/next/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,SAAS,EAAyB,MAAM,OAAO,CAAC;AAGxE;;;;GAIG;AAEH,UAAU,oBAAoB;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,eAAO,MAAM,gBAAgB,+CAQ3B,CAAC;AAEH,eAAO,MAAM,UAAU,QAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePresence.d.ts","sourceRoot":"","sources":["../../../src/components/Tearsheet/usePresence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/E,eAAO,MAAM,WAAW,GACtB,KAAK,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,QAAQ,OAAO;IAgEb;;OAEG;;IAGH;;OAEG;;CAGN,CAAC"}
1
+ {"version":3,"file":"usePresence.d.ts","sourceRoot":"","sources":["../../../src/components/Tearsheet/usePresence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9D,eAAO,MAAM,WAAW,GACtB,KAAK,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,QAAQ,OAAO;IAgEb;;OAEG;;IAGH;;OAEG;;CAGN,CAAC"}
@@ -7,6 +7,7 @@
7
7
 
8
8
  require("../../_virtual/_rolldown/runtime.js");
9
9
  const require_settings = require("../../settings.js");
10
+ const require_useIsomorphicEffect = require("../../global/js/hooks/useIsomorphicEffect.js");
10
11
  let react = require("react");
11
12
  //#region src/components/Tearsheet/usePresence.ts
12
13
  /**
@@ -23,7 +24,7 @@ const usePresence = (ref, isOpen) => {
23
24
  const handleAnimationEnd = (0, react.useCallback)(() => {
24
25
  setExitState("finished");
25
26
  }, []);
26
- (0, react.useLayoutEffect)(() => {
27
+ require_useIsomorphicEffect.useIsomorphicEffect(() => {
27
28
  if (!ref.current || !isExiting) return;
28
29
  if (!("getAnimations" in ref.current)) {
29
30
  handleAnimationEnd();
@@ -108,6 +108,7 @@ declare namespace defaults {
108
108
  let CoachmarkOverlayElement: boolean;
109
109
  let CoachmarkOverlayElements: boolean;
110
110
  let CoachmarkStack: boolean;
111
+ let CoachmarkTagline: boolean;
111
112
  let Decorator: boolean;
112
113
  let DecoratorLink: boolean;
113
114
  let DecoratorSingleButton: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"package-settings.d.ts","sourceRoot":"","sources":["../../../src/global/js/package-settings.js"],"names":[],"mappings":"AA6MA,0DAEC;AAJD,gCAAiC,yBAAyB,CAAC;;;;;;;;IAarC,mFAMnB;IAEkB,sFAOlB;IAEiB,6EAEjB;IAED,8EAOC;IAEgB,gFAKhB;IAEiB,qDAIjB;IAEe,mDAIf;IAEiB,mDAKjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA1FH;;;;;;;EAqBE"}
1
+ {"version":3,"file":"package-settings.d.ts","sourceRoot":"","sources":["../../../src/global/js/package-settings.js"],"names":[],"mappings":"AA8MA,0DAEC;AAJD,gCAAiC,yBAAyB,CAAC;;;;;;;;IAarC,mFAMnB;IAEkB,sFAOlB;IAEiB,6EAEjB;IAED,8EAOC;IAEgB,gFAKhB;IAEiB,qDAIjB;IAEe,mDAIf;IAEiB,mDAKjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA1FH;;;;;;;EAqBE"}
@@ -96,6 +96,7 @@ const defaults = {
96
96
  CoachmarkOverlayElement: false,
97
97
  CoachmarkOverlayElements: false,
98
98
  CoachmarkStack: false,
99
+ CoachmarkTagline: false,
99
100
  Decorator: false,
100
101
  DecoratorLink: false,
101
102
  DecoratorSingleButton: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2025, 2025
2
+ * Copyright IBM Corp. 2025, 2026
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.
@@ -30,10 +30,16 @@ interface DraggableProps {
30
30
  }
31
31
  /**
32
32
  * Makes a given element draggable using a handle element.
33
- *@param draggable - object which accepts el and optional attributes handle,focusableInHandle,dragStep and shiftDragStep
33
+ * @param {object} draggable - Configuration object for draggable behavior
34
+ * @param {HTMLElement} draggable.el - The element to make draggable
35
+ * @param {HTMLElement} [draggable.dragHandle] - Optional handle element for dragging
36
+ * @param {boolean} [draggable.focusableDragHandle] - Whether the drag handle should be focusable
37
+ * @param {number} [draggable.dragStep] - Step size for keyboard dragging (default: 10)
38
+ * @param {number} [draggable.shiftDragStep] - Step size for keyboard dragging with Shift key (default: 50)
34
39
  */
35
40
  export declare const makeDraggable: ({ el, dragHandle, focusableDragHandle, dragStep, shiftDragStep, }: DraggableProps) => {
36
41
  cleanup: () => void;
42
+ init: () => void;
37
43
  };
38
44
  export {};
39
45
  //# sourceMappingURL=makeDraggable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeDraggable.d.ts","sourceRoot":"","sources":["../../../../../src/global/js/utils/makeDraggable/makeDraggable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,UAAU,cAAc;IACtB;;OAEG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,mEAM3B,cAAc;;CA0IhB,CAAC"}
1
+ {"version":3,"file":"makeDraggable.d.ts","sourceRoot":"","sources":["../../../../../src/global/js/utils/makeDraggable/makeDraggable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,UAAU,cAAc;IACtB;;OAEG;IACH,EAAE,EAAE,WAAW,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,mEAM3B,cAAc;;;CAqNhB,CAAC"}
@@ -8,7 +8,12 @@
8
8
  //#region src/global/js/utils/makeDraggable/makeDraggable.ts
9
9
  /**
10
10
  * Makes a given element draggable using a handle element.
11
- *@param draggable - object which accepts el and optional attributes handle,focusableInHandle,dragStep and shiftDragStep
11
+ * @param {object} draggable - Configuration object for draggable behavior
12
+ * @param {HTMLElement} draggable.el - The element to make draggable
13
+ * @param {HTMLElement} [draggable.dragHandle] - Optional handle element for dragging
14
+ * @param {boolean} [draggable.focusableDragHandle] - Whether the drag handle should be focusable
15
+ * @param {number} [draggable.dragStep] - Step size for keyboard dragging (default: 10)
16
+ * @param {number} [draggable.shiftDragStep] - Step size for keyboard dragging with Shift key (default: 50)
12
17
  */
13
18
  const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDragStep }) => {
14
19
  if (dragHandle) {
@@ -20,6 +25,45 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
20
25
  let currentY = 0;
21
26
  let initialMouseX = 0;
22
27
  let initialMouseY = 0;
28
+ let baseMatrix = null;
29
+ /**
30
+ * Syncs position and extracts base matrix from computed style.
31
+ * Reads from getComputedStyle() to include all transform sources (inline, classes, etc.).
32
+ */
33
+ const syncTransformState = () => {
34
+ const transformString = window.getComputedStyle(el).transform;
35
+ if (!transformString || transformString === "none") {
36
+ currentX = 0;
37
+ currentY = 0;
38
+ baseMatrix = null;
39
+ return;
40
+ }
41
+ const matrix = new DOMMatrix(transformString);
42
+ currentX = matrix.m41;
43
+ currentY = matrix.m42;
44
+ if (matrix.a === 1 && matrix.b === 0 && matrix.c === 0 && matrix.d === 1 && matrix.e === 0 && matrix.f === 0) baseMatrix = null;
45
+ else baseMatrix = new DOMMatrix([
46
+ matrix.a,
47
+ matrix.b,
48
+ matrix.c,
49
+ matrix.d,
50
+ 0,
51
+ 0
52
+ ]);
53
+ };
54
+ syncTransformState();
55
+ /**
56
+ * Applies transform by combining translation with base matrix using matrix multiplication.
57
+ */
58
+ const applyTransform = (x, y) => {
59
+ if (baseMatrix) {
60
+ const translationMatrix = new DOMMatrix();
61
+ translationMatrix.m41 = x;
62
+ translationMatrix.m42 = y;
63
+ const combined = translationMatrix.multiply(baseMatrix);
64
+ el.style.transform = combined.toString();
65
+ } else el.style.transform = `translate(${x}px, ${y}px)`;
66
+ };
23
67
  const dispatch = (type, detail) => {
24
68
  const eventInit = {
25
69
  detail,
@@ -28,13 +72,11 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
28
72
  el.dispatchEvent(new CustomEvent(type, eventInit));
29
73
  };
30
74
  const onKeyDown = (e) => {
31
- if (e.key === "Enter") {
75
+ if (e.key === "Enter" || e.key === " ") {
76
+ e.preventDefault();
32
77
  isDragging = !isDragging;
33
78
  if (isDragging) {
34
- const style = window.getComputedStyle(el);
35
- const matrix = new DOMMatrix(style.transform);
36
- currentX = matrix.m41;
37
- currentY = matrix.m42;
79
+ syncTransformState();
38
80
  dispatch("dragstart", { keyboard: true });
39
81
  } else dispatch("dragend", { keyboard: true });
40
82
  }
@@ -47,19 +89,35 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
47
89
  break;
48
90
  case "ArrowLeft":
49
91
  currentX -= distance;
50
- el.style.transform = `translate(${currentX}px, ${currentY}px)`;
92
+ applyTransform(currentX, currentY);
93
+ dispatch("dragmove", {
94
+ direction: "left",
95
+ distance
96
+ });
51
97
  break;
52
98
  case "ArrowRight":
53
99
  currentX += distance;
54
- el.style.transform = `translate(${currentX}px, ${currentY}px)`;
100
+ applyTransform(currentX, currentY);
101
+ dispatch("dragmove", {
102
+ direction: "right",
103
+ distance
104
+ });
55
105
  break;
56
106
  case "ArrowUp":
57
107
  currentY -= distance;
58
- el.style.transform = `translate(${currentX}px, ${currentY}px)`;
108
+ applyTransform(currentX, currentY);
109
+ dispatch("dragmove", {
110
+ direction: "up",
111
+ distance
112
+ });
59
113
  break;
60
114
  case "ArrowDown":
61
115
  currentY += distance;
62
- el.style.transform = `translate(${currentX}px, ${currentY}px)`;
116
+ applyTransform(currentX, currentY);
117
+ dispatch("dragmove", {
118
+ direction: "down",
119
+ distance
120
+ });
63
121
  break;
64
122
  }
65
123
  };
@@ -67,10 +125,7 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
67
125
  const target = e.target;
68
126
  if (!(target instanceof Node)) return;
69
127
  if (!(dragHandle ? dragHandle.contains(target) : el.contains(target))) return;
70
- const style = window.getComputedStyle(el);
71
- const matrix = new DOMMatrix(style.transform);
72
- currentX = matrix.m41;
73
- currentY = matrix.m42;
128
+ syncTransformState();
74
129
  initialMouseX = e.clientX;
75
130
  initialMouseY = e.clientY;
76
131
  isDragging = true;
@@ -82,10 +137,14 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
82
137
  if (!isDragging) return;
83
138
  const dx = e.clientX - initialMouseX;
84
139
  const dy = e.clientY - initialMouseY;
85
- el.style.transform = `translate(${currentX + dx}px, ${currentY + dy}px)`;
140
+ applyTransform(currentX + dx, currentY + dy);
86
141
  };
87
- const onMouseUp = () => {
142
+ const onMouseUp = (e) => {
88
143
  if (!isDragging) return;
144
+ const dx = e.clientX - initialMouseX;
145
+ const dy = e.clientY - initialMouseY;
146
+ currentX += dx;
147
+ currentY += dy;
89
148
  isDragging = false;
90
149
  dispatch("dragend", { mouse: true });
91
150
  document.removeEventListener("mousemove", onMouseMove);
@@ -100,7 +159,18 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
100
159
  document.removeEventListener("mousemove", onMouseMove);
101
160
  document.removeEventListener("mouseup", onMouseUp);
102
161
  };
103
- return { cleanup: draggableCleanup };
162
+ /**
163
+ * Re-initialize the draggable position from the element's current computed transform.
164
+ * Call this if the element has been repositioned externally (e.g., via CSS animation,
165
+ * class changes, or other scripts) to prevent position jumps on the next drag.
166
+ */
167
+ const init = () => {
168
+ syncTransformState();
169
+ };
170
+ return {
171
+ cleanup: draggableCleanup,
172
+ init
173
+ };
104
174
  };
105
175
  //#endregion
106
176
  exports.makeDraggable = makeDraggable;
package/lib/settings.d.ts CHANGED
@@ -94,6 +94,7 @@ export const pkg: {
94
94
  CoachmarkOverlayElement: boolean;
95
95
  CoachmarkOverlayElements: boolean;
96
96
  CoachmarkStack: boolean;
97
+ CoachmarkTagline: boolean;
97
98
  Decorator: boolean;
98
99
  DecoratorLink: boolean;
99
100
  DecoratorSingleButton: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.js"],"names":[],"mappings":";;;;AAmGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA+B"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.js"],"names":[],"mappings":";;;;AAmGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA+B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.92.1",
4
+ "version": "2.93.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -66,7 +66,7 @@
66
66
  "@babel/preset-env": "^7.26.9",
67
67
  "@babel/preset-react": "^7.26.3",
68
68
  "@babel/preset-typescript": "^7.26.0",
69
- "@carbon/ibm-products-utilities": "1.1.0",
69
+ "@carbon/ibm-products-utilities": "1.2.0",
70
70
  "@carbon/styles": "^1.106.0",
71
71
  "@figma/code-connect": "^1.4.0",
72
72
  "@ibm/telemetry-js-config-generator": "^2.0.1",
@@ -79,7 +79,7 @@
79
79
  "@types/react-table": "^7.7.20",
80
80
  "@vitejs/plugin-react": "^5.0.0",
81
81
  "babel-plugin-dev-expression": "^0.2.3",
82
- "babel-preset-ibm-cloud-cognitive": "^0.50.0",
82
+ "babel-preset-ibm-cloud-cognitive": "^0.51.0",
83
83
  "change-case": "5.4.4",
84
84
  "classnames": "^2.5.1",
85
85
  "copyfiles": "^2.4.1",
@@ -87,7 +87,7 @@
87
87
  "fs-extra": "^11.3.0",
88
88
  "glob": "^13.0.0",
89
89
  "jest": "^29.7.0",
90
- "jest-config-ibm-cloud-cognitive": "^1.51.0",
90
+ "jest-config-ibm-cloud-cognitive": "^1.52.0",
91
91
  "jest-environment-jsdom": "^29.7.0",
92
92
  "namor": "^1.1.2",
93
93
  "npm-run-all2": "^8.0.0",
@@ -105,9 +105,9 @@
105
105
  },
106
106
  "dependencies": {
107
107
  "@babel/runtime": "^7.26.10",
108
- "@carbon-labs/react-resizer": "^0.24.0",
108
+ "@carbon-labs/react-resizer": "^0.25.0",
109
109
  "@carbon/feature-flags": "^1.3.0",
110
- "@carbon/ibm-products-styles": "^2.88.0",
110
+ "@carbon/ibm-products-styles": "^2.89.0",
111
111
  "@carbon/telemetry": "^0.1.0",
112
112
  "@carbon/utilities": "^0.19.0",
113
113
  "@carbon/utilities-react": "0.22.0",
@@ -131,5 +131,5 @@
131
131
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0",
132
132
  "react-is": "^16.13.1 || ^17.0.2 || ^18.3.1 || ^19.0.0"
133
133
  },
134
- "gitHead": "f1ec2fe96cec5ac06708123a7ec9f5a2f9612313"
134
+ "gitHead": "15847d5d8a78cd5d70ae083f9faf8126112004da"
135
135
  }
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright IBM Corp. 2023, 2024
2
+ // Copyright IBM Corp. 2023, 2026
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.
@@ -8,3 +8,4 @@
8
8
  // Import any Carbon component styles used from Coachmark in this file.
9
9
  // Coachmark uses the following Carbon components:
10
10
  @use '@carbon/styles/scss/components/button';
11
+ @use '@carbon/styles/scss/components/popover';
@@ -0,0 +1,53 @@
1
+ //
2
+ // Copyright IBM Corp. 2026
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
+ // Standard imports.
9
+ @use '../../global/styles/project-settings' as c4p-settings;
10
+ @use '../../global/styles/mixins';
11
+ @use '@carbon/styles/scss/config' as carbon-config;
12
+ @use '@carbon/styles/scss/spacing' as *;
13
+ @use '@carbon/styles/scss/theme' as *;
14
+
15
+ // The block part of our conventional BEM class names (blockClass__E--M).
16
+ $block-class-next: #{c4p-settings.$pkg-prefix}--coachmark__next;
17
+
18
+ @include mixins.block-wrap(#{c4p-settings.$pkg-prefix}--coachmark__next) {
19
+ &.#{$block-class-next}--floating {
20
+ span:has(> div > .#{$block-class-next}--content-header--drag-icon) {
21
+ margin-inline-end: auto;
22
+ }
23
+ }
24
+ .#{$block-class-next}--content-header--is-dragging {
25
+ border-radius: 0;
26
+ box-shadow: 0 0 0 $spacing-02 $icon-inverse;
27
+ outline: $spacing-01 solid $background-inverse;
28
+ }
29
+
30
+ .#{$block-class-next}--coachmark-content {
31
+ .#{$block-class-next}--content-header {
32
+ display: flex;
33
+ justify-content: flex-end;
34
+ }
35
+
36
+ .#{$block-class-next}--content-header--drag-icon,
37
+ .#{$block-class-next}--content-header .#{carbon-config.$prefix}--btn {
38
+ color: $icon-inverse;
39
+
40
+ .#{carbon-config.$prefix}--btn__icon,
41
+ svg {
42
+ color: $icon-inverse;
43
+ fill: $icon-inverse;
44
+ }
45
+ }
46
+
47
+ .#{$block-class-next}--content-body {
48
+ display: flex;
49
+ flex-direction: column;
50
+ padding: $spacing-01 $spacing-05 0;
51
+ }
52
+ }
53
+ }
@@ -1,8 +1,11 @@
1
1
  //
2
- // Copyright IBM Corp. 2023, 2024
2
+ // Copyright IBM Corp. 2023, 2026
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
7
 
8
8
  @use './coachmark';
9
+ @use './coachmark-tagline';
10
+ @use './coachmark-beacon';
11
+ @use './coachmark_next';