@redsift/dashboard 11.6.0-muiv5-alpha.4 → 11.6.0-muiv5-alpha.6

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 (91) hide show
  1. package/_internal/ChartEmptyState.d.ts +3 -0
  2. package/{components/ChartEmptyState/types.d.ts → _internal/ChartEmptyState.d2.ts} +4 -1
  3. package/_internal/ChartEmptyState.js +2 -0
  4. package/_internal/ChartEmptyState.js.map +1 -0
  5. package/{components/ChartEmptyState/ChartEmptyState.js → _internal/ChartEmptyState2.js} +34 -3
  6. package/_internal/ChartEmptyState2.js.map +1 -0
  7. package/_internal/CrossfilterRegistry.d.ts +9 -0
  8. package/_internal/CrossfilterRegistry.js +2 -0
  9. package/_internal/CrossfilterRegistry.js.map +1 -0
  10. package/{components/CrossfilterRegistry/CrossfilterRegistry.js → _internal/CrossfilterRegistry2.js} +2 -2
  11. package/_internal/CrossfilterRegistry2.js.map +1 -0
  12. package/_internal/Dashboard.d.ts +7 -0
  13. package/_internal/Dashboard.js +4 -0
  14. package/_internal/Dashboard.js.map +1 -0
  15. package/{components/Dashboard/reducer.js → _internal/Dashboard2.js} +44 -4
  16. package/_internal/Dashboard2.js.map +1 -0
  17. package/_internal/PdfExportButton.d.ts +3 -0
  18. package/{components/PdfExportButton/types.d.ts → _internal/PdfExportButton.d2.ts} +4 -2
  19. package/_internal/PdfExportButton.js +2 -0
  20. package/_internal/PdfExportButton.js.map +1 -0
  21. package/_internal/PdfExportButton2.js +417 -0
  22. package/_internal/PdfExportButton2.js.map +1 -0
  23. package/_internal/TimeSeriesBarChart.d.ts +5 -0
  24. package/{components/TimeSeriesBarChart/types.d.ts → _internal/TimeSeriesBarChart.d2.ts} +5 -3
  25. package/_internal/TimeSeriesBarChart.js +2 -0
  26. package/_internal/TimeSeriesBarChart.js.map +1 -0
  27. package/{components/TimeSeriesBarChart/TimeSeriesBarChart.js → _internal/TimeSeriesBarChart2.js} +120 -11
  28. package/_internal/TimeSeriesBarChart2.js.map +1 -0
  29. package/_internal/WithFilters.d.ts +4 -0
  30. package/{components/WithFilters/types.d.ts → _internal/WithFilters.d2.ts} +5 -3
  31. package/_internal/WithFilters.js +2 -0
  32. package/_internal/WithFilters.js.map +1 -0
  33. package/_internal/WithFilters2.js +701 -0
  34. package/_internal/WithFilters2.js.map +1 -0
  35. package/{_virtual/_rollupPluginBabelHelpers.js → _internal/context.js} +11 -2
  36. package/_internal/context.js.map +1 -0
  37. package/{components/Dashboard/types.d.ts → _internal/reducer.d.ts} +11 -3
  38. package/{types.d.ts → _internal/types.d.ts} +1 -1
  39. package/{components/Dashboard → _internal}/types.js +1 -1
  40. package/_internal/types.js.map +1 -0
  41. package/index.d.ts +19 -14
  42. package/index.js +15 -11
  43. package/index.js.map +1 -1
  44. package/package.json +2 -2
  45. package/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  46. package/components/ChartEmptyState/ChartEmptyState.d.ts +0 -6
  47. package/components/ChartEmptyState/ChartEmptyState.js.map +0 -1
  48. package/components/ChartEmptyState/styles.js +0 -35
  49. package/components/ChartEmptyState/styles.js.map +0 -1
  50. package/components/CrossfilterRegistry/CrossfilterRegistry.js.map +0 -1
  51. package/components/Dashboard/Dashboard.d.ts +0 -6
  52. package/components/Dashboard/Dashboard.js +0 -46
  53. package/components/Dashboard/Dashboard.js.map +0 -1
  54. package/components/Dashboard/context.d.ts +0 -7
  55. package/components/Dashboard/context.js +0 -11
  56. package/components/Dashboard/context.js.map +0 -1
  57. package/components/Dashboard/reducer.d.ts +0 -5
  58. package/components/Dashboard/reducer.js.map +0 -1
  59. package/components/Dashboard/types.js.map +0 -1
  60. package/components/PdfExportButton/PdfDocument.js +0 -173
  61. package/components/PdfExportButton/PdfDocument.js.map +0 -1
  62. package/components/PdfExportButton/PdfExportButton.d.ts +0 -6
  63. package/components/PdfExportButton/PdfExportButton.js +0 -110
  64. package/components/PdfExportButton/PdfExportButton.js.map +0 -1
  65. package/components/PdfExportButton/styles.js +0 -146
  66. package/components/PdfExportButton/styles.js.map +0 -1
  67. package/components/TimeSeriesBarChart/TimeSeriesBarChart.d.ts +0 -6
  68. package/components/TimeSeriesBarChart/TimeSeriesBarChart.js.map +0 -1
  69. package/components/TimeSeriesBarChart/styles.js +0 -98
  70. package/components/TimeSeriesBarChart/styles.js.map +0 -1
  71. package/components/TimeSeriesBarChart/types.js +0 -22
  72. package/components/TimeSeriesBarChart/types.js.map +0 -1
  73. package/components/WithFilters/FilterableBarChart.js +0 -152
  74. package/components/WithFilters/FilterableBarChart.js.map +0 -1
  75. package/components/WithFilters/FilterableDataGrid.js +0 -51
  76. package/components/WithFilters/FilterableDataGrid.js.map +0 -1
  77. package/components/WithFilters/FilterablePieChart.js +0 -160
  78. package/components/WithFilters/FilterablePieChart.js.map +0 -1
  79. package/components/WithFilters/FilterableScatterPlot.js +0 -252
  80. package/components/WithFilters/FilterableScatterPlot.js.map +0 -1
  81. package/components/WithFilters/WithFilters.d.ts +0 -6
  82. package/components/WithFilters/WithFilters.js +0 -36
  83. package/components/WithFilters/WithFilters.js.map +0 -1
  84. package/hooks/useCategoricalChartAsListbox.js +0 -94
  85. package/hooks/useCategoricalChartAsListbox.js.map +0 -1
  86. package/utils/groupReducers/groupReduceCount.d.ts +0 -6
  87. package/utils/groupReducers/groupReduceCount.js +0 -5
  88. package/utils/groupReducers/groupReduceCount.js.map +0 -1
  89. package/utils/groupReducers/groupReduceSum.d.ts +0 -7
  90. package/utils/groupReducers/groupReduceSum.js +0 -5
  91. package/utils/groupReducers/groupReduceSum.js.map +0 -1
@@ -1,98 +0,0 @@
1
- import styled, { css } from 'styled-components';
2
- import { Flexbox } from '@redsift/design-system';
3
-
4
- // istanbul ignore file
5
- /**
6
- * Component style.
7
- */
8
- const StyledTimeSeriesBarChart = styled.div`
9
- margin: 16px;
10
- padding: 16px;
11
-
12
- text {
13
- fill: ${_ref => {
14
- let {
15
- $theme
16
- } = _ref;
17
- return `var(--redsift-color-${$theme}-components-text-primary)`;
18
- }};
19
- }
20
-
21
- .redsift-timeseries-barchart__chart {
22
- display: flex;
23
- font-family: var(--redsift-typography-font-family-poppins);
24
- font-size: 12px;
25
- justify-content: center;
26
- margin: 8px 0;
27
- }
28
-
29
- svg > g {
30
- margin: 8px;
31
- }
32
-
33
- .grid-line,
34
- .axis .grid-line,
35
- .grid-line line,
36
- .axis .grid-line line {
37
- fill: none;
38
- stroke: #ccc;
39
- shape-rendering: crispEdges;
40
- }
41
-
42
- .axis text {
43
- font-family: var(--redsift-typography-font-family-poppins);
44
- font-size: 10px;
45
- }
46
-
47
- g.stack rect.bar.deselected {
48
- fill-opacity: 0.5;
49
- fill: var(--redsift-color-neutral-mid-grey);
50
- }
51
-
52
- .brush .custom-brush-handle {
53
- fill: #eee;
54
- stroke: #666;
55
- cursor: ew-resize;
56
- }
57
-
58
- text {
59
- user-select: none;
60
- }
61
- `;
62
- const StyledTimeSeriesBarChartTitle = styled(Flexbox)`
63
- font-family: var(--redsift-typography-h4-font-family);
64
- font-size: var(--redsift-typography-h4-font-size);
65
- font-weight: var(--redsift-typography-h4-font-weight);
66
- line-height: var(--redsift-typography-h4-line-height);
67
- `;
68
- const StyledTimeSeriesBarChartCaption = styled.p`
69
- font-family: var(--redsift-typography-caption-font-family);
70
- font-size: var(--redsift-typography-caption-font-size);
71
- font-weight: var(--redsift-typography-caption-font-weight);
72
- line-height: var(--redsift-typography-caption-line-height);
73
- `;
74
- const StyledTimeSeriesBarChartContainer = styled.div`
75
- display: flex;
76
- align-items: center;
77
- gap: 16px;
78
- font-family: var(--redsift-typography-font-family-poppins);
79
- font-size: 11px;
80
- justify-content: center;
81
- margin: 8px 0;
82
- position: relative;
83
-
84
- .redsift-timeseries-barchart-container__chart {
85
- position: relative;
86
- ${_ref2 => {
87
- let {
88
- $isEmpty
89
- } = _ref2;
90
- return $isEmpty ? css`
91
- display: none;
92
- ` : '';
93
- }};
94
- }
95
- `;
96
-
97
- export { StyledTimeSeriesBarChart, StyledTimeSeriesBarChartCaption, StyledTimeSeriesBarChartContainer, StyledTimeSeriesBarChartTitle };
98
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sources":["../../../src/components/TimeSeriesBarChart/styles.ts"],"sourcesContent":["// istanbul ignore file\n\nimport styled, { css } from 'styled-components';\nimport { Flexbox } from '@redsift/design-system';\nimport { StyledTimeSeriesBarChartProps } from './types';\n\n/**\n * Component style.\n */\nexport const StyledTimeSeriesBarChart = styled.div<StyledTimeSeriesBarChartProps>`\n margin: 16px;\n padding: 16px;\n\n text {\n fill: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n }\n\n .redsift-timeseries-barchart__chart {\n display: flex;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 12px;\n justify-content: center;\n margin: 8px 0;\n }\n\n svg > g {\n margin: 8px;\n }\n\n .grid-line,\n .axis .grid-line,\n .grid-line line,\n .axis .grid-line line {\n fill: none;\n stroke: #ccc;\n shape-rendering: crispEdges;\n }\n\n .axis text {\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 10px;\n }\n\n g.stack rect.bar.deselected {\n fill-opacity: 0.5;\n fill: var(--redsift-color-neutral-mid-grey);\n }\n\n .brush .custom-brush-handle {\n fill: #eee;\n stroke: #666;\n cursor: ew-resize;\n }\n\n text {\n user-select: none;\n }\n`;\n\nexport const StyledTimeSeriesBarChartTitle = styled(Flexbox)<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-h4-font-family);\n font-size: var(--redsift-typography-h4-font-size);\n font-weight: var(--redsift-typography-h4-font-weight);\n line-height: var(--redsift-typography-h4-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartCaption = styled.p<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-caption-font-family);\n font-size: var(--redsift-typography-caption-font-size);\n font-weight: var(--redsift-typography-caption-font-weight);\n line-height: var(--redsift-typography-caption-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartContainer = styled.div<{\n $isEmpty: boolean;\n}>`\n display: flex;\n align-items: center;\n gap: 16px;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 11px;\n justify-content: center;\n margin: 8px 0;\n position: relative;\n\n .redsift-timeseries-barchart-container__chart {\n position: relative;\n ${({ $isEmpty }) =>\n $isEmpty\n ? css`\n display: none;\n `\n : ''};\n }\n`;\n"],"names":["StyledTimeSeriesBarChart","styled","div","_ref","$theme","StyledTimeSeriesBarChartTitle","Flexbox","StyledTimeSeriesBarChartCaption","p","StyledTimeSeriesBarChartContainer","_ref2","$isEmpty","css"],"mappings":";;;AAAA;AAMA;AACA;AACA;AACaA,MAAAA,wBAAwB,GAAGC,MAAM,CAACC,GAAmC,CAAA;AAClF;AACA;AACA;AACA;AACA,UAAA,EAAYC,IAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,MAAAA;AAAO,GAAC,GAAAD,IAAA,CAAA;EAAA,OAAM,CAAA,oBAAA,EAAsBC,MAAO,CAA0B,yBAAA,CAAA,CAAA;AAAA,CAAC,CAAA;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;MAEYC,6BAA6B,GAAGJ,MAAM,CAACK,OAAO,CAAiC,CAAA;AAC5F;AACA;AACA;AACA;AACA,EAAC;AAEYC,MAAAA,+BAA+B,GAAGN,MAAM,CAACO,CAAiC,CAAA;AACvF;AACA;AACA;AACA;AACA,EAAC;AAEYC,MAAAA,iCAAiC,GAAGR,MAAM,CAACC,GAErD,CAAA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,EAAMQ,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,QAAAA;AAAS,GAAC,GAAAD,KAAA,CAAA;EAAA,OACbC,QAAQ,GACJC,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACD,EAAE,CAAA;AAAA,CAAC,CAAA;AACb;AACA;;;;"}
@@ -1,22 +0,0 @@
1
- import { ColorTheme } from '@redsift/charts';
2
-
3
- // istanbul ignore file
4
- /**
5
- * Component size.
6
- */
7
- const TimeSeriesBarChartSize = {
8
- large: 'large',
9
- medium: 'medium',
10
- small: 'small'
11
- };
12
- /**
13
- * Component theme.
14
- */
15
- const TimeSeriesBarChartTheme = ColorTheme;
16
-
17
- /**
18
- * Component props.
19
- */
20
-
21
- export { TimeSeriesBarChartSize, TimeSeriesBarChartTheme };
22
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":["../../../src/components/TimeSeriesBarChart/types.ts"],"sourcesContent":["// istanbul ignore file\n\nimport { ComponentProps } from 'react';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ColorTheme, DimensionSelector, JSONArray } from '../../types';\n\ntype SuccessDangerColorTheme = {\n success: string;\n warning: string;\n danger: string;\n neutral?: string;\n};\n\n/**\n * Component size.\n */\nexport const TimeSeriesBarChartSize = {\n large: 'large',\n medium: 'medium',\n small: 'small',\n} as const;\nexport type TimeSeriesBarChartSize = ValueOf<typeof TimeSeriesBarChartSize>;\n\n/**\n * Component theme.\n */\nexport const TimeSeriesBarChartTheme = ColorTheme;\nexport type TimeSeriesBarChartTheme = ValueOf<typeof TimeSeriesBarChartTheme>;\n\nexport type datetimeEnum = 'hour' | 'day' | 'week' | 'month' | 'year';\n\ninterface LocaleText {\n emptyChartTitle?: string;\n emptyChartSubtitle?: string;\n emptyChartResetLabel?: string;\n resetLabel?: string;\n}\n\n/**\n * Component props.\n */\nexport interface TimeSeriesBarChartProps extends ComponentProps<'div'> {\n /** Caption. */\n caption?: string;\n /** Whether the x axis labels are rotated or not. */\n areXLabelsRotated?: boolean;\n /** Field value of the DataGrid column to filter. */\n columnToFilter?: string;\n /** Dataset to use to generate the chart, if no context is provided. */\n data?: JSONArray;\n /** Name of the dataset field that contains the datetime value. */\n dateTimeFieldName: string;\n /** Format used for the date and time values in the dataset by d3.js. Should follow https://github.com/d3/d3-time-format#locale_format. */\n dateTimeFormat?: string;\n /** Datetime unit to used to group values and for x units. */\n dateTimeGroup?: datetimeEnum;\n /** Method that will be used by crossfilter to compute the dimensions of the charts. */\n dimension: DimensionSelector;\n /** Whether the reset button is hidden or not. */\n isResetable?: boolean;\n /** Overriden values for internal labels and texts. */\n localeText?: LocaleText;\n /** Method to call when a filter occured on the chart. */\n onFilter?: (filters?: string[], allFiltered?: JSONArray) => void;\n /** TimeSeriesChart size. */\n size?: TimeSeriesBarChartSize;\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: TimeSeriesBarChartTheme | SuccessDangerColorTheme;\n /** Title. */\n title?: string;\n /** Dataset key to use to stack values. */\n stackedCategory?: string;\n /** X Axis Label. */\n xAxisLabel?: string;\n /** Y Axis Label. */\n yAxisLabel?: string;\n}\n\nexport type StyledTimeSeriesBarChartProps = Omit<TimeSeriesBarChartProps, 'dimension' | 'dateTimeFieldName'> & {\n $theme: Theme;\n};\n"],"names":["TimeSeriesBarChartSize","large","medium","small","TimeSeriesBarChartTheme","ColorTheme"],"mappings":";;AAAA;AAaA;AACA;AACA;AACO,MAAMA,sBAAsB,GAAG;AACpCC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,KAAK,EAAE,OAAA;AACT,EAAU;AAGV;AACA;AACA;AACO,MAAMC,uBAAuB,GAAGC,WAAU;;AAYjD;AACA;AACA;;;;"}
@@ -1,152 +0,0 @@
1
- import { objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { useRef, useContext, useState, useEffect, isValidElement } from 'react';
3
- import { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox.js';
4
- import { useId } from '@redsift/design-system';
5
- import { DashboardContext } from '../Dashboard/context.js';
6
- import { CrossfilterRegistry } from '../CrossfilterRegistry/CrossfilterRegistry.js';
7
- import { DashboardReducerActionType } from '../Dashboard/types.js';
8
- import { ChartEmptyState } from '../ChartEmptyState/ChartEmptyState.js';
9
-
10
- const FilterableBarChart = props => {
11
- const {
12
- children,
13
- datagridCategoryDimFilter,
14
- dimension,
15
- group,
16
- id: propsId,
17
- isDimensionArray,
18
- isResetable,
19
- localeText,
20
- onFilter
21
- } = props;
22
- const [_id] = useId();
23
- const id = propsId !== null && propsId !== void 0 ? propsId : _id;
24
- const ref = useRef();
25
- const {
26
- emptyChartTitle,
27
- emptyChartSubtitle,
28
- emptyChartResetLabel
29
- } = _objectSpread2({}, localeText);
30
- const {
31
- data,
32
- dispatch,
33
- toggleUpdateContext,
34
- state: {
35
- tableFilters
36
- }
37
- } = useContext(DashboardContext);
38
- const [ndxDimension, setNdxDimension] = useState();
39
- const [ndxGroup, setNdxGroup] = useState();
40
- useEffect(() => {
41
- const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);
42
- const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();
43
- setNdxDimension(computedNdxDimension);
44
- setNdxGroup(computedNdxGroup);
45
- return function cleanup() {
46
- computedNdxDimension.filterAll();
47
- };
48
- }, [dimension, data, group]);
49
- const [filters, setFilters] = useState([]);
50
- const handleFilter = category => {
51
- let newFilters;
52
- if (filters.includes(category)) {
53
- newFilters = filters.filter(f => f !== category);
54
- } else {
55
- newFilters = [...filters, category];
56
- }
57
- setFilters(newFilters);
58
- if (newFilters.length) {
59
- ndxDimension.filter(d => newFilters.includes(d));
60
- } else {
61
- ndxDimension.filterAll();
62
- }
63
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
64
- if (datagridCategoryDimFilter) {
65
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
66
- type: DashboardReducerActionType.FilterTable,
67
- filter: {
68
- id: id,
69
- columnField: datagridCategoryDimFilter.field,
70
- operatorValue: datagridCategoryDimFilter.operator,
71
- value: newFilters
72
- }
73
- });
74
- }
75
- if (onFilter) {
76
- onFilter(newFilters);
77
- }
78
- };
79
- const resetFilters = () => {
80
- setFilters([]);
81
- ndxDimension.filterAll();
82
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
83
- if (datagridCategoryDimFilter) {
84
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
85
- type: DashboardReducerActionType.ResetFilter,
86
- filter: {
87
- id: id,
88
- columnField: datagridCategoryDimFilter.field,
89
- operatorValue: datagridCategoryDimFilter.operator
90
- }
91
- });
92
- }
93
- if (onFilter) {
94
- onFilter();
95
- }
96
- };
97
- useEffect(() => {
98
- var _tableFilters$find;
99
- if (!datagridCategoryDimFilter) {
100
- return;
101
- }
102
- const updatedFilters = (_tableFilters$find = tableFilters.find(filter => filter.columnField === datagridCategoryDimFilter.field && filter.operatorValue === datagridCategoryDimFilter.operator)) === null || _tableFilters$find === void 0 ? void 0 : _tableFilters$find.value;
103
- if (updatedFilters && updatedFilters !== filters && ndxDimension) {
104
- setFilters(updatedFilters);
105
- if (updatedFilters.length) {
106
- ndxDimension.filter(d => updatedFilters.includes(d));
107
- } else {
108
- ndxDimension.filterAll();
109
- }
110
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
111
- }
112
- }, [tableFilters]);
113
- const emptyComponent = /*#__PURE__*/React.createElement(ChartEmptyState, {
114
- title: emptyChartTitle,
115
- subtitle: emptyChartSubtitle,
116
- resetLabel: emptyChartResetLabel,
117
- onReset: resetFilters
118
- });
119
- const chartProps = useCategoricalChartAsListbox({
120
- id,
121
- ref: ref,
122
- type: 'bar',
123
- ndxGroup,
124
- orientation: 'vertical'
125
- });
126
- const filterProps = {
127
- barProps: {
128
- tabIndex: -1
129
- },
130
- barRole: 'option',
131
- role: 'listbox',
132
- chartProps: chartProps,
133
- chartRef: ref,
134
- data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,
135
- emptyComponent,
136
- id,
137
- isBarSelected: datum => {
138
- return filters.length === 0 || filters.includes(Array.isArray(datum.data.key) ? datum.data.key[1] : datum.data.key);
139
- },
140
- onBarClick: datum => {
141
- handleFilter(Array.isArray(datum.data.key) ? datum.data.key[1] : datum.data.key);
142
- },
143
- onReset: isResetable ? resetFilters : undefined
144
- };
145
- if ( /*#__PURE__*/isValidElement(children)) {
146
- return /*#__PURE__*/React.cloneElement(children, _objectSpread2({}, filterProps));
147
- }
148
- return null;
149
- };
150
-
151
- export { FilterableBarChart };
152
- //# sourceMappingURL=FilterableBarChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterableBarChart.js","sources":["../../../src/components/WithFilters/FilterableBarChart.tsx"],"sourcesContent":["import { GridFilterItem } from '@redsift/table';\nimport { BarDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterableBarChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCategoryDimFilter) {\n return;\n }\n\n const updatedFilters = tableFilters.find(\n (filter) =>\n filter.columnField === datagridCategoryDimFilter.field &&\n filter.operatorValue === datagridCategoryDimFilter.operator\n )?.value;\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'vertical',\n });\n\n const filterProps = {\n barProps: {\n tabIndex: -1,\n },\n barRole: 'option',\n role: 'listbox',\n chartProps: chartProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isBarSelected: (datum: BarDatum) => {\n return (\n filters.length === 0 ||\n filters.includes(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string))\n );\n },\n onBarClick: (datum: BarDatum) => {\n handleFilter(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string));\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n"],"names":["FilterableBarChart","props","children","datagridCategoryDimFilter","dimension","group","id","propsId","isDimensionArray","isResetable","localeText","onFilter","_id","useId","ref","useRef","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","_objectSpread","data","dispatch","toggleUpdateContext","state","tableFilters","useContext","DashboardContext","ndxDimension","setNdxDimension","useState","ndxGroup","setNdxGroup","useEffect","computedNdxDimension","CrossfilterRegistry","get","computedNdxGroup","cleanup","filterAll","filters","setFilters","handleFilter","category","newFilters","includes","filter","f","length","d","type","DashboardReducerActionType","FilterTable","columnField","field","operatorValue","operator","value","resetFilters","ResetFilter","_tableFilters$find","updatedFilters","find","emptyComponent","React","createElement","ChartEmptyState","title","subtitle","resetLabel","onReset","chartProps","useCategoricalChartAsListbox","orientation","filterProps","barProps","tabIndex","barRole","role","chartRef","JSON","parse","stringify","all","undefined","isBarSelected","datum","Array","isArray","key","onBarClick","isValidElement","cloneElement"],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { useContext, useState, useEffect, isValidElement } from 'react';
3
- import { DashboardContext } from '../Dashboard/context.js';
4
- import { DashboardReducerActionType } from '../Dashboard/types.js';
5
-
6
- const FilterableDataGrid = props => {
7
- const {
8
- children,
9
- onFilter
10
- } = props;
11
- const {
12
- state,
13
- data,
14
- dispatch,
15
- dataGridApiRef
16
- } = useContext(DashboardContext);
17
- const {
18
- tableFilters
19
- } = state;
20
- const [filterModel, setFilterModel] = useState();
21
- useEffect(() => {
22
- setFilterModel(_objectSpread2(_objectSpread2({}, filterModel), {}, {
23
- items: tableFilters
24
- }));
25
- }, [tableFilters]);
26
- const updateChartFilters = filterModel => {
27
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
28
- type: DashboardReducerActionType.FilterTableBatch,
29
- filter: filterModel.items
30
- });
31
- };
32
- if ( /*#__PURE__*/isValidElement(children)) {
33
- var _children$props$apiRe;
34
- const filterProps = {
35
- apiRef: (_children$props$apiRe = children.props.apiRef) !== null && _children$props$apiRe !== void 0 ? _children$props$apiRe : dataGridApiRef,
36
- rows: data || [],
37
- filterModel,
38
- onFilterModelChange: filterModel => {
39
- if (onFilter) {
40
- onFilter(filterModel);
41
- }
42
- updateChartFilters(filterModel);
43
- }
44
- };
45
- return /*#__PURE__*/React.cloneElement(children, _objectSpread2({}, filterProps));
46
- }
47
- return null;
48
- };
49
-
50
- export { FilterableDataGrid };
51
- //# sourceMappingURL=FilterableDataGrid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterableDataGrid.js","sources":["../../../src/components/WithFilters/FilterableDataGrid.tsx"],"sourcesContent":["import { GridFilterModel } from '@redsift/table';\nimport React, { useContext, isValidElement, useState, useEffect } from 'react';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\n\nexport const FilterableDataGrid: React.FC<WithFiltersProps> = (props) => {\n const { children, onFilter } = props;\n\n const { state, data, dispatch, dataGridApiRef } =\n useContext(DashboardContext);\n const { tableFilters } = state;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>();\n useEffect(() => {\n setFilterModel({\n ...filterModel,\n items: tableFilters,\n });\n }, [tableFilters]);\n\n const updateChartFilters = (filterModel: GridFilterModel) => {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: filterModel.items,\n });\n };\n\n if (isValidElement(children)) {\n const filterProps = {\n apiRef: children.props.apiRef ?? dataGridApiRef,\n rows: data || [],\n filterModel,\n onFilterModelChange: (filterModel: GridFilterModel) => {\n if (onFilter) {\n onFilter(filterModel);\n }\n updateChartFilters(filterModel);\n },\n };\n\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n"],"names":["FilterableDataGrid","props","children","onFilter","state","data","dispatch","dataGridApiRef","useContext","DashboardContext","tableFilters","filterModel","setFilterModel","useState","useEffect","_objectSpread","items","updateChartFilters","type","DashboardReducerActionType","FilterTableBatch","filter","isValidElement","_children$props$apiRe","filterProps","apiRef","rows","onFilterModelChange","React","cloneElement"],"mappings":";;;;;AAKaA,MAAAA,kBAA8C,GAAIC,KAAK,IAAK;EACvE,MAAM;IAAEC,QAAQ;AAAEC,IAAAA,QAAAA;AAAS,GAAC,GAAGF,KAAK,CAAA;EAEpC,MAAM;IAAEG,KAAK;IAAEC,IAAI;IAAEC,QAAQ;AAAEC,IAAAA,cAAAA;AAAe,GAAC,GAC7CC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAC9B,MAAM;AAAEC,IAAAA,YAAAA;AAAa,GAAC,GAAGN,KAAK,CAAA;EAE9B,MAAM,CAACO,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,EAAmB,CAAA;AACjEC,EAAAA,SAAS,CAAC,MAAM;AACdF,IAAAA,cAAc,CAAAG,cAAA,CAAAA,cAAA,KACTJ,WAAW,CAAA,EAAA,EAAA,EAAA;AACdK,MAAAA,KAAK,EAAEN,YAAAA;AAAY,KAAA,CACpB,CAAC,CAAA;AACJ,GAAC,EAAE,CAACA,YAAY,CAAC,CAAC,CAAA;EAElB,MAAMO,kBAAkB,GAAIN,WAA4B,IAAK;AAC3DL,IAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;MACTY,IAAI,EAAEC,0BAA0B,CAACC,gBAAgB;MACjDC,MAAM,EAAEV,WAAW,CAACK,KAAAA;AACtB,KAAC,CAAC,CAAA;GACH,CAAA;AAED,EAAA,kBAAIM,cAAc,CAACpB,QAAQ,CAAC,EAAE;AAAA,IAAA,IAAAqB,qBAAA,CAAA;AAC5B,IAAA,MAAMC,WAAW,GAAG;AAClBC,MAAAA,MAAM,EAAAF,CAAAA,qBAAA,GAAErB,QAAQ,CAACD,KAAK,CAACwB,MAAM,MAAAF,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAIhB,cAAc;MAC/CmB,IAAI,EAAErB,IAAI,IAAI,EAAE;MAChBM,WAAW;MACXgB,mBAAmB,EAAGhB,WAA4B,IAAK;AACrD,QAAA,IAAIR,QAAQ,EAAE;UACZA,QAAQ,CAACQ,WAAW,CAAC,CAAA;AACvB,SAAA;QACAM,kBAAkB,CAACN,WAAW,CAAC,CAAA;AACjC,OAAA;KACD,CAAA;IAED,oBAAOiB,KAAK,CAACC,YAAY,CAAC3B,QAAQ,EAAAa,cAAA,CAAA,EAAA,EAAOS,WAAW,CAAE,CAAC,CAAA;AACzD,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb;;;;"}
@@ -1,160 +0,0 @@
1
- import { objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import React, { useRef, useContext, useState, useEffect, isValidElement } from 'react';
3
- import { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox.js';
4
- import { useId } from '@redsift/design-system';
5
- import { DashboardContext } from '../Dashboard/context.js';
6
- import { CrossfilterRegistry } from '../CrossfilterRegistry/CrossfilterRegistry.js';
7
- import { DashboardReducerActionType } from '../Dashboard/types.js';
8
- import { ChartEmptyState } from '../ChartEmptyState/ChartEmptyState.js';
9
-
10
- const FilterablePieChart = props => {
11
- var _tableFilters$find;
12
- const {
13
- children,
14
- datagridCategoryDimFilter,
15
- dimension,
16
- group,
17
- id: propsId,
18
- isDimensionArray,
19
- isResetable,
20
- localeText,
21
- onFilter
22
- } = props;
23
- const [_id] = useId();
24
- const id = propsId !== null && propsId !== void 0 ? propsId : _id;
25
- const ref = useRef();
26
- const {
27
- emptyChartTitle,
28
- emptyChartSubtitle,
29
- emptyChartResetLabel
30
- } = _objectSpread2({}, localeText);
31
- const {
32
- data,
33
- dispatch,
34
- toggleUpdateContext,
35
- state: {
36
- tableFilters
37
- }
38
- } = useContext(DashboardContext);
39
- const [ndxDimension, setNdxDimension] = useState();
40
- const [ndxGroup, setNdxGroup] = useState();
41
- useEffect(() => {
42
- const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);
43
- const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();
44
- setNdxDimension(computedNdxDimension);
45
- setNdxGroup(computedNdxGroup);
46
- return function cleanup() {
47
- computedNdxDimension.filterAll();
48
- };
49
- }, [dimension, data, group]);
50
- const [filters, setFilters] = useState([]);
51
- const handleFilter = category => {
52
- let newFilters;
53
- if (filters.includes(category)) {
54
- newFilters = filters.filter(f => f !== category);
55
- } else {
56
- newFilters = [...filters, category];
57
- }
58
- setFilters(newFilters);
59
- if (newFilters.length) {
60
- ndxDimension.filter(d => newFilters.includes(d));
61
- } else {
62
- ndxDimension.filterAll();
63
- }
64
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
65
- if (datagridCategoryDimFilter) {
66
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
67
- type: DashboardReducerActionType.FilterTable,
68
- filter: {
69
- id: id,
70
- columnField: datagridCategoryDimFilter.field,
71
- operatorValue: datagridCategoryDimFilter.operator,
72
- value: newFilters
73
- }
74
- });
75
- }
76
- if (onFilter) {
77
- onFilter(newFilters);
78
- }
79
- };
80
- const resetFilters = () => {
81
- setFilters([]);
82
- ndxDimension.filterAll();
83
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
84
- if (datagridCategoryDimFilter) {
85
- dispatch === null || dispatch === void 0 ? void 0 : dispatch({
86
- type: DashboardReducerActionType.ResetFilter,
87
- filter: {
88
- id: id,
89
- columnField: datagridCategoryDimFilter.field,
90
- operatorValue: datagridCategoryDimFilter.operator
91
- }
92
- });
93
- }
94
- if (onFilter) {
95
- onFilter();
96
- }
97
- };
98
- const updatedFilters = datagridCategoryDimFilter ? (_tableFilters$find = tableFilters.find(filter => filter.columnField === datagridCategoryDimFilter.field && filter.operatorValue === datagridCategoryDimFilter.operator)) === null || _tableFilters$find === void 0 ? void 0 : _tableFilters$find.value : null;
99
- useEffect(() => {
100
- if (updatedFilters && updatedFilters !== filters && ndxDimension) {
101
- setFilters(updatedFilters);
102
- if (updatedFilters.length) {
103
- ndxDimension.filter(d => updatedFilters.includes(d));
104
- } else {
105
- ndxDimension.filterAll();
106
- }
107
- toggleUpdateContext === null || toggleUpdateContext === void 0 ? void 0 : toggleUpdateContext();
108
- }
109
- }, [updatedFilters]);
110
- const emptyComponent = /*#__PURE__*/React.createElement(ChartEmptyState, {
111
- title: emptyChartTitle,
112
- subtitle: emptyChartSubtitle,
113
- resetLabel: emptyChartResetLabel,
114
- onReset: resetFilters
115
- });
116
- const chartProps = useCategoricalChartAsListbox({
117
- id,
118
- ref: ref,
119
- type: 'bar',
120
- ndxGroup,
121
- orientation: 'horizontal'
122
- });
123
- const legendProps = {
124
- onLegendItemClick: datum => {
125
- handleFilter(datum.data.key);
126
- },
127
- isLegendItemSelected: datum => {
128
- return filters.length === 0 || filters.includes(datum.data.key);
129
- },
130
- legendItemRole: 'option',
131
- role: 'group'
132
- };
133
- const filterProps = {
134
- sliceProps: {
135
- tabIndex: -1
136
- },
137
- sliceRole: 'option',
138
- role: 'listbox',
139
- chartProps,
140
- legendProps,
141
- chartRef: ref,
142
- data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,
143
- emptyComponent,
144
- id,
145
- isSliceSelected: datum => {
146
- return filters.length === 0 || filters.includes(datum.data.key);
147
- },
148
- onSliceClick: datum => {
149
- handleFilter(datum.data.key);
150
- },
151
- onReset: isResetable ? resetFilters : undefined
152
- };
153
- if ( /*#__PURE__*/isValidElement(children)) {
154
- return /*#__PURE__*/React.cloneElement(children, _objectSpread2({}, filterProps));
155
- }
156
- return null;
157
- };
158
-
159
- export { FilterablePieChart };
160
- //# sourceMappingURL=FilterablePieChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterablePieChart.js","sources":["../../../src/components/WithFilters/FilterablePieChart.tsx"],"sourcesContent":["import { GridFilterItem } from '@redsift/table';\nimport { ArcDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterablePieChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n const updatedFilters = datagridCategoryDimFilter\n ? tableFilters.find(\n (filter) =>\n filter.columnField === datagridCategoryDimFilter.field &&\n filter.operatorValue === datagridCategoryDimFilter.operator\n )?.value\n : null;\n useEffect(() => {\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [updatedFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'horizontal',\n });\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n sliceProps: {\n tabIndex: -1,\n },\n sliceRole: 'option',\n role: 'listbox',\n chartProps,\n legendProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isSliceSelected: (datum: ArcDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n onSliceClick: (datum: ArcDatum) => {\n handleFilter(datum.data.key);\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n"],"names":["FilterablePieChart","props","_tableFilters$find","children","datagridCategoryDimFilter","dimension","group","id","propsId","isDimensionArray","isResetable","localeText","onFilter","_id","useId","ref","useRef","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","_objectSpread","data","dispatch","toggleUpdateContext","state","tableFilters","useContext","DashboardContext","ndxDimension","setNdxDimension","useState","ndxGroup","setNdxGroup","useEffect","computedNdxDimension","CrossfilterRegistry","get","computedNdxGroup","cleanup","filterAll","filters","setFilters","handleFilter","category","newFilters","includes","filter","f","length","d","type","DashboardReducerActionType","FilterTable","columnField","field","operatorValue","operator","value","resetFilters","ResetFilter","updatedFilters","find","emptyComponent","React","createElement","ChartEmptyState","title","subtitle","resetLabel","onReset","chartProps","useCategoricalChartAsListbox","orientation","legendProps","onLegendItemClick","datum","key","isLegendItemSelected","legendItemRole","role","filterProps","sliceProps","tabIndex","sliceRole","chartRef","JSON","parse","stringify","all","undefined","isSliceSelected","onSliceClick","isValidElement","cloneElement"],"mappings":"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"}