@cdc/map 4.25.5-1 → 4.25.6-1

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.
@@ -1,5 +1,5 @@
1
1
  // Vendor
2
- import React, { useEffect, useRef, useId, useReducer, useContext } from 'react'
2
+ import React, { useEffect, useRef, useId, useReducer, useContext, useMemo } from 'react'
3
3
  import 'whatwg-fetch'
4
4
  import { Tooltip as ReactTooltip } from 'react-tooltip'
5
5
  import Papa from 'papaparse'
@@ -14,9 +14,11 @@ import MediaControls from '@cdc/core/components/MediaControls'
14
14
  import SkipTo from '@cdc/core/components/elements/SkipTo'
15
15
  import Title from '@cdc/core/components/ui/Title'
16
16
  import Waiting from '@cdc/core/components/Waiting'
17
+ import FootnotesStandAlone from '@cdc/core/components/Footnotes/FootnotesStandAlone'
17
18
 
18
19
  // types
19
20
  import { type MapConfig } from './types/MapConfig'
21
+ import { Datasets } from '@cdc/core/types/DataSet'
20
22
 
21
23
  // Sass
22
24
  import './scss/main.scss'
@@ -29,6 +31,7 @@ import { isSolrCsv, isSolrJson } from '@cdc/core/helpers/isSolr'
29
31
  import { publish } from '@cdc/core/helpers/events'
30
32
  import { generateRuntimeFilters } from './helpers/generateRuntimeFilters'
31
33
  import { type MapReducerType, MapState } from './store/map.reducer'
34
+ import { addValuesToFilters } from '@cdc/core/helpers/addValuesToFilters'
32
35
 
33
36
  // Map Helpers
34
37
  import {
@@ -75,6 +78,7 @@ type CdcMapComponent = {
75
78
  navigationHandler: Function
76
79
  setSharedFilter: Function
77
80
  setSharedFilterValue: Function
81
+ datasets?: Datasets
78
82
  }
79
83
 
80
84
  const CdcMapComponent: React.FC<CdcMapComponent> = ({
@@ -86,8 +90,9 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
86
90
  setSharedFilter,
87
91
  setSharedFilterValue,
88
92
  link,
93
+ setConfig: setParentConfig,
89
94
  loadConfig,
90
- setConfig: setParentConfig
95
+ datasets
91
96
  }) => {
92
97
  const initialState = getInitialState(configObj)
93
98
 
@@ -144,7 +149,13 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
144
149
  }
145
150
 
146
151
  const _setRuntimeData = (data: any) => {
147
- setRuntimeData(data)
152
+ const _newFilters = addValuesToFilters(data, [])
153
+ setConfig({ ...config, filters: _newFilters })
154
+ if (config) {
155
+ setRuntimeData(data)
156
+ } else {
157
+ setRuntimeFilters(data)
158
+ }
148
159
  }
149
160
  const transform = new DataTransform()
150
161
 
@@ -157,7 +168,7 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
157
168
  const tooltipRef = useRef(null)
158
169
 
159
170
  // IDs
160
- const imageId = useId()
171
+ const imageId = useMemo(() => `download-id-${Math.random().toString(36).substr(2, 9)}`, [])
161
172
  const legendId = useId()
162
173
  const mapId = useId()
163
174
  const tooltipId = 'test'
@@ -273,6 +284,7 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
273
284
  primary: config.columns.primary.name,
274
285
  mapPosition: config.mapPosition,
275
286
  map: config.map,
287
+ table: config.table,
276
288
  ...runtimeFilters
277
289
  })
278
290
 
@@ -283,7 +295,8 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
283
295
  { ...config, data: configObj.data },
284
296
  filters || runtimeFilters,
285
297
  hashData,
286
- isCategoryLegend
298
+ isCategoryLegend,
299
+ config.table.showNonGeoData
287
300
  )
288
301
  setRuntimeData(newRuntimeData)
289
302
  } else {
@@ -402,7 +415,7 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
402
415
  imageId={imageId}
403
416
  showEditorPanel={config.showEditorPanel}
404
417
  >
405
- {isEditor && <EditorPanel />}
418
+ {isEditor && <EditorPanel datasets={datasets} />}
406
419
  <Layout.Responsive isEditor={isEditor}>
407
420
  {requiredColumns?.length > 0 && (
408
421
  <Waiting requiredColumns={requiredColumns} className={displayPanel ? `waiting` : `waiting collapsed`} />
@@ -428,7 +441,7 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
428
441
  config={config}
429
442
  setConfig={setConfig}
430
443
  filteredData={runtimeFilters}
431
- setFilteredData={_setRuntimeData}
444
+ setFilters={_setRuntimeData}
432
445
  dimensions={dimensions}
433
446
  standaloneMap={!config}
434
447
  />
@@ -463,8 +476,8 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
463
476
  /* logo is handled in UsaMap.State when applicable */
464
477
  // prettier-ignore
465
478
  'data' === general.type && logo && ('us' !== geoType || 'us-geocode' === general.type) && (
466
- <img src={logo} alt='' className='map-logo' style={{ maxWidth: '50px' }} />
467
- )
479
+ <img src={logo} alt='' className='map-logo' style={{ maxWidth: '50px' }} />
480
+ )
468
481
  }
469
482
  </>
470
483
  )}
@@ -584,6 +597,7 @@ const CdcMapComponent: React.FC<CdcMapComponent> = ({
584
597
  display: 'none' // can't use d-none here
585
598
  }}
586
599
  ></div>
600
+ <FootnotesStandAlone config={config.footnotes} filters={config.filters?.filter(f => f.filterFootnotes)} />
587
601
  </Layout.Responsive>
588
602
  </Layout.VisualizationWrapper>
589
603
  </MapDispatchContext.Provider>
@@ -0,0 +1,19 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import CdcMapComponent from '../CdcMapComponent'
3
+ import defaultPatterns from './_mock/default-patterns.json'
4
+ import { editConfigKeys } from '@cdc/chart/src/helpers/configHelpers'
5
+
6
+ const meta: Meta<typeof CdcMapComponent> = {
7
+ title: 'Components/Templates/Map/Table',
8
+ component: CdcMapComponent
9
+ }
10
+
11
+ type Story = StoryObj<typeof CdcMapComponent>
12
+
13
+ export const Show_Non_Geo_Data: Story = {
14
+ args: {
15
+ config: editConfigKeys(defaultPatterns, [{ path: ['table', 'showNonGeoData'], value: true }])
16
+ }
17
+ }
18
+
19
+ export default meta
@@ -4,6 +4,7 @@ import EqualNumberOptInExample from './_mock/DEV-7286.json'
4
4
  import SingleStateWithFilters from './_mock/DEV-8942.json'
5
5
  import exampleCityState from './_mock/example-city-state.json'
6
6
  import { editConfigKeys } from '@cdc/chart/src/helpers/configHelpers'
7
+ import exampleLegendBins from './_mock/legend-bins.json'
7
8
 
8
9
  const meta: Meta<typeof CdcMap> = {
9
10
  title: 'Components/Templates/Map',
@@ -156,4 +157,11 @@ export const Custom_Color_Distributions_With_Update_Needed: Story = {
156
157
  }
157
158
  }
158
159
 
160
+ export const Legend_Bins: Story = {
161
+ args: {
162
+ config: exampleLegendBins,
163
+ isEditor: true
164
+ }
165
+ }
166
+
159
167
  export default meta
@@ -146,10 +146,7 @@
146
146
  "additionalCityStyles": []
147
147
  },
148
148
  "mapPosition": {
149
- "coordinates": [
150
- 0,
151
- 30
152
- ],
149
+ "coordinates": [0, 30],
153
150
  "zoom": 1
154
151
  },
155
152
  "map": {
@@ -193,6 +190,12 @@
193
190
  },
194
191
  "usingWidgetLoader": true,
195
192
  "data": [
193
+ {
194
+ "STATE": "Non-Geo Data",
195
+ "Rate": 1000,
196
+ "Location": "Home",
197
+ "URL": "https://www.cdc.gov/"
198
+ },
196
199
  {
197
200
  "STATE": "AL",
198
201
  "Rate": 1000,
@@ -862,4 +865,4 @@
862
865
  ],
863
866
  "filterStyle": "Filter Changes",
864
867
  "version": "4.24.11"
865
- }
868
+ }
@@ -0,0 +1,428 @@
1
+ {
2
+ "general": {
3
+ "geoType": "us",
4
+ "geoBorderColor": "darkGray",
5
+ "showTitle": false,
6
+ "showSidebar": true,
7
+ "showDownloadButton": false,
8
+ "showDownloadMediaButton": false,
9
+ "displayAsHex": true,
10
+ "displayStateLabels": false,
11
+ "territoriesLabel": "Territories",
12
+ "language": "en",
13
+ "hasRegions": false,
14
+ "expandDataTable": false,
15
+ "fullBorder": false,
16
+ "type": "data",
17
+ "palette": {
18
+ "isReversed": true
19
+ },
20
+ "geoLabelOverride": "",
21
+ "convertFipsCodes": true,
22
+ "allowMapZoom": true,
23
+ "hideGeoColumnInTooltip": false,
24
+ "hidePrimaryColumnInTooltip": false,
25
+ "superTitle": "",
26
+ "equalNumberOptIn": true,
27
+ "navigationTarget": "_self",
28
+ "noStateFoundMessage": "Map Unavailable",
29
+ "annotationDropdownText": "Annotations",
30
+ "headerColor": "theme-blue",
31
+ "title": "",
32
+ "territoriesAlwaysShow": false,
33
+ "statePicked": {
34
+ "fipsCode": "01",
35
+ "stateName": "Alabama"
36
+ }
37
+ },
38
+ "type": "map",
39
+ "customColors": [
40
+ "red",
41
+ "#edf8fb",
42
+ "yellow",
43
+ "#b3cde3",
44
+ "green",
45
+ "#8c96c6",
46
+ "#8856a7",
47
+ "#810f7c",
48
+ "pink"
49
+ ],
50
+ "columns": {
51
+ "geo": {
52
+ "name": "state",
53
+ "label": "Location",
54
+ "tooltip": false,
55
+ "dataTable": true
56
+ },
57
+ "primary": {
58
+ "dataTable": true,
59
+ "tooltip": true,
60
+ "prefix": "",
61
+ "suffix": "%",
62
+ "name": "value",
63
+ "label": "",
64
+ "roundToPlace": 1
65
+ },
66
+ "navigate": {
67
+ "name": ""
68
+ },
69
+ "latitude": {
70
+ "name": ""
71
+ },
72
+ "longitude": {
73
+ "name": ""
74
+ }
75
+ },
76
+ "legend": {
77
+ "descriptions": {},
78
+ "specialClasses": [
79
+ {
80
+ "key": "value",
81
+ "value": "",
82
+ "label": "No data"
83
+ }
84
+ ],
85
+ "unified": false,
86
+ "singleColumn": false,
87
+ "dynamicDescription": false,
88
+ "type": "equalnumber",
89
+ "numberOfItems": 5,
90
+ "position": "side",
91
+ "title": "Legend",
92
+ "singleRow": false,
93
+ "verticalSorted": false,
94
+ "showSpecialClassesLast": true,
95
+ "categoryValuesOrder": [
96
+ "No",
97
+ "Yes"
98
+ ]
99
+ },
100
+ "filters": [],
101
+ "table": {
102
+ "wrapColumns": false,
103
+ "label": "Data Table",
104
+ "expanded": false,
105
+ "limitHeight": false,
106
+ "height": "",
107
+ "caption": "",
108
+ "showDownloadUrl": false,
109
+ "showDataTableLink": false,
110
+ "showFullGeoNameInCSV": false,
111
+ "forceDisplay": false,
112
+ "download": true,
113
+ "indexLabel": "",
114
+ "showDownloadLinkBelow": true,
115
+ "cellMinWidth": "0"
116
+ },
117
+ "tooltips": {
118
+ "appearanceType": "hover",
119
+ "linkLabel": "Learn More",
120
+ "capitalizeLabels": true,
121
+ "opacity": 90
122
+ },
123
+ "visual": {
124
+ "minBubbleSize": 1,
125
+ "maxBubbleSize": 20,
126
+ "extraBubbleBorder": false,
127
+ "cityStyle": "circle",
128
+ "cityStyleLabel": "",
129
+ "showBubbleZeros": false,
130
+ "additionalCityStyles": [],
131
+ "geoCodeCircleSize": 8
132
+ },
133
+ "mapPosition": {
134
+ "coordinates": [
135
+ 0,
136
+ 30
137
+ ],
138
+ "zoom": 1
139
+ },
140
+ "map": {
141
+ "layers": [],
142
+ "patterns": []
143
+ },
144
+ "filterBehavior": "Filter Change",
145
+ "dataTable": {
146
+ "title": "Data Table",
147
+ "forceDisplay": true,
148
+ "caption": "Lorem Ipsum - Text added to Data Table Caption",
149
+ "limitHeight": true,
150
+ "height": "100"
151
+ },
152
+ "orientation": null,
153
+ "visualizationSubType": null,
154
+ "validated": "4.24.3",
155
+ "version": "4.24.12",
156
+ "data": [
157
+ {
158
+ "state": "New Mexico",
159
+ "stratification": "Total",
160
+ "value": 80.2
161
+ },
162
+ {
163
+ "state": "Pennsylvania",
164
+ "stratification": "Total",
165
+ "value": 29.8
166
+ },
167
+ {
168
+ "state": "Alabama",
169
+ "stratification": "Total",
170
+ "value": 18.2
171
+ },
172
+ {
173
+ "state": "Connecticut",
174
+ "stratification": "Total",
175
+ "value": 53.5
176
+ },
177
+ {
178
+ "state": "Massachusetts",
179
+ "stratification": "Total",
180
+ "value": 36.6
181
+ },
182
+ {
183
+ "state": "Rhode Island",
184
+ "stratification": "Total",
185
+ "value": 95.9
186
+ },
187
+ {
188
+ "state": "Tennessee",
189
+ "stratification": "Total",
190
+ "value": 14.8
191
+ },
192
+ {
193
+ "state": "Hawaii",
194
+ "stratification": "Total",
195
+ "value": 12.1
196
+ },
197
+ {
198
+ "state": "Kentucky",
199
+ "stratification": "Total",
200
+ "value": 15.4
201
+ },
202
+ {
203
+ "state": "Alaska",
204
+ "stratification": "Total",
205
+ "value": 20.8
206
+ },
207
+ {
208
+ "state": "Michigan",
209
+ "stratification": "Total",
210
+ "value": 32.9
211
+ },
212
+ {
213
+ "state": "North Dakota",
214
+ "stratification": "Total",
215
+ "value": 12
216
+ },
217
+ {
218
+ "state": "Iowa",
219
+ "stratification": "Total",
220
+ "value": 8.8
221
+ },
222
+ {
223
+ "state": "Nebraska",
224
+ "stratification": "Total",
225
+ "value": 14.7
226
+ },
227
+ {
228
+ "state": "West Virginia",
229
+ "stratification": "Total",
230
+ "value": 20.4
231
+ },
232
+ {
233
+ "state": "Ohio",
234
+ "stratification": "Total",
235
+ "value": 23
236
+ },
237
+ {
238
+ "state": "Montana",
239
+ "stratification": "Total",
240
+ "value": 40.2
241
+ },
242
+ {
243
+ "state": "Vermont",
244
+ "stratification": "Total",
245
+ "value": 11.1
246
+ },
247
+ {
248
+ "state": "Oregon",
249
+ "stratification": "Total",
250
+ "value": 17.5
251
+ },
252
+ {
253
+ "state": "Florida",
254
+ "stratification": "Total",
255
+ "value": 31.5
256
+ },
257
+ {
258
+ "state": "California",
259
+ "stratification": "Total",
260
+ "value": 40.9
261
+ },
262
+ {
263
+ "state": "Colorado",
264
+ "stratification": "Total",
265
+ "value": 35.1
266
+ },
267
+ {
268
+ "state": "Arizona",
269
+ "stratification": "Total",
270
+ "value": 6.4
271
+ },
272
+ {
273
+ "state": "Georgia",
274
+ "stratification": "Total",
275
+ "value": 32.6
276
+ },
277
+ {
278
+ "state": "Virgin Islands",
279
+ "stratification": "Total",
280
+ "value": 0
281
+ },
282
+ {
283
+ "state": "Puerto Rico",
284
+ "stratification": "Total",
285
+ "value": 0.8
286
+ },
287
+ {
288
+ "state": "New Jersey",
289
+ "stratification": "Total",
290
+ "value": 28.4
291
+ },
292
+ {
293
+ "state": "Wisconsin",
294
+ "stratification": "Total",
295
+ "value": 21.1
296
+ },
297
+ {
298
+ "state": "Idaho",
299
+ "stratification": "Total",
300
+ "value": 9.8
301
+ },
302
+ {
303
+ "state": "Missouri",
304
+ "stratification": "Total",
305
+ "value": 20.8
306
+ },
307
+ {
308
+ "state": "Mississippi",
309
+ "stratification": "Total",
310
+ "value": 65.4
311
+ },
312
+ {
313
+ "state": "New York",
314
+ "stratification": "Total",
315
+ "value": 35.1
316
+ },
317
+ {
318
+ "state": "South Dakota",
319
+ "stratification": "Total",
320
+ "value": 4.6
321
+ },
322
+ {
323
+ "state": "Nevada",
324
+ "stratification": "Total",
325
+ "value": 13.8
326
+ },
327
+ {
328
+ "state": "Washington",
329
+ "stratification": "Total",
330
+ "value": 22.6
331
+ },
332
+ {
333
+ "state": "Indiana",
334
+ "stratification": "Total",
335
+ "value": 32.1
336
+ },
337
+ {
338
+ "state": "Oklahoma",
339
+ "stratification": "Total",
340
+ "value": 31.3
341
+ },
342
+ {
343
+ "state": "Maine",
344
+ "stratification": "Total",
345
+ "value": 16.9
346
+ },
347
+ {
348
+ "state": "Maryland",
349
+ "stratification": "Total",
350
+ "value": 23.5
351
+ },
352
+ {
353
+ "state": "Arkansas",
354
+ "stratification": "Total",
355
+ "value": 31.9
356
+ },
357
+ {
358
+ "state": "Wyoming",
359
+ "stratification": "Total",
360
+ "value": 2.3
361
+ },
362
+ {
363
+ "state": "New Hampshire",
364
+ "stratification": "Total",
365
+ "value": 51.7
366
+ },
367
+ {
368
+ "state": "Texas",
369
+ "stratification": "Total",
370
+ "value": 16.9
371
+ },
372
+ {
373
+ "state": "Guam",
374
+ "stratification": "Total",
375
+ "value": 0
376
+ },
377
+ {
378
+ "state": "Delaware",
379
+ "stratification": "Total",
380
+ "value": 83.4
381
+ },
382
+ {
383
+ "state": "Utah",
384
+ "stratification": "Total",
385
+ "value": 10
386
+ },
387
+ {
388
+ "state": "North Carolina",
389
+ "stratification": "Total",
390
+ "value": 35.7
391
+ },
392
+ {
393
+ "state": "South Carolina",
394
+ "stratification": "Total",
395
+ "value": 47.5
396
+ },
397
+ {
398
+ "state": "District of Columbia",
399
+ "stratification": "Total",
400
+ "value": 48.2
401
+ },
402
+ {
403
+ "state": "Louisiana",
404
+ "stratification": "Total",
405
+ "value": 56.8
406
+ },
407
+ {
408
+ "state": "Kansas",
409
+ "stratification": "Total",
410
+ "value": 52.9
411
+ },
412
+ {
413
+ "state": "Illinois",
414
+ "stratification": "Total",
415
+ "value": 25.8
416
+ },
417
+ {
418
+ "state": "Virginia",
419
+ "stratification": "Total",
420
+ "value": 13.8
421
+ },
422
+ {
423
+ "state": "Minnesota",
424
+ "stratification": "Total",
425
+ "value": 22
426
+ }
427
+ ]
428
+ }