@cdc/core 4.24.4 → 4.24.7

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 (80) hide show
  1. package/components/AdvancedEditor/AdvancedEditor.tsx +93 -0
  2. package/components/AdvancedEditor/advanced-editor-styles.css +3 -0
  3. package/components/AdvancedEditor/index.ts +1 -0
  4. package/components/DataTable/DataTable.tsx +33 -15
  5. package/components/DataTable/DataTableStandAlone.tsx +30 -4
  6. package/components/DataTable/components/ChartHeader.tsx +3 -2
  7. package/components/DataTable/components/DataTableEditorPanel.tsx +23 -6
  8. package/components/DataTable/components/ExpandCollapse.tsx +1 -1
  9. package/components/DataTable/helpers/chartCellMatrix.tsx +5 -10
  10. package/components/DataTable/helpers/getChartCellValue.ts +26 -2
  11. package/components/DataTable/helpers/getDataSeriesColumns.ts +40 -16
  12. package/components/DataTable/helpers/getRowType.ts +6 -0
  13. package/components/DataTable/helpers/getSeriesName.ts +2 -1
  14. package/components/DataTable/helpers/{customColumns.ts → removeNullColumns.ts} +3 -3
  15. package/components/DataTable/types/TableConfig.ts +12 -22
  16. package/components/EditorPanel/ColumnsEditor.tsx +278 -262
  17. package/components/EditorPanel/DataTableEditor.tsx +159 -60
  18. package/components/EditorPanel/FieldSetWrapper.tsx +51 -0
  19. package/components/EditorPanel/FootnotesEditor.tsx +77 -0
  20. package/components/EditorPanel/VizFilterEditor/VizFilterEditor.tsx +227 -0
  21. package/components/EditorPanel/VizFilterEditor/components/FilterOrder.tsx +54 -0
  22. package/components/EditorPanel/VizFilterEditor/index.ts +1 -0
  23. package/components/EditorWrapper/EditorWrapper.tsx +47 -0
  24. package/components/EditorWrapper/editor-wrapper.style.css +14 -0
  25. package/components/EditorWrapper/index.ts +1 -0
  26. package/components/{Filters.jsx → Filters.tsx} +102 -70
  27. package/components/Footnotes/Footnotes.tsx +25 -0
  28. package/components/Footnotes/FootnotesStandAlone.tsx +45 -0
  29. package/components/Footnotes/footnotes.css +5 -0
  30. package/components/Footnotes/index.ts +1 -0
  31. package/components/Layout/components/Sidebar/components/sidebar.styles.scss +8 -4
  32. package/components/Layout/components/Visualization/index.tsx +14 -5
  33. package/components/MediaControls.jsx +1 -1
  34. package/components/MultiSelect/MultiSelect.tsx +36 -9
  35. package/components/MultiSelect/multiselect.styles.css +0 -3
  36. package/components/_stories/DataTable.stories.tsx +1 -2
  37. package/components/_stories/EditorPanel.stories.tsx +1 -0
  38. package/components/_stories/Footnotes.stories.tsx +17 -0
  39. package/components/inputs/InputSelect.tsx +17 -6
  40. package/components/ui/Icon.tsx +1 -2
  41. package/helpers/DataTransform.ts +9 -32
  42. package/helpers/addValuesToFilters.ts +56 -0
  43. package/helpers/cove/accessibility.ts +1 -0
  44. package/helpers/cove/fontSettings.ts +2 -0
  45. package/helpers/coveUpdateWorker.ts +11 -2
  46. package/helpers/filterVizData.ts +30 -0
  47. package/helpers/footnoteSymbols.ts +11 -0
  48. package/helpers/formatConfigBeforeSave.ts +90 -0
  49. package/helpers/gatherQueryParams.ts +14 -7
  50. package/helpers/lineChartHelpers.js +2 -1
  51. package/helpers/pivotData.ts +18 -0
  52. package/helpers/queryStringUtils.ts +29 -0
  53. package/helpers/tests/updateFieldFactory.test.ts +1 -0
  54. package/helpers/updateFieldFactory.ts +1 -1
  55. package/helpers/useDataVizClasses.js +0 -4
  56. package/helpers/ver/4.23.4.ts +27 -0
  57. package/helpers/ver/4.24.5.ts +32 -0
  58. package/helpers/ver/4.24.7.ts +92 -0
  59. package/package.json +6 -4
  60. package/styles/_button-section.scss +6 -1
  61. package/styles/_data-table.scss +0 -1
  62. package/styles/_reset.scss +7 -6
  63. package/styles/base.scss +4 -0
  64. package/styles/v2/themes/_color-definitions.scss +1 -0
  65. package/types/Annotation.ts +46 -0
  66. package/types/Column.ts +1 -0
  67. package/types/ConfigureData.ts +1 -1
  68. package/types/Footnotes.ts +17 -0
  69. package/types/General.ts +5 -0
  70. package/types/Legend.ts +1 -0
  71. package/types/MarkupInclude.ts +26 -0
  72. package/types/Runtime.ts +3 -7
  73. package/types/Series.ts +1 -1
  74. package/types/Table.ts +21 -14
  75. package/types/Visualization.ts +40 -11
  76. package/types/VizFilter.ts +24 -0
  77. package/LICENSE +0 -201
  78. package/components/AdvancedEditor.jsx +0 -74
  79. package/helpers/queryStringUtils.js +0 -26
  80. package/types/BaseVisualizationType.ts +0 -1
@@ -1,74 +0,0 @@
1
- import React, { useState, useEffect } from 'react'
2
- import MapIcon from '../assets/map-folded.svg'
3
- import ChartIcon from '../assets/icon-chart-bar.svg'
4
- import MarkupIncludeIcon from '../assets/icon-code.svg'
5
-
6
- export const AdvancedEditor = ({ loadConfig, state, convertStateToConfig }) => {
7
- const [advancedToggle, setAdvancedToggle] = useState(false)
8
- const [configTextboxValue, setConfigTextbox] = useState({})
9
-
10
- useEffect(() => {
11
- let parsedData = state
12
- if (state.type !== 'dashboard') {
13
- parsedData = convertStateToConfig()
14
- } else {
15
- parsedData = JSON.parse(JSON.stringify(parsedData))
16
- }
17
- const formattedData = JSON.stringify(parsedData, undefined, 2)
18
-
19
- setConfigTextbox(formattedData)
20
- }, [state])
21
-
22
- const typeLookup = {
23
- chart: ['Charts', 'https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/bar-chart.html', <ChartIcon />],
24
- dashboard: ['Dashboard', 'https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/bar-chart.html', <ChartIcon />],
25
- map: ['Maps', 'https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/data-map.html', <MapIcon />],
26
- 'markup-include': ['Markup Include', 'https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/Markup-Include.html', <MarkupIncludeIcon />]
27
- }
28
-
29
- if (!state.type) return <></>
30
- return (
31
- <>
32
- <a href={typeLookup[state.type][1]} target='_blank' rel='noopener noreferrer' className='guidance-link'>
33
- {typeLookup[state.type][2]}
34
- <div>
35
- <span className='heading-3'>Get Help with {typeLookup[state.type][0]}</span>
36
- <p>Examples and documentation</p>
37
- </div>
38
- </a>
39
- <div className='advanced'>
40
- <span className='advanced-toggle-link' onClick={() => setAdvancedToggle(!advancedToggle)}>
41
- <span>{advancedToggle ? `— ` : `+ `}</span>Advanced Options
42
- </span>
43
- {advancedToggle && (
44
- <React.Fragment>
45
- <section className='error-box py-2 px-3 my-2'>
46
- <div>
47
- <strong className='pt-1'>Warning</strong>
48
- <p>This can cause serious errors in your visualization.</p>
49
- </div>
50
- </section>
51
- <p className='pb-2'>
52
- This tool displays the actual <acronym title='JavaScript Object Notation'>JSON</acronym> configuration that is generated by this editor and allows you to edit properties directly and apply them.
53
- </p>
54
- <button
55
- className='btn'
56
- onClick={() => {
57
- navigator.clipboard.writeText(configTextboxValue)
58
- alert('Copied!')
59
- }}
60
- >
61
- Copy to Clipboard
62
- </button>
63
- <textarea value={configTextboxValue} onChange={event => setConfigTextbox(event.target.value)} />
64
- <button className='btn full-width' onClick={() => loadConfig(JSON.parse(configTextboxValue))}>
65
- Apply
66
- </button>
67
- </React.Fragment>
68
- )}
69
- </div>
70
- </>
71
- )
72
- }
73
-
74
- export default AdvancedEditor
@@ -1,26 +0,0 @@
1
- export function getQueryStringFilterValue(filter) {
2
- const urlParams = new URLSearchParams(window.location.search)
3
- if(filter.setByQueryParameter){ // Only check the query string if the filter is supposed to be set by QS param
4
- const filterValue = urlParams.get(filter.setByQueryParameter)
5
- if(filterValue && filter.values){
6
- for(let i = 0; i < filter.values.length; i++){
7
- if(filter.values[i] && filter.values[i].toLowerCase() === filterValue.toLowerCase()){
8
- return filter.values[i]
9
- }
10
- }
11
- }
12
- }
13
- }
14
-
15
- export function getQueryParams(filter) {
16
- const queryParams = {};
17
- for (const [key, value] of (new URLSearchParams(window.location.search)).entries()) {
18
- queryParams[key] = value
19
- }
20
- return queryParams;
21
- }
22
-
23
- export function updateQueryString(queryParams) {
24
- const updateUrl = `${window.location.origin}${window.location.pathname}?${Object.keys(queryParams).map(queryParam => `${queryParam}=${encodeURIComponent(queryParams[queryParam])}`).join('&')}`;
25
- window.history.pushState({path: updateUrl}, '', updateUrl);
26
- }
@@ -1 +0,0 @@
1
- export type BaseVisualizationType = 'dashboard' | 'chart' | 'map' | 'data-bite' | 'waffle-chart' | 'markup-include' | 'filtered-text' | 'filter-dropdowns' | 'table' | 'navigation'