@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ComboChart, ScatterChart, MeterChart, HistogramChart, GaugeChart, BulletChart, BubbleChart, BoxplotChart, RadarChart, PieChart, LollipopChart, LineChart, DonutChart, StackedBarChart, GroupedBarChart, SimpleBarChart, StackedAreaChart, AreaChart } from '@carbon/charts-react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
|
-
import { Table, TableHead, TableRow, TableHeaderCell, TableBody, TableCell, I18nContext, Tooltip, IconButton, ButtonVariant, Dropdown, DropdownButton, DropdownContent, ModalSize, ThemeContext, Modal, Button, TypographyVisualStyle, Heading, useIsInverse, DropdownMenuItem, DropdownDivider } from 'react-magma-dom';
|
|
4
|
+
import { Table, TableHead, TableRow, TableHeaderCell, TableBody, TableCell, I18nContext, Tooltip, IconButton, ButtonVariant, Dropdown, DropdownButton, DropdownContent, ModalSize, ThemeContext, Modal, Button, TypographyVisualStyle, Heading, useIsInverse, VisuallyHidden, Announce, DropdownMenuItem, DropdownDivider } from 'react-magma-dom';
|
|
5
5
|
import { TableIcon, FullscreenExitIcon, FullscreenIcon, MoreVertIcon } from 'react-magma-icons';
|
|
6
6
|
|
|
7
7
|
/******************************************************************************
|
|
@@ -1482,7 +1482,9 @@ var CarbonChart = React.forwardRef(function (props, ref) {
|
|
|
1482
1482
|
var internalRef = React.useRef(null);
|
|
1483
1483
|
var _a = React.useState(false), isTableOpen = _a[0], setIsTableOpen = _a[1];
|
|
1484
1484
|
var _b = React.useState(false), isFullscreen = _b[0], setIsFullscreen = _b[1];
|
|
1485
|
+
var _c = React.useState(''), legendAnnouncement = _c[0], setLegendAnnouncement = _c[1];
|
|
1485
1486
|
var lastTableTriggerRef = React.useRef(null);
|
|
1487
|
+
var legendAnnouncedRef = React.useRef(false);
|
|
1486
1488
|
var mergedRef = React.useCallback(function (node) {
|
|
1487
1489
|
internalRef.current = node;
|
|
1488
1490
|
if (typeof ref === 'function') {
|
|
@@ -1563,8 +1565,9 @@ var CarbonChart = React.forwardRef(function (props, ref) {
|
|
|
1563
1565
|
var parent = legend.parentElement;
|
|
1564
1566
|
if ((parent === null || parent === void 0 ? void 0 : parent.tagName) === 'FIELDSET') {
|
|
1565
1567
|
var existingCaption = parent.querySelector('legend');
|
|
1566
|
-
if (existingCaption)
|
|
1568
|
+
if (existingCaption && existingCaption.textContent !== legendLabel) {
|
|
1567
1569
|
existingCaption.textContent = legendLabel;
|
|
1570
|
+
}
|
|
1568
1571
|
return;
|
|
1569
1572
|
}
|
|
1570
1573
|
var fieldset = document.createElement('fieldset');
|
|
@@ -1646,9 +1649,50 @@ var CarbonChart = React.forwardRef(function (props, ref) {
|
|
|
1646
1649
|
}, 0);
|
|
1647
1650
|
return function () { return clearTimeout(timer); };
|
|
1648
1651
|
}, [type, dataSet]);
|
|
1652
|
+
React.useEffect(function () {
|
|
1653
|
+
var wrapper = internalRef.current;
|
|
1654
|
+
if (!wrapper)
|
|
1655
|
+
return;
|
|
1656
|
+
var observer = new MutationObserver(function () {
|
|
1657
|
+
var allItems = wrapper.querySelectorAll('.legend-item:not(.additional)');
|
|
1658
|
+
if (allItems.length <= 1)
|
|
1659
|
+
return;
|
|
1660
|
+
var activeLabels = [];
|
|
1661
|
+
allItems.forEach(function (el) {
|
|
1662
|
+
var _a;
|
|
1663
|
+
var checkbox = el.querySelector('.checkbox');
|
|
1664
|
+
var label = el.querySelector('p');
|
|
1665
|
+
if ((checkbox === null || checkbox === void 0 ? void 0 : checkbox.getAttribute('aria-checked')) === 'true' && label) {
|
|
1666
|
+
activeLabels.push(((_a = label.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '');
|
|
1667
|
+
}
|
|
1668
|
+
});
|
|
1669
|
+
if (activeLabels.length === 1) {
|
|
1670
|
+
if (!legendAnnouncedRef.current) {
|
|
1671
|
+
legendAnnouncedRef.current = true;
|
|
1672
|
+
setLegendAnnouncement("Only ".concat(activeLabels[0], " is selected"));
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
else if (activeLabels.length === allItems.length) {
|
|
1676
|
+
legendAnnouncedRef.current = false;
|
|
1677
|
+
setLegendAnnouncement('All items selected');
|
|
1678
|
+
}
|
|
1679
|
+
else {
|
|
1680
|
+
legendAnnouncedRef.current = false;
|
|
1681
|
+
setLegendAnnouncement('');
|
|
1682
|
+
}
|
|
1683
|
+
});
|
|
1684
|
+
observer.observe(wrapper, {
|
|
1685
|
+
subtree: true,
|
|
1686
|
+
attributes: true,
|
|
1687
|
+
attributeFilter: ['aria-checked'],
|
|
1688
|
+
});
|
|
1689
|
+
return function () { return observer.disconnect(); };
|
|
1690
|
+
}, [type, dataSet]);
|
|
1649
1691
|
var groupsLength = Object.keys(buildColors()).length;
|
|
1650
1692
|
var showTable = (chartToolbar === null || chartToolbar === void 0 ? void 0 : chartToolbar.showAsTable) !== false;
|
|
1651
1693
|
return (React.createElement(FullscreenRoot, { ref: mergedRef, isInverse: isInverse, theme: theme },
|
|
1694
|
+
React.createElement(VisuallyHidden, null,
|
|
1695
|
+
React.createElement(Announce, null, legendAnnouncement)),
|
|
1652
1696
|
React.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),
|
|
1653
1697
|
React.createElement(ChartContentWrapper, null,
|
|
1654
1698
|
chartToolbar && (React.createElement(CarbonChartToolbar, { config: chartToolbar, dataSet: dataSet, isInverse: isInverse, isTableOpen: isTableOpen, isFullscreen: isFullscreen, onOpenTable: openTableModal, onToggleFullscreen: toggleFullscreen, theme: theme, title: chartTitle, wrapperRef: internalRef })),
|