@react-magma/charts 15.0.0-rc.2 → 15.0.0-rc.4
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 +47 -2
- package/dist/charts.js.map +1 -1
- package/dist/charts.modern.module.js +48 -3
- package/dist/charts.modern.module.js.map +1 -1
- package/dist/charts.umd.js +209 -7
- package/dist/charts.umd.js.map +1 -1
- package/dist/components/CarbonChart/CarbonChart.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/CarbonChart/CarbonChart.test.js +29 -3
- package/src/components/CarbonChart/CarbonChart.tsx +66 -2
- package/src/components/CarbonChart/CarbonChartBar.stories.tsx +9 -2
package/dist/charts.js
CHANGED
|
@@ -1467,6 +1467,7 @@ function downloadImage(wrapperRef, title, format) {
|
|
|
1467
1467
|
img.src = url;
|
|
1468
1468
|
}
|
|
1469
1469
|
function CarbonChartToolbar(_a) {
|
|
1470
|
+
var _b;
|
|
1470
1471
|
var config = _a.config, dataSet = _a.dataSet, isInverse = _a.isInverse, isTableOpen = _a.isTableOpen, isFullscreen = _a.isFullscreen, onOpenTable = _a.onOpenTable, onToggleFullscreen = _a.onToggleFullscreen, theme = _a.theme, title = _a.title, wrapperRef = _a.wrapperRef;
|
|
1471
1472
|
var t = useChartToolbarI18n();
|
|
1472
1473
|
var showTable = config.showAsTable !== false;
|
|
@@ -1489,7 +1490,7 @@ function CarbonChartToolbar(_a) {
|
|
|
1489
1490
|
React__namespace.createElement(reactMagmaDom.DropdownDivider, null),
|
|
1490
1491
|
config.moreOptions))));
|
|
1491
1492
|
return (React__namespace.createElement(ToolbarWrapper, { isFullscreen: isFullscreen, isInverse: isInverse, theme: theme },
|
|
1492
|
-
React__namespace.createElement(ChartTitle, { isInverse: isInverse, theme: theme }, resolvedTitle),
|
|
1493
|
+
React__namespace.createElement(ChartTitle, { as: "h".concat((_b = config.titleLevel) !== null && _b !== void 0 ? _b : 2), isInverse: isInverse, theme: theme }, resolvedTitle),
|
|
1493
1494
|
React__namespace.createElement(ToolbarActions, { theme: theme },
|
|
1494
1495
|
showTable && (React__namespace.createElement(ChartTableButton, { ariaLabel: resolvedTitle, icon: React__namespace.createElement(reactMagmaIcons.TableIcon, { size: 20 }), isInverse: isInverse, isTableOpen: isTableOpen, onClick: onOpenTable })),
|
|
1495
1496
|
showFullscreen && (React__namespace.createElement(ChartFullscreenButton, { ariaLabel: "".concat(isFullscreen ? 'Exit' : 'View', " ").concat(resolvedTitle, " full screen"), icon: React__namespace.createElement(reactMagmaIcons.FullscreenIcon, { size: 20 }), exitIcon: React__namespace.createElement(reactMagmaIcons.FullscreenExitIcon, { size: 20 }), isInverse: isInverse, isFullscreen: isFullscreen, onClick: onToggleFullscreen })),
|
|
@@ -1503,7 +1504,9 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
|
|
|
1503
1504
|
var internalRef = React__namespace.useRef(null);
|
|
1504
1505
|
var _a = React__namespace.useState(false), isTableOpen = _a[0], setIsTableOpen = _a[1];
|
|
1505
1506
|
var _b = React__namespace.useState(false), isFullscreen = _b[0], setIsFullscreen = _b[1];
|
|
1507
|
+
var _c = React__namespace.useState(''), legendAnnouncement = _c[0], setLegendAnnouncement = _c[1];
|
|
1506
1508
|
var lastTableTriggerRef = React__namespace.useRef(null);
|
|
1509
|
+
var legendAnnouncedRef = React__namespace.useRef(false);
|
|
1507
1510
|
var mergedRef = React__namespace.useCallback(function (node) {
|
|
1508
1511
|
internalRef.current = node;
|
|
1509
1512
|
if (typeof ref === 'function') {
|
|
@@ -1584,8 +1587,9 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
|
|
|
1584
1587
|
var parent = legend.parentElement;
|
|
1585
1588
|
if ((parent === null || parent === void 0 ? void 0 : parent.tagName) === 'FIELDSET') {
|
|
1586
1589
|
var existingCaption = parent.querySelector('legend');
|
|
1587
|
-
if (existingCaption)
|
|
1590
|
+
if (existingCaption && existingCaption.textContent !== legendLabel) {
|
|
1588
1591
|
existingCaption.textContent = legendLabel;
|
|
1592
|
+
}
|
|
1589
1593
|
return;
|
|
1590
1594
|
}
|
|
1591
1595
|
var fieldset = document.createElement('fieldset');
|
|
@@ -1667,9 +1671,50 @@ var CarbonChart = React__namespace.forwardRef(function (props, ref) {
|
|
|
1667
1671
|
}, 0);
|
|
1668
1672
|
return function () { return clearTimeout(timer); };
|
|
1669
1673
|
}, [type, dataSet]);
|
|
1674
|
+
React__namespace.useEffect(function () {
|
|
1675
|
+
var wrapper = internalRef.current;
|
|
1676
|
+
if (!wrapper)
|
|
1677
|
+
return;
|
|
1678
|
+
var observer = new MutationObserver(function () {
|
|
1679
|
+
var allItems = wrapper.querySelectorAll('.legend-item:not(.additional)');
|
|
1680
|
+
if (allItems.length <= 1)
|
|
1681
|
+
return;
|
|
1682
|
+
var activeLabels = [];
|
|
1683
|
+
allItems.forEach(function (el) {
|
|
1684
|
+
var _a;
|
|
1685
|
+
var checkbox = el.querySelector('.checkbox');
|
|
1686
|
+
var label = el.querySelector('p');
|
|
1687
|
+
if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.getAttribute('aria-checked')) === 'true' && label) {
|
|
1688
|
+
activeLabels.push(((_a = label.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '');
|
|
1689
|
+
}
|
|
1690
|
+
});
|
|
1691
|
+
if (activeLabels.length === 1) {
|
|
1692
|
+
if (!legendAnnouncedRef.current) {
|
|
1693
|
+
legendAnnouncedRef.current = true;
|
|
1694
|
+
setLegendAnnouncement("Only ".concat(activeLabels[0], " is selected"));
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
else if (activeLabels.length === allItems.length) {
|
|
1698
|
+
legendAnnouncedRef.current = false;
|
|
1699
|
+
setLegendAnnouncement('All items selected');
|
|
1700
|
+
}
|
|
1701
|
+
else {
|
|
1702
|
+
legendAnnouncedRef.current = false;
|
|
1703
|
+
setLegendAnnouncement('');
|
|
1704
|
+
}
|
|
1705
|
+
});
|
|
1706
|
+
observer.observe(wrapper, {
|
|
1707
|
+
subtree: true,
|
|
1708
|
+
attributes: true,
|
|
1709
|
+
attributeFilter: ['aria-checked'],
|
|
1710
|
+
});
|
|
1711
|
+
return function () { return observer.disconnect(); };
|
|
1712
|
+
}, [type, dataSet]);
|
|
1670
1713
|
var groupsLength = Object.keys(buildColors()).length;
|
|
1671
1714
|
var showTable = (chartToolbar === null || chartToolbar === void 0 ? void 0 : chartToolbar.showAsTable) !== false;
|
|
1672
1715
|
return (React__namespace.createElement(FullscreenRoot, { ref: mergedRef, isInverse: isInverse, theme: theme },
|
|
1716
|
+
React__namespace.createElement(reactMagmaDom.VisuallyHidden, null,
|
|
1717
|
+
React__namespace.createElement(reactMagmaDom.Announce, null, legendAnnouncement)),
|
|
1673
1718
|
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
1719
|
React__namespace.createElement(ChartContentWrapper, null,
|
|
1675
1720
|
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 })),
|