@cdc/core 1.1.4 → 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 (138) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -1
  3. package/assets/filtered-text.svg +1 -0
  4. package/assets/icon-caret-down.svg +3 -0
  5. package/assets/icon-caret-filled-down.svg +3 -0
  6. package/assets/icon-caret-filled-up.svg +3 -0
  7. package/assets/icon-caret-up.svg +3 -0
  8. package/assets/icon-chart-bar-paired.svg +15 -0
  9. package/assets/icon-chart-bar-stacked.svg +10 -0
  10. package/assets/icon-chart-bar.svg +3 -0
  11. package/assets/icon-chart-line.svg +3 -0
  12. package/assets/icon-chart-pie.svg +3 -0
  13. package/assets/icon-check.svg +3 -0
  14. package/assets/icon-close.svg +3 -1
  15. package/assets/icon-code.svg +2 -2
  16. package/assets/icon-dashboard.svg +34 -0
  17. package/assets/icon-databite.svg +3 -0
  18. package/assets/icon-edit.svg +3 -0
  19. package/assets/icon-file-upload.svg +3 -0
  20. package/assets/icon-filter-bars.svg +5 -0
  21. package/assets/icon-gear.svg +6 -0
  22. package/assets/icon-grid.svg +2 -3
  23. package/assets/icon-info.svg +1 -1
  24. package/assets/icon-link.svg +3 -0
  25. package/assets/{alabama-graphic.svg → icon-map-alabama.svg} +2 -2
  26. package/assets/icon-map-usa.svg +3 -0
  27. package/assets/icon-map-world.svg +3 -0
  28. package/assets/icon-minus.svg +3 -0
  29. package/assets/icon-move.svg +8 -0
  30. package/assets/icon-plus.svg +3 -0
  31. package/assets/icon-question-circle.svg +3 -0
  32. package/assets/icon-tools.svg +8 -0
  33. package/assets/icon-upload.svg +3 -0
  34. package/assets/icon-warning-circle.svg +3 -0
  35. package/assets/{icon-warning.svg → icon-warning-triangle.svg} +1 -1
  36. package/components/AdvancedEditor.js +52 -67
  37. package/components/{ErrorBoundary.js → ErrorBoundary.jsx} +10 -11
  38. package/components/GlobalContext.jsx +2 -6
  39. package/components/{LegendCircle.js → LegendCircle.jsx} +4 -4
  40. package/components/Loading.jsx +17 -0
  41. package/components/Waiting.jsx +20 -0
  42. package/components/elements/Button.jsx +111 -3
  43. package/components/elements/Card.jsx +13 -0
  44. package/components/inputs/InputCheckbox.jsx +43 -38
  45. package/components/inputs/InputGroup.jsx +71 -0
  46. package/components/inputs/InputSelect.jsx +28 -24
  47. package/components/inputs/InputText.jsx +20 -37
  48. package/components/inputs/InputToggle.jsx +39 -43
  49. package/components/managers/DataDesigner.jsx +194 -0
  50. package/components/ui/Accordion.jsx +18 -30
  51. package/components/ui/Icon.jsx +59 -20
  52. package/components/ui/LoadSpin.jsx +19 -0
  53. package/components/ui/Modal.jsx +40 -39
  54. package/components/ui/Overlay.jsx +15 -24
  55. package/components/ui/OverlayFrame.jsx +1 -5
  56. package/components/ui/Tooltip.jsx +20 -31
  57. package/data/colorPalettes.js +36 -227
  58. package/data/dataDesignerTables.js +148 -0
  59. package/data/themes.js +13 -13
  60. package/helpers/DataTransform.js +162 -0
  61. package/helpers/cacheBustingString.js +5 -0
  62. package/helpers/events.js +5 -6
  63. package/helpers/fetchRemoteData.js +41 -0
  64. package/helpers/getViewport.js +15 -15
  65. package/helpers/numberFromString.js +7 -7
  66. package/helpers/updatePaletteNames.js +15 -17
  67. package/helpers/useDataVizClasses.js +40 -0
  68. package/helpers/validateFipsCodeLength.js +41 -56
  69. package/package.json +3 -2
  70. package/styles/_data-table.scss +45 -40
  71. package/styles/_global.scss +41 -22
  72. package/styles/_mixins.scss +12 -12
  73. package/styles/_reset.scss +95 -16
  74. package/styles/_variables.scss +5 -5
  75. package/styles/base.scss +104 -37
  76. package/styles/heading-colors.scss +6 -2
  77. package/styles/loading.scss +62 -60
  78. package/styles/v2/base/_file-selector.scss +20 -0
  79. package/styles/v2/base/_general.scss +9 -22
  80. package/styles/v2/base/_heading.scss +20 -0
  81. package/styles/v2/base/_reset.scss +4 -3
  82. package/styles/v2/base/index.scss +7 -3
  83. package/styles/v2/components/accordion.scss +13 -13
  84. package/styles/v2/components/button.scss +29 -68
  85. package/styles/v2/components/card.scss +7 -0
  86. package/styles/v2/components/data-designer.scss +101 -0
  87. package/styles/v2/components/editor.scss +52 -50
  88. package/styles/v2/components/guidance-block.scss +74 -0
  89. package/styles/v2/components/icon.scss +0 -4
  90. package/styles/v2/components/input/_input-check-radio.scss +97 -0
  91. package/styles/v2/components/input/_input-group.scss +74 -0
  92. package/styles/v2/components/input/_input-slider.scss +183 -0
  93. package/styles/v2/components/input/_input.scss +66 -0
  94. package/styles/v2/components/input/index.scss +7 -0
  95. package/styles/v2/components/loadspin.scss +100 -0
  96. package/styles/v2/components/modal.scss +15 -8
  97. package/styles/v2/components/overlay.scss +6 -4
  98. package/styles/v2/layout/_alert.scss +15 -14
  99. package/styles/v2/layout/_component.scss +8 -1
  100. package/styles/v2/layout/_data-table.scss +78 -156
  101. package/styles/v2/layout/_progression.scss +12 -8
  102. package/styles/v2/layout/index.scss +5 -7
  103. package/styles/v2/main.scss +52 -2
  104. package/styles/v2/themes/_color-definitions.scss +103 -20
  105. package/styles/v2/themes/index.scss +1 -1
  106. package/styles/v2/utils/_align.scss +17 -0
  107. package/styles/v2/utils/_animations.scss +2 -2
  108. package/styles/v2/utils/_breakpoints.scss +59 -0
  109. package/styles/v2/utils/_grid.scss +47 -0
  110. package/styles/v2/utils/_mixins.scss +0 -16
  111. package/styles/v2/utils/_spacers.scss +31 -0
  112. package/styles/v2/utils/_variables.scss +7 -0
  113. package/styles/v2/utils/index.scss +9 -4
  114. package/styles/waiting.scss +22 -23
  115. package/assets/asc.svg +0 -1
  116. package/assets/chart-bar-solid.svg +0 -1
  117. package/assets/chart-line-solid.svg +0 -1
  118. package/assets/chart-pie-solid.svg +0 -1
  119. package/assets/check.svg +0 -3
  120. package/assets/dashboard.svg +0 -11
  121. package/assets/data-bite-graphic.svg +0 -3
  122. package/assets/desc.svg +0 -1
  123. package/assets/file-upload-solid.svg +0 -1
  124. package/assets/horizontal-stacked-bar.svg +0 -1
  125. package/assets/link.svg +0 -1
  126. package/assets/minus.svg +0 -1
  127. package/assets/paired-bar.svg +0 -11
  128. package/assets/plus.svg +0 -1
  129. package/assets/question-circle.svg +0 -1
  130. package/assets/upload-solid.svg +0 -1
  131. package/assets/usa-graphic.svg +0 -3
  132. package/assets/world-graphic.svg +0 -3
  133. package/components/DataTransform.js +0 -162
  134. package/components/Loading.js +0 -15
  135. package/components/Waiting.js +0 -11
  136. package/styles/v2/components/input.scss +0 -372
  137. package/styles/v2/layout/_header.scss +0 -13
  138. package/styles/v2/layout/_link.scss +0 -46
@@ -0,0 +1,183 @@
1
+ .cove-input__slider {
2
+ display: inline-block;
3
+ position: relative;
4
+ width: 60px;
5
+ height: 26px;
6
+ padding: 3px;
7
+ cursor: pointer;
8
+
9
+ &.active {
10
+ .cove-input__slider-button {
11
+ left: 100%;
12
+ transform: translateX(-100%);
13
+ }
14
+
15
+ .cove-input__slider-track {
16
+ background-color: #75b936;
17
+ }
18
+ }
19
+
20
+ &.slider--block {
21
+ width: unset;
22
+ aspect-ratio: 1.85/1;
23
+ padding: 4px;
24
+
25
+ .cove-input__slider-button {
26
+ border-radius: 10%;
27
+ box-shadow: 0 2px 5px 0 rgb(0 0 0 / 20%);
28
+ }
29
+
30
+ .cove-input__slider-track {
31
+ border-radius: 4px;
32
+ box-shadow: 0 0 0 transparent;
33
+ }
34
+
35
+ &.active {
36
+ .cove-input__slider-track {
37
+ box-shadow: inset -40px 0 10px -10px rgb(0 0 0 / 15%);
38
+ }
39
+ }
40
+ }
41
+
42
+ &.slider--pill {
43
+ width: 60px;
44
+ height: 25px;
45
+
46
+ .cove-input__slider-button {
47
+ border-radius: 999px;
48
+ aspect-ratio: 1.75/1;
49
+
50
+ &::before,
51
+ &::after {
52
+ content: '';
53
+ display: block;
54
+ width: 1px;
55
+ height: calc(100% - 10px);
56
+ background: linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(227, 227, 227, 1) 30%, rgba(227, 227, 227, 1) 70%, rgba(255, 255, 255, 1) 100%);
57
+ position: absolute;
58
+ top: 5px;
59
+ }
60
+
61
+ &::before {
62
+ left: 42%;
63
+ }
64
+
65
+ &::after {
66
+ right: 42%;
67
+ }
68
+ }
69
+ }
70
+
71
+ &.slider--3d {
72
+ .cove-input__slider-button {
73
+ background: radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 1) 45%, rgb(200 200 200) 100%);
74
+ box-shadow: 0 1px 3px 1px rgb(0 0 0 / 40%), inset 0 0 3px 2px #fff;
75
+ height: 160%;
76
+ top: -30%;
77
+ transform: translateX(-20%);
78
+
79
+ &:after {
80
+ content: '';
81
+ display: block;
82
+ position: absolute;
83
+ top: 0;
84
+ left: 0;
85
+ width: calc(100% - 6px);
86
+ height: calc(100% - 6px);
87
+ border: 1px solid #ececec;
88
+ border-radius: 999px;
89
+ margin: 3px;
90
+ }
91
+ }
92
+
93
+ .cove-input__slider-track {
94
+ box-shadow: inset 1px 1px 3px rgb(0 0 0 / 40%);
95
+ }
96
+
97
+ &.active {
98
+ .cove-input__slider-button {
99
+ transform: translateX(-80%);
100
+ }
101
+
102
+ .cove-input__slider-track {
103
+ box-shadow: inset 1px 1px 3px rgb(0 0 0 / 60%);
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ .cove-input__slider--small {
110
+ @extend .cove-input__slider;
111
+ width: 40px;
112
+ height: 20px;
113
+
114
+ &.slider--pill {
115
+ width: 45px;
116
+ height: 20px;
117
+
118
+ .cove-input__slider-button {
119
+ aspect-ratio: 1.5/1;
120
+
121
+ &:before,
122
+ &:after {
123
+ display: none;
124
+ }
125
+ }
126
+ }
127
+
128
+ &.slider--3d {
129
+ .cove-input__slider-button {
130
+ box-shadow: 0 1px 2px 2px rgb(0 0 0 / 22%), inset 0 0 3px 2px #fff;
131
+
132
+ &:after {
133
+ width: calc(100% - 4px);
134
+ height: calc(100% - 4px);
135
+ margin: 2px;
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ .cove-input__slider--large {
142
+ @extend .cove-input__slider;
143
+ width: 80px;
144
+ height: 35px;
145
+
146
+ &.slider--pill {
147
+ width: 80px;
148
+ height: 30px;
149
+ }
150
+
151
+ &.slider--3d {
152
+ .cove-input__slider-button {
153
+ &:after {
154
+ width: calc(100% - 8px);
155
+ height: calc(100% - 8px);
156
+ margin: 4px;
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ .cove-input__slider-button {
163
+ position: relative;
164
+ left: 0;
165
+ height: 100%;
166
+ aspect-ratio: 1/1;
167
+ background-color: #fff;
168
+ box-shadow: -2px 4px 10px -7px rgb(0 0 0);
169
+ border-radius: 100%;
170
+ transition: all 200ms $transition-expo-out;
171
+ z-index: 2;
172
+ }
173
+
174
+ .cove-input__slider-track {
175
+ position: absolute;
176
+ top: 0;
177
+ left: 0;
178
+ width: 100%;
179
+ height: 100%;
180
+ background-color: #ccc;
181
+ border-radius: 999px;
182
+ transition: all 200ms $transition-expo-out;
183
+ }
@@ -0,0 +1,66 @@
1
+ .cove-input {
2
+ display: block;
3
+ position: relative;
4
+ padding: 0.5em 0.5em;
5
+ border-width: 1px;
6
+ border-style: solid;
7
+ border-color: #cbcbcb;
8
+ border-radius: 0.1875rem;
9
+ transition: border-color 200ms $transition-expo-out;
10
+ font-family: sans-serif;
11
+ color: $baseColor;
12
+ width: 100%;
13
+ max-width: 100%;
14
+
15
+ &::placeholder {
16
+ transition: opacity 400ms $transition-expo-out;
17
+ color: #b3b3b3;
18
+ opacity: 1;
19
+ }
20
+
21
+ &:focus {
22
+ border-width: 1px;
23
+ border-style: solid;
24
+ border-color: #4c4c4c;
25
+ outline: 0;
26
+
27
+ &::placeholder {
28
+ opacity: 0;
29
+ }
30
+ }
31
+
32
+ &[disabled] {
33
+ background-color: #e4e4e4;
34
+ }
35
+
36
+ &.input--small {
37
+ padding: 0;
38
+ }
39
+ }
40
+
41
+ .cove-input__label {
42
+ display: inline-block;
43
+ margin-bottom: 0.5rem;
44
+ font-size: 0.75rem;
45
+ color: $baseColor;
46
+ text-transform: uppercase;
47
+ user-select: none;
48
+ }
49
+
50
+ .cove-input__textarea {
51
+ width: 100%;
52
+ min-height: 140px;
53
+ max-width: 100%;
54
+ line-height: 1.5em;
55
+ color: $baseColor;
56
+ }
57
+
58
+ .cove-input--hidden {
59
+ position: absolute;
60
+ z-index: -999;
61
+ width: 1px;
62
+ height: 1px;
63
+ margin: 0;
64
+ opacity: 0;
65
+ pointer-events: none;
66
+ }
@@ -0,0 +1,7 @@
1
+ @import '../../utils/variables';
2
+ @import '../../themes/index';
3
+
4
+ @import 'input';
5
+ @import 'input-check-radio';
6
+ @import 'input-group';
7
+ @import 'input-slider';
@@ -0,0 +1,100 @@
1
+ .cove-loadspin {
2
+ display: inline-block;
3
+ overflow: hidden;
4
+ }
5
+
6
+ .cove-loadspin__roller {
7
+ display: inline-block;
8
+ position: relative;
9
+ width: 100%;
10
+ height: 100%;
11
+ transform-origin: top left;
12
+
13
+ div {
14
+ animation: cove-loadspin__roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
15
+ transform-origin: 40px 40px;
16
+
17
+ &:after {
18
+ content: ' ';
19
+ display: block;
20
+ position: absolute;
21
+ width: 7px;
22
+ height: 7px;
23
+ border-radius: 50%;
24
+ background-color: inherit;
25
+ margin: -4px 0 0 -4px;
26
+ }
27
+
28
+ &:nth-child(1) {
29
+ &:after {
30
+ top: 63px;
31
+ left: 63px;
32
+ }
33
+ }
34
+
35
+ &:nth-child(2) {
36
+ animation-delay: -0.05s;
37
+ &:after {
38
+ top: 68px;
39
+ left: 56px;
40
+ }
41
+ }
42
+
43
+ &:nth-child(3) {
44
+ animation-delay: -0.1s;
45
+ &:after {
46
+ top: 71px;
47
+ left: 48px;
48
+ }
49
+ }
50
+
51
+ &:nth-child(4) {
52
+ animation-delay: -0.15s;
53
+ &:after {
54
+ top: 72px;
55
+ left: 40px;
56
+ }
57
+ }
58
+
59
+ &:nth-child(5) {
60
+ animation-delay: -0.2s;
61
+ &:after {
62
+ top: 71px;
63
+ left: 32px;
64
+ }
65
+ }
66
+
67
+ &:nth-child(6) {
68
+ animation-delay: -0.25s;
69
+ &:after {
70
+ top: 68px;
71
+ left: 24px;
72
+ }
73
+ }
74
+
75
+ &:nth-child(7) {
76
+ animation-delay: -0.3s;
77
+ &:after {
78
+ top: 63px;
79
+ left: 17px;
80
+ }
81
+ }
82
+
83
+ &:nth-child(8) {
84
+ animation-delay: -0.35s;
85
+ &:after {
86
+ top: 56px;
87
+ left: 12px;
88
+ }
89
+ }
90
+ }
91
+ }
92
+
93
+ @keyframes cove-loadspin__roller {
94
+ 0% {
95
+ transform: rotate(0deg);
96
+ }
97
+ 100% {
98
+ transform: rotate(360deg);
99
+ }
100
+ }
@@ -1,11 +1,13 @@
1
- @import "../utils/variables";
2
- @import "../themes/index";
1
+ @import '../utils/variables';
2
+ @import '../themes/index';
3
3
 
4
- .cove-modal {
5
- background-color: #fff;
6
- border-radius: 5px;
7
- box-shadow: 3px 3px 10px rgb(0 0 0 / 20%);
8
- font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Fira Sans, sans-serif;
4
+ .cove-overlay {
5
+ .cove-modal {
6
+ background-color: #fff;
7
+ border-radius: 5px;
8
+ box-shadow: 3px 3px 10px rgb(0 0 0 / 20%);
9
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Fira Sans, sans-serif;
10
+ }
9
11
  }
10
12
 
11
13
  .cove-modal__header {
@@ -27,7 +29,12 @@
27
29
  }
28
30
 
29
31
  .cove-modal__content {
30
- padding: 1rem;
32
+ padding: 1rem !important;
33
+
34
+ label {
35
+ margin-top: 1rem !important;
36
+ margin-bottom: 1rem !important;
37
+ }
31
38
  }
32
39
 
33
40
  .cove-modal__footer {
@@ -1,5 +1,5 @@
1
- @import "../utils/variables";
2
- @import "../themes/index";
1
+ @import '../utils/variables';
2
+ @import '../themes/index';
3
3
 
4
4
  .cove-overlay {
5
5
  display: flex;
@@ -35,12 +35,12 @@
35
35
 
36
36
  &.show {
37
37
  .cove-overlay__bg {
38
- opacity: 1
38
+ opacity: 1;
39
39
  }
40
40
 
41
41
  .cove-overlay__container {
42
42
  opacity: 1;
43
- transform: translateY(0)
43
+ transform: translateY(0);
44
44
  }
45
45
  }
46
46
  }
@@ -62,6 +62,7 @@
62
62
  align-items: center;
63
63
  margin-left: auto;
64
64
  margin-right: auto;
65
+ overflow-y: auto;
65
66
  }
66
67
 
67
68
  .cove-overlay__container {
@@ -71,6 +72,7 @@
71
72
  transform: translateY(25px);
72
73
  opacity: 0;
73
74
  z-index: 1;
75
+ margin: auto !important;
74
76
  }
75
77
 
76
78
  .overlay-error {
@@ -1,9 +1,10 @@
1
- .error-box {
1
+ .cove-alert__error {
2
2
  display: flex;
3
- padding: .3rem 1rem;
4
3
  justify-content: space-between;
5
- background: #FFC2C2;
6
- font-size: .9rem;
4
+ padding: 0.3rem 1rem;
5
+ font-size: 0.9rem;
6
+ background: #ffc2c2;
7
+ border-radius: 0.1875rem;
7
8
 
8
9
  strong {
9
10
  font-weight: 600;
@@ -13,21 +14,21 @@
13
14
  margin: 0;
14
15
  }
15
16
 
16
- .dismiss-error {
17
+ .cove-alert__error-dismiss {
18
+ font-size: 0.8rem;
17
19
  flex-shrink: 0;
18
- font-size: .8rem;
19
20
  cursor: pointer;
20
21
  }
21
22
  }
22
23
 
23
- .warning {
24
- color: #D8000C;
25
- background-color: #FFD2D2;
26
- border: #D8000C 1px solid;
27
- padding: .75em 1em;
28
- margin: 1em 0;
29
- font-size: .8em;
30
- border-radius: .4em;
24
+ .cove-alert__warning {
25
+ padding: 0.75rem 1rem;
26
+ margin: 1rem 0;
27
+ font-size: 0.8rem;
28
+ color: #d8000c;
29
+ background-color: #ffd2d2;
30
+ border: #d8000c 1px solid;
31
+ border-radius: 0.1875rem;
31
32
 
32
33
  strong {
33
34
  font-weight: 600;
@@ -16,7 +16,6 @@
16
16
 
17
17
  .cove-component__content {
18
18
  padding-top: 1rem;
19
- background: $lightestGray;
20
19
  border: solid 1px #ccc;
21
20
  border-top: none;
22
21
  border-radius: 0 0 3px 3px;
@@ -24,6 +23,14 @@
24
23
  &.no-borders {
25
24
  border: none;
26
25
  }
26
+
27
+ .cdc-data-bite-inner-container:not(.component--has-title) .cove-component__content:not(.no-borders) {
28
+ border-top: 1px solid #ccc;
29
+ }
30
+
31
+ .cove-component__content:not(.component--hideBackgroundColor) {
32
+ background: $lightestGray;
33
+ }
27
34
  }
28
35
 
29
36
  .cove-component__content-wrap {