@react-magma/charts 15.0.0-rc.2 → 15.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/charts.js CHANGED
@@ -1503,7 +1503,9 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
1503
1503
  var internalRef = React__namespace.useRef(null);
1504
1504
  var _a = React__namespace.useState(false), isTableOpen = _a[0], setIsTableOpen = _a[1];
1505
1505
  var _b = React__namespace.useState(false), isFullscreen = _b[0], setIsFullscreen = _b[1];
1506
+ var _c = React__namespace.useState(''), legendAnnouncement = _c[0], setLegendAnnouncement = _c[1];
1506
1507
  var lastTableTriggerRef = React__namespace.useRef(null);
1508
+ var legendAnnouncedRef = React__namespace.useRef(false);
1507
1509
  var mergedRef = React__namespace.useCallback(function (node) {
1508
1510
  internalRef.current = node;
1509
1511
  if (typeof ref === 'function') {
@@ -1584,8 +1586,9 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
1584
1586
  var parent = legend.parentElement;
1585
1587
  if ((parent === null || parent === void 0 ? void 0 : parent.tagName) === 'FIELDSET') {
1586
1588
  var existingCaption = parent.querySelector('legend');
1587
- if (existingCaption)
1589
+ if (existingCaption && existingCaption.textContent !== legendLabel) {
1588
1590
  existingCaption.textContent = legendLabel;
1591
+ }
1589
1592
  return;
1590
1593
  }
1591
1594
  var fieldset = document.createElement('fieldset');
@@ -1667,9 +1670,50 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
1667
1670
  }, 0);
1668
1671
  return function () { return clearTimeout(timer); };
1669
1672
  }, [type, dataSet]);
1673
+ React__namespace.useEffect(function () {
1674
+ var wrapper = internalRef.current;
1675
+ if (!wrapper)
1676
+ return;
1677
+ var observer = new MutationObserver(function () {
1678
+ var allItems = wrapper.querySelectorAll('.legend-item:not(.additional)');
1679
+ if (allItems.length <= 1)
1680
+ return;
1681
+ var activeLabels = [];
1682
+ allItems.forEach(function (el) {
1683
+ var _a;
1684
+ var checkbox = el.querySelector('.checkbox');
1685
+ var label = el.querySelector('p');
1686
+ if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.getAttribute('aria-checked')) === 'true' && label) {
1687
+ activeLabels.push(((_a = label.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '');
1688
+ }
1689
+ });
1690
+ if (activeLabels.length === 1) {
1691
+ if (!legendAnnouncedRef.current) {
1692
+ legendAnnouncedRef.current = true;
1693
+ setLegendAnnouncement("Only ".concat(activeLabels[0], " is selected"));
1694
+ }
1695
+ }
1696
+ else if (activeLabels.length === allItems.length) {
1697
+ legendAnnouncedRef.current = false;
1698
+ setLegendAnnouncement('All items selected');
1699
+ }
1700
+ else {
1701
+ legendAnnouncedRef.current = false;
1702
+ setLegendAnnouncement('');
1703
+ }
1704
+ });
1705
+ observer.observe(wrapper, {
1706
+ subtree: true,
1707
+ attributes: true,
1708
+ attributeFilter: ['aria-checked'],
1709
+ });
1710
+ return function () { return observer.disconnect(); };
1711
+ }, [type, dataSet]);
1670
1712
  var groupsLength = Object.keys(buildColors()).length;
1671
1713
  var showTable = (chartToolbar === null || chartToolbar === void 0 ? void 0 : chartToolbar.showAsTable) !== false;
1672
1714
  return (React__namespace.createElement(FullscreenRoot, { ref: mergedRef, isInverse: isInverse, theme: theme },
1715
+ React__namespace.createElement(reactMagmaDom.VisuallyHidden, null,
1716
+ React__namespace.createElement(reactMagmaDom.Announce, null, legendAnnouncement)),
1673
1717
  React__namespace.createElement(CarbonChartWrapper, __assign({ "data-testid": testId, isInverse: isInverse, theme: theme, className: "carbon-chart-wrapper".concat(chartToolbar ? ' has-magma-toolbar' : ''), groupsLength: groupsLength < 6 ? groupsLength : 14, role: "region", "aria-label": ariaLabel || chartTitle, "aria-roledescription": "chart" }, rest),
1674
1718
  React__namespace.createElement(ChartContentWrapper, null,
1675
1719
  chartToolbar && (React__namespace.createElement(CarbonChartToolbar, { config: chartToolbar, dataSet: dataSet, isInverse: isInverse, isTableOpen: isTableOpen, isFullscreen: isFullscreen, onOpenTable: openTableModal, onToggleFullscreen: toggleFullscreen, theme: theme, title: chartTitle, wrapperRef: internalRef })),