@quillsql/react 2.11.16 → 2.11.17
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/cjs/Chart.d.ts +117 -42
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +44 -18
- package/dist/cjs/ChartBuilder.d.ts +194 -30
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +122 -62
- package/dist/cjs/ChartEditor.d.ts +114 -18
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +47 -15
- package/dist/cjs/Dashboard.d.ts +148 -91
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +46 -152
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/cjs/QuillProvider.d.ts +105 -2
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +59 -0
- package/dist/cjs/ReportBuilder.d.ts +188 -42
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +466 -394
- package/dist/cjs/SQLEditor.d.ts +158 -23
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +35 -30
- package/dist/cjs/Table.d.ts +119 -15
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +37 -6
- package/dist/cjs/TableChart.d.ts.map +1 -1
- package/dist/cjs/TableChart.js +0 -194
- package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
- package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
- package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +3 -3
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
- package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +6 -9
- package/dist/cjs/components/QuillSelect.d.ts +4 -1
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +13 -8
- package/dist/cjs/components/QuillTable.d.ts +16 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +4 -4
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +8 -6
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +4 -14
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +21 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +15 -17
- package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +40 -20
- package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts +83 -18
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +52 -100
- package/dist/cjs/components/ReportBuilder/util.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +16 -9
- package/dist/cjs/components/UiComponents.d.ts +86 -86
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +118 -103
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +3 -1
- package/dist/cjs/hooks/useTheme.d.ts +7 -0
- package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
- package/dist/cjs/hooks/useTheme.js +12 -0
- package/dist/cjs/index.d.ts +10 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +10 -10
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +29 -14
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +73 -49
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +2 -0
- package/dist/esm/Chart.d.ts +117 -42
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +45 -19
- package/dist/esm/ChartBuilder.d.ts +194 -30
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +122 -62
- package/dist/esm/ChartEditor.d.ts +114 -18
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +51 -19
- package/dist/esm/Dashboard.d.ts +148 -91
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +49 -153
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/esm/QuillProvider.d.ts +105 -2
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +59 -0
- package/dist/esm/ReportBuilder.d.ts +188 -42
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +468 -396
- package/dist/esm/SQLEditor.d.ts +158 -23
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +35 -30
- package/dist/esm/Table.d.ts +119 -15
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +38 -7
- package/dist/esm/TableChart.d.ts.map +1 -1
- package/dist/esm/TableChart.js +0 -194
- package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
- package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
- package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
- package/dist/esm/components/Chart/LineChart.d.ts +2 -3
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +3 -3
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
- package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
- package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
- package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +6 -9
- package/dist/esm/components/QuillSelect.d.ts +4 -1
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +14 -9
- package/dist/esm/components/QuillTable.d.ts +16 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +4 -4
- package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
- package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnPopover.js +8 -6
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +4 -14
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +21 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +17 -19
- package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +33 -13
- package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts +83 -18
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +50 -98
- package/dist/esm/components/ReportBuilder/util.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +14 -8
- package/dist/esm/components/UiComponents.d.ts +86 -86
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +111 -101
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useTheme.d.ts +7 -0
- package/dist/esm/hooks/useTheme.d.ts.map +1 -0
- package/dist/esm/hooks/useTheme.js +10 -0
- package/dist/esm/index.d.ts +10 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +2 -0
- package/package.json +1 -1
- package/dist/cjs/BarList.d.ts.map +0 -1
- package/dist/cjs/PieChart.d.ts.map +0 -1
- package/dist/esm/BarList.d.ts.map +0 -1
- package/dist/esm/PieChart.d.ts.map +0 -1
- /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
- /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
package/dist/esm/ChartBuilder.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable no-unused-vars */
|
|
2
3
|
import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
|
|
3
4
|
import { ClientContext, DashboardContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
|
|
4
5
|
import { getData, getDataFromCloud } from './utils/dataFetcher';
|
|
@@ -8,8 +9,8 @@ import { PivotCard } from './internals/ReportBuilder/PivotList';
|
|
|
8
9
|
import Chart from './Chart';
|
|
9
10
|
import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, } from './components/UiComponents';
|
|
10
11
|
import { mergeComparisonRange } from './utils/merge';
|
|
11
|
-
import { QuillSelectComponent } from './components/QuillSelect';
|
|
12
12
|
import { removeDoubleQuotes, snakeCaseToTitleCase, } from './utils/textProcessing';
|
|
13
|
+
import { QuillSelectComponent } from './components/QuillSelect';
|
|
13
14
|
const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
|
|
14
15
|
const POSTGRES_DATE_TYPES = [
|
|
15
16
|
'timestamp',
|
|
@@ -137,18 +138,76 @@ const formatOptions = [
|
|
|
137
138
|
{ value: 'percent', label: 'percent' },
|
|
138
139
|
{ value: 'string', label: 'string' },
|
|
139
140
|
];
|
|
141
|
+
/**
|
|
142
|
+
* ### Quill Chart Builder with Modal
|
|
143
|
+
*
|
|
144
|
+
* Renders a ChartBuilder component with a modal.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```js
|
|
148
|
+
* // Usage without custom components
|
|
149
|
+
* <ChartBuilder />
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```js
|
|
154
|
+
* // You can also pass your own components
|
|
155
|
+
* <ChartBuilder
|
|
156
|
+
* ButtonComponent={MyButton}
|
|
157
|
+
* SecondaryButtonComponent={MySecondaryButton}
|
|
158
|
+
* />
|
|
159
|
+
* ```
|
|
160
|
+
*
|
|
161
|
+
* ### Chart Builder API
|
|
162
|
+
* @see https://docs.quillsql.com/components/chart-builder#with-modal
|
|
163
|
+
*/
|
|
140
164
|
export function ChartBuilderWithModal(props) {
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
165
|
+
const parentRef = useRef(null);
|
|
166
|
+
const [modalWidth, setModalWidth] = useState(200);
|
|
167
|
+
const [modalHeight, setModalHeight] = useState(200);
|
|
168
|
+
const { isOpen, setIsOpen, title, isHorizontalView } = props;
|
|
169
|
+
const Modal = props.ModalComponent ?? MemoizedModal;
|
|
170
|
+
useEffect(() => {
|
|
171
|
+
function handleResize() {
|
|
172
|
+
setModalWidth(window.innerWidth - 80);
|
|
173
|
+
setModalHeight(window.innerHeight - 80);
|
|
174
|
+
}
|
|
175
|
+
handleResize();
|
|
176
|
+
window.addEventListener('resize', handleResize);
|
|
177
|
+
return () => {
|
|
178
|
+
window.removeEventListener('resize', handleResize);
|
|
179
|
+
};
|
|
180
|
+
}, []);
|
|
181
|
+
return (_jsx("div", { ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
|
|
182
|
+
// For isHorizontalView, use full viewport size minus 80px for padding,
|
|
183
|
+
// otherwise use the default layout method of the modal (contents).
|
|
184
|
+
width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { ...props }) }) }));
|
|
150
185
|
}
|
|
151
|
-
|
|
186
|
+
/**
|
|
187
|
+
* ### Quill Chart Builder
|
|
188
|
+
*
|
|
189
|
+
* A simple form that lets users turn a SQL query into a chart, metric, or table
|
|
190
|
+
* and then add that dashboard item into one of their dashboards.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```js
|
|
194
|
+
* // Usage without custom components
|
|
195
|
+
* <ChartBuilder />
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```js
|
|
200
|
+
* // You can also pass your own components
|
|
201
|
+
* <ChartBuilder
|
|
202
|
+
* ButtonComponent={MyButton}
|
|
203
|
+
* SecondaryButtonComponent={MySecondaryButton}
|
|
204
|
+
* />
|
|
205
|
+
* ```
|
|
206
|
+
*
|
|
207
|
+
* ### Chart Builder API
|
|
208
|
+
* @see https://docs.quillsql.com/components/chart-builder
|
|
209
|
+
*/
|
|
210
|
+
export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, }) {
|
|
152
211
|
const dateRange = dr || [null, null, null];
|
|
153
212
|
const [client] = useContext(ClientContext);
|
|
154
213
|
const [theme] = useContext(ThemeContext);
|
|
@@ -368,6 +427,12 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
368
427
|
}
|
|
369
428
|
const result = await getReferencedTables(client, query, schema, true);
|
|
370
429
|
setDateFieldOptions(result);
|
|
430
|
+
if (result[0] && result[0].columns[0]) {
|
|
431
|
+
setDefaultDateField({
|
|
432
|
+
table: result[0].name,
|
|
433
|
+
field: result[0].columns[0].name,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
371
436
|
const allReferencedFields = await getReferencedTables(client, query, schema, false);
|
|
372
437
|
setAllTables(allReferencedFields.map((table) => table.name));
|
|
373
438
|
setTableName(result[0]?.name);
|
|
@@ -571,7 +636,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
571
636
|
dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields. This feature is not applicable to pie charts. We recommend switching to a column or bar chart instead.`);
|
|
572
637
|
}
|
|
573
638
|
if (dashboardHasDateFilter &&
|
|
574
|
-
(!defaultDateField ||
|
|
639
|
+
((!defaultDateField.table && !defaultDateField.field) ||
|
|
575
640
|
(!formData.dateField.field && !formData.dateField.table))) {
|
|
576
641
|
dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field. It is not recommended to add this chart because the global filter cannot be applied.`);
|
|
577
642
|
}
|
|
@@ -664,79 +729,79 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
664
729
|
display: 'flex',
|
|
665
730
|
padding: modalPadding,
|
|
666
731
|
gap: '20px',
|
|
667
|
-
flexDirection:
|
|
732
|
+
flexDirection: isHorizontalView ? 'row' : 'column',
|
|
668
733
|
boxSizing: 'border-box',
|
|
669
734
|
}, children: [_jsxs("div", { style: {
|
|
670
735
|
display: 'flex',
|
|
671
736
|
flexDirection: 'column',
|
|
672
737
|
gap: '20px',
|
|
673
|
-
...(
|
|
738
|
+
...(isHorizontalView && {
|
|
674
739
|
flexGrow: 1,
|
|
675
740
|
maxWidth: !isOpen ? '100%' : 'calc(100% - 665px - 20px)', // width of left sidebar plus gap
|
|
676
741
|
}),
|
|
677
|
-
}, children: [(!
|
|
742
|
+
}, children: [(!isHorizontalView || formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
|
|
678
743
|
width: '100%',
|
|
679
744
|
height: formData.chartType === 'metric'
|
|
680
745
|
? 100
|
|
681
|
-
:
|
|
746
|
+
: isHorizontalView
|
|
682
747
|
? '100%'
|
|
683
748
|
: 400,
|
|
684
|
-
...(
|
|
749
|
+
...(isHorizontalView && { flexGrow: 1 }),
|
|
685
750
|
} })),
|
|
686
751
|
// Make sure to display non-pivoted table when using pivot chart
|
|
687
|
-
|
|
752
|
+
isHorizontalView && formData.chartType !== 'table' ? (_jsx(Chart, { config: {
|
|
688
753
|
...formData,
|
|
689
754
|
pivot: undefined,
|
|
690
755
|
chartType: 'table',
|
|
691
756
|
rows,
|
|
692
|
-
rowsPerPage:
|
|
757
|
+
rowsPerPage: 10,
|
|
693
758
|
}, containerStyle: {
|
|
694
759
|
height: '100%',
|
|
695
760
|
width: '100%',
|
|
696
761
|
flexGrow: 1,
|
|
697
|
-
} })) : (
|
|
762
|
+
} })) : (isHorizontalView && (_jsx(Chart, { config: {
|
|
698
763
|
...formData,
|
|
699
764
|
chartType: 'table',
|
|
700
765
|
rows,
|
|
701
|
-
rowsPerPage:
|
|
766
|
+
rowsPerPage: 10,
|
|
702
767
|
}, containerStyle: {
|
|
703
768
|
height: '100%',
|
|
704
769
|
width: '100%',
|
|
705
770
|
flexGrow: 1,
|
|
706
|
-
} })))] }), (isOpen || !
|
|
771
|
+
} })))] }), (isOpen || !isHorizontalView) && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
|
|
707
772
|
display: 'flex',
|
|
708
773
|
flexDirection: 'column',
|
|
709
774
|
height: '100%',
|
|
710
|
-
...(
|
|
775
|
+
...(isHorizontalView && {
|
|
711
776
|
minWidth: 665,
|
|
712
777
|
maxWidth: 665,
|
|
713
778
|
width: 665,
|
|
714
779
|
gap: 20,
|
|
715
780
|
}),
|
|
716
|
-
}, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
717
|
-
|
|
718
|
-
|
|
781
|
+
}, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Name" }), _jsx(TextInputComponent, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Dashboard" }), _jsx(SelectComponent, { value: formData.dashboardName || '', onChange: async (e) => {
|
|
782
|
+
handleChange(e.target.value, 'dashboardName');
|
|
783
|
+
await updateDashboardFilters(e.target.value);
|
|
719
784
|
}, options: dashboardOptions.map((elem) => ({
|
|
720
785
|
label: elem.label,
|
|
721
786
|
value: elem.label,
|
|
722
|
-
}))
|
|
787
|
+
})) })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Chart type" }), _jsx(SelectComponent, { value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
|
|
723
788
|
// filter out metric for all pivots
|
|
724
789
|
// filter out bar and pie for row and column pivot
|
|
725
|
-
options: getChartTypeOptions(formData)
|
|
790
|
+
options: getChartTypeOptions(formData) })] })] }), _jsx("br", {}), _jsxs("div", { style: {
|
|
726
791
|
display: 'flex',
|
|
727
792
|
flexDirection: 'column',
|
|
728
793
|
gap: 12,
|
|
729
794
|
marginTop: 6,
|
|
730
|
-
}, children: [_jsx(
|
|
795
|
+
}, children: [_jsx(HeaderComponent, { label: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
|
|
731
796
|
maxWidth: 200,
|
|
732
797
|
// marginTop: 6,
|
|
733
798
|
display: 'flex',
|
|
734
799
|
flexDirection: 'column',
|
|
735
|
-
}, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent:
|
|
800
|
+
}, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && (_jsx("div", { style: {
|
|
736
801
|
// width: 592,
|
|
737
802
|
paddingRight: 42,
|
|
738
803
|
maxWidth: 750,
|
|
739
|
-
}, children: _jsx("div", { style: { width: !
|
|
804
|
+
}, children: _jsx("div", { style: { width: !isHorizontalView ? divWidth : 'auto' }, children: _jsx(PivotCard, { pivotTable: {
|
|
740
805
|
pivot: formData.pivot,
|
|
741
806
|
rows: selectedPivotTable?.rows,
|
|
742
807
|
columns: selectedPivotTable?.columns,
|
|
@@ -748,29 +813,29 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
748
813
|
setPivotValueField(formData.pivot?.valueField);
|
|
749
814
|
setPivotAggregation(formData.pivot?.aggregationType);
|
|
750
815
|
setPivotPopUpTitle('Edit Pivot');
|
|
751
|
-
}, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent:
|
|
816
|
+
}, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), _jsx("br", {}), (formData.pivot || formData.chartType !== 'table') && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
|
|
752
817
|
display: 'flex',
|
|
753
818
|
flexDirection: 'column',
|
|
754
819
|
gap: 6,
|
|
755
820
|
marginTop: 6,
|
|
756
|
-
}, children: _jsx(
|
|
821
|
+
}, children: _jsx(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), _jsxs("div", { style: {
|
|
757
822
|
display: 'flex',
|
|
758
823
|
flexDirection: 'row',
|
|
759
824
|
gap: 12,
|
|
760
|
-
}, children: [_jsx(
|
|
825
|
+
}, children: [_jsx(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
|
|
761
826
|
? getPivotMetricOptions(formData.pivot)
|
|
762
827
|
: fieldOptions.map((elem) => ({
|
|
763
828
|
label: elem.field,
|
|
764
829
|
value: elem.field,
|
|
765
|
-
}))
|
|
830
|
+
})) }), _jsx(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
|
|
766
831
|
? formData.pivot.rowField
|
|
767
|
-
: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(
|
|
832
|
+
: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(SelectComponent, { value: formData.pivot &&
|
|
768
833
|
isDateField(formData.pivot.rowFieldType)
|
|
769
834
|
? 'pivot_date'
|
|
770
|
-
: formData.xAxisFormat, onChange: (e) => handleChange(e, 'xAxisFormat'), options: formData.pivot &&
|
|
835
|
+
: formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
|
|
771
836
|
isDateField(formData.pivot.rowFieldType)
|
|
772
837
|
? [{ value: 'pivot_date', label: 'date' }]
|
|
773
|
-
: formatOptions
|
|
838
|
+
: formatOptions })] }, 'xAxisField'), _jsx("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsx("div", { style: {
|
|
774
839
|
display: 'flex',
|
|
775
840
|
flexDirection: 'column',
|
|
776
841
|
gap: 10,
|
|
@@ -778,9 +843,9 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
778
843
|
display: 'flex',
|
|
779
844
|
flexDirection: 'row',
|
|
780
845
|
gap: 12,
|
|
781
|
-
}, children: [_jsx(
|
|
846
|
+
}, children: [_jsx(SelectComponent, { value: formData.pivot
|
|
782
847
|
? formData.pivot.valueField
|
|
783
|
-
: yAxisField.field, onChange: (e) => handleChange(e, 'yAxisFields.field', index),
|
|
848
|
+
: yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
|
|
784
849
|
? [
|
|
785
850
|
{
|
|
786
851
|
label: `Pivot Column (${formData.pivot.valueField})`,
|
|
@@ -794,21 +859,21 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
794
859
|
.map((elem) => ({
|
|
795
860
|
label: elem.field,
|
|
796
861
|
value: elem.field,
|
|
797
|
-
})) }), _jsx(
|
|
862
|
+
})) }), _jsx(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(SelectComponent, { value: formData.pivot
|
|
798
863
|
? NUMBER_OPTIONS.find((option) => {
|
|
799
864
|
return (option.value === yAxisField.format);
|
|
800
865
|
})
|
|
801
866
|
? // @ts-ignore
|
|
802
867
|
NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
|
|
803
868
|
: 'whole_number'
|
|
804
|
-
: yAxisField.format, onChange: (e) => handleChange(e, 'yAxisFields.format', index), options: formData.pivot
|
|
869
|
+
: yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
|
|
805
870
|
? NUMBER_OPTIONS
|
|
806
|
-
: formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef,
|
|
871
|
+
: formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && (_jsxs(_Fragment, { children: [_jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), _jsx("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && (_jsxs("div", { children: [_jsxs("div", { style: {
|
|
807
872
|
display: 'flex',
|
|
808
873
|
flexDirection: 'column',
|
|
809
874
|
gap: 6,
|
|
810
875
|
marginTop: 6,
|
|
811
|
-
}, children: [_jsx(
|
|
876
|
+
}, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(LabelComponent, { label: "Columns" })] }), _jsx("div", { style: {
|
|
812
877
|
display: 'flex',
|
|
813
878
|
flexDirection: 'column',
|
|
814
879
|
gap: 10,
|
|
@@ -821,10 +886,10 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
821
886
|
display: 'flex',
|
|
822
887
|
flexDirection: 'row',
|
|
823
888
|
gap: 12,
|
|
824
|
-
}, children: [_jsx(
|
|
889
|
+
}, children: [_jsx(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
|
|
825
890
|
label: elem.label,
|
|
826
891
|
value: elem.label,
|
|
827
|
-
})) }), _jsx(
|
|
892
|
+
})) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value:
|
|
828
893
|
// The first index use rowField for the rest of them use value fields
|
|
829
894
|
formData.pivot &&
|
|
830
895
|
column.field === formData.pivot.rowField
|
|
@@ -833,7 +898,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
833
898
|
? 'pivot_date'
|
|
834
899
|
: 'string'
|
|
835
900
|
: formData.pivot?.valueFieldType ||
|
|
836
|
-
'whole_number', onChange: (e) => handleChange(e, 'pivotColumn', index), options: formData.pivot && index === 0
|
|
901
|
+
'whole_number', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
|
|
837
902
|
? isDateField(formData.pivot.rowFieldType)
|
|
838
903
|
? [{ label: 'date', value: 'pivot_date' }]
|
|
839
904
|
: [{ label: 'string', value: 'string' }]
|
|
@@ -842,22 +907,22 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
842
907
|
display: 'flex',
|
|
843
908
|
flexDirection: 'row',
|
|
844
909
|
gap: 12,
|
|
845
|
-
}, children: [_jsx(
|
|
910
|
+
}, children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: fields.map((elem) => ({
|
|
846
911
|
label: elem.field,
|
|
847
912
|
value: elem.field,
|
|
848
|
-
})) }), _jsx(
|
|
913
|
+
})) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), _jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), _jsx("br", {}), _jsx("br", {})] })), showDateFieldOptions && formData.dateField && (_jsxs("div", { style: {
|
|
849
914
|
display: 'flex',
|
|
850
915
|
flexDirection: 'column',
|
|
851
916
|
gap: 6,
|
|
852
917
|
marginTop: 6,
|
|
853
|
-
}, children: [_jsx(
|
|
918
|
+
}, children: [_jsx(HeaderComponent, { label: "Date field" }), _jsxs("div", { style: {
|
|
854
919
|
display: 'flex',
|
|
855
920
|
flexDirection: 'row',
|
|
856
921
|
gap: 12,
|
|
857
|
-
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
922
|
+
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Table" }), _jsx(SelectComponent, { value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
|
|
858
923
|
label: elem.name,
|
|
859
924
|
value: elem.name,
|
|
860
|
-
})) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(
|
|
925
|
+
})) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Field" }), _jsx(SelectComponent, { value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
|
|
861
926
|
?.find((elem) => elem.name === formData.dateField?.table)
|
|
862
927
|
?.columns?.map((elem) => ({
|
|
863
928
|
label: elem.name,
|
|
@@ -867,13 +932,13 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
|
|
|
867
932
|
flexDirection: 'column',
|
|
868
933
|
gap: 12,
|
|
869
934
|
marginTop: 6,
|
|
870
|
-
}, children: [_jsx(
|
|
935
|
+
}, children: [_jsx(HeaderComponent, { label: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), _jsxs("div", { style: {
|
|
871
936
|
display: 'flex',
|
|
872
937
|
flexDirection: 'row',
|
|
873
938
|
justifyContent: 'flex-end',
|
|
874
939
|
marginTop: 'auto',
|
|
875
940
|
gap: 10,
|
|
876
|
-
}, children: [!
|
|
941
|
+
}, children: [!isHorizontalView && dashboardItem && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), _jsx(ButtonComponent, { onClick: () => editChart(), label: buttonLabel
|
|
877
942
|
? buttonLabel
|
|
878
943
|
: dashboardItem
|
|
879
944
|
? 'Save changes'
|
|
@@ -942,21 +1007,16 @@ function SegmentedControl({ onChange, value, theme, organizationName, }) {
|
|
|
942
1007
|
` }), organizationName] }))] }));
|
|
943
1008
|
}
|
|
944
1009
|
export function DashboardFilterModal({ isOpen, setIsOpen, override, theme, issues, }) {
|
|
945
|
-
return (_jsx(MemoizedModal, { isOpen: isOpen,
|
|
946
|
-
setIsOpen(false);
|
|
947
|
-
}, setIsOpen: setIsOpen, theme: theme, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
|
|
1010
|
+
return (_jsx(MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
|
|
948
1011
|
display: 'flex',
|
|
949
1012
|
flexDirection: 'column',
|
|
950
1013
|
width: '600px',
|
|
951
1014
|
padding: '20px',
|
|
952
1015
|
boxSizing: 'border-box',
|
|
953
|
-
}, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}),
|
|
1016
|
+
}, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}), _jsx("div", { style: {
|
|
954
1017
|
display: 'flex',
|
|
955
1018
|
flexDirection: 'row',
|
|
956
1019
|
gap: '12px',
|
|
957
1020
|
justifyContent: 'flex-end',
|
|
958
|
-
}, children:
|
|
959
|
-
override();
|
|
960
|
-
setIsOpen(false);
|
|
961
|
-
} })] })] }) }));
|
|
1021
|
+
}, children: _jsx(MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
|
|
962
1022
|
}
|
|
@@ -1,29 +1,125 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the Quill ChartEditor component.
|
|
4
|
+
*/
|
|
5
|
+
export interface ChartEditorProps {
|
|
6
|
+
/** Whether the modal is open. */
|
|
4
7
|
isOpen: boolean;
|
|
8
|
+
/** A callback that sets the isOpen state. */
|
|
9
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
10
|
+
/** The id of the chart that is being edited. */
|
|
5
11
|
chartId: string;
|
|
6
|
-
|
|
12
|
+
/** Whether the editor has administrative priveleges. */
|
|
13
|
+
isAdmin?: boolean;
|
|
14
|
+
/** Whether the editor is editing an existing query. */
|
|
7
15
|
isEditMode?: boolean;
|
|
16
|
+
/** The title of the chart builder form. */
|
|
8
17
|
chartBuilderTitle?: string;
|
|
18
|
+
/** The button label for the chart builder. */
|
|
9
19
|
chartBuilderButtonLabel?: string;
|
|
20
|
+
/**
|
|
21
|
+
* A callback that is fired when the add to dashboard flow has been completed.
|
|
22
|
+
*/
|
|
10
23
|
onAddToDashboardComplete?: () => void;
|
|
24
|
+
/** A callback that is fired when the item is deleted. */
|
|
11
25
|
onDelete?: () => void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
/** A select component. */
|
|
27
|
+
SelectComponent?: (props: {
|
|
28
|
+
value: string;
|
|
29
|
+
label?: string;
|
|
30
|
+
options: {
|
|
31
|
+
value: string;
|
|
32
|
+
label: string;
|
|
33
|
+
}[];
|
|
34
|
+
onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
|
|
35
|
+
}) => JSX.Element;
|
|
36
|
+
/** An input component to get text from your users. */
|
|
37
|
+
TextInputComponent?: (props: {
|
|
38
|
+
id: string;
|
|
39
|
+
width: number;
|
|
40
|
+
value: string;
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
43
|
+
}) => JSX.Element;
|
|
44
|
+
/** A button component. */
|
|
45
|
+
ButtonComponent?: (props: {
|
|
46
|
+
onClick: () => void;
|
|
47
|
+
label: string;
|
|
48
|
+
}) => JSX.Element;
|
|
49
|
+
/** A secondary button. */
|
|
50
|
+
SecondaryButtonComponent?: (props: {
|
|
51
|
+
onClick: () => void;
|
|
52
|
+
label: string;
|
|
53
|
+
}) => JSX.Element;
|
|
54
|
+
/**
|
|
55
|
+
* A small delete button used to click out of things. Usually an "X" icon.
|
|
56
|
+
*/
|
|
57
|
+
DeleteButtonComponent?: (props: {
|
|
58
|
+
onClick: () => void;
|
|
59
|
+
}) => JSX.Element;
|
|
60
|
+
/** A header component. */
|
|
61
|
+
HeaderComponent?: (props: {
|
|
62
|
+
label: string;
|
|
63
|
+
}) => JSX.Element;
|
|
64
|
+
/** A label component. */
|
|
65
|
+
LabelComponent?: (props: {
|
|
66
|
+
label: string;
|
|
67
|
+
}) => JSX.Element;
|
|
68
|
+
/** A text component. */
|
|
69
|
+
TextComponent?: (props: {
|
|
70
|
+
label: string;
|
|
71
|
+
}) => JSX.Element;
|
|
72
|
+
/**
|
|
73
|
+
* A modal component.
|
|
74
|
+
*/
|
|
75
|
+
ModalComponent?: (props: {
|
|
76
|
+
isOpen: boolean;
|
|
77
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
78
|
+
title?: string | undefined;
|
|
79
|
+
children: ReactNode;
|
|
80
|
+
width?: number | undefined;
|
|
81
|
+
height?: number | undefined;
|
|
82
|
+
}) => JSX.Element;
|
|
83
|
+
/** A popover component. */
|
|
84
|
+
PopoverComponent?: (props: {
|
|
85
|
+
isOpen: boolean;
|
|
86
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
87
|
+
triggerLabel?: string;
|
|
88
|
+
popoverTitle?: string;
|
|
89
|
+
popoverChildren: ReactNode;
|
|
90
|
+
}) => JSX.Element;
|
|
91
|
+
/** The default dashboard to add the item to. */
|
|
23
92
|
destinationDashboard?: string;
|
|
93
|
+
/** The name of the current organization. */
|
|
24
94
|
organizationName?: string;
|
|
25
|
-
|
|
95
|
+
/** Whether the ChartBuilder is in horizontal view mode. */
|
|
96
|
+
isHorizontalView?: boolean;
|
|
26
97
|
}
|
|
27
|
-
|
|
28
|
-
|
|
98
|
+
/**
|
|
99
|
+
* ### Quill Chart Editor
|
|
100
|
+
*
|
|
101
|
+
* Presents the Quill Chart Builder form as a modal.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```js
|
|
105
|
+
* // Usage without custom components
|
|
106
|
+
* <ChartEditor isOpen={true} chartId="1234" />
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```js
|
|
111
|
+
* // You can also pass your own components
|
|
112
|
+
* <ChartEditor
|
|
113
|
+
* isOpen={isOpen}
|
|
114
|
+
* setIsOpen={setIsOpen}
|
|
115
|
+
* chartId="1234"
|
|
116
|
+
* Button={MyButton}
|
|
117
|
+
* Modal={MyModal}
|
|
118
|
+
* />
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* ### Chart Editor API
|
|
122
|
+
* @see https://docs.quillsql.com/components/chart-editor
|
|
123
|
+
*/
|
|
124
|
+
export default function ChartEditor({ isOpen, chartId, isAdmin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, isHorizontalView, onDelete, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, LabelComponent, TextComponent, DeleteButtonComponent, ModalComponent, PopoverComponent, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
29
125
|
//# sourceMappingURL=ChartEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"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"}
|