@cdc/editor 4.22.10-alpha.1 → 4.22.11

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 (38) hide show
  1. package/README.md +8 -7
  2. package/dist/cdceditor.js +42 -42
  3. package/example/data-horizontal-filters.json +5 -6
  4. package/example/data-horizontal-multiseries-filters.json +13 -15
  5. package/example/data-horizontal-multiseries.json +4 -5
  6. package/example/data-horizontal.json +2 -3
  7. package/example/data-vertical-filters.json +7 -8
  8. package/example/data-vertical-multiseries-filters.json +13 -15
  9. package/example/data-vertical-multiseries-multirow-filters.json +49 -52
  10. package/example/data-vertical-multiseries-multirow.json +11 -11
  11. package/example/data-vertical-multiseries.json +4 -5
  12. package/example/data-vertical.json +4 -5
  13. package/example/private/city-state.json +434 -0
  14. package/example/private/example-city-state.json +86 -0
  15. package/example/private/map-issue.csv +11 -0
  16. package/example/private/test.html +26 -1
  17. package/example/region-map.json +32 -32
  18. package/example/valid-county-data.json +3047 -3047
  19. package/package.json +8 -8
  20. package/src/CdcEditor.js +72 -72
  21. package/src/components/ChooseTab.js +67 -88
  22. package/src/components/ConfigureTab.js +51 -51
  23. package/src/components/DataImport.js +248 -246
  24. package/src/components/PreviewDataTable.js +130 -149
  25. package/src/components/TabPane.js +3 -3
  26. package/src/components/Tabs.js +20 -27
  27. package/src/components/modal/Confirmation.js +16 -13
  28. package/src/components/modal/Modal.js +23 -35
  29. package/src/components/modal/UseModal.js +8 -8
  30. package/src/context.js +4 -4
  31. package/src/index.html +1 -4
  32. package/src/index.js +6 -7
  33. package/src/scss/_data-table.scss +1 -1
  34. package/src/scss/_variables.scss +1 -1
  35. package/src/scss/choose-vis-tab.scss +63 -63
  36. package/src/scss/configure-tab.scss +17 -17
  37. package/src/scss/data-import.scss +177 -177
  38. package/src/scss/main.scss +31 -32
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdc/editor",
3
- "version": "4.22.10-alpha.1",
3
+ "version": "4.22.11",
4
4
  "main": "dist/cdceditor",
5
5
  "bugs": {
6
6
  "url": "https://github.com/CDCgov/cdc-open-viz/issues"
@@ -19,12 +19,12 @@
19
19
  "dependencies": {
20
20
  "@babel/runtime": "^7.12.5",
21
21
  "@cdc/chart": "^9.22.9",
22
- "@cdc/core": "^4.22.10",
23
- "@cdc/dashboard": "^4.22.10-alpha.1",
24
- "@cdc/data-bite": "^4.22.10",
25
- "@cdc/map": "^4.22.10-alpha.1",
26
- "@cdc/markup-include": "^4.22.10",
27
- "@cdc/waffle-chart": "^4.22.10",
22
+ "@cdc/core": "^4.22.11",
23
+ "@cdc/dashboard": "^4.22.11",
24
+ "@cdc/data-bite": "^4.22.11",
25
+ "@cdc/map": "^4.22.11",
26
+ "@cdc/markup-include": "^4.22.11",
27
+ "@cdc/waffle-chart": "^4.22.11",
28
28
  "axios": "^0.21.1",
29
29
  "d3": "^7.0.0",
30
30
  "html-react-parser": "1.4.9",
@@ -40,5 +40,5 @@
40
40
  "resolutions": {
41
41
  "@types/react": "17.x"
42
42
  },
43
- "gitHead": "bc6f9efd741e5b22140edc58c7a7f9e5efc43d1e"
43
+ "gitHead": "9768d1ea0e2383044977d988e33531bcdfe33ea6"
44
44
  }
package/src/CdcEditor.js CHANGED
@@ -1,25 +1,25 @@
1
- import React, { useState, useEffect,useCallback } from 'react';
1
+ import React, { useState, useEffect, useCallback } from 'react'
2
2
 
3
3
  // IE11
4
4
  import 'core-js/stable'
5
5
  import ResizeObserver from 'resize-observer-polyfill'
6
6
 
7
- import getViewport from '@cdc/core/helpers/getViewport';
7
+ import getViewport from '@cdc/core/helpers/getViewport'
8
8
 
9
9
  import { GlobalContextProvider } from '@cdc/core/components/GlobalContext'
10
- import GlobalState from './context';
10
+ import GlobalState from './context'
11
11
 
12
12
  import OverlayFrame from '@cdc/core/components/ui/OverlayFrame'
13
13
 
14
- import DataImport from './components/DataImport';
15
- import ChooseTab from './components/ChooseTab';
16
- import ConfigureTab from './components/ConfigureTab';
17
- import TabPane from './components/TabPane';
18
- import Tabs from './components/Tabs';
14
+ import DataImport from './components/DataImport'
15
+ import ChooseTab from './components/ChooseTab'
16
+ import ConfigureTab from './components/ConfigureTab'
17
+ import TabPane from './components/TabPane'
18
+ import Tabs from './components/Tabs'
19
19
 
20
- import './scss/main.scss';
20
+ import './scss/main.scss'
21
21
 
22
- export default function CdcEditor({ config: configObj = {newViz: true}, hostname, containerEl, sharepath }) {
22
+ export default function CdcEditor({ config: configObj = { newViz: true }, hostname, containerEl, sharepath }) {
23
23
  const [config, setConfig] = useState(configObj)
24
24
  const [tempConfig, setTempConfig] = useState(null)
25
25
  const [errors, setErrors] = useState([])
@@ -27,79 +27,79 @@ export default function CdcEditor({ config: configObj = {newViz: true}, hostname
27
27
  const [currentViewport, setCurrentViewport] = useState('lg')
28
28
  const [dimensions, setDimensions] = useState([])
29
29
 
30
- let startingTab = 0;
30
+ let startingTab = 0
31
31
 
32
- if(config.data && config.type) {
32
+ if (config.data && config.type) {
33
33
  startingTab = 2
34
34
  }
35
35
 
36
36
  // Legacy support - dashboards using a single dataset
37
- if(config.type === 'dashboard'){
38
- let legacyUpdateNeeded = false;
39
- let newConfig;
37
+ if (config.type === 'dashboard') {
38
+ let legacyUpdateNeeded = false
39
+ let newConfig
40
40
 
41
- if(config.data || config.dataUrl){
42
- legacyUpdateNeeded = true;
43
- newConfig = {...config};
41
+ if (config.data || config.dataUrl) {
42
+ legacyUpdateNeeded = true
43
+ newConfig = { ...config }
44
44
 
45
- newConfig.datasets = {};
45
+ newConfig.datasets = {}
46
46
  newConfig.datasets[config.dataFileName || 'dataset-1'] = {
47
47
  data: config.data,
48
48
  dataUrl: config.dataUrl,
49
49
  dataFileName: config.dataFileName || 'dataset-1',
50
50
  dataFileSourceType: config.dataFileSourceType
51
- };
51
+ }
52
52
 
53
53
  Object.keys(newConfig.visualizations).forEach(vizKey => {
54
- newConfig.visualizations[vizKey].dataKey = config.dataFileName || 'dataset-1';
55
- newConfig.visualizations[vizKey].dataDescription = newConfig.dataDescription;
56
- newConfig.visualizations[vizKey].formattedData = newConfig.formattedData;
57
- });
58
-
59
- delete newConfig.data;
60
- delete newConfig.dataUrl;
61
- delete newConfig.dataFileName;
62
- delete newConfig.dataFileSourceType;
63
- delete newConfig.dataDescription;
64
- delete newConfig.formattedData;
54
+ newConfig.visualizations[vizKey].dataKey = config.dataFileName || 'dataset-1'
55
+ newConfig.visualizations[vizKey].dataDescription = newConfig.dataDescription
56
+ newConfig.visualizations[vizKey].formattedData = newConfig.formattedData
57
+ })
58
+
59
+ delete newConfig.data
60
+ delete newConfig.dataUrl
61
+ delete newConfig.dataFileName
62
+ delete newConfig.dataFileSourceType
63
+ delete newConfig.dataDescription
64
+ delete newConfig.formattedData
65
65
  }
66
66
 
67
- if(config.dashboard && config.dashboard.filters){
68
- legacyUpdateNeeded = true;
69
- newConfig = {...config};
67
+ if (config.dashboard && config.dashboard.filters) {
68
+ legacyUpdateNeeded = true
69
+ newConfig = { ...config }
70
70
 
71
- newConfig.dashboard.sharedFilters = newConfig.dashboard.sharedFilters || [];
71
+ newConfig.dashboard.sharedFilters = newConfig.dashboard.sharedFilters || []
72
72
  newConfig.dashboard.filters.forEach(filter => {
73
- newConfig.dashboard.sharedFilters.push({...filter, key: filter.label, showDropdown: true, usedBy: Object.keys(newConfig.visualizations)});
74
- });
73
+ newConfig.dashboard.sharedFilters.push({ ...filter, key: filter.label, showDropdown: true, usedBy: Object.keys(newConfig.visualizations) })
74
+ })
75
75
 
76
- delete newConfig.dashboard.filters;
76
+ delete newConfig.dashboard.filters
77
77
  }
78
-
79
- if(legacyUpdateNeeded){
80
- setConfig(newConfig);
78
+
79
+ if (legacyUpdateNeeded) {
80
+ setConfig(newConfig)
81
81
  }
82
82
  }
83
83
 
84
- const [globalActive, setGlobalActive] = useState(startingTab);
84
+ const [globalActive, setGlobalActive] = useState(startingTab)
85
85
 
86
- const resizeObserver = new ResizeObserver(([ container ]) => {
86
+ const resizeObserver = new ResizeObserver(([container]) => {
87
87
  let { width, height } = container.contentRect
88
88
  let newViewport = getViewport(width)
89
89
 
90
90
  setDimensions([width, height])
91
91
  setCurrentViewport(newViewport)
92
- });
92
+ })
93
93
 
94
94
  const outerContainerRef = useCallback(node => {
95
95
  if (node !== null) {
96
- resizeObserver.observe(node);
96
+ resizeObserver.observe(node)
97
97
  }
98
- },[]);
98
+ }, [])
99
99
 
100
100
  // Temp Config is for changes made in the components proper - to prevent render cycles. Regular config is for changes made in the first two tabs.
101
101
  useEffect(() => {
102
- if(null !== tempConfig) {
102
+ if (null !== tempConfig) {
103
103
  const parsedData = JSON.stringify(tempConfig)
104
104
  // Emit the data in a regular JS event so it can be consumed by anything.
105
105
  const event = new CustomEvent('updateVizConfig', { detail: parsedData, bubbles: true })
@@ -110,29 +110,29 @@ export default function CdcEditor({ config: configObj = {newViz: true}, hostname
110
110
  useEffect(() => {
111
111
  const parsedData = JSON.stringify(config)
112
112
  // Emit the data in a regular JS event so it can be consumed by anything.
113
- const event = new CustomEvent('updateVizConfig', { detail: parsedData})
113
+ const event = new CustomEvent('updateVizConfig', { detail: parsedData })
114
114
  window.dispatchEvent(event)
115
115
  }, [config])
116
116
 
117
117
  useEffect(() => {
118
- if(globalActive > -1) {
118
+ if (globalActive > -1) {
119
119
  setGlobalActive(-1)
120
120
  }
121
121
  }, [globalActive])
122
122
 
123
- const maxFileSize = 10; // Represents number of MB. Maybe move this to a prop eventually but static for now.
123
+ const maxFileSize = 10 // Represents number of MB. Maybe move this to a prop eventually but static for now.
124
124
 
125
125
  const errorMessages = {
126
- emptyCols: "It looks like your column headers are missing some data. Please make sure all of your columns have titles and upload your file again.",
127
- emptyData: "Your data file is empty.",
128
- dataType: "Your datatype is not supported.",
129
- fileType: "The file type that you are trying to upload is not supported.",
130
- formatting: "Please check the formatting of your data file.",
131
- failedFetch: "Error fetching or parsing data file.",
132
- urlInvalid: "Please make sure to use a valid URL.",
126
+ emptyCols: 'It looks like your column headers are missing some data. Please make sure all of your columns have titles and upload your file again.',
127
+ emptyData: 'Your data file is empty.',
128
+ dataType: 'Your datatype is not supported.',
129
+ fileType: 'The file type that you are trying to upload is not supported.',
130
+ formatting: 'Please check the formatting of your data file.',
131
+ failedFetch: 'Error fetching or parsing data file.',
132
+ urlInvalid: 'Please make sure to use a valid URL.',
133
133
  cannotReach: "Cannot reach URL, please make sure it's correct.",
134
134
  fileTooLarge: `File is too large. Maximum file size is ${maxFileSize}MB.`
135
- };
135
+ }
136
136
 
137
137
  const state = {
138
138
  config,
@@ -149,15 +149,15 @@ export default function CdcEditor({ config: configObj = {newViz: true}, hostname
149
149
  sharepath
150
150
  }
151
151
 
152
- let configureDisabled = true;
152
+ let configureDisabled = true
153
153
 
154
- if(config.type !== 'dashboard'){
155
- if(config.formattedData){
156
- configureDisabled = false;
154
+ if (config.type !== 'dashboard') {
155
+ if (config.formattedData) {
156
+ configureDisabled = false
157
157
  }
158
158
  } else {
159
- if(config.datasets && Object.keys(config.datasets).length > 0){
160
- configureDisabled = false;
159
+ if (config.datasets && Object.keys(config.datasets).length > 0) {
160
+ configureDisabled = false
161
161
  }
162
162
  }
163
163
 
@@ -165,21 +165,21 @@ export default function CdcEditor({ config: configObj = {newViz: true}, hostname
165
165
  <GlobalContextProvider>
166
166
  <GlobalState.Provider value={state}>
167
167
  <div className={`cdc-open-viz-module cdc-editor ${currentViewport}`} ref={outerContainerRef}>
168
- <Tabs className="top-level" startingTab={globalActive}>
169
- <TabPane title="1. Choose Visualization Type" className="choose-type">
168
+ <Tabs className='top-level' startingTab={globalActive}>
169
+ <TabPane title='1. Choose Visualization Type' className='choose-type'>
170
170
  <ChooseTab />
171
171
  </TabPane>
172
- <TabPane title="2. Import Data" className="data-designer" disableRule={!config.type}>
172
+ <TabPane title='2. Import Data' className='data-designer' disableRule={!config.type}>
173
173
  <DataImport />
174
174
  </TabPane>
175
-
176
- <TabPane title="3. Configure" className="configure" disableRule={configureDisabled}>
177
- <ConfigureTab containerEl={containerEl }/>
175
+
176
+ <TabPane title='3. Configure' className='configure' disableRule={configureDisabled}>
177
+ <ConfigureTab containerEl={containerEl} />
178
178
  </TabPane>
179
179
  </Tabs>
180
180
  </div>
181
181
  </GlobalState.Provider>
182
- <OverlayFrame/>
182
+ <OverlayFrame />
183
183
  </GlobalContextProvider>
184
- );
184
+ )
185
185
  }
@@ -30,55 +30,54 @@ export default function ChooseTab() {
30
30
  /**
31
31
  * IconButton component
32
32
  */
33
- const IconButton = ({ icon, label, type, subType, barType, orientation, stacked = false, generalType = "data" }) => {
33
+ const IconButton = ({ icon, label, type, subType, barType, orientation, stacked = false, generalType = 'data' }) => {
34
34
  let isSubType = false
35
35
  let isHorizontalStackedChart = false
36
- let classNames;
36
+ let classNames
37
37
 
38
38
  if (type === 'map' && config.general) {
39
39
  let geoType = config.general.geoType
40
- isSubType = (subType === geoType)
40
+ isSubType = subType === geoType
41
41
  }
42
42
 
43
43
  if (type === 'chart') {
44
- isSubType = (subType === config.visualizationType)
45
- isHorizontalStackedChart = (orientation === config.orientation && stacked === true)
44
+ isSubType = subType === config.visualizationType
45
+ isHorizontalStackedChart = orientation === config.orientation && stacked === true
46
46
  }
47
47
 
48
- if(type === 'dashboard' || type === 'data-bite' || type === 'waffle-chart' || type === 'markup-include') isSubType = true;
48
+ if (type === 'dashboard' || type === 'data-bite' || type === 'waffle-chart' || type === 'markup-include') isSubType = true
49
49
 
50
50
  // TODO: sorry, we should refactor this at some point.
51
51
  // trying to get this out for 4.22.5 - this is so stacked horizontal and bar charts aren't highlighted at the same time.
52
52
  // this functionality appears to be working but is admittedly confusing.
53
- if(type === 'chart' && stacked) {
54
- classNames = (config.type === type && isSubType && config.visualizationSubType === 'stacked') ? 'active' : ''
53
+ if (type === 'chart' && stacked) {
54
+ classNames = config.type === type && isSubType && config.visualizationSubType === 'stacked' ? 'active' : ''
55
55
  } else if (type === 'chart' && !stacked && config.visualizationSubType !== 'stacked') {
56
- classNames = (config.type === type && isSubType ) ? 'active' : ''
56
+ classNames = config.type === type && isSubType ? 'active' : ''
57
57
  }
58
58
 
59
- if(type !== 'chart') {
60
- classNames = (config.type === type && isSubType && !isHorizontalStackedChart) ? 'active' : ''
59
+ if (type !== 'chart') {
60
+ classNames = config.type === type && isSubType && !isHorizontalStackedChart ? 'active' : ''
61
61
  }
62
62
 
63
-
64
63
  let setTypes = () => {
65
- if(type === config.type){
66
- if(subType !== config.visualizationType){
67
- setConfig({...config, newViz: true, visualizationType: subType})
64
+ if (type === config.type) {
65
+ if (subType !== config.visualizationType) {
66
+ setConfig({ ...config, newViz: true, visualizationType: subType })
68
67
  }
69
68
 
70
69
  setGlobalActive(1)
71
70
  } else {
72
- let confirmation = !config.type || window.confirm('Changing visualization type will clear configuration settings. Do you want to continue?');
71
+ let confirmation = !config.type || window.confirm('Changing visualization type will clear configuration settings. Do you want to continue?')
73
72
 
74
- if(confirmation){
73
+ if (confirmation) {
75
74
  let newConfig = {
76
75
  newViz: true,
77
76
  datasets: {},
78
77
  type
79
78
  }
80
79
 
81
- if(type === 'map') {
80
+ if (type === 'map') {
82
81
  newConfig.general = {
83
82
  ...newConfig.general,
84
83
  geoType: subType,
@@ -88,164 +87,144 @@ export default function ChooseTab() {
88
87
  newConfig.visualizationType = subType
89
88
  }
90
89
 
91
- setConfig(newConfig);
90
+ setConfig(newConfig)
92
91
  setGlobalActive(1)
93
92
  }
94
93
  }
95
94
  }
96
95
 
97
- return (<button className={classNames} onClick={() => setTypes()} aria-label={label}>{icon}<span
98
- className="mt-1">{label}</span></button>)
96
+ return (
97
+ <button className={classNames} onClick={() => setTypes()} aria-label={label}>
98
+ {icon}
99
+ <span className='mt-1'>{label}</span>
100
+ </button>
101
+ )
99
102
  }
100
103
 
101
104
  return (
102
- <div className="choose-vis">
103
- <a href="https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/index.html" target="_blank"
104
- rel="noopener noreferrer" className="guidance-link" style={{marginTop: 0, marginBottom: "2rem"}}>
105
+ <div className='choose-vis'>
106
+ <a href='https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/index.html' target='_blank' rel='noopener noreferrer' className='guidance-link' style={{ marginTop: 0, marginBottom: '2rem' }}>
105
107
  <div>
106
- <p>For more information on the types of data visualizations in the WCMS, including examples and best practices, <u>see the WCMS Features Gallery</u>.</p>
108
+ <p>
109
+ For more information on the types of data visualizations in the WCMS, including examples and best practices, <u>see the WCMS Features Gallery</u>.
110
+ </p>
107
111
  </div>
108
112
  </a>
109
113
 
110
- <div className="heading-2">General</div>
111
- <ul className="grid cove-temp"> {/*TODO: Remove cove class during refactor to Wizard*/}
114
+ <div className='heading-2'>General</div>
115
+ <ul className='grid cove-temp'>
116
+ {' '}
117
+ {/*TODO: Remove cove class during refactor to Wizard*/}
112
118
  <li>
113
- <Tooltip position="right">
119
+ <Tooltip position='right'>
114
120
  <Tooltip.Target>
115
- <IconButton label="Dashboard" type="dashboard" icon={<DashboardIcon/>}/>
121
+ <IconButton label='Dashboard' type='dashboard' icon={<DashboardIcon />} />
116
122
  </Tooltip.Target>
117
- <Tooltip.Content>
118
- Present multiple data visualizations with shared filter controls.
119
- </Tooltip.Content>
123
+ <Tooltip.Content>Present multiple data visualizations with shared filter controls.</Tooltip.Content>
120
124
  </Tooltip>
121
125
  </li>
122
126
  <li>
123
127
  <Tooltip>
124
128
  <Tooltip.Target>
125
- <IconButton label="Data Bite" type="data-bite" icon={<DataBiteIcon/>}/>
129
+ <IconButton label='Data Bite' type='data-bite' icon={<DataBiteIcon />} />
126
130
  </Tooltip.Target>
127
- <Tooltip.Content>
128
- Highlight a single aggregated value (e.g., sum or median).
129
- </Tooltip.Content>
131
+ <Tooltip.Content>Highlight a single aggregated value (e.g., sum or median).</Tooltip.Content>
130
132
  </Tooltip>
131
133
  </li>
132
134
  <li>
133
135
  <Tooltip>
134
136
  <Tooltip.Target>
135
- <IconButton label="Waffle Chart" type="waffle-chart" icon={<WaffleChartIcon/>}/>
137
+ <IconButton label='Waffle Chart' type='waffle-chart' icon={<WaffleChartIcon />} />
136
138
  </Tooltip.Target>
137
- <Tooltip.Content>
138
- Highlight a piece of data in relationship to a data set.
139
- </Tooltip.Content>
139
+ <Tooltip.Content>Highlight a piece of data in relationship to a data set.</Tooltip.Content>
140
140
  </Tooltip>
141
141
  </li>
142
142
  </ul>
143
143
 
144
- <div className="heading-2">Charts</div>
145
- <ul className="grid cove-temp">
144
+ <div className='heading-2'>Charts</div>
145
+ <ul className='grid cove-temp'>
146
146
  <li>
147
- <Tooltip position="right">
147
+ <Tooltip position='right'>
148
148
  <Tooltip.Target>
149
- <IconButton label="Bar" type="chart" subType="Bar" orientation="vertical" icon={<BarIcon/>}/>
149
+ <IconButton label='Bar' type='chart' subType='Bar' orientation='vertical' icon={<BarIcon />} />
150
150
  </Tooltip.Target>
151
- <Tooltip.Content>
152
- Use bars to show comparisons between data categories.
153
- </Tooltip.Content>
151
+ <Tooltip.Content>Use bars to show comparisons between data categories.</Tooltip.Content>
154
152
  </Tooltip>
155
153
  </li>
156
154
  <li>
157
155
  <Tooltip>
158
156
  <Tooltip.Target>
159
- <IconButton label="Line" type="chart" subType="Line" orientation="vertical" icon={<LineIcon/>}/>
157
+ <IconButton label='Line' type='chart' subType='Line' orientation='vertical' icon={<LineIcon />} />
160
158
  </Tooltip.Target>
161
- <Tooltip.Content>
162
- Present one or more data trends over time.
163
- </Tooltip.Content>
159
+ <Tooltip.Content>Present one or more data trends over time.</Tooltip.Content>
164
160
  </Tooltip>
165
161
  </li>
166
162
  <li>
167
163
  <Tooltip>
168
164
  <Tooltip.Target>
169
- <IconButton label="Pie" type="chart" subType="Pie" orientation="vertical" icon={<PieIcon/>}/>
165
+ <IconButton label='Pie' type='chart' subType='Pie' orientation='vertical' icon={<PieIcon />} />
170
166
  </Tooltip.Target>
171
- <Tooltip.Content>
172
- Present the numerical proportions of a data series.
173
- </Tooltip.Content>
167
+ <Tooltip.Content>Present the numerical proportions of a data series.</Tooltip.Content>
174
168
  </Tooltip>
175
169
  </li>
176
170
  <li>
177
171
  <Tooltip>
178
172
  <Tooltip.Target>
179
- <IconButton label="Paired Bar" type="chart" subType="Paired Bar" orientation="horizontal" icon={<PairedBarIcon/>}/>
173
+ <IconButton label='Paired Bar' type='chart' subType='Paired Bar' orientation='horizontal' icon={<PairedBarIcon />} />
180
174
  </Tooltip.Target>
181
- <Tooltip.Content>
182
- Use paired bars to show comparisons between two different data categories.
183
- </Tooltip.Content>
175
+ <Tooltip.Content>Use paired bars to show comparisons between two different data categories.</Tooltip.Content>
184
176
  </Tooltip>
185
177
  </li>
186
178
  <li>
187
179
  <Tooltip>
188
180
  <Tooltip.Target>
189
- <IconButton label="Horizontal Bar (Stacked)" type="chart" subType="Bar" orientation="horizontal" stacked={true}
190
- icon={<HorizontalStackIcon/>}/>
181
+ <IconButton label='Horizontal Bar (Stacked)' type='chart' subType='Bar' orientation='horizontal' stacked={true} icon={<HorizontalStackIcon />} />
191
182
  </Tooltip.Target>
192
- <Tooltip.Content>
193
- Use bars to show comparisons between data categories.
194
- </Tooltip.Content>
183
+ <Tooltip.Content>Use bars to show comparisons between data categories.</Tooltip.Content>
195
184
  </Tooltip>
196
185
  </li>
197
186
  </ul>
198
187
 
199
- <div className="heading-2">Maps</div>
200
- <ul className="grid cove-temp">
188
+ <div className='heading-2'>Maps</div>
189
+ <ul className='grid cove-temp'>
201
190
  <li>
202
- <Tooltip position="right">
191
+ <Tooltip position='right'>
203
192
  <Tooltip.Target>
204
- <IconButton label="United States (State- or County-Level)" type="map" subType="us" icon={<UsaIcon/>}/>
193
+ <IconButton label='United States (State- or County-Level)' type='map' subType='us' icon={<UsaIcon />} />
205
194
  </Tooltip.Target>
206
- <Tooltip.Content>
207
- Present a U.S. choropleth map at state or county level.
208
- </Tooltip.Content>
195
+ <Tooltip.Content>Present a U.S. choropleth map at state or county level.</Tooltip.Content>
209
196
  </Tooltip>
210
197
  </li>
211
198
  <li>
212
- <Tooltip position="right">
199
+ <Tooltip position='right'>
213
200
  <Tooltip.Target>
214
- <IconButton label="United States (HHS Regions)" type="map" subType="us-region" icon={<UsaRegionIcon/>}/>
201
+ <IconButton label='United States (HHS Regions)' type='map' subType='us-region' icon={<UsaRegionIcon />} />
215
202
  </Tooltip.Target>
216
- <Tooltip.Content>
217
- Present a U.S. choropleth map at state or county level.
218
- </Tooltip.Content>
203
+ <Tooltip.Content>Present a U.S. choropleth map at state or county level.</Tooltip.Content>
219
204
  </Tooltip>
220
205
  </li>
221
206
  <li>
222
207
  <Tooltip>
223
208
  <Tooltip.Target>
224
- <IconButton label="World" type="map" subType="world" icon={<GlobeIcon/>}/>
209
+ <IconButton label='World' type='map' subType='world' icon={<GlobeIcon />} />
225
210
  </Tooltip.Target>
226
- <Tooltip.Content>
227
- Present a choropleth map of the world.
228
- </Tooltip.Content>
211
+ <Tooltip.Content>Present a choropleth map of the world.</Tooltip.Content>
229
212
  </Tooltip>
230
213
  </li>
231
214
  <li>
232
215
  <Tooltip>
233
216
  <Tooltip.Target>
234
- <IconButton label="U.S. State" type="map" subType="single-state" icon={<AlabamaGraphic/>}/>
217
+ <IconButton label='U.S. State' type='map' subType='single-state' icon={<AlabamaGraphic />} />
235
218
  </Tooltip.Target>
236
- <Tooltip.Content>
237
- Present a choropleth map of an individual U.S. state.
238
- </Tooltip.Content>
219
+ <Tooltip.Content>Present a choropleth map of an individual U.S. state.</Tooltip.Content>
239
220
  </Tooltip>
240
221
  </li>
241
222
  <li>
242
223
  <Tooltip>
243
224
  <Tooltip.Target>
244
- <IconButton label="U.S. Geocode" type="map" subType="us-county" generalType="us-geocode" icon={<UsaIcon />}/>
225
+ <IconButton label='U.S. Geocode' type='map' subType='us-county' generalType='us-geocode' icon={<UsaIcon />} />
245
226
  </Tooltip.Target>
246
- <Tooltip.Content>
247
- United States GeoCode
248
- </Tooltip.Content>
227
+ <Tooltip.Content>United States GeoCode</Tooltip.Content>
249
228
  </Tooltip>
250
229
  </li>
251
230
  </ul>