@cdc/dashboard 1.1.2 → 4.22.10-alpha.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.
- package/dist/cdcdashboard.js +159 -48
- package/examples/default-filter-control.json +175 -0
- package/examples/default-multi-dataset.json +498 -0
- package/examples/default.json +36 -348
- package/examples/private/chart-issue.json +3467 -0
- package/examples/private/no-issue.json +3467 -0
- package/examples/private/totals-two.json +104 -0
- package/examples/private/totals.json +103 -0
- package/examples/temp-example-data.json +130 -0
- package/examples/test-example.json +1 -0
- package/package.json +14 -8
- package/src/CdcDashboard.js +279 -156
- package/src/CdcDashboard.jsx +697 -0
- package/src/{context.tsx → ConfigContext.js} +0 -0
- package/src/components/{Column.js → Column.jsx} +9 -7
- package/src/components/DataTable.tsx +57 -55
- package/src/components/EditorPanel.js +207 -45
- package/src/components/{Grid.js → Grid.jsx} +5 -4
- package/src/components/Header.jsx +246 -0
- package/src/components/Row.js +1 -0
- package/src/components/Row.jsx +181 -0
- package/src/components/Row.jsx~HEAD +212 -0
- package/src/components/Widget.js +24 -5
- package/src/components/Widget.jsx +206 -0
- package/src/index.html +31 -25
- package/src/scss/editor-panel.scss +53 -49
- package/src/scss/grid.scss +60 -14
- package/src/scss/main.scss +77 -9
- package/src/components/Header.js +0 -15
- package/src/images/icon-close.svg +0 -1
- package/src/images/icon-down.svg +0 -1
- package/src/images/icon-edit.svg +0 -1
- package/src/images/icon-move.svg +0 -8
- package/src/images/icon-up.svg +0 -1
- package/src/images/warning.svg +0 -1
package/src/scss/grid.scss
CHANGED
|
@@ -11,7 +11,7 @@ $red: #f74242;
|
|
|
11
11
|
width: 350px;
|
|
12
12
|
border-right: #C7C7C7 1px solid;
|
|
13
13
|
position: fixed;
|
|
14
|
-
top:
|
|
14
|
+
top: 6em;
|
|
15
15
|
bottom: 0;
|
|
16
16
|
z-index: 1;
|
|
17
17
|
overflow-y: auto;
|
|
@@ -43,6 +43,7 @@ $red: #f74242;
|
|
|
43
43
|
transition: border 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
44
44
|
background-color: #F2F2F2;
|
|
45
45
|
user-select: none;
|
|
46
|
+
|
|
46
47
|
&.can-drop {
|
|
47
48
|
border-color: $blue-light;
|
|
48
49
|
}
|
|
@@ -56,12 +57,15 @@ $red: #f74242;
|
|
|
56
57
|
position: relative;
|
|
57
58
|
z-index: 1;
|
|
58
59
|
bottom: -1px;
|
|
60
|
+
|
|
59
61
|
> li:not(.spacer) + li:not(.spacer) {
|
|
60
62
|
margin-left: .3em;
|
|
61
63
|
}
|
|
64
|
+
|
|
62
65
|
.spacer {
|
|
63
66
|
flex-grow: 1;
|
|
64
67
|
}
|
|
68
|
+
|
|
65
69
|
svg {
|
|
66
70
|
width: 25px;
|
|
67
71
|
height: auto;
|
|
@@ -76,9 +80,11 @@ $red: #f74242;
|
|
|
76
80
|
.row-menu__btn:hover .row-menu__flyout {
|
|
77
81
|
transition: width .2s cubic-bezier(0.16, 1, 0.3, 1);
|
|
78
82
|
width: 144px;
|
|
83
|
+
|
|
79
84
|
li {
|
|
80
85
|
display: flex;
|
|
81
86
|
}
|
|
87
|
+
|
|
82
88
|
li + li {
|
|
83
89
|
margin-left: .3em;
|
|
84
90
|
}
|
|
@@ -92,9 +98,11 @@ $red: #f74242;
|
|
|
92
98
|
transition: width .2s cubic-bezier(0.16, 1, 0.3, 1);
|
|
93
99
|
z-index: 1;
|
|
94
100
|
width: 25px;
|
|
101
|
+
|
|
95
102
|
li:not(.current) {
|
|
96
103
|
display: none;
|
|
97
104
|
}
|
|
105
|
+
|
|
98
106
|
li svg {
|
|
99
107
|
opacity: .7;
|
|
100
108
|
}
|
|
@@ -113,10 +121,11 @@ $red: #f74242;
|
|
|
113
121
|
border-radius: .2em .2em 0 0;
|
|
114
122
|
outline: none;
|
|
115
123
|
transition: background-color 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
116
|
-
cursor: pointer;
|
|
124
|
+
cursor: pointer;
|
|
117
125
|
padding: .2em .3em;
|
|
118
126
|
display: flex;
|
|
119
127
|
fill: #fff;
|
|
128
|
+
|
|
120
129
|
+ .row-menu__btn {
|
|
121
130
|
margin-left: .2em;
|
|
122
131
|
}
|
|
@@ -137,15 +146,17 @@ $red: #f74242;
|
|
|
137
146
|
justify-content: center;
|
|
138
147
|
align-items: center;
|
|
139
148
|
position: relative;
|
|
140
|
-
height:
|
|
149
|
+
height: 180px;
|
|
141
150
|
margin-left: 0.5rem;
|
|
142
151
|
margin-right: 0.5rem;
|
|
143
152
|
background-color: transparent;
|
|
144
153
|
border: 2px dashed #C2C2C2;
|
|
145
154
|
flex: 1 1 auto;
|
|
155
|
+
|
|
146
156
|
&:hover {
|
|
147
157
|
border-color: darken(#c2c2c2, 20%);
|
|
148
158
|
}
|
|
159
|
+
|
|
149
160
|
&.column--populated {
|
|
150
161
|
background: none;
|
|
151
162
|
border: none;
|
|
@@ -158,10 +169,21 @@ $red: #f74242;
|
|
|
158
169
|
background-image: none;
|
|
159
170
|
}
|
|
160
171
|
|
|
161
|
-
.column-size--12 {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
172
|
+
.column-size--12 {
|
|
173
|
+
width: 100%;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.column-size--8 {
|
|
177
|
+
width: 66.666%;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.column-size--6 {
|
|
181
|
+
width: 50%;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.column-size--4 {
|
|
185
|
+
width: 33.333%;
|
|
186
|
+
}
|
|
165
187
|
|
|
166
188
|
.builder-column__text {
|
|
167
189
|
padding: 0.5rem;
|
|
@@ -186,20 +208,36 @@ $red: #f74242;
|
|
|
186
208
|
padding: 0;
|
|
187
209
|
position: relative;
|
|
188
210
|
cursor: move;
|
|
211
|
+
|
|
189
212
|
&:hover {
|
|
190
213
|
border-color: darken($lightGray, 20%);
|
|
214
|
+
|
|
191
215
|
.widget-menu-item svg {
|
|
192
216
|
fill: darken($mediumGray, 20%);
|
|
193
217
|
}
|
|
194
|
-
|
|
218
|
+
|
|
219
|
+
.drag-icon,
|
|
220
|
+
.drag-icon svg {
|
|
195
221
|
fill: darken($lightGray, 20%);
|
|
196
222
|
}
|
|
197
223
|
}
|
|
198
|
-
|
|
224
|
+
|
|
225
|
+
.btn-configure {
|
|
226
|
+
background: none;
|
|
227
|
+
width: 3em;
|
|
228
|
+
margin-left: 0.5em;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.drag-icon,
|
|
232
|
+
.drag-icon svg {
|
|
199
233
|
fill: $lightGray;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.drag-icon {
|
|
200
237
|
position: absolute;
|
|
201
|
-
left: .3em;
|
|
202
238
|
top: .3em;
|
|
239
|
+
left: .3em;
|
|
240
|
+
width: 10px;
|
|
203
241
|
}
|
|
204
242
|
}
|
|
205
243
|
|
|
@@ -233,6 +271,7 @@ $red: #f74242;
|
|
|
233
271
|
flex-direction: column;
|
|
234
272
|
align-items: center;
|
|
235
273
|
justify-content: center;
|
|
274
|
+
|
|
236
275
|
svg {
|
|
237
276
|
margin-bottom: .5em;
|
|
238
277
|
}
|
|
@@ -270,6 +309,9 @@ $red: #f74242;
|
|
|
270
309
|
height: 20px;
|
|
271
310
|
cursor: pointer;
|
|
272
311
|
user-select: none;
|
|
312
|
+
margin-left: 0.7em;
|
|
313
|
+
margin-top: 5px;
|
|
314
|
+
|
|
273
315
|
svg {
|
|
274
316
|
fill: $mediumGray;
|
|
275
317
|
}
|
|
@@ -288,8 +330,10 @@ $red: #f74242;
|
|
|
288
330
|
|
|
289
331
|
.builder-row {
|
|
290
332
|
position: relative;
|
|
333
|
+
|
|
291
334
|
.widget__content {
|
|
292
335
|
padding: 0 2em;
|
|
336
|
+
|
|
293
337
|
> svg {
|
|
294
338
|
width: 100%;
|
|
295
339
|
height: auto;
|
|
@@ -298,24 +342,26 @@ $red: #f74242;
|
|
|
298
342
|
flex-grow: 1;
|
|
299
343
|
}
|
|
300
344
|
}
|
|
345
|
+
|
|
301
346
|
&:hover {
|
|
302
347
|
.row-menu .row-menu__btn {
|
|
303
348
|
background-color: $blue;
|
|
304
|
-
|
|
349
|
+
|
|
305
350
|
&:hover {
|
|
306
351
|
background-color: lighten($blue, 8%);
|
|
307
352
|
}
|
|
308
|
-
|
|
353
|
+
|
|
309
354
|
&.row-menu__btn--edit {
|
|
310
355
|
background-color: transparent;
|
|
311
356
|
}
|
|
312
|
-
|
|
357
|
+
|
|
313
358
|
&.row-menu__btn--remove:hover {
|
|
314
359
|
background-color: $red;
|
|
315
360
|
}
|
|
316
361
|
}
|
|
362
|
+
|
|
317
363
|
.column-container {
|
|
318
364
|
border-color: $blue;
|
|
319
365
|
}
|
|
320
366
|
}
|
|
321
|
-
}
|
|
367
|
+
}
|
package/src/scss/main.scss
CHANGED
|
@@ -9,20 +9,25 @@
|
|
|
9
9
|
.loading > div.la-ball-beat {
|
|
10
10
|
margin-top: 20%;
|
|
11
11
|
}
|
|
12
|
+
|
|
12
13
|
.editor-heading {
|
|
13
|
-
background-color: #
|
|
14
|
+
background-color: #ddd;
|
|
14
15
|
border-bottom: #C7C7C7 1px solid;
|
|
15
16
|
padding: 0 1em;
|
|
16
17
|
display: flex;
|
|
17
|
-
height:
|
|
18
|
-
justify-content: space-between;
|
|
19
|
-
align-items: center;
|
|
18
|
+
height: 6em;
|
|
20
19
|
position: fixed;
|
|
21
20
|
width: 100%;
|
|
22
|
-
z-index:
|
|
21
|
+
z-index: 19;
|
|
23
22
|
top: 0;
|
|
23
|
+
&.sub-dashboard-viz {
|
|
24
|
+
height: 3em;
|
|
25
|
+
}
|
|
24
26
|
.heading-1 {
|
|
25
27
|
font-size: 1.2em;
|
|
28
|
+
padding-right: 1em;
|
|
29
|
+
margin: 0.5em 1em 0.5em 0;
|
|
30
|
+
border-right: 1px solid black;
|
|
26
31
|
&.back-to {
|
|
27
32
|
display: flex;
|
|
28
33
|
span {
|
|
@@ -32,6 +37,19 @@
|
|
|
32
37
|
}
|
|
33
38
|
}
|
|
34
39
|
|
|
40
|
+
.heading-body {
|
|
41
|
+
padding: .5em;
|
|
42
|
+
|
|
43
|
+
input[type="checkbox"] {
|
|
44
|
+
margin-right: 2em;
|
|
45
|
+
margin-left: .5em;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.table-height-input {
|
|
49
|
+
width: 6em;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
35
53
|
.toggle-bar {
|
|
36
54
|
overflow: hidden;
|
|
37
55
|
display: flex;
|
|
@@ -40,10 +58,13 @@
|
|
|
40
58
|
position: relative;
|
|
41
59
|
bottom: -1px;
|
|
42
60
|
li {
|
|
43
|
-
padding: .
|
|
61
|
+
padding: .3em 1.5em;
|
|
44
62
|
color: $mediumGray;
|
|
45
63
|
border-bottom: #C7C7C7 1px solid;
|
|
46
64
|
cursor: pointer;
|
|
65
|
+
white-space: nowrap;
|
|
66
|
+
text-overflow: ellipsis;
|
|
67
|
+
overflow: hidden;
|
|
47
68
|
&.active {
|
|
48
69
|
border-bottom-width: 5px;
|
|
49
70
|
border-bottom-color: $mediumGray;
|
|
@@ -55,6 +76,19 @@
|
|
|
55
76
|
}
|
|
56
77
|
}
|
|
57
78
|
}
|
|
79
|
+
|
|
80
|
+
.description-input {
|
|
81
|
+
width: 100%;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.shared-filter-button {
|
|
85
|
+
display: inline-block;
|
|
86
|
+
border-radius: 1em;
|
|
87
|
+
border: 1px solid gray;
|
|
88
|
+
background-color: white;
|
|
89
|
+
padding: .5em;
|
|
90
|
+
margin-right: 1em;
|
|
91
|
+
}
|
|
58
92
|
}
|
|
59
93
|
|
|
60
94
|
.visually-hidden {
|
|
@@ -92,9 +126,12 @@
|
|
|
92
126
|
}
|
|
93
127
|
|
|
94
128
|
.warning-icon {
|
|
129
|
+
position: relative;
|
|
130
|
+
top: 2px;
|
|
95
131
|
width: 15px;
|
|
96
132
|
height: 15px;
|
|
97
|
-
margin-
|
|
133
|
+
margin-left: 5px;
|
|
134
|
+
|
|
98
135
|
path {
|
|
99
136
|
fill: #d8000c;
|
|
100
137
|
}
|
|
@@ -144,6 +181,17 @@
|
|
|
144
181
|
.dashboard-col-12 {
|
|
145
182
|
width: 100%;
|
|
146
183
|
}
|
|
184
|
+
|
|
185
|
+
.preview-table-container {
|
|
186
|
+
padding-left: 350px;
|
|
187
|
+
padding-top: 100px;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.multi-table-container {
|
|
191
|
+
display: inline-block;
|
|
192
|
+
width: 100%;
|
|
193
|
+
}
|
|
194
|
+
|
|
147
195
|
@include breakpointClass(md) {
|
|
148
196
|
.dashboard-row {
|
|
149
197
|
flex-direction: row;
|
|
@@ -158,7 +206,7 @@
|
|
|
158
206
|
.dashboard-col-6 {
|
|
159
207
|
width: 50%;
|
|
160
208
|
}
|
|
161
|
-
|
|
209
|
+
|
|
162
210
|
.dashboard-col-4 {
|
|
163
211
|
width: 33%;
|
|
164
212
|
}
|
|
@@ -175,7 +223,14 @@
|
|
|
175
223
|
margin-bottom: 1em;
|
|
176
224
|
}
|
|
177
225
|
}
|
|
178
|
-
|
|
226
|
+
|
|
227
|
+
@include breakpoint(md) {
|
|
228
|
+
.cove-dashboard-filters {
|
|
229
|
+
display: flex;
|
|
230
|
+
gap: 30px;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
179
234
|
.dashboard-filters-section {
|
|
180
235
|
margin: 0 0 1em;
|
|
181
236
|
}
|
|
@@ -186,6 +241,10 @@
|
|
|
186
241
|
|
|
187
242
|
.cdc-dashboard-inner-container {
|
|
188
243
|
margin: 1em;
|
|
244
|
+
|
|
245
|
+
&.is-editor {
|
|
246
|
+
margin-top: 7em;
|
|
247
|
+
}
|
|
189
248
|
}
|
|
190
249
|
|
|
191
250
|
.sub-editor {
|
|
@@ -209,3 +268,12 @@
|
|
|
209
268
|
}
|
|
210
269
|
}
|
|
211
270
|
}
|
|
271
|
+
|
|
272
|
+
.shared-filter-modal {
|
|
273
|
+
border: none;
|
|
274
|
+
|
|
275
|
+
label {
|
|
276
|
+
display: block;
|
|
277
|
+
margin: 1em 0;
|
|
278
|
+
}
|
|
279
|
+
}
|
package/src/components/Header.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React, { useContext, memo } from 'react'
|
|
2
|
-
|
|
3
|
-
const Header = ({preview, setPreview, back, subEditor = null}) => {
|
|
4
|
-
return (
|
|
5
|
-
<div className="editor-heading">
|
|
6
|
-
{subEditor ? <div className="heading-1 back-to" onClick={back} style={{cursor: 'pointer'}}><span>←</span> Back to Dashboard</div> : <div className="heading-1">Dashboard Editor</div>}
|
|
7
|
-
{!subEditor && <ul className="toggle-bar">
|
|
8
|
-
<li className={preview ? 'inactive' : 'active'} onClick={() => {setPreview(false)}}>Build Layout</li>
|
|
9
|
-
<li className={preview ? 'active' : 'inactive'} onClick={() => {setPreview(true)}}>Preview & Configure</li>
|
|
10
|
-
</ul>}
|
|
11
|
-
</div>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export default Header
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
package/src/images/icon-down.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000"><path d="M24 24H0V0h24v24z" fill="none" opacity=".87"/><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6-1.41-1.41z"/></svg>
|
package/src/images/icon-edit.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06M17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z"/></svg>
|
package/src/images/icon-move.svg
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="16" viewBox="0 0 10 16">
|
|
2
|
-
<circle cx="2" cy="2" r="2"/>
|
|
3
|
-
<circle cx="8" cy="2" r="2"/>
|
|
4
|
-
<circle cx="2" cy="8" r="2"/>
|
|
5
|
-
<circle cx="8" cy="8" r="2"/>
|
|
6
|
-
<circle cx="2" cy="14" r="2"/>
|
|
7
|
-
<circle cx="8" cy="14" r="2"/>
|
|
8
|
-
</svg>
|
package/src/images/icon-up.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6z"/></svg>
|
package/src/images/warning.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"/></svg>
|