@devgateway/dvz-wp-commons 1.1.0 → 1.3.0

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 (65) hide show
  1. package/build/APIConfig.cjs +479 -0
  2. package/build/APIConfig.d.ts +31 -42
  3. package/build/APIConfig.js +366 -277
  4. package/build/APIutils.cjs +54 -0
  5. package/build/APIutils.d.ts +3 -3
  6. package/build/APIutils.js +11 -1
  7. package/build/Blocks.cjs +672 -0
  8. package/build/Blocks.d.ts +42 -65
  9. package/build/Blocks.js +524 -346
  10. package/build/CSVSourceConfig.cjs +99 -0
  11. package/build/CSVSourceConfig.d.ts +2 -3
  12. package/build/CSVSourceConfig.js +63 -41
  13. package/build/ChartColors.cjs +593 -0
  14. package/build/ChartColors.d.ts +4 -46
  15. package/build/ChartColors.js +431 -380
  16. package/build/ChartLegends.cjs +157 -0
  17. package/build/ChartLegends.d.ts +1 -33
  18. package/build/ChartLegends.js +173 -69
  19. package/build/ChartMeasures.cjs +192 -0
  20. package/build/ChartMeasures.d.ts +1 -23
  21. package/build/ChartMeasures.js +195 -108
  22. package/build/Constants.cjs +21 -0
  23. package/build/Constants.d.ts +18 -15
  24. package/build/Constants.js +3 -1
  25. package/build/DataFilters.cjs +176 -0
  26. package/build/DataFilters.d.ts +1 -12
  27. package/build/DataFilters.js +100 -93
  28. package/build/Format.cjs +1038 -0
  29. package/build/Format.d.ts +8 -10
  30. package/build/Format.js +428 -379
  31. package/build/MapCSVSourceConfig.cjs +36 -0
  32. package/build/MapCSVSourceConfig.d.ts +7 -9
  33. package/build/MapCSVSourceConfig.js +19 -9
  34. package/build/Measures.cjs +196 -0
  35. package/build/Measures.d.ts +1 -24
  36. package/build/Measures.js +208 -119
  37. package/build/MobileConfigUtils.cjs +92 -0
  38. package/build/MobileConfigUtils.d.ts +6 -6
  39. package/build/MobileConfigUtils.js +39 -32
  40. package/build/Tooltip.cjs +63 -0
  41. package/build/Tooltip.d.ts +1 -3
  42. package/build/Tooltip.js +27 -51
  43. package/build/Util.cjs +29 -0
  44. package/build/Util.d.ts +5 -6
  45. package/build/Util.js +9 -9
  46. package/build/hooks/index.cjs +1 -0
  47. package/build/hooks/index.js +0 -3
  48. package/build/icons/Chart.cjs +49 -0
  49. package/build/icons/Chart.d.ts +1 -2
  50. package/build/icons/Chart.js +10 -11
  51. package/build/icons/Generic.cjs +24 -0
  52. package/build/icons/Generic.d.ts +1 -2
  53. package/build/icons/Generic.js +25 -4
  54. package/build/icons/index.cjs +19 -0
  55. package/build/icons/index.d.ts +2 -2
  56. package/build/icons/index.js +2 -2
  57. package/build/index.cjs +225 -0
  58. package/build/index.d.ts +16 -18
  59. package/build/index.js +47 -19
  60. package/package.json +39 -30
  61. package/build/post-type.d.ts +0 -193
  62. package/build/post-type.js +0 -12
  63. package/build/tsconfig.tsbuildinfo +0 -1
  64. package/build/types.d.ts +0 -349
  65. package/build/types.js +0 -33
@@ -1,117 +1,204 @@
1
- import React from 'react';
2
- import { __ } from '@wordpress/i18n';
3
- import { CheckboxControl, PanelBody, PanelRow, SelectControl, ToggleControl, TextControl } from '@wordpress/components';
4
- import Format from './Format';
1
+ import { __ } from "@wordpress/i18n";
2
+ import { CheckboxControl, PanelBody, PanelRow, SelectControl, ToggleControl, TextControl } from "@wordpress/components";
3
+ import Format from "./Format.js";
5
4
  import { togglePanel } from "./Util.js";
6
5
  import { getTranslation } from "./APIutils.js";
7
6
  const defaultFormat = {
8
- "style": "percent",
9
- "minimumFractionDigits": 1,
10
- "maximumFractionDigits": 1,
11
- "currency": "USD"
7
+ "style": "percent",
8
+ "minimumFractionDigits": 1,
9
+ "maximumFractionDigits": 1,
10
+ "currency": "USD"
12
11
  };
13
12
  export const ChartMeasures = (props) => {
14
- const { onMeasuresChange, onFormatChange, onUseCustomAxisFormatChange, onSetSingleMeasure, onCustomLabelToggleChange, onCustomLabelChange, allMeasures, setAttributes, title, attributes: { panelStatus, measures, dimension1, dimension2, type, app } } = props;
15
- const MToggle = ({ measure }) => {
16
- const userMeasure = measures[app] ? measures[app][measure.value] : {};
17
- return (React.createElement(ToggleControl, { label: getTranslation(measure), checked: userMeasure ? userMeasure.selected : false, onChange: (value) => onMeasuresChange(measure.value) }));
18
- };
19
- const MCheckbox = ({ measure }) => {
20
- const userMeasure = measures[app] ? measures[app][measure.value] : {};
21
- return React.createElement(CheckboxControl, { label: getTranslation(measure), checked: userMeasure ? userMeasure.selected : false, onChange: (value) => onSetSingleMeasure(measure.value) });
22
- };
23
- const MeasureOptions = ({ measure, single }) => {
24
- return React.createElement(PanelRow, null,
25
- single && React.createElement(MCheckbox, { measure: measure }),
26
- !single && React.createElement(MToggle, { measure: measure }));
27
- };
28
- const countSelected = (g) => {
29
- if (measures[app]) {
30
- const mG = allMeasures.filter(f => getTranslation(f.group) === g);
31
- let count = 0;
32
- Object.keys(measures[app]).filter(l => mG.map(m => m.value).indexOf(l) > -1).forEach(k => {
33
- if (measures[app][k].selected) {
34
- count++;
35
- }
36
- });
37
- return count;
13
+ const {
14
+ onMeasuresChange,
15
+ onFormatChange,
16
+ onUseCustomAxisFormatChange,
17
+ onSetSingleMeasure,
18
+ onCustomLabelToggleChange,
19
+ onCustomLabelChange,
20
+ allMeasures,
21
+ setAttributes,
22
+ title,
23
+ attributes: {
24
+ panelStatus,
25
+ measures,
26
+ dimension1,
27
+ dimension2,
28
+ type,
29
+ app
30
+ }
31
+ } = props;
32
+ const MToggle = ({ measure }) => {
33
+ const userMeasure = measures[app] ? measures[app][measure.value] : {};
34
+ return /* @__PURE__ */ React.createElement(
35
+ ToggleControl,
36
+ {
37
+ label: getTranslation(measure),
38
+ checked: userMeasure ? userMeasure.selected : false,
39
+ onChange: (value) => onMeasuresChange(measure.value)
40
+ }
41
+ );
42
+ };
43
+ const MCheckbox = ({ measure }) => {
44
+ const userMeasure = measures[app] ? measures[app][measure.value] : {};
45
+ return /* @__PURE__ */ React.createElement(
46
+ CheckboxControl,
47
+ {
48
+ label: getTranslation(measure),
49
+ checked: userMeasure ? userMeasure.selected : false,
50
+ onChange: (value) => onSetSingleMeasure(measure.value)
51
+ }
52
+ );
53
+ };
54
+ const MeasureOptions = ({ measure, single }) => {
55
+ return /* @__PURE__ */ React.createElement(PanelRow, null, single && /* @__PURE__ */ React.createElement(MCheckbox, { measure }), !single && /* @__PURE__ */ React.createElement(MToggle, { measure }));
56
+ };
57
+ const countSelected = (g) => {
58
+ if (measures[app]) {
59
+ const mG = allMeasures.filter((f) => getTranslation(f.group) === g);
60
+ let count = 0;
61
+ Object.keys(measures[app]).filter((l) => mG.map((m) => m.value).indexOf(l) > -1).forEach((k) => {
62
+ if (measures[app][k].selected) {
63
+ count++;
38
64
  }
39
- return 0;
40
- };
41
- const countTotal = (g) => {
42
- if (g) {
43
- return allMeasures.filter(f => getTranslation(f.group) === g).length;
44
- }
45
- return 0;
46
- };
47
- const getSelectedMeasures = () => {
48
- if (measures[app] && allMeasures) {
49
- return Object.keys(measures[app]).filter(k => measures[app][k].selected).map(k => {
50
- return allMeasures.filter(m => m.value === k)[0];
51
- }).filter(m => m);
52
- }
53
- return [];
54
- };
55
- const selectedMeasures = getSelectedMeasures();
56
- return React.createElement(React.Fragment, null,
57
- React.createElement(PanelBody, { title: title ? title : __("Measures"), initialOpen: panelStatus["MEASURES"], onToggle: e => togglePanel("MEASURES", panelStatus, setAttributes) },
58
- /*
59
- Multiple measures conditions
60
-
61
- Bar:
62
- no dimensions selected
63
- one dimension is selected
64
- - not available when second dimension gets selected
65
-
65
+ });
66
+ return count;
67
+ }
68
+ return 0;
69
+ };
70
+ const countTotal = (g) => {
71
+ if (g) {
72
+ return allMeasures.filter((f) => getTranslation(f.group) === g).length;
73
+ }
74
+ return 0;
75
+ };
76
+ const getSelectedMeasures = () => {
77
+ if (measures[app] && allMeasures) {
78
+ return Object.keys(measures[app]).filter((k) => measures[app][k].selected).map((k) => {
79
+ return allMeasures.filter((m) => m.value === k)[0];
80
+ }).filter((m) => m);
81
+ }
82
+ return [];
83
+ };
84
+ const selectedMeasures = getSelectedMeasures();
85
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
86
+ PanelBody,
87
+ {
88
+ title: title ? title : __("Measures"),
89
+ initialOpen: panelStatus["MEASURES"],
90
+ onToggle: (e) => togglePanel("MEASURES", panelStatus, setAttributes)
91
+ },
92
+ /*
93
+ Multiple measures conditions
94
+
95
+ Bar:
96
+ no dimensions selected
97
+ one dimension is selected
98
+ - not available when second dimension gets selected
99
+
100
+ Line:
101
+ - Always multi measure as measures represents line series, one dimension should always be selected
102
+
103
+ Pie:
104
+ no dimensions selected
105
+ - not available when any dimension is selected
106
+ */
107
+ (type == "line" || type == "bar" && dimension2 == "none" || type == "pie" && dimension1 == "none" && dimension2 == "none") && allMeasures && [...new Set(allMeasures.map((p) => getTranslation(p.group)))].map(
108
+ (g) => {
109
+ return /* @__PURE__ */ React.createElement(
110
+ PanelBody,
111
+ {
112
+ initialOpen: panelStatus[g],
113
+ onToggle: (e) => togglePanel(g, panelStatus, setAttributes),
114
+ title: `${g} (${countSelected(g)} / ${countTotal(g)} ) `
115
+ },
116
+ allMeasures.filter((f) => getTranslation(f.group) === g).map((m) => /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(MeasureOptions, { single: false, measure: m })))
117
+ );
118
+ }
119
+ ),
120
+ /*Single measure conditions
121
+
122
+ Bar:
123
+ 2 dimensions selected
66
124
  Line:
67
- - Always multi measure as measures represents line series, one dimension should always be selected
68
-
125
+ never
69
126
  Pie:
70
- no dimensions selected
71
- - not available when any dimension is selected
72
- */
73
- ((type == 'line') ||
74
- (type == 'bar' && dimension2 == 'none') ||
75
- (type == 'pie' && dimension1 == 'none' && dimension2 == 'none')) && allMeasures && [...new Set(allMeasures.map(p => getTranslation(p.group)))].map(g => {
76
- return (React.createElement(PanelBody, { initialOpen: panelStatus[g], onToggle: e => togglePanel(g, panelStatus, setAttributes), title: `${g} (${countSelected(g)} / ${countTotal(g)} ) ` }, allMeasures.filter(f => getTranslation(f.group) === g)
77
- .map(m => React.createElement(PanelRow, null,
78
- React.createElement(MeasureOptions, { single: false, measure: m })))));
79
- }),
80
- /*Single measure conditions
81
-
82
- Bar:
83
- 2 dimensions selected
84
- Line:
85
- never
86
- Pie:
87
- any dimensions selected
88
-
89
- */
90
- ((type == 'bar' && dimension2 != 'none') || (type == 'pie' && (dimension1 != 'none' || dimension2 != 'none'))) && allMeasures && [...new Set(allMeasures.map(p => getTranslation(p.group)))].map(g => {
91
- return (React.createElement(PanelBody, { initialOpen: panelStatus[g], onToggle: e => togglePanel(g, panelStatus, setAttributes), title: `${g} (${countSelected(g)} / ${allMeasures.filter(f => getTranslation(f.group) === g).length} ) ` }, allMeasures.filter(f => getTranslation(f.group) === g)
92
- .map(m => React.createElement(PanelRow, null,
93
- React.createElement(MeasureOptions, { single: true, measure: m })))));
94
- }),
95
- (type == 'overlay') && allMeasures && React.createElement(SelectControl, { label: "Measure", value: selectedMeasures && selectedMeasures[0] ? selectedMeasures[0].value : null, options: [{ value: '', label: 'Select Measure' }, ...allMeasures], onChange: (measure) => onSetSingleMeasure(measure), __nextHasNoMarginBottom: true }),
96
- (type != 'overlay') && React.createElement(PanelBody, { title: __("Format"), initialOpen: panelStatus["FORMAT"], onToggle: e => togglePanel("FORMAT", panelStatus, setAttributes) },
97
- React.createElement(Format, { format: measures[app] && measures[app].format ? measures[app].format : defaultFormat, customFormat: measures[app] && measures[app].customFormat ? measures[app].customFormat : defaultFormat, useCustomAxisFormat: measures[app] ? measures[app].useCustomAxisFormat : false, onFormatChange: (format, field) => {
98
- onFormatChange(format, field);
99
- }, onUseCustomAxisFormatChange: value => {
100
- onUseCustomAxisFormatChange(value);
101
- } }))),
102
- (type != 'overlay') && selectedMeasures && selectedMeasures.length > 0 &&
103
- React.createElement(PanelBody, { title: __("Measure Label Customization"), initialOpen: panelStatus["MEASURES_LABEL_CUSTOMIZATION"], onToggle: e => togglePanel("MEASURES_LABEL_CUSTOMIZATION", panelStatus, setAttributes) }, selectedMeasures && [...new Set(selectedMeasures.map(p => getTranslation(p.group)))].map(g => {
104
- return (React.createElement(PanelBody, { initialOpen: panelStatus[g + "_LABEL_CUSTOMIZATION"], onToggle: e => togglePanel(g + "_LABEL_CUSTOMIZATION", panelStatus, setAttributes), title: `${g}` }, selectedMeasures.filter(f => getTranslation(f.group) === g)
105
- .map(m => {
106
- const userMeasure = measures[app] ? measures[app][m.value] : {};
107
- return (React.createElement(React.Fragment, null,
108
- React.createElement(PanelRow, null,
109
- React.createElement(ToggleControl, { label: getTranslation(m), checked: userMeasure ? userMeasure.hasCustomLabel : false, onChange: (value) => onCustomLabelToggleChange(m.value) }),
110
- " "),
111
- userMeasure.hasCustomLabel &&
112
- React.createElement(PanelRow, null,
113
- React.createElement(TextControl, { label: __("Custom Label"), value: userMeasure ? userMeasure.customLabel : "", onChange: (value) => onCustomLabelChange(m.value, value) }))));
114
- })));
115
- })));
127
+ any dimensions selected
128
+
129
+ */
130
+ (type == "bar" && dimension2 != "none" || type == "pie" && (dimension1 != "none" || dimension2 != "none")) && allMeasures && [...new Set(allMeasures.map((p) => getTranslation(p.group)))].map((g) => {
131
+ return /* @__PURE__ */ React.createElement(
132
+ PanelBody,
133
+ {
134
+ initialOpen: panelStatus[g],
135
+ onToggle: (e) => togglePanel(g, panelStatus, setAttributes),
136
+ title: `${g} (${countSelected(g)} / ${allMeasures.filter((f) => f.group === g).length} ) `
137
+ },
138
+ allMeasures.filter((f) => getTranslation(f.group) === g).map((m) => /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(MeasureOptions, { single: true, measure: m })))
139
+ );
140
+ }),
141
+ type == "overlay" && allMeasures && /* @__PURE__ */ React.createElement(
142
+ SelectControl,
143
+ {
144
+ label: "Measure",
145
+ value: selectedMeasures && selectedMeasures[0] ? selectedMeasures[0].value : null,
146
+ options: [{ value: "", label: "Select Measure" }, ...allMeasures],
147
+ onChange: (measure) => onSetSingleMeasure(measure),
148
+ __nextHasNoMarginBottom: true
149
+ }
150
+ ),
151
+ type != "overlay" && /* @__PURE__ */ React.createElement(
152
+ PanelBody,
153
+ {
154
+ title: __("Format"),
155
+ initialOpen: panelStatus["FORMAT"],
156
+ onToggle: (e) => togglePanel("FORMAT", panelStatus, setAttributes)
157
+ },
158
+ /* @__PURE__ */ React.createElement(
159
+ Format,
160
+ {
161
+ format: measures[app] && measures[app].format ? measures[app].format : defaultFormat,
162
+ customFormat: measures[app] && measures[app].customFormat ? measures[app].customFormat : defaultFormat,
163
+ useCustomAxisFormat: measures[app] ? measures[app].useCustomAxisFormat : false,
164
+ onFormatChange: (format, field) => {
165
+ onFormatChange(format, field);
166
+ },
167
+ onUseCustomAxisFormatChange: (value) => {
168
+ onUseCustomAxisFormatChange(value);
169
+ }
170
+ }
171
+ )
172
+ )
173
+ ), type != "overlay" && selectedMeasures && selectedMeasures.length > 0 && /* @__PURE__ */ React.createElement(
174
+ PanelBody,
175
+ {
176
+ title: __("Measure Label Customization"),
177
+ initialOpen: panelStatus["MEASURES_LABEL_CUSTOMIZATION"],
178
+ onToggle: (e) => togglePanel("MEASURES_LABEL_CUSTOMIZATION", panelStatus, setAttributes)
179
+ },
180
+ selectedMeasures && [...new Set(selectedMeasures.map((p) => getTranslation(p.group)))].map(
181
+ (g) => {
182
+ return /* @__PURE__ */ React.createElement(
183
+ PanelBody,
184
+ {
185
+ initialOpen: panelStatus[g + "_LABEL_CUSTOMIZATION"],
186
+ onToggle: (e) => togglePanel(g + "_LABEL_CUSTOMIZATION", panelStatus, setAttributes),
187
+ title: `${g}`
188
+ },
189
+ selectedMeasures.filter((f) => getTranslation(f.group) === g).map((m) => {
190
+ const userMeasure = measures[app] ? measures[app][m.value] : {};
191
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(
192
+ ToggleControl,
193
+ {
194
+ label: getTranslation(m),
195
+ checked: userMeasure ? userMeasure.hasCustomLabel : false,
196
+ onChange: (value) => onCustomLabelToggleChange(m.value)
197
+ }
198
+ ), " "), userMeasure.hasCustomLabel && /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(TextControl, { label: __("Custom Label"), value: userMeasure ? userMeasure.customLabel : "", onChange: (value) => onCustomLabelChange(m.value, value) })));
199
+ })
200
+ );
201
+ }
202
+ )
203
+ ));
116
204
  };
117
- export default ChartMeasures;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_FORMAT_SETTINGS = exports.BLOCKS_NS = exports.BLOCKS_CATEGORY = void 0;
7
+ const DEFAULT_FORMAT_SETTINGS = exports.DEFAULT_FORMAT_SETTINGS = {
8
+ format: {
9
+ style: "percent",
10
+ minimumFractionDigits: 2,
11
+ maximumFractionDigits: 2
12
+ },
13
+ customFormat: {
14
+ style: "percent",
15
+ minimumFractionDigits: 2,
16
+ maximumFractionDigits: 2
17
+ },
18
+ useCustomAxisFormat: false
19
+ };
20
+ const BLOCKS_CATEGORY = exports.BLOCKS_CATEGORY = 'wp-react-lib-blocks';
21
+ const BLOCKS_NS = exports.BLOCKS_NS = 'viz';
@@ -1,15 +1,18 @@
1
- export declare const DEFAULT_FORMAT_SETTINGS: {
2
- format: {
3
- style: string;
4
- minimumFractionDigits: number;
5
- maximumFractionDigits: number;
6
- };
7
- customFormat: {
8
- style: string;
9
- minimumFractionDigits: number;
10
- maximumFractionDigits: number;
11
- };
12
- useCustomAxisFormat: boolean;
13
- };
14
- export declare const BLOCKS_CATEGORY = "wp-react-lib-blocks";
15
- export declare const BLOCKS_NS = "viz";
1
+ export namespace DEFAULT_FORMAT_SETTINGS {
2
+ namespace format {
3
+ let style: string;
4
+ let minimumFractionDigits: number;
5
+ let maximumFractionDigits: number;
6
+ }
7
+ namespace customFormat {
8
+ let style_1: string;
9
+ export { style_1 as style };
10
+ let minimumFractionDigits_1: number;
11
+ export { minimumFractionDigits_1 as minimumFractionDigits };
12
+ let maximumFractionDigits_1: number;
13
+ export { maximumFractionDigits_1 as maximumFractionDigits };
14
+ }
15
+ let useCustomAxisFormat: boolean;
16
+ }
17
+ export const BLOCKS_CATEGORY: "wp-react-lib-blocks";
18
+ export const BLOCKS_NS: "viz";
@@ -11,5 +11,7 @@ export const DEFAULT_FORMAT_SETTINGS = {
11
11
  },
12
12
  useCustomAxisFormat: false
13
13
  };
14
+
15
+
14
16
  export const BLOCKS_CATEGORY = 'wp-react-lib-blocks';
15
- export const BLOCKS_NS = 'viz';
17
+ export const BLOCKS_NS = 'viz';
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = exports.DataFilters = void 0;
7
+ var _components = require("@wordpress/components");
8
+ var _i18n = require("@wordpress/i18n");
9
+ const DataFilters = props => {
10
+ const updateFilterParam = (param, idx) => {
11
+ const {
12
+ attributes: {
13
+ filters: filters2
14
+ },
15
+ setAttributes,
16
+ allFilters: allFilters2
17
+ } = props;
18
+ const newFilters = filters2.slice();
19
+ const selected = allFilters2.filter(f => f.param === param)[0];
20
+ newFilters[idx] = {
21
+ ...selected,
22
+ value: []
23
+ };
24
+ setAttributes({
25
+ filters: newFilters
26
+ });
27
+ };
28
+ const updateFilterValue = (value, idx) => {
29
+ const {
30
+ attributes: {
31
+ filters: filters2
32
+ },
33
+ setAttributes,
34
+ onChange
35
+ } = props;
36
+ const selected = filters2[idx];
37
+ let values = selected.value;
38
+ if (values.indexOf(value) > -1) {
39
+ values = values.filter(v => v != value);
40
+ } else {
41
+ values.push(value);
42
+ }
43
+ const newFilters = filters2.slice();
44
+ newFilters[idx].value = values;
45
+ setAttributes({
46
+ filters: newFilters
47
+ });
48
+ onChange();
49
+ };
50
+ const addFilter = () => {
51
+ const {
52
+ attributes: {
53
+ filters: filters2
54
+ },
55
+ setAttributes,
56
+ allFilters: allFilters2
57
+ } = props;
58
+ let index = filters2.length > allFilters2.length ? allFilters2.length : filters2.length;
59
+ const newFilter = allFilters2 && allFilters2.length > 0 ? {
60
+ ...allFilters2[index],
61
+ "value": []
62
+ } : null;
63
+ let newFilters = filters2.slice();
64
+ newFilters.push(newFilter);
65
+ setAttributes({
66
+ filters: newFilters
67
+ });
68
+ };
69
+ const removeFilter = f => {
70
+ const {
71
+ attributes: {
72
+ filters: filters2
73
+ },
74
+ setAttributes
75
+ } = props;
76
+ let newFilters = filters2.slice(0, -1);
77
+ setAttributes({
78
+ filters: newFilters
79
+ });
80
+ };
81
+ const items = type => {
82
+ const values = props.allCategories ? props.allCategories.filter(c => c.type === type) : [];
83
+ const cat = values.length > 0 ? values[0] : null;
84
+ let items2 = null;
85
+ if (type === "Boolean") {
86
+ items2 = [{
87
+ "value": "Yes",
88
+ id: true
89
+ }, {
90
+ "value": "No",
91
+ id: false
92
+ }];
93
+ } else if (cat) {
94
+ items2 = cat.items;
95
+ }
96
+ return items2;
97
+ };
98
+ const FilterSelector = ({
99
+ param,
100
+ index,
101
+ options,
102
+ onUpdateFilterParam
103
+ }) => {
104
+ const sortedOptions = options.sort(function (a, b) {
105
+ var aLabel = a.label ? a.label.toLowerCase() : "";
106
+ var bLabel = b.label ? b.label.toLowerCase() : "";
107
+ return aLabel < bLabel ? -1 : aLabel > bLabel ? 1 : 0;
108
+ });
109
+ return /* @__PURE__ */React.createElement(_components.SelectControl, {
110
+ onChange: value => {
111
+ onUpdateFilterParam(value, index);
112
+ },
113
+ value: param,
114
+ options: sortedOptions
115
+ });
116
+ };
117
+ const CategoricalFilter = ({
118
+ value,
119
+ index,
120
+ items: items2,
121
+ onUpdateFilterValue
122
+ }) => {
123
+ if (items2) {
124
+ const sortedItems = items2.sort(function (a, b) {
125
+ if (a.position !== void 0 && b.position !== void 0 && a.position !== b.position) {
126
+ return a.position - b.position;
127
+ }
128
+ let aValue = a.value ? a.value.toLowerCase() : "";
129
+ let bValue = b.value ? b.value.toLowerCase() : "";
130
+ return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
131
+ });
132
+ return sortedItems.map(v => /* @__PURE__ */React.createElement(_components.PanelRow, null, /* @__PURE__ */React.createElement(_components.ToggleControl, {
133
+ label: v.value,
134
+ checked: value.indexOf(v.id) > -1,
135
+ onChange: e => {
136
+ onUpdateFilterValue(v.id, index);
137
+ }
138
+ })));
139
+ } else {
140
+ return null;
141
+ }
142
+ };
143
+ const {
144
+ allFilters,
145
+ attributes: {
146
+ filters
147
+ }
148
+ } = props;
149
+ return /* @__PURE__ */React.createElement(_components.PanelBody, {
150
+ initialOpen: false,
151
+ title: (0, _i18n.__)("Filters")
152
+ }, filters.map((f, index) => {
153
+ return /* @__PURE__ */React.createElement(_components.PanelBody, {
154
+ initialOpen: true,
155
+ title: (0, _i18n.__)(`Filter - ${f.label}`)
156
+ }, /* @__PURE__ */React.createElement(FilterSelector, {
157
+ param: f.param,
158
+ index,
159
+ options: allFilters,
160
+ onUpdateFilterParam: updateFilterParam
161
+ }), /* @__PURE__ */React.createElement(CategoricalFilter, {
162
+ value: f.value,
163
+ index,
164
+ items: items(f.type),
165
+ onUpdateFilterValue: updateFilterValue
166
+ }));
167
+ }), /* @__PURE__ */React.createElement(_components.PanelRow, null, /* @__PURE__ */React.createElement(_components.Button, {
168
+ variant: "link",
169
+ onClick: addFilter
170
+ }, (0, _i18n.__)("Add Filter")), /* @__PURE__ */React.createElement(_components.Button, {
171
+ variant: "link",
172
+ onClick: removeFilter
173
+ }, (0, _i18n.__)("Remove"))));
174
+ };
175
+ exports.DataFilters = DataFilters;
176
+ module.exports = DataFilters;
@@ -1,13 +1,2 @@
1
- import React from 'react';
2
- import { Filter } from './types';
3
- export type DataFiltersProps = {
4
- allCategories: any[];
5
- allFilters: any[];
6
- onChange?: () => void;
7
- attributes?: {
8
- filters: Filter[];
9
- };
10
- setAttributes: (attributes: any) => void;
11
- };
12
- export declare const DataFilters: (props: DataFiltersProps) => React.JSX.Element;
1
+ export function DataFilters(props: any): import("react").JSX.Element;
13
2
  export default DataFilters;