@cdc/dashboard 4.25.3 → 4.25.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 (63) hide show
  1. package/Dynamic_Data.md +79 -0
  2. package/Override_Data.md +39 -0
  3. package/dist/cdcdashboard.js +77308 -78377
  4. package/examples/legend-issue-data.json +1874 -0
  5. package/examples/legend-issue.json +749 -0
  6. package/examples/m2.json +32904 -0
  7. package/examples/map.json +628 -0
  8. package/examples/special-classes.json +54340 -0
  9. package/index.html +1 -26
  10. package/package.json +10 -15
  11. package/src/CdcDashboardComponent.tsx +65 -216
  12. package/src/_stories/Dashboard.stories.tsx +2 -0
  13. package/src/_stories/_mock/api-filter-map.json +43 -1
  14. package/src/components/CollapsibleVisualizationRow.tsx +4 -6
  15. package/src/components/DashboardEditors.tsx +143 -0
  16. package/src/components/DashboardFilters/DashboardFilters.tsx +205 -205
  17. package/src/components/DashboardFilters/DashboardFiltersEditor/components/APIModal.tsx +129 -0
  18. package/src/components/DashboardFilters/DashboardFiltersEditor/components/FilterEditor.tsx +680 -652
  19. package/src/components/DashboardFilters/DashboardFiltersWrapper.tsx +198 -198
  20. package/src/components/DataDesignerModal.tsx +33 -14
  21. package/src/components/Header/Header.tsx +7 -9
  22. package/src/components/MultiConfigTabs/multiconfigtabs.styles.css +3 -0
  23. package/src/components/Row.tsx +2 -24
  24. package/src/components/VisualizationRow.tsx +191 -214
  25. package/src/helpers/getVizConfig.ts +108 -80
  26. package/src/helpers/getVizRowColumnLocator.ts +0 -1
  27. package/src/helpers/reloadURLHelpers.ts +11 -6
  28. package/src/helpers/shouldLoadAllFilters.ts +30 -30
  29. package/src/index.tsx +2 -1
  30. package/src/scss/main.scss +0 -5
  31. package/src/store/dashboard.actions.ts +2 -2
  32. package/src/store/dashboard.reducer.ts +15 -11
  33. package/src/types/ConfigRow.ts +0 -1
  34. package/src/types/Dashboard.ts +1 -1
  35. package/src/types/DashboardConfig.ts +1 -1
  36. package/src/types/SharedFilter.ts +2 -0
  37. package/examples/private/DEV-10120.json +0 -1294
  38. package/examples/private/DEV-10527.json +0 -845
  39. package/examples/private/DEV-10586.json +0 -54319
  40. package/examples/private/DEV-10856.json +0 -54319
  41. package/examples/private/DEV-9199.json +0 -606
  42. package/examples/private/DEV-9644.json +0 -20092
  43. package/examples/private/DEV-9684.json +0 -2135
  44. package/examples/private/DEV-9932.json +0 -95
  45. package/examples/private/DEV-9989.json +0 -229
  46. package/examples/private/art-dashboard.json +0 -18174
  47. package/examples/private/art-scratch.json +0 -2406
  48. package/examples/private/bird-flu-2.json +0 -440
  49. package/examples/private/bird-flu.json +0 -413
  50. package/examples/private/dashboard-config-ehdi.json +0 -29915
  51. package/examples/private/dashboard-map-filter.json +0 -815
  52. package/examples/private/dashboard-margins.js +0 -15
  53. package/examples/private/dataset.json +0 -1452
  54. package/examples/private/dev-10856-2.json +0 -1348
  55. package/examples/private/ehdi-data.json +0 -29502
  56. package/examples/private/exposure-source-h5-data.csv +0 -26
  57. package/examples/private/fatal-data.csv +0 -3159
  58. package/examples/private/feelings.json +0 -1
  59. package/examples/private/gaza-issue.json +0 -1214
  60. package/examples/private/markup.json +0 -115
  61. package/examples/private/nhis.json +0 -1792
  62. package/examples/private/workforce.json +0 -2041
  63. package/src/types/DataSet.ts +0 -11
@@ -0,0 +1,129 @@
1
+ import { useState } from 'react'
2
+ import { SharedFilter } from '../../../../types/SharedFilter'
3
+ import Tooltip from '@cdc/core/components/ui/Tooltip'
4
+ import Icon from '@cdc/core/components/ui/Icon'
5
+
6
+ type APIModalProps = {
7
+ filter: SharedFilter
8
+ isNestedDropdown: boolean
9
+ updateAPIFilter: Function
10
+ }
11
+
12
+ const APIModal: React.FC<APIModalProps> = ({ filter, isNestedDropdown, updateAPIFilter }) => {
13
+ const [APIEndpoint, setAPIEndpoint] = useState(filter.apiFilter?.apiEndpoint || '')
14
+ const [APIValueSelector, setAPIValueSelector] = useState(filter.apiFilter?.valueSelector || '')
15
+ const [APITextSelector, setAPITextSelector] = useState(filter.apiFilter?.textSelector || '')
16
+ const [APISubGroupValueSelector, setAPISubGroupValueSelector] = useState(filter.apiFilter?.subgroupValueSelector)
17
+ const [APISubGroupTextSelector, setAPISubGroupTextSelector] = useState(filter.apiFilter?.subgroupTextSelector)
18
+ return (
19
+ <fieldset className='mb-1 px-3 cdc-open-viz-module'>
20
+ <label className='d-block'>
21
+ <span>API Endpoint: </span>
22
+ <textarea
23
+ value={APIEndpoint}
24
+ rows={4}
25
+ onChange={e => setAPIEndpoint(e.target.value)}
26
+ className='w-100'
27
+ style={{ minHeight: '1.5rem', maxWidth: '90%' }}
28
+ />
29
+ {isNestedDropdown && (
30
+ <Tooltip style={{ textTransform: 'none' }}>
31
+ <Tooltip.Target>
32
+ <Icon display='question' style={{ marginLeft: '0.5rem' }} />
33
+ </Tooltip.Target>
34
+ <Tooltip.Content>
35
+ <p>Your API Endpoint should return both value selector values.</p>
36
+ </Tooltip.Content>
37
+ </Tooltip>
38
+ )}
39
+ </label>
40
+ <div className='d-flex'>
41
+ <div className={`w-50${isNestedDropdown ? ' border border-dark p-1 m-1' : ''}`}>
42
+ <label>
43
+ <span>Value Selector: </span>
44
+ <input type='text' value={APIValueSelector || ''} onChange={e => setAPIValueSelector(e.target.value)} />
45
+ <Tooltip style={{ textTransform: 'none' }}>
46
+ <Tooltip.Target>
47
+ <Icon display='question' style={{ marginLeft: '0.5rem' }} />
48
+ </Tooltip.Target>
49
+ <Tooltip.Content>
50
+ <p>Value to use in the html option element</p>
51
+ </Tooltip.Content>
52
+ </Tooltip>
53
+ <p>{` * Required`}</p>
54
+ </label>
55
+ <label>
56
+ <span>Display Text Selector: </span>
57
+ <input type='text' value={APITextSelector || ''} onChange={e => setAPITextSelector(e.target.value)} />
58
+ <Tooltip style={{ textTransform: 'none' }}>
59
+ <Tooltip.Target>
60
+ <Icon display='question' style={{ marginLeft: '0.5rem' }} />
61
+ </Tooltip.Target>
62
+ <Tooltip.Content>
63
+ <p>Text to use in the html option element. If none is applied value selector will be used.</p>
64
+ </Tooltip.Content>
65
+ </Tooltip>
66
+ <p>{` * Optional`}</p>
67
+ </label>
68
+ </div>
69
+
70
+ {isNestedDropdown && (
71
+ <div className={`w-50${isNestedDropdown ? ' border border-dark p-1 m-1' : ''}`}>
72
+ <label>
73
+ <span>Subgroup Value Selector: </span>
74
+ <input
75
+ type='text'
76
+ value={APISubGroupValueSelector || ''}
77
+ onChange={e => setAPISubGroupValueSelector(e.target.value)}
78
+ />
79
+ <Tooltip style={{ textTransform: 'none' }}>
80
+ <Tooltip.Target>
81
+ <Icon display='question' style={{ marginLeft: '0.5rem' }} />
82
+ </Tooltip.Target>
83
+ <Tooltip.Content>
84
+ <p>Value to use in the html option element</p>
85
+ </Tooltip.Content>
86
+ </Tooltip>
87
+ <p>{` * Required`}</p>
88
+ </label>
89
+ <label>
90
+ <span>Subgroup Display Text Selector: </span>
91
+ <input
92
+ type='text'
93
+ value={APISubGroupTextSelector || ''}
94
+ onChange={e => setAPISubGroupTextSelector(e.target.value)}
95
+ />
96
+ <Tooltip style={{ textTransform: 'none' }}>
97
+ <Tooltip.Target>
98
+ <Icon display='question' style={{ marginLeft: '0.5rem' }} />
99
+ </Tooltip.Target>
100
+ <Tooltip.Content>
101
+ <p>Text to use in the html option element. If none is applied value selector will be used.</p>
102
+ </Tooltip.Content>
103
+ </Tooltip>
104
+ <p>{` * Optional`}</p>
105
+ </label>
106
+ </div>
107
+ )}
108
+ </div>
109
+ <div className='d-flex justify-content-end mt-2'>
110
+ <button
111
+ className='btn btn-primary mt-2'
112
+ onClick={() =>
113
+ updateAPIFilter(
114
+ APIEndpoint,
115
+ APIValueSelector,
116
+ APITextSelector,
117
+ APISubGroupValueSelector,
118
+ APISubGroupTextSelector
119
+ )
120
+ }
121
+ >
122
+ Save
123
+ </button>
124
+ </div>
125
+ </fieldset>
126
+ )
127
+ }
128
+
129
+ export default APIModal