@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 +45 -1
- package/dist/charts.js.map +1 -1
- package/dist/charts.modern.module.js +46 -2
- package/dist/charts.modern.module.js.map +1 -1
- package/dist/charts.umd.js +207 -6
- package/dist/charts.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/CarbonChart/CarbonChart.test.js +8 -3
- package/src/components/CarbonChart/CarbonChart.tsx +56 -1
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 })),
|