@cdc/core 4.25.10 → 4.26.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/_stories/Gallery.Charts.stories.tsx +307 -0
- package/_stories/Gallery.DataBite.stories.tsx +72 -0
- package/_stories/Gallery.Maps.stories.tsx +230 -0
- package/_stories/Gallery.WaffleChart.stories.tsx +187 -0
- package/_stories/PageART.stories.tsx +192 -0
- package/_stories/PageBRFSS.stories.tsx +289 -0
- package/_stories/PageCancerRegistries.stories.tsx +199 -0
- package/_stories/PageEasternEquineEncephalitis.stories.tsx +202 -0
- package/_stories/PageExcessiveAlcoholUse.stories.tsx +196 -0
- package/_stories/PageMaternalMortality.stories.tsx +192 -0
- package/_stories/PageOralHealth.stories.tsx +196 -0
- package/_stories/PageRespiratory.stories.tsx +332 -0
- package/_stories/PageSmokingTobacco.stories.tsx +195 -0
- package/_stories/PageStateDiabetesProfiles.stories.tsx +196 -0
- package/_stories/PageWastewater.stories.tsx +463 -0
- package/_stories/StoryRenderingTests.stories.tsx +164 -0
- package/assets/icon-magnifying-glass.svg +5 -0
- package/assets/icon-warming-stripes.svg +13 -0
- package/components/AdvancedEditor/AdvancedEditor.tsx +7 -1
- package/components/AdvancedEditor/EmbedEditor.tsx +281 -0
- package/components/ComboBox/ComboBox.tsx +345 -0
- package/components/ComboBox/combobox.styles.css +185 -0
- package/components/ComboBox/index.ts +1 -0
- package/components/CustomColorsEditor/CustomColorsEditor.css +299 -0
- package/components/CustomColorsEditor/CustomColorsEditor.tsx +209 -0
- package/components/CustomColorsEditor/index.ts +1 -0
- package/components/DataTable/DataTable.tsx +132 -58
- package/components/DataTable/DataTableStandAlone.tsx +8 -3
- package/components/DataTable/components/DataTableEditorPanel.tsx +12 -2
- package/components/DataTable/data-table.css +217 -210
- package/components/DataTable/helpers/mapCellMatrix.tsx +28 -9
- package/components/DataTable/helpers/standardizeState.js +2 -2
- package/components/DataTable/helpers/tests/standardizeState.test.js +54 -0
- package/components/EditorPanel/ColumnsEditor.tsx +37 -19
- package/components/EditorPanel/DataTableEditor.tsx +54 -28
- package/components/EditorPanel/EditorPanel.styles.css +439 -0
- package/components/EditorPanel/EditorPanel.tsx +144 -0
- package/components/EditorPanel/EditorPanelDispatch.tsx +75 -0
- package/components/EditorPanel/FieldSetWrapper.tsx +66 -23
- package/components/EditorPanel/FootnotesEditor.tsx +44 -37
- package/components/EditorPanel/Inputs.tsx +44 -8
- package/components/EditorPanel/VizFilterEditor/NestedDropdownEditor.tsx +35 -62
- package/components/EditorPanel/VizFilterEditor/VizFilterEditor.tsx +246 -175
- package/components/EditorPanel/components/MarkupVariablesEditor.tsx +61 -22
- package/components/EditorPanel/sections/VisualSection.tsx +169 -0
- package/components/Filters/Filters.tsx +57 -10
- package/components/Filters/components/Dropdown.tsx +6 -1
- package/components/Filters/helpers/getNestedOptions.ts +2 -1
- package/components/Filters/helpers/handleSorting.ts +1 -1
- package/components/Footnotes/Footnotes.tsx +35 -25
- package/components/Footnotes/FootnotesStandAlone.tsx +42 -6
- package/components/HeaderThemeSelector/HeaderThemeSelector.css +43 -0
- package/components/HeaderThemeSelector/HeaderThemeSelector.stories.tsx +74 -0
- package/components/HeaderThemeSelector/HeaderThemeSelector.tsx +61 -0
- package/components/HeaderThemeSelector/index.ts +2 -0
- package/components/Layout/components/Sidebar/components/sidebar.styles.scss +82 -0
- package/components/Layout/components/Visualization/index.tsx +16 -1
- package/components/Layout/components/Visualization/visualizations.scss +7 -0
- package/components/Layout/styles/editor.scss +2 -1
- package/components/Legend/Legend.Gradient.tsx +1 -1
- package/components/Loader/Loader.tsx +1 -1
- package/components/MediaControls.tsx +63 -34
- package/components/PaletteConversionModal.tsx +7 -4
- package/components/PaletteSelector/PaletteSelector.css +49 -6
- package/components/Table/components/Cell.tsx +23 -2
- package/components/Table/components/Row.tsx +5 -3
- package/components/_stories/Filters.stories.tsx +20 -1
- package/components/_stories/Footnotes.CSV.stories.tsx +247 -0
- package/components/_stories/Footnotes.stories.tsx +768 -3
- package/components/_stories/Inputs.stories.tsx +2 -2
- package/components/_stories/styles.scss +0 -1
- package/components/ui/Accordion.jsx +1 -1
- package/components/ui/Icon.tsx +3 -1
- package/components/ui/Title/index.tsx +30 -2
- package/components/ui/Title/title.styles.css +42 -0
- package/components/ui/accordion.styles.css +57 -0
- package/data/chartColorPalettes.ts +1 -1
- package/dist/cove-main.css +75 -6
- package/dist/cove-main.css.map +1 -1
- package/generateViteConfig.js +8 -1
- package/helpers/addValuesToFilters.ts +11 -1
- package/helpers/constants.ts +37 -0
- package/helpers/cove/number.ts +33 -12
- package/helpers/coveUpdateWorker.ts +20 -11
- package/helpers/embedCodeGenerator.ts +109 -0
- package/helpers/fetchRemoteData.ts +3 -15
- package/helpers/getUniqueValues.ts +19 -0
- package/helpers/hashObj.ts +25 -0
- package/helpers/isRightAlignedTableValue.js +5 -0
- package/helpers/markupProcessor.ts +27 -12
- package/helpers/mergeCustomOrderValues.ts +37 -0
- package/helpers/metrics/helpers.ts +1 -0
- package/helpers/parseCsvWithQuotes.ts +65 -0
- package/helpers/pivotData.ts +2 -2
- package/helpers/prepareScreenshot.ts +268 -0
- package/helpers/queryStringUtils.ts +29 -0
- package/helpers/testing.ts +17 -4
- package/helpers/tests/prepareScreenshot.test.ts +414 -0
- package/helpers/tests/queryStringUtils.test.ts +381 -0
- package/helpers/tests/testStandaloneBuild.ts +23 -5
- package/helpers/useDataVizClasses.ts +0 -1
- package/helpers/ver/4.25.11.ts +13 -0
- package/helpers/ver/4.26.1.ts +80 -0
- package/helpers/viewports.ts +2 -0
- package/hooks/useDataColumns.ts +63 -0
- package/hooks/useFilterManagement.ts +94 -0
- package/hooks/useLegendSeparators.ts +26 -0
- package/hooks/useListManagement.ts +192 -0
- package/package.json +6 -4
- package/styles/_button-section.scss +0 -3
- package/styles/_common-components.css +73 -0
- package/styles/_global.scss +25 -5
- package/styles/base.scss +0 -50
- package/styles/cove-main.scss +3 -1
- package/styles/filters.scss +10 -3
- package/styles/v2/base/index.scss +0 -1
- package/styles/v2/components/editor.scss +14 -6
- package/styles/v2/utils/_breakpoints.scss +1 -1
- package/styles/v2/utils/index.scss +0 -1
- package/styles/waiting.scss +1 -1
- package/types/Axis.ts +1 -0
- package/types/ForecastingSeriesKey.ts +1 -0
- package/types/MarkupInclude.ts +5 -3
- package/types/MarkupVariable.ts +1 -1
- package/types/Series.ts +3 -0
- package/types/Table.ts +1 -0
- package/types/Visualization.ts +1 -0
- package/types/VizFilter.ts +2 -0
- package/LICENSE +0 -201
- package/styles/_mixins.scss +0 -13
- package/styles/_typography.scss +0 -0
- package/styles/v2/base/_typography.scss +0 -0
- package/styles/v2/components/guidance-block.scss +0 -74
- package/styles/v2/utils/_functions.scss +0 -0
|
@@ -5,8 +5,10 @@ import { Visualization } from '../../types/Visualization'
|
|
|
5
5
|
import { UpdateFieldFunc } from '../../types/UpdateFieldFunc'
|
|
6
6
|
import { Column } from '../../types/Column'
|
|
7
7
|
import _ from 'lodash'
|
|
8
|
-
import React, { useState } from 'react'
|
|
8
|
+
import React, { useState, useMemo } from 'react'
|
|
9
9
|
import FieldSetWrapper from './FieldSetWrapper'
|
|
10
|
+
import { useDataColumns } from '../../hooks/useDataColumns'
|
|
11
|
+
import Alert from '../Alert/components/Alert'
|
|
10
12
|
|
|
11
13
|
interface ColumnsEditorProps {
|
|
12
14
|
config: Partial<Visualization>
|
|
@@ -52,19 +54,21 @@ const FieldSet: React.FC<ColumnsEditorProps & { colKey: string; controls: OpenCo
|
|
|
52
54
|
updateField(null, null, 'columns', newColumns)
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
// Extract column names from data with memoization (replaces getColumns)
|
|
58
|
+
const allColumns = useDataColumns(config.data)
|
|
59
|
+
|
|
60
|
+
// Filter out groupBy and already configured columns
|
|
61
|
+
const availableColumns = useMemo(() => {
|
|
59
62
|
const configuredColumns = Object.values(config.columns).map(col => col.name)
|
|
60
|
-
const cols =
|
|
63
|
+
const cols = allColumns.filter(key => {
|
|
61
64
|
if (config.table.groupBy === key) return false
|
|
62
65
|
if (configuredColumns.includes(key)) return false
|
|
63
66
|
return true
|
|
64
67
|
})
|
|
68
|
+
// Add current column name if it exists
|
|
65
69
|
if (config.columns[colKey]?.name) cols.push(config.columns[colKey].name)
|
|
66
70
|
return cols
|
|
67
|
-
}
|
|
71
|
+
}, [allColumns, config.table.groupBy, config.columns, colKey])
|
|
68
72
|
|
|
69
73
|
const colName = config.columns[colKey]?.name
|
|
70
74
|
|
|
@@ -82,7 +86,7 @@ const FieldSet: React.FC<ColumnsEditorProps & { colKey: string; controls: OpenCo
|
|
|
82
86
|
fieldName='name'
|
|
83
87
|
section={'columns'}
|
|
84
88
|
initial={'-Select-'}
|
|
85
|
-
options={
|
|
89
|
+
options={availableColumns}
|
|
86
90
|
updateField={(_section, _subsection, _fieldName, value) => changeName(value)}
|
|
87
91
|
/>
|
|
88
92
|
{config.type !== 'table' && (
|
|
@@ -92,7 +96,11 @@ const FieldSet: React.FC<ColumnsEditorProps & { colKey: string; controls: OpenCo
|
|
|
92
96
|
fieldName={'series'}
|
|
93
97
|
section='columns'
|
|
94
98
|
initial={'Select series'}
|
|
95
|
-
options={
|
|
99
|
+
options={
|
|
100
|
+
config.visualizationType === 'Pie'
|
|
101
|
+
? config.runtime?.seriesKeys || []
|
|
102
|
+
: config.series?.map(series => series.dataKey) || []
|
|
103
|
+
}
|
|
96
104
|
updateField={(_section, _subsection, _fieldName, value) => editColumn('series', value)}
|
|
97
105
|
/>
|
|
98
106
|
)}
|
|
@@ -147,16 +155,26 @@ const FieldSet: React.FC<ColumnsEditorProps & { colKey: string; controls: OpenCo
|
|
|
147
155
|
</li>
|
|
148
156
|
<li>
|
|
149
157
|
{config.table.showVertical && (
|
|
150
|
-
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
<>
|
|
159
|
+
<label className='checkbox'>
|
|
160
|
+
<input
|
|
161
|
+
type='checkbox'
|
|
162
|
+
checked={config.columns[colKey].dataTable ?? true}
|
|
163
|
+
onChange={event => {
|
|
164
|
+
editColumn('dataTable', event.target.checked)
|
|
165
|
+
}}
|
|
166
|
+
/>
|
|
167
|
+
<span className='edit-label'>Show in Data Table</span>
|
|
168
|
+
</label>
|
|
169
|
+
{(config.confidenceKeys?.upper === colName || config.confidenceKeys?.lower === colName) && (
|
|
170
|
+
<Alert
|
|
171
|
+
type="danger"
|
|
172
|
+
message="Confidence Interval column - required for 508 compliance"
|
|
173
|
+
showCloseButton={false}
|
|
174
|
+
iconSize={14}
|
|
175
|
+
/>
|
|
176
|
+
)}
|
|
177
|
+
</>
|
|
160
178
|
)}
|
|
161
179
|
</li>
|
|
162
180
|
{config.visualizationType === 'Pie' && (
|
|
@@ -21,9 +21,9 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
21
21
|
const isLoadedFromUrl = config.dataKey?.includes('http://') || config?.dataKey?.includes('https://')
|
|
22
22
|
const excludedColumns = useMemo(() => {
|
|
23
23
|
return Object.keys(config.columns)
|
|
24
|
-
.map<[string, boolean]>(key => [key, config.columns[key].dataTable])
|
|
25
|
-
.filter(([
|
|
26
|
-
.map(([
|
|
24
|
+
.map<[string, boolean]>(key => [config.columns[key].name, config.columns[key].dataTable])
|
|
25
|
+
.filter(([columnName, dataTable]) => !dataTable && columnName) // also filter out undefined names
|
|
26
|
+
.map(([columnName]) => columnName)
|
|
27
27
|
}, [config.columns])
|
|
28
28
|
|
|
29
29
|
const groupPivotColumns = useMemo(() => {
|
|
@@ -195,7 +195,7 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
195
195
|
updateField={updateField}
|
|
196
196
|
/>
|
|
197
197
|
)}
|
|
198
|
-
{config?.visualizationType !== 'Sankey' && (
|
|
198
|
+
{config?.visualizationType !== 'Sankey' && config?.visualizationType !== 'Warming Stripes' && (
|
|
199
199
|
<label onClick={e => e.preventDefault()}>
|
|
200
200
|
<span className='edit-label column-heading mt-1'>Exclude Columns </span>
|
|
201
201
|
<MultiSelect
|
|
@@ -283,11 +283,35 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
283
283
|
<CheckBox
|
|
284
284
|
value={config.table.showDownloadImgButton}
|
|
285
285
|
fieldName='showDownloadImgButton'
|
|
286
|
-
label='Display Image
|
|
286
|
+
label='Display Image Download Link'
|
|
287
287
|
section='table'
|
|
288
288
|
updateField={updateField}
|
|
289
289
|
/>
|
|
290
290
|
)}
|
|
291
|
+
{config.type !== 'table' && config.table.showDownloadImgButton && (
|
|
292
|
+
<CheckBox
|
|
293
|
+
value={config.table.includeContextInDownload}
|
|
294
|
+
fieldName='includeContextInDownload'
|
|
295
|
+
className='ms-4'
|
|
296
|
+
label='Include Heading & Context'
|
|
297
|
+
section='table'
|
|
298
|
+
updateField={updateField}
|
|
299
|
+
tooltip={
|
|
300
|
+
<Tooltip style={{ textTransform: 'none' }}>
|
|
301
|
+
<Tooltip.Target>
|
|
302
|
+
<Icon display='question' style={{ marginLeft: '0.5rem' }} />
|
|
303
|
+
</Tooltip.Target>
|
|
304
|
+
<Tooltip.Content>
|
|
305
|
+
<p>
|
|
306
|
+
When enabled, the image download will include the section heading (H2 or H3) and any explanatory
|
|
307
|
+
paragraphs that appear immediately before the visualization. Be sure to test the image download on the
|
|
308
|
+
published page to ensure the correct context is included.
|
|
309
|
+
</p>
|
|
310
|
+
</Tooltip.Content>
|
|
311
|
+
</Tooltip>
|
|
312
|
+
}
|
|
313
|
+
/>
|
|
314
|
+
)}
|
|
291
315
|
<label>
|
|
292
316
|
<span className='edit-label column-heading'>Table Cell Min Width</span>
|
|
293
317
|
<input
|
|
@@ -296,7 +320,7 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
296
320
|
onChange={e => updateField('table', null, 'cellMinWidth', e.target.value)}
|
|
297
321
|
/>
|
|
298
322
|
</label>
|
|
299
|
-
{config?.visualizationType !== 'Sankey' && (
|
|
323
|
+
{config?.visualizationType !== 'Sankey' && config?.visualizationType !== 'Warming Stripes' && (
|
|
300
324
|
<Select
|
|
301
325
|
value={config.table.groupBy}
|
|
302
326
|
fieldName={'groupBy'}
|
|
@@ -322,28 +346,30 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
322
346
|
}
|
|
323
347
|
/>
|
|
324
348
|
)}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
<Tooltip
|
|
330
|
-
<
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
<
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
349
|
+
{config.visualizationType !== 'Warming Stripes' && (
|
|
350
|
+
<Select
|
|
351
|
+
label='Pivot Column'
|
|
352
|
+
tooltip={
|
|
353
|
+
<Tooltip style={{ textTransform: 'none' }}>
|
|
354
|
+
<Tooltip.Target>
|
|
355
|
+
<Icon display='question' style={{ marginLeft: '0.5rem' }} />
|
|
356
|
+
</Tooltip.Target>
|
|
357
|
+
<Tooltip.Content>
|
|
358
|
+
<p>Select a Column whos data values will be pivoted to Column Values.</p>
|
|
359
|
+
</Tooltip.Content>
|
|
360
|
+
</Tooltip>
|
|
361
|
+
}
|
|
362
|
+
value={config.table.pivot?.columnName}
|
|
363
|
+
options={groupPivotColumns.filter(
|
|
364
|
+
col => col !== config.table.groupBy && !(config.table.pivot?.valueColumns || []).includes(col)
|
|
365
|
+
)}
|
|
366
|
+
initial='-Select-'
|
|
367
|
+
section='table'
|
|
368
|
+
subsection='pivot'
|
|
369
|
+
fieldName='columnName'
|
|
370
|
+
updateField={updateField}
|
|
371
|
+
/>
|
|
372
|
+
)}
|
|
347
373
|
{config.table.pivot?.columnName && (
|
|
348
374
|
<label>
|
|
349
375
|
<span className='edit-label column-heading mt-1'>
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
/* EditorPanel component styles */
|
|
2
|
+
/* Shared editor panel component styles used across all visualization packages */
|
|
3
|
+
|
|
4
|
+
/* Color palette in editor panel context */
|
|
5
|
+
.editor-panel .header .color-palette li {
|
|
6
|
+
width: 1.5em;
|
|
7
|
+
height: 1.5em;
|
|
8
|
+
display: inline-block;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.editor-panel .color-palette {
|
|
12
|
+
display: flex;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.editor-panel .color-palette li {
|
|
16
|
+
width: 1.5em;
|
|
17
|
+
height: 1.5em;
|
|
18
|
+
display: inline-block;
|
|
19
|
+
margin-right: 0.5em;
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
border: rgba(0, 0, 0, 0.3) 3px solid;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.editor-panel .color-palette li.active {
|
|
25
|
+
border: rgba(0, 0, 0, 0.8) 3px solid;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.editor-panel .color-palette a {
|
|
29
|
+
display: inline-block;
|
|
30
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.8);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.editor-panel .color-palette.series-list {
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
padding: 0;
|
|
36
|
+
border: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.editor-panel .color-palette.series-list li {
|
|
40
|
+
padding: 0.3em 0.5em;
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
justify-content: space-between;
|
|
44
|
+
width: auto;
|
|
45
|
+
height: auto;
|
|
46
|
+
border: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.editor-panel .color-palette.series-list li:not(:last-child) {
|
|
50
|
+
border-bottom: rgba(0, 0, 0, 0.2) 1px solid;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.editor-panel .form-container {
|
|
54
|
+
border-right: var(--lightGray) 1px solid;
|
|
55
|
+
flex-grow: 1;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.editor-panel .guidance-link {
|
|
59
|
+
margin: 2em 1em 0;
|
|
60
|
+
padding: 0.75em 1em;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.editor-panel .guidance-link svg {
|
|
64
|
+
width: 60px;
|
|
65
|
+
color: var(--blue);
|
|
66
|
+
margin-right: 1rem;
|
|
67
|
+
height: 60px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.editor-panel .guidance-link svg path {
|
|
71
|
+
fill: currentColor;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.editor-panel .warning {
|
|
75
|
+
color: #d8000c;
|
|
76
|
+
background-color: #ffd2d2;
|
|
77
|
+
padding: 0.75em 1em;
|
|
78
|
+
margin: 1em 0;
|
|
79
|
+
font-size: 0.8em;
|
|
80
|
+
border: #d8000c 1px solid;
|
|
81
|
+
border-radius: 0.4em;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.editor-panel .warning strong {
|
|
85
|
+
font-weight: 600;
|
|
86
|
+
display: block;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.editor-panel .advanced {
|
|
90
|
+
padding: 0 1em 1em;
|
|
91
|
+
text-align: left;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.editor-panel .advanced p {
|
|
95
|
+
font-size: 0.8rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.editor-panel .advanced .advanced-toggle-link {
|
|
99
|
+
padding-top: 1em;
|
|
100
|
+
display: block;
|
|
101
|
+
text-align: left;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
text-decoration: underline;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.editor-panel .advanced .advanced-toggle-link span {
|
|
107
|
+
text-decoration: none;
|
|
108
|
+
display: inline-block;
|
|
109
|
+
font-family: monospace;
|
|
110
|
+
padding-right: 5px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.editor-panel .advanced .advanced-toggle-link:hover {
|
|
114
|
+
color: rgba(0, 0, 0, 0.7);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.editor-panel .advanced textarea {
|
|
118
|
+
height: 400px;
|
|
119
|
+
width: 100%;
|
|
120
|
+
font-size: 0.9em;
|
|
121
|
+
padding: 0.5em;
|
|
122
|
+
font-family: monospace;
|
|
123
|
+
box-sizing: border-box;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.editor-panel .heading-2 {
|
|
127
|
+
background: #565656;
|
|
128
|
+
color: #fff;
|
|
129
|
+
font-size: 1.1em;
|
|
130
|
+
padding: 0.6em 1em;
|
|
131
|
+
position: relative;
|
|
132
|
+
border-bottom: #565656 3px solid;
|
|
133
|
+
z-index: 3;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.editor-panel label {
|
|
137
|
+
text-transform: uppercase;
|
|
138
|
+
display: block;
|
|
139
|
+
font-size: 0.8em;
|
|
140
|
+
font-weight: 600;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.editor-panel label:not(:first-child) {
|
|
144
|
+
margin-top: 1em;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.editor-panel label span.edit-label {
|
|
148
|
+
margin-bottom: 0.3em;
|
|
149
|
+
display: block;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.editor-panel label span.column-heading {
|
|
153
|
+
font-size: 1em;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.editor-panel label.checkbox {
|
|
157
|
+
display: flex;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.editor-panel label.checkbox span {
|
|
161
|
+
text-transform: none;
|
|
162
|
+
font-size: 1em;
|
|
163
|
+
font-weight: 400;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.editor-panel label.checkbox input {
|
|
167
|
+
margin-top: 0;
|
|
168
|
+
margin-right: 0.5em;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.editor-panel input[type='checkbox'],
|
|
172
|
+
.editor-panel input[type='radio'] {
|
|
173
|
+
display: inline-block;
|
|
174
|
+
width: auto !important;
|
|
175
|
+
height: auto !important;
|
|
176
|
+
padding: 0;
|
|
177
|
+
margin-right: 0.5em;
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
user-select: none;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.editor-panel input[type='text'],
|
|
183
|
+
.editor-panel input[role='combobox'],
|
|
184
|
+
.editor-panel input[type='number'],
|
|
185
|
+
.editor-panel textarea {
|
|
186
|
+
padding: 0.5em;
|
|
187
|
+
width: 100%;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.editor-panel fieldset {
|
|
191
|
+
padding-left: 0;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.editor-panel .primary-fieldset {
|
|
195
|
+
border-top: rgba(0, 0, 0, 0.3) 2px solid;
|
|
196
|
+
padding-top: 2em;
|
|
197
|
+
margin-top: 2em;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.editor-panel ul.column-edit {
|
|
201
|
+
list-style: none;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.editor-panel ul.column-edit li {
|
|
205
|
+
display: flex;
|
|
206
|
+
flex-wrap: wrap;
|
|
207
|
+
justify-content: space-between;
|
|
208
|
+
padding: 0.3em 0;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.editor-panel ul.column-edit li label {
|
|
212
|
+
display: inline-block;
|
|
213
|
+
width: 48%;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.editor-panel ul.column-edit li label:nth-child(odd) {
|
|
217
|
+
margin-top: 1em;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.editor-panel ul.column-edit.three-col li label {
|
|
221
|
+
width: 31%;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.editor-panel .edit-block {
|
|
225
|
+
border: 1px solid rgba(0, 0, 0, 0.3);
|
|
226
|
+
padding: 1em;
|
|
227
|
+
margin-top: 1em;
|
|
228
|
+
position: relative;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.editor-panel .edit-block .remove-column {
|
|
232
|
+
position: absolute;
|
|
233
|
+
top: 0;
|
|
234
|
+
right: 0;
|
|
235
|
+
border: 0;
|
|
236
|
+
background: rgba(0, 0, 0, 0.1);
|
|
237
|
+
color: #000;
|
|
238
|
+
font-size: 0.8em;
|
|
239
|
+
padding: 0.3em;
|
|
240
|
+
cursor: pointer;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.editor-panel span.subtext {
|
|
244
|
+
text-transform: none;
|
|
245
|
+
display: block;
|
|
246
|
+
font-size: 0.8em;
|
|
247
|
+
font-weight: 400;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.editor-panel .sort-list {
|
|
251
|
+
list-style: none;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.editor-panel .sort-list li {
|
|
255
|
+
border: 1px solid rgba(0, 0, 0, 0.2);
|
|
256
|
+
padding: 0.3em;
|
|
257
|
+
display: flex;
|
|
258
|
+
align-items: center;
|
|
259
|
+
cursor: move;
|
|
260
|
+
margin-bottom: 0.3em;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.editor-panel .sort-list li svg {
|
|
264
|
+
margin-right: 0.5em;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.editor-panel .info {
|
|
268
|
+
margin-top: 1em;
|
|
269
|
+
font-size: 0.9em;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* React Tags Component styles (third-party library) */
|
|
273
|
+
.editor-panel .react-tags__search {
|
|
274
|
+
width: 100%;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.editor-panel .react-tags {
|
|
278
|
+
position: relative;
|
|
279
|
+
cursor: text;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.editor-panel .react-tags input.react-tags__search-input {
|
|
283
|
+
font-size: 0.8rem;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.editor-panel .react-tags span {
|
|
287
|
+
display: inline;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.editor-panel .react-tags.is-focused {
|
|
291
|
+
border-color: rgba(0, 0, 0, 0.7);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.editor-panel .react-tags__selected {
|
|
295
|
+
display: inline;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.editor-panel .react-tags__selected-tag {
|
|
299
|
+
display: inline-block;
|
|
300
|
+
box-sizing: border-box;
|
|
301
|
+
border: 1px solid #d1d1d1;
|
|
302
|
+
border-radius: 2px;
|
|
303
|
+
background: #f1f1f1;
|
|
304
|
+
padding: 0.4em 0.6em;
|
|
305
|
+
font-size: 0.8em;
|
|
306
|
+
margin-right: 0.3em;
|
|
307
|
+
margin-bottom: 0.3em;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.editor-panel .react-tags__selected-tag:after {
|
|
311
|
+
content: '\2715';
|
|
312
|
+
color: #aaa;
|
|
313
|
+
margin-left: 8px;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.editor-panel .react-tags__selected-tag:hover,
|
|
317
|
+
.editor-panel .react-tags__selected-tag:focus {
|
|
318
|
+
border-color: #b1b1b1;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.editor-panel .react-tags__search {
|
|
322
|
+
display: inline-block;
|
|
323
|
+
max-width: 100%;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
@media screen and (min-width: 30em) {
|
|
327
|
+
.editor-panel .react-tags__search {
|
|
328
|
+
position: relative;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.editor-panel .react-tags__search input {
|
|
333
|
+
max-width: 100%;
|
|
334
|
+
margin: 0;
|
|
335
|
+
outline: none;
|
|
336
|
+
padding: 0.5em 0.3em;
|
|
337
|
+
font-size: inherit;
|
|
338
|
+
line-height: inherit;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.editor-panel .react-tags__search input::-ms-clear {
|
|
342
|
+
display: none;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.editor-panel .react-tags__suggestions {
|
|
346
|
+
position: absolute;
|
|
347
|
+
top: 100%;
|
|
348
|
+
left: 0;
|
|
349
|
+
width: 100%;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@media screen and (min-width: 30em) {
|
|
353
|
+
.editor-panel .react-tags__suggestions {
|
|
354
|
+
width: 240px;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.editor-panel .react-tags__suggestions ul {
|
|
359
|
+
margin: 4px -1px;
|
|
360
|
+
padding: 0;
|
|
361
|
+
list-style: none;
|
|
362
|
+
background: white;
|
|
363
|
+
border: 1px solid #d1d1d1;
|
|
364
|
+
border-radius: 2px;
|
|
365
|
+
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.editor-panel .react-tags__suggestions li {
|
|
369
|
+
border-bottom: 1px solid #ddd;
|
|
370
|
+
padding: 6px 8px;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.editor-panel .react-tags__suggestions li mark {
|
|
374
|
+
text-decoration: underline;
|
|
375
|
+
background: none;
|
|
376
|
+
font-weight: 600;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.editor-panel .react-tags__suggestions li:hover {
|
|
380
|
+
cursor: pointer;
|
|
381
|
+
background: #eee;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.editor-panel .react-tags__suggestions li.is-active {
|
|
385
|
+
background: #b7cfe0;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.editor-panel .react-tags__suggestions li.is-disabled {
|
|
389
|
+
opacity: 0.5;
|
|
390
|
+
cursor: auto;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.editor-toggle {
|
|
394
|
+
position: fixed;
|
|
395
|
+
top: 1em;
|
|
396
|
+
right: 1em;
|
|
397
|
+
background: var(--blue);
|
|
398
|
+
color: white;
|
|
399
|
+
border: 0;
|
|
400
|
+
border-radius: 0.5em;
|
|
401
|
+
padding: 0.5em 1em;
|
|
402
|
+
font-size: 1em;
|
|
403
|
+
cursor: pointer;
|
|
404
|
+
z-index: 9999999999;
|
|
405
|
+
display: none;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.editor-toggle.active {
|
|
409
|
+
display: block;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.editor-toggle:hover {
|
|
413
|
+
background: var(--darkBlue);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.editor-toggle svg {
|
|
417
|
+
height: 1em;
|
|
418
|
+
width: 1em;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.editor-toggle svg path {
|
|
422
|
+
fill: currentColor;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/* Shared styles consolidated from package-specific EditorPanel.styles.css files */
|
|
426
|
+
/* Previously duplicated in: data-bite, filtered-text, markup-include */
|
|
427
|
+
.editor-panel .condition-section :is(label) {
|
|
428
|
+
font-size: 1em;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
:is(span).edit-label {
|
|
432
|
+
margin-bottom: 0.3em;
|
|
433
|
+
display: block;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.react-tooltip {
|
|
437
|
+
position: absolute;
|
|
438
|
+
width: 250px;
|
|
439
|
+
}
|