@quillsql/react 2.12.46 → 2.12.48
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.map +1 -1
- package/dist/cjs/Chart.js +16 -7
- package/dist/cjs/ChartBuilder.d.ts +10 -11
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +78 -81
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +26 -10
- package/dist/cjs/Context.d.ts +2 -3
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +42 -28
- package/dist/cjs/Dashboard.d.ts +12 -12
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +61 -69
- package/dist/cjs/QuillProvider.d.ts +2 -0
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +1 -15
- package/dist/cjs/ReportBuilder.d.ts +9 -9
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +116 -179
- package/dist/cjs/SQLEditor.d.ts +20 -11
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +157 -90
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +6 -25
- package/dist/cjs/components/Chart/BarList.js +1 -1
- package/dist/cjs/components/Chart/ChartError.d.ts +5 -2
- package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartError.js +7 -10
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +16 -1
- package/dist/cjs/components/Chart/PieChart.js +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +46 -47
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +2 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +2 -2
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +19 -13
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +16 -26
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +16 -25
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +31 -1
- package/dist/cjs/components/QuillSelect.js +1 -1
- package/dist/cjs/components/QuillTable.d.ts +1 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +115 -105
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +3 -3
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +28 -9
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +178 -114
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +1 -2
- package/dist/cjs/components/ReportBuilder/ui.d.ts +9 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +37 -3
- package/dist/cjs/components/ReportBuilder/util.d.ts +5 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +26 -12
- package/dist/cjs/components/UiComponents.d.ts +17 -3
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +160 -29
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +7 -7
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +4 -1
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useAstToFilterTree.js +4 -1
- package/dist/cjs/hooks/useDashboard.d.ts +5 -1
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +28 -4
- package/dist/cjs/hooks/useOnClickOutside.js +2 -2
- package/dist/cjs/hooks/useQuill.js +4 -4
- package/dist/cjs/hooks/useVirtualTables.d.ts +10 -0
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -0
- package/dist/cjs/hooks/useVirtualTables.js +29 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +45 -21
- package/dist/cjs/models/Client.d.ts +3 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Schema.d.ts +7 -0
- package/dist/cjs/models/Schema.d.ts.map +1 -0
- package/dist/cjs/models/Schema.js +2 -0
- package/dist/cjs/models/Tables.d.ts +2 -0
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +47 -44
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +8 -8
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +88 -5
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +7 -3
- package/dist/cjs/utils/filterProcessing.d.ts +25 -0
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +121 -1
- package/dist/cjs/utils/paginationProcessing.js +2 -2
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +10 -6
- package/dist/cjs/utils/queryConstructor.d.ts +1 -0
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +37 -11
- package/dist/cjs/utils/report.d.ts +5 -0
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +63 -9
- package/dist/cjs/utils/schema.js +22 -20
- package/dist/cjs/utils/tableProcessing.d.ts +1 -0
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +22 -1
- package/dist/cjs/utils/validation.d.ts.map +1 -1
- package/dist/cjs/utils/validation.js +4 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +17 -8
- package/dist/esm/ChartBuilder.d.ts +10 -11
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +81 -84
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +27 -11
- package/dist/esm/Context.d.ts +2 -3
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +42 -28
- package/dist/esm/Dashboard.d.ts +12 -12
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +63 -71
- package/dist/esm/QuillProvider.d.ts +2 -0
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -16
- package/dist/esm/ReportBuilder.d.ts +9 -9
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +122 -185
- package/dist/esm/SQLEditor.d.ts +20 -11
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +160 -93
- package/dist/esm/Table.js +4 -4
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +7 -26
- package/dist/esm/components/Chart/BarList.js +1 -1
- package/dist/esm/components/Chart/ChartError.d.ts +5 -2
- package/dist/esm/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartError.js +7 -10
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +16 -1
- package/dist/esm/components/Chart/PieChart.js +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +46 -47
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +2 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +2 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +20 -14
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +16 -26
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +16 -25
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +31 -1
- package/dist/esm/components/QuillSelect.js +1 -1
- package/dist/esm/components/QuillTable.d.ts +1 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +115 -105
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +3 -3
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +28 -9
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +178 -114
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +1 -2
- package/dist/esm/components/ReportBuilder/ui.d.ts +9 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +38 -4
- package/dist/esm/components/ReportBuilder/util.d.ts +5 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +26 -12
- package/dist/esm/components/UiComponents.d.ts +17 -3
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +158 -28
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +8 -8
- package/dist/esm/hooks/useAstToFilterTree.d.ts +4 -1
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useAstToFilterTree.js +4 -1
- package/dist/esm/hooks/useDashboard.d.ts +5 -1
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +28 -5
- package/dist/esm/hooks/useOnClickOutside.js +2 -2
- package/dist/esm/hooks/useQuill.js +5 -5
- package/dist/esm/hooks/useVirtualTables.d.ts +10 -0
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -0
- package/dist/esm/hooks/useVirtualTables.js +25 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +44 -23
- package/dist/esm/models/Client.d.ts +3 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Schema.d.ts +7 -0
- package/dist/esm/models/Schema.d.ts.map +1 -0
- package/dist/esm/models/Schema.js +1 -0
- package/dist/esm/models/Tables.d.ts +2 -0
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +45 -43
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +8 -8
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +88 -5
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +7 -3
- package/dist/esm/utils/filterProcessing.d.ts +25 -0
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +116 -0
- package/dist/esm/utils/paginationProcessing.js +2 -2
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +10 -6
- package/dist/esm/utils/queryConstructor.d.ts +1 -0
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +35 -10
- package/dist/esm/utils/report.d.ts +5 -0
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +61 -8
- package/dist/esm/utils/schema.js +22 -20
- package/dist/esm/utils/tableProcessing.d.ts +1 -0
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +21 -1
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +4 -0
- package/package.json +3 -1
package/dist/esm/Context.js
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState, createContext, useEffect, useReducer } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { getSchemaInfoWithCustomFields } from './utils/schema';
|
|
4
4
|
import { EMPTY_CLIENT, fetchClient } from './utils/client';
|
|
5
5
|
const dummySetter = () => { };
|
|
6
|
-
export const
|
|
7
|
-
|
|
6
|
+
export const SchemaDataContext = createContext([
|
|
7
|
+
{
|
|
8
|
+
schema: [],
|
|
9
|
+
customFields: null,
|
|
10
|
+
isSchemaLoading: true,
|
|
11
|
+
},
|
|
12
|
+
dummySetter,
|
|
13
|
+
]);
|
|
8
14
|
export const ThemeContext = createContext([null, dummySetter]);
|
|
9
15
|
export const ClientContext = createContext([EMPTY_CLIENT, false, dummySetter]);
|
|
10
16
|
export const DashboardFiltersContext = createContext([[], dummySetter]);
|
|
11
17
|
export const ReportFiltersContext = createContext([{}, dummySetter]);
|
|
12
18
|
const dashboardReducer = (state = {}, action) => {
|
|
13
19
|
switch (action.type) {
|
|
20
|
+
//NOTE: Because update dashboard item doesn't overwrite the previous data, it can leave stale properties when it should be removing them
|
|
21
|
+
// We either want to make sure we're using null instead of undefined, or use ADD_DASHBOARD_ITEM more often.
|
|
14
22
|
case 'UPDATE_DASHBOARD_ITEM':
|
|
15
23
|
if (!action.id || !action.data) {
|
|
16
24
|
return state;
|
|
@@ -105,6 +113,7 @@ const dashboardFiltersReducer = (state, action) => {
|
|
|
105
113
|
};
|
|
106
114
|
export const ContextProvider = ({ children, initialTheme, publicKey, customerId, userId, queryEndpoint, queryHeaders, withCredentials, }) => {
|
|
107
115
|
const [client, setClient] = useState({
|
|
116
|
+
name: '',
|
|
108
117
|
customerId: customerId ?? '*',
|
|
109
118
|
userId,
|
|
110
119
|
publicKey,
|
|
@@ -114,18 +123,16 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
114
123
|
clientId: publicKey,
|
|
115
124
|
});
|
|
116
125
|
const [isClientLoading, setIsClientLoading] = useState(false);
|
|
117
|
-
const [isSchemaLoading, setIsSchemaLoading] = useState(false);
|
|
118
126
|
const [theme, setTheme] = useState(null);
|
|
119
|
-
const [
|
|
120
|
-
|
|
127
|
+
const [schemaData, setSchemaData] = useState({
|
|
128
|
+
schema: [],
|
|
129
|
+
customFields: null,
|
|
130
|
+
isSchemaLoading: true,
|
|
131
|
+
});
|
|
121
132
|
const [dashboard, dispatch] = useReducer(dashboardReducer, {});
|
|
122
133
|
const [dashboardConfig, dashboardConfigDispatch] = useReducer(dashboardConfigReducer, {});
|
|
123
134
|
const [dashboardFilters, dashboardFiltersDispatch] = useReducer(dashboardFiltersReducer, []);
|
|
124
135
|
const [reportFilters, reportFiltersDispatch] = useReducer(reportFiltersReducer, {});
|
|
125
|
-
const customFieldHelper = async (client) => {
|
|
126
|
-
const customFields = await getCustomFieldInfo(client, 'context');
|
|
127
|
-
setCustomFields(customFields);
|
|
128
|
-
};
|
|
129
136
|
// SETS INITIAL THEME
|
|
130
137
|
useEffect(() => {
|
|
131
138
|
if (!theme) {
|
|
@@ -148,6 +155,7 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
148
155
|
}, [initialTheme]);
|
|
149
156
|
useEffect(() => {
|
|
150
157
|
const initialClient = {
|
|
158
|
+
name: '',
|
|
151
159
|
customerId: customerId ?? '*',
|
|
152
160
|
userId,
|
|
153
161
|
publicKey,
|
|
@@ -160,6 +168,16 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
160
168
|
setClient(initialClient);
|
|
161
169
|
}
|
|
162
170
|
}, []);
|
|
171
|
+
async function fetchSchema(client, caller) {
|
|
172
|
+
// add custom fields here and also store in schema context
|
|
173
|
+
setSchemaData({ ...schemaData, isSchemaLoading: true });
|
|
174
|
+
const { schemaData: schema, customFieldsByTable } = await getSchemaInfoWithCustomFields(client, caller);
|
|
175
|
+
setSchemaData({
|
|
176
|
+
schema,
|
|
177
|
+
customFields: customFieldsByTable,
|
|
178
|
+
isSchemaLoading: false,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
163
181
|
useEffect(() => {
|
|
164
182
|
async function fetchDatabaseType(publicKey) {
|
|
165
183
|
const newClient = await fetchClient(publicKey, queryEndpoint, withCredentials, queryHeaders);
|
|
@@ -168,6 +186,7 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
168
186
|
const newClient2 = await fetchClient(publicKey, queryEndpoint, withCredentials, queryHeaders);
|
|
169
187
|
setClient({
|
|
170
188
|
...client,
|
|
189
|
+
...newClient2,
|
|
171
190
|
databaseType: newClient2.databaseType,
|
|
172
191
|
publicKey: publicKey,
|
|
173
192
|
});
|
|
@@ -175,7 +194,7 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
175
194
|
else {
|
|
176
195
|
setClient({
|
|
177
196
|
...client,
|
|
178
|
-
|
|
197
|
+
...newClient,
|
|
179
198
|
publicKey: publicKey,
|
|
180
199
|
});
|
|
181
200
|
}
|
|
@@ -226,10 +245,6 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
226
245
|
console.error('ERROR:', error);
|
|
227
246
|
}
|
|
228
247
|
}
|
|
229
|
-
async function fetchSchema(client) {
|
|
230
|
-
const { schemaData } = await getSchemaInfoWithCustomFields(client);
|
|
231
|
-
setSchema(schemaData);
|
|
232
|
-
}
|
|
233
248
|
async function updateClientAndSchema(publicKey) {
|
|
234
249
|
setIsClientLoading(true);
|
|
235
250
|
await Promise.allSettled([
|
|
@@ -237,18 +252,17 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
237
252
|
fetchDashboards(publicKey),
|
|
238
253
|
]);
|
|
239
254
|
setIsClientLoading(false);
|
|
240
|
-
setIsSchemaLoading(true);
|
|
241
|
-
if (client) {
|
|
242
|
-
await fetchSchema(client);
|
|
243
|
-
}
|
|
244
|
-
setIsSchemaLoading(false);
|
|
245
255
|
}
|
|
246
256
|
updateClientAndSchema(publicKey);
|
|
247
257
|
}, [publicKey]);
|
|
258
|
+
useEffect(() => {
|
|
259
|
+
if (client) {
|
|
260
|
+
fetchSchema(client, 'context');
|
|
261
|
+
}
|
|
262
|
+
}, [client]);
|
|
248
263
|
useEffect(() => {
|
|
249
264
|
if (client) {
|
|
250
265
|
setClient({ ...client, customerId: customerId ?? '*' });
|
|
251
|
-
customFieldHelper({ ...client, customerId: customerId ?? '*' });
|
|
252
266
|
}
|
|
253
267
|
if (Object.keys(dashboard).length > 0) {
|
|
254
268
|
dispatch({ type: 'CLEAR_DASHBOARD' });
|
|
@@ -257,11 +271,11 @@ export const ContextProvider = ({ children, initialTheme, publicKey, customerId,
|
|
|
257
271
|
if (!theme) {
|
|
258
272
|
return null;
|
|
259
273
|
}
|
|
260
|
-
return (_jsx(ClientContext.Provider, { value: [client, isClientLoading, setClient], children: _jsx(ThemeContext.Provider, { value: [theme, setTheme], children: _jsx(
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
274
|
+
return (_jsx(ClientContext.Provider, { value: [client, isClientLoading, setClient], children: _jsx(ThemeContext.Provider, { value: [theme, setTheme], children: _jsx(SchemaDataContext.Provider, { value: [schemaData, setSchemaData], children: _jsx(DashboardContext.Provider, { value: [dashboard, dispatch], children: _jsx(DashboardConfigContext.Provider, { value: [dashboardConfig, dashboardConfigDispatch], children: _jsx(DashboardFiltersContext.Provider, { value: {
|
|
275
|
+
dashboardFilters,
|
|
276
|
+
dashboardFiltersDispatch,
|
|
277
|
+
}, children: _jsx(ReportFiltersContext.Provider, { value: {
|
|
278
|
+
reportFilters,
|
|
279
|
+
reportFiltersDispatch,
|
|
280
|
+
}, children: children }) }) }) }) }) }) }));
|
|
267
281
|
};
|
package/dist/esm/Dashboard.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { CSSProperties, ReactNode, ChangeEvent } from 'react';
|
|
2
|
+
import { TextInputComponentProps } from './components/UiComponents';
|
|
2
3
|
import { Filter } from './models/Filter';
|
|
3
4
|
import { QuillReport } from './models/Report';
|
|
4
5
|
/**
|
|
@@ -8,6 +9,7 @@ import { QuillReport } from './models/Report';
|
|
|
8
9
|
export interface QuillReportProps {
|
|
9
10
|
report: QuillReport;
|
|
10
11
|
onClick?: (report: QuillReport) => void;
|
|
12
|
+
hoverActions?: (report: QuillReport) => ReactNode;
|
|
11
13
|
isLoading?: boolean;
|
|
12
14
|
error?: string;
|
|
13
15
|
children?: ReactNode;
|
|
@@ -36,16 +38,18 @@ export interface DashboardProps {
|
|
|
36
38
|
name?: string;
|
|
37
39
|
hidden?: boolean;
|
|
38
40
|
/** A component that wraps a dashboard item for 'metric' chart types. */
|
|
39
|
-
MetricComponent?: ({ report, onClick, isLoading, error, }: {
|
|
41
|
+
MetricComponent?: ({ report, onClick, hoverActions, isLoading, error, }: {
|
|
40
42
|
report: QuillReport;
|
|
41
43
|
onClick?: (report: QuillReport) => void;
|
|
44
|
+
hoverActions?: (report: QuillReport) => JSX.Element;
|
|
42
45
|
isLoading?: boolean;
|
|
43
46
|
error?: string;
|
|
44
47
|
}) => JSX.Element;
|
|
45
48
|
/** A component that wraps a dashboard item for non-table, non-metric chart types. */
|
|
46
|
-
ChartComponent?: ({ report, onClick, isLoading, error, dateBucket, children, onClickChartElement, }: {
|
|
49
|
+
ChartComponent?: ({ report, onClick, hoverActions, isLoading, error, dateBucket, children, onClickChartElement, }: {
|
|
47
50
|
report: QuillReport;
|
|
48
51
|
onClick?: (report: QuillReport) => void;
|
|
52
|
+
hoverActions?: (report: QuillReport) => JSX.Element;
|
|
49
53
|
isLoading?: boolean;
|
|
50
54
|
error?: string;
|
|
51
55
|
children?: ReactNode;
|
|
@@ -53,9 +57,10 @@ export interface DashboardProps {
|
|
|
53
57
|
onClickChartElement?: (data: any) => void;
|
|
54
58
|
}) => JSX.Element;
|
|
55
59
|
/** A component that wraps a dashboard item for 'table' chart types. */
|
|
56
|
-
TableComponent?: ({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }: {
|
|
60
|
+
TableComponent?: ({ report, onClick, hoverActions, isLoading, error, rowCount, onPageChange, onSortChange, }: {
|
|
57
61
|
report: QuillReport;
|
|
58
62
|
onClick?: (report: QuillReport) => void;
|
|
63
|
+
hoverActions?: (report: QuillReport) => JSX.Element;
|
|
59
64
|
isLoading?: boolean;
|
|
60
65
|
error?: string;
|
|
61
66
|
rowCount?: number;
|
|
@@ -169,14 +174,7 @@ export interface DashboardProps {
|
|
|
169
174
|
children: ReactNode;
|
|
170
175
|
}) => JSX.Element;
|
|
171
176
|
/** A input element for getting text from the user. */
|
|
172
|
-
TextInputComponent?: (props:
|
|
173
|
-
id: string;
|
|
174
|
-
width: number;
|
|
175
|
-
value: string;
|
|
176
|
-
label?: string;
|
|
177
|
-
placeholder?: string;
|
|
178
|
-
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
179
|
-
}) => JSX.Element;
|
|
177
|
+
TextInputComponent?: ((props: TextInputComponentProps) => JSX.Element) | React.ForwardRefExoticComponent<TextInputComponentProps & React.RefAttributes<HTMLInputElement>>;
|
|
180
178
|
/** A date range picker component. */
|
|
181
179
|
DateRangePickerComponent?: ({ dateRange, label, presetOptions, preset, selectWidth, onChangeDateRange, onChangePreset, }: {
|
|
182
180
|
preset: string;
|
|
@@ -230,6 +228,8 @@ export interface DashboardProps {
|
|
|
230
228
|
}) => JSX.Element;
|
|
231
229
|
/** A callback fired when a report is clicked. */
|
|
232
230
|
onClickReport?: (report: QuillReport) => void;
|
|
231
|
+
/** A component that is shown when the report is hovered */
|
|
232
|
+
hoverActions?: (report: QuillReport) => JSX.Element;
|
|
233
233
|
/** A callback that is fired when the loading status of the dashboard changes. */
|
|
234
234
|
onChangeLoading?: (isLoading: boolean) => void;
|
|
235
235
|
/** Whether to hide the dashboard filters (default: `false`). */
|
|
@@ -307,5 +307,5 @@ export interface DashboardProps {
|
|
|
307
307
|
* ### API Reference
|
|
308
308
|
* @see https://docs.quillsql.com/components/dashboard
|
|
309
309
|
*/
|
|
310
|
-
export default function Dashboard({ name, hidden, SelectComponent, MultiSelectComponent, ModalComponent, ButtonComponent, SecondaryButtonComponent, FilterTagComponent, PopoverComponent, TextInputComponent, EmptyDashboardComponent, DateRangePickerComponent, MetricComponent, ChartComponent, TableComponent, TemplateMetricComponent, TemplateChartComponent, TemplateTableComponent, DashboardSectionComponent, DashboardSectionContainerComponent, FilterContainerComponent, DashboardLoadingComponent, ErrorComponent, onClickReport, onChangeLoading, hideFilters, hideXAxis, hideYAxis, hideCartesianGrid, comparisonLineStyle, containerStyle, className, chartContainerStyle, filters, onClickChartElement, dateBucket, additionalProcessing, hideAdminErrors, templateDashboardName, }: DashboardProps): import("react/jsx-runtime").JSX.Element
|
|
310
|
+
export default function Dashboard({ name, hidden, SelectComponent, MultiSelectComponent, ModalComponent, ButtonComponent, SecondaryButtonComponent, FilterTagComponent, PopoverComponent, TextInputComponent, EmptyDashboardComponent, DateRangePickerComponent, MetricComponent, ChartComponent, TableComponent, TemplateMetricComponent, TemplateChartComponent, TemplateTableComponent, DashboardSectionComponent, DashboardSectionContainerComponent, FilterContainerComponent, DashboardLoadingComponent, ErrorComponent, onClickReport, hoverActions, onChangeLoading, hideFilters, hideXAxis, hideYAxis, hideCartesianGrid, comparisonLineStyle, containerStyle, className, chartContainerStyle, filters, onClickChartElement, dateBucket, additionalProcessing, hideAdminErrors, templateDashboardName, }: DashboardProps): import("react/jsx-runtime").JSX.Element;
|
|
311
311
|
//# sourceMappingURL=Dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/Dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,aAAa,EACb,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/Dashboard.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/Dashboard.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext, useEffect, useState, } from 'react';
|
|
3
3
|
import { ChartDisplay } from './Chart';
|
|
4
4
|
import { PRIMARY_RANGE, COMPARISON_RANGE, defaultOptionsV2, getRangeFromPresetOptions, } from './DateRangePicker/dateRangePickerUtils';
|
|
5
|
-
import { ClientContext,
|
|
5
|
+
import { ClientContext, ThemeContext, DashboardFiltersContext, SchemaDataContext, } from './Context';
|
|
6
6
|
import { useDashboard } from './hooks/useDashboard';
|
|
7
7
|
import { hashCode } from './utils/crypto';
|
|
8
8
|
import DashboardSectionContainer from './components/Dashboard/DashboardSectionContainer';
|
|
@@ -19,8 +19,7 @@ import { DashboardFilter } from './components/Dashboard/DashboardFilter';
|
|
|
19
19
|
import { BoolOperator, FieldTypes, NullOperator, NumberOperator, StringOperator, } from './models/Filter';
|
|
20
20
|
import { QuillMultiSelectComponentWithCombo } from './components/QuillMultiSelectWithCombo';
|
|
21
21
|
import { QuillSelectComponentWithCombo } from './components/QuillSelectWithCombo';
|
|
22
|
-
import {
|
|
23
|
-
import { getCountsByColumns, getUniqueValuesByColumns, } from './utils/tableProcessing';
|
|
22
|
+
import { getUniqueStringValues } from './utils/tableProcessing';
|
|
24
23
|
import { filterSentence, getType } from './utils/filterProcessing';
|
|
25
24
|
import { QuillChartErrorWithAction } from './components/Chart/ChartError';
|
|
26
25
|
import { FilterPopoverWrapper, QuillFilterPopover, } from './components/ReportBuilder/ui';
|
|
@@ -35,6 +34,15 @@ const defaultChartContainerStyles = {
|
|
|
35
34
|
minHeight: 300,
|
|
36
35
|
height: 300,
|
|
37
36
|
};
|
|
37
|
+
const metrics = (sections, section, sortByOrdering) => sections[section]
|
|
38
|
+
.filter(({ chartType }) => chartType === 'metric')
|
|
39
|
+
.sort(sortByOrdering);
|
|
40
|
+
const charts = (sections, section, sortByOrdering) => sections[section]
|
|
41
|
+
.filter(({ chartType }) => !['metric', 'table'].includes(chartType))
|
|
42
|
+
.sort(sortByOrdering);
|
|
43
|
+
const tables = (sections, section, sortByOrdering) => sections[section]
|
|
44
|
+
.filter(({ chartType }) => chartType === 'table')
|
|
45
|
+
.sort(sortByOrdering);
|
|
38
46
|
/**
|
|
39
47
|
* ### Quill Dashboard
|
|
40
48
|
*
|
|
@@ -66,18 +74,15 @@ const defaultChartContainerStyles = {
|
|
|
66
74
|
* ### API Reference
|
|
67
75
|
* @see https://docs.quillsql.com/components/dashboard
|
|
68
76
|
*/
|
|
69
|
-
export default function Dashboard({ name, hidden = false, SelectComponent = QuillSelectComponentWithCombo, MultiSelectComponent = QuillMultiSelectComponentWithCombo, ModalComponent = QuillModalComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, FilterTagComponent = QuillFilterPopover, PopoverComponent = MemoizedPopover, TextInputComponent = QuillTextInput, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent = QuillDateRangePicker, MetricComponent = QuillMetricComponent, ChartComponent = QuillChartComponent, TableComponent = QuillTableComponent, TemplateMetricComponent = QuillTemplateMetricComponent, TemplateChartComponent = QuillTemplateChartComponent, TemplateTableComponent = QuillTemplateTableComponent, DashboardSectionComponent = DashboardSection, DashboardSectionContainerComponent = DashboardSectionContainer, FilterContainerComponent = QuillFilterContainerComponent, DashboardLoadingComponent = QuillLoadingDashboardComponent, ErrorComponent = QuillChartErrorWithAction, onClickReport, onChangeLoading, hideFilters, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, comparisonLineStyle = 'solid', containerStyle, className, chartContainerStyle = defaultChartContainerStyles, filters, onClickChartElement, dateBucket, additionalProcessing, hideAdminErrors = true, templateDashboardName, }) {
|
|
70
|
-
const
|
|
71
|
-
const { isLoading: isDataLoading, data, reload, } = useDashboard(name);
|
|
72
|
-
const [dashboardSections, setDashboardSections] = useState(null);
|
|
77
|
+
export default function Dashboard({ name, hidden = false, SelectComponent = QuillSelectComponentWithCombo, MultiSelectComponent = QuillMultiSelectComponentWithCombo, ModalComponent = QuillModalComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, FilterTagComponent = QuillFilterPopover, PopoverComponent = MemoizedPopover, TextInputComponent = QuillTextInput, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent = QuillDateRangePicker, MetricComponent = QuillMetricComponent, ChartComponent = QuillChartComponent, TableComponent = QuillTableComponent, TemplateMetricComponent = QuillTemplateMetricComponent, TemplateChartComponent = QuillTemplateChartComponent, TemplateTableComponent = QuillTemplateTableComponent, DashboardSectionComponent = DashboardSection, DashboardSectionContainerComponent = DashboardSectionContainer, FilterContainerComponent = QuillFilterContainerComponent, DashboardLoadingComponent = QuillLoadingDashboardComponent, ErrorComponent = QuillChartErrorWithAction, onClickReport, hoverActions, onChangeLoading, hideFilters, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, comparisonLineStyle = 'solid', containerStyle, className, chartContainerStyle = defaultChartContainerStyles, filters, onClickChartElement, dateBucket, additionalProcessing, hideAdminErrors = true, templateDashboardName, }) {
|
|
78
|
+
const { isLoading, data, reload } = useDashboard(name);
|
|
73
79
|
const [presetFilters, setPresetFilters] = useState(null);
|
|
74
|
-
const [client] = useContext(ClientContext);
|
|
75
|
-
const [isLoading, setIsLoading] = useState(isDataLoading);
|
|
80
|
+
const [client, isClientLoading] = useContext(ClientContext);
|
|
76
81
|
const [theme] = useContext(ThemeContext);
|
|
77
82
|
const [initialLoad, setInitialLoad] = useState(true);
|
|
78
|
-
const [appliedFilters, setAppliedFilters] = useState(
|
|
83
|
+
const [appliedFilters, setAppliedFilters] = useState(null);
|
|
79
84
|
const { dashboardFilters, dashboardFiltersDispatch } = useContext(DashboardFiltersContext);
|
|
80
|
-
const [
|
|
85
|
+
const [schemaData] = useContext(SchemaDataContext);
|
|
81
86
|
const [filterSchemaIsLoaded, setFilterSchemaIsLoaded] = useState(false);
|
|
82
87
|
const [filterSchema, setFilterSchema] = useState({ columns: [] }); // Schema to be passed into FilterModal
|
|
83
88
|
const [fieldValuesMap, setFieldValuesMap] = useState({}); // Mapping of unique values per field, used in string filter 'in' and 'not in'
|
|
@@ -88,11 +93,11 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
88
93
|
const [filterListAddFilterPopoverIsOpen, setFilterListAddFilterPopoverIsOpen,] = useState(false);
|
|
89
94
|
const [uniqueCounter, setUniqueCounter] = useState(0);
|
|
90
95
|
const userFilters = appliedFilters
|
|
91
|
-
|
|
96
|
+
?.map((filter, index) => {
|
|
92
97
|
return { filter, index };
|
|
93
98
|
})
|
|
94
|
-
.filter((filter) => filter.filter.isUserFilter);
|
|
95
|
-
const adminFilters = appliedFilters
|
|
99
|
+
.filter((filter) => filter.filter.isUserFilter) ?? [];
|
|
100
|
+
const adminFilters = appliedFilters?.filter((filter) => !filter.isUserFilter) ?? [];
|
|
96
101
|
const customOperatorOptions = {
|
|
97
102
|
[FieldTypes.Number]: [
|
|
98
103
|
NumberOperator.EqualTo,
|
|
@@ -120,16 +125,12 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
120
125
|
NullOperator.IsNull,
|
|
121
126
|
],
|
|
122
127
|
};
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
setIsLoading(isDataLoading);
|
|
125
|
-
}, [isDataLoading]);
|
|
126
128
|
useEffect(() => {
|
|
127
129
|
if (!data)
|
|
128
130
|
return;
|
|
129
|
-
onDashboardDataChange(data, schema);
|
|
130
|
-
}, [data, filters, schema]);
|
|
131
|
+
onDashboardDataChange(data, schemaData.schema);
|
|
132
|
+
}, [data, filters, schemaData.schema]);
|
|
131
133
|
useEffect(() => {
|
|
132
|
-
setIsLoading(true);
|
|
133
134
|
reload(name);
|
|
134
135
|
}, [name, client]);
|
|
135
136
|
// Go through all columns in the referenced tables and get the unique values to use in fieldValuesMap
|
|
@@ -138,9 +139,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
138
139
|
setFieldValuesIsLoaded(false);
|
|
139
140
|
const newFieldValues = {};
|
|
140
141
|
await Promise.all(referencedTables.map(async (table) => {
|
|
141
|
-
const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
|
|
142
|
+
const tableInfo = schemaData.schema.find((tableInfo) => tableInfo.name === table);
|
|
142
143
|
if (tableInfo) {
|
|
143
|
-
const uniqueValues = await getUniqueStringValues(tableInfo.columns, table);
|
|
144
|
+
const uniqueValues = await getUniqueStringValues(tableInfo.columns, table, client);
|
|
144
145
|
if (uniqueValues) {
|
|
145
146
|
newFieldValues[table] = {};
|
|
146
147
|
Object.keys(uniqueValues).forEach((field) => {
|
|
@@ -154,19 +155,6 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
154
155
|
};
|
|
155
156
|
fetchData();
|
|
156
157
|
}, [referencedTables]);
|
|
157
|
-
const getUniqueStringValues = async (columns, tableName) => {
|
|
158
|
-
if (!client) {
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
const convertedStringColumns = columns.filter((column) => {
|
|
162
|
-
return isTextColumnType(column.fieldType);
|
|
163
|
-
});
|
|
164
|
-
const stringNames = convertedStringColumns.map((column) => column.field);
|
|
165
|
-
const smallStringColumns = await getCountsByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${tableName}`, client, []);
|
|
166
|
-
const smallStringNames = smallStringColumns.map((column) => column.field);
|
|
167
|
-
const newUniqueValues = await getUniqueValuesByColumns(smallStringColumns, `Select ${smallStringNames.join(', ')} from ${tableName}`, [], client, []);
|
|
168
|
-
return newUniqueValues;
|
|
169
|
-
};
|
|
170
158
|
// Get the relevant information from the dashboard and schema to pass to FilterModal
|
|
171
159
|
const updateFilterSchema = (sections, schema) => {
|
|
172
160
|
if (!sections || !schema || schema.length === 0) {
|
|
@@ -214,7 +202,7 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
214
202
|
setFilterSchemaIsLoaded(true);
|
|
215
203
|
};
|
|
216
204
|
const onDashboardDataChange = (resp, schema) => {
|
|
217
|
-
setDashboardSections(resp.sections);
|
|
205
|
+
// setDashboardSections(resp.sections ?? {});
|
|
218
206
|
updateFilterSchema(resp.sections, schema);
|
|
219
207
|
const filterArray = [];
|
|
220
208
|
if (resp.dateFilter && Object.keys(resp.dateFilter).length) {
|
|
@@ -306,7 +294,6 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
306
294
|
hashCode(JSON.stringify(filterArray))) {
|
|
307
295
|
setAppliedFilters(filterArray);
|
|
308
296
|
}
|
|
309
|
-
setIsLoading(false);
|
|
310
297
|
setInitialLoad(false);
|
|
311
298
|
};
|
|
312
299
|
const handleOnClickDashboardItem = (elem) => {
|
|
@@ -353,6 +340,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
353
340
|
}
|
|
354
341
|
};
|
|
355
342
|
const updateFilter = (filter, value = null, comparison = null) => {
|
|
343
|
+
if (!appliedFilters) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
356
346
|
//for dateObjects only, since values are arrays for dateObjects
|
|
357
347
|
const { ...filterWithoutSelectedValue } = filter; // _ is a throwaway variable
|
|
358
348
|
if (filter.filterType === 'string') {
|
|
@@ -506,6 +496,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
506
496
|
};
|
|
507
497
|
// new update filter function for user added filters
|
|
508
498
|
const updateUserFilter = (filter, id) => {
|
|
499
|
+
if (!appliedFilters) {
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
509
502
|
const newFilter = getUserFilter(filter, id);
|
|
510
503
|
dashboardFiltersDispatch({
|
|
511
504
|
type: 'ADD_DASHBOARD_FILTER',
|
|
@@ -513,18 +506,18 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
513
506
|
});
|
|
514
507
|
setAppliedFilters([...appliedFilters, newFilter]);
|
|
515
508
|
};
|
|
516
|
-
useEffect(() => {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
}, [dashboard, dashboardSections
|
|
509
|
+
// useEffect(() => {
|
|
510
|
+
// if (dashboardSections && dashboard) {
|
|
511
|
+
// const totalNumberOfItems = Object.values(dashboardSections).reduce(
|
|
512
|
+
// (count: number, arr: any) => count + arr.length,
|
|
513
|
+
// 0,
|
|
514
|
+
// );
|
|
515
|
+
// const itemsLoaded = Object.keys(dashboard).length;
|
|
516
|
+
// }
|
|
517
|
+
// }, [dashboard, dashboardSections]);
|
|
525
518
|
useEffect(() => {
|
|
526
519
|
if (onChangeLoading) {
|
|
527
|
-
onChangeLoading(
|
|
520
|
+
onChangeLoading(isLoading || initialLoad);
|
|
528
521
|
}
|
|
529
522
|
}, [isLoading, initialLoad, onChangeLoading]);
|
|
530
523
|
const sortByOrdering = (a, b) => {
|
|
@@ -536,23 +529,14 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
536
529
|
return -1;
|
|
537
530
|
return a.order - b.order;
|
|
538
531
|
};
|
|
539
|
-
|
|
540
|
-
.
|
|
541
|
-
|
|
542
|
-
const charts = (section) => dashboardSections[section]
|
|
543
|
-
.filter(({ chartType }) => !['metric', 'table'].includes(chartType))
|
|
544
|
-
.sort(sortByOrdering);
|
|
545
|
-
const tables = (section) => dashboardSections[section]
|
|
546
|
-
.filter(({ chartType }) => chartType === 'table')
|
|
547
|
-
.sort(sortByOrdering);
|
|
548
|
-
if (hidden || isLoading || !dashboardSections) {
|
|
549
|
-
return (_jsx(DashboardLoadingComponent, { containerStyle: containerStyle, chartContainerStyle: chartContainerStyle }));
|
|
550
|
-
}
|
|
551
|
-
if (Object.keys(dashboardSections).length == 0) {
|
|
552
|
-
if (initialLoad || isLoading)
|
|
553
|
-
return null;
|
|
532
|
+
if (!isLoading &&
|
|
533
|
+
(Object.keys(data?.sections ?? {}).length === 0 ||
|
|
534
|
+
data?.sections?.['']?.length === 0)) {
|
|
554
535
|
return _jsx(EmptyDashboardComponent, {});
|
|
555
536
|
}
|
|
537
|
+
if (hidden || isLoading || isClientLoading || !data?.sections) {
|
|
538
|
+
return (_jsx(DashboardLoadingComponent, { containerStyle: containerStyle, chartContainerStyle: chartContainerStyle }));
|
|
539
|
+
}
|
|
556
540
|
return (_jsxs("div", { className: className, ...styleToProps(containerStyle), children: [data &&
|
|
557
541
|
data.customFiltersEnabled &&
|
|
558
542
|
filterSchemaIsLoaded &&
|
|
@@ -571,7 +555,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
571
555
|
}
|
|
572
556
|
}, label: `Add Filter` })), _jsx(PopoverComponent, { isOpen: addFilterPopoverIsOpen, setIsOpen: setAddFilterPopoverIsOpen, popoverTitle: "Add Filter", popoverChildren: _jsx(FilterModal, { schema: filterSchema, fieldValuesMap: fieldValuesMap, onSubmitFilter: (filter) => {
|
|
573
557
|
setAddFilterPopoverIsOpen(false);
|
|
574
|
-
|
|
558
|
+
if (appliedFilters) {
|
|
559
|
+
updateUserFilter(filter, appliedFilters.length);
|
|
560
|
+
}
|
|
575
561
|
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, TextInputComponent: TextInputComponent }), containerStyle: { position: 'relative', top: 10 } })] }), userFilters.length > 0 && (_jsx(ModalComponent, { triggerLabel: `Filters${userFilters.length > 0 ? ` (${userFilters.length})` : ''}`, isOpen: filterListIsOpen, setIsOpen: setFilterListIsOpen, title: "Filters", children: _jsxs("div", { style: {
|
|
576
562
|
display: 'flex',
|
|
577
563
|
flexDirection: 'column',
|
|
@@ -584,6 +570,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
584
570
|
value: filter.value,
|
|
585
571
|
}, filterLabel: filter ? filterSentence(filter) : '', index: index, fieldValuesMap: fieldValuesMap, customOperatorOptions: customOperatorOptions, FilterTagComponent: FilterTagComponent, FilterModal: FilterModal, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, handleFilterSave: (newFilter) => {
|
|
586
572
|
const updatedFilter = getUserFilter(newFilter, filter._id, filter);
|
|
573
|
+
if (!appliedFilters) {
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
587
576
|
dashboardFiltersDispatch({
|
|
588
577
|
type: 'UPDATE_DASHBOARD_FILTER',
|
|
589
578
|
id: updatedFilter._id,
|
|
@@ -595,6 +584,9 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
595
584
|
...appliedFilters.slice(index + 1),
|
|
596
585
|
]);
|
|
597
586
|
}, handleFilterDelete: () => {
|
|
587
|
+
if (!appliedFilters) {
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
598
590
|
dashboardFiltersDispatch({
|
|
599
591
|
type: 'DELETE_DASHBOARD_FILTER',
|
|
600
592
|
id: appliedFilters[index]._id,
|
|
@@ -616,7 +608,7 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
616
608
|
const id = uniqueCounter;
|
|
617
609
|
setUniqueCounter(uniqueCounter + 1);
|
|
618
610
|
updateUserFilter(filter, id);
|
|
619
|
-
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, TextInputComponent: TextInputComponent }), containerStyle: { position: 'relative', top: 10 } })] })] }) }))] })), templateDashboardName && (_jsx(QuillDashboardTemplate, { name: templateDashboardName, originDashboard: name, client: client, appliedFilters: appliedFilters, ModalComponent: ModalComponent, TemplateChartComponent: TemplateChartComponent, TemplateMetricComponent: TemplateMetricComponent, TemplateTableComponent: TemplateTableComponent, ButtonComponent: SecondaryButtonComponent }))] }), Object.keys(
|
|
611
|
+
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, TextInputComponent: TextInputComponent }), containerStyle: { position: 'relative', top: 10 } })] })] }) }))] })), templateDashboardName && (_jsx(QuillDashboardTemplate, { name: templateDashboardName, originDashboard: name, client: client, appliedFilters: appliedFilters, ModalComponent: ModalComponent, TemplateChartComponent: TemplateChartComponent, TemplateMetricComponent: TemplateMetricComponent, TemplateTableComponent: TemplateTableComponent, ButtonComponent: SecondaryButtonComponent }))] }), Object.keys(data.sections)
|
|
620
612
|
.sort(function (a, b) {
|
|
621
613
|
return a.length - b.length;
|
|
622
614
|
})
|
|
@@ -629,27 +621,27 @@ export default function Dashboard({ name, hidden = false, SelectComponent = Quil
|
|
|
629
621
|
marginBottom: 16,
|
|
630
622
|
textAlign: 'left',
|
|
631
623
|
marginTop: 12,
|
|
632
|
-
}, children: section })] })), metrics(section).length > 0 && (_jsx(DashboardSectionComponent, { section: "metrics", children: metrics(section).map((item, index) => {
|
|
633
|
-
return (_jsx(DataLoader, { item: item, filters: appliedFilters, children: ({ isLoading, error, data }) => (_jsx(MetricComponent, { error: error, isLoading: isLoading, report: data, onClick: !isLoading && onClickReport
|
|
624
|
+
}, children: section })] })), metrics(data.sections, section, sortByOrdering).length > 0 && (_jsx(DashboardSectionComponent, { section: "metrics", children: metrics(data.sections, section, sortByOrdering).map((item, index) => {
|
|
625
|
+
return (_jsx(DataLoader, { item: item, filters: appliedFilters, children: ({ isLoading, error, data, }) => (_jsx(MetricComponent, { error: error, isLoading: isLoading, report: data, onClick: !isLoading && onClickReport
|
|
634
626
|
? () => handleOnClickDashboardItem({
|
|
635
627
|
...item,
|
|
636
628
|
...data,
|
|
637
629
|
})
|
|
638
|
-
: () => { } }, item.name + '' + index)) }, `${item._id}${index}`));
|
|
639
|
-
}) })), charts(section).length > 0 && (_jsx(DashboardSectionComponent, { section: "charts", children: charts(section).map((item, index) => (_jsx(ChartDataLoader, { item: item, dateBucket: dateBucket, additionalProcessing: additionalProcessing, filters: appliedFilters, children: ({ isLoading, data, error, dateBucket, }) => (_jsx(ChartComponent, { report: data, error: error, onClick: () => {
|
|
630
|
+
: () => { }, hoverActions: hoverActions }, item.name + '' + index)) }, `${item._id}${index}`));
|
|
631
|
+
}) })), charts(data.sections, section, sortByOrdering).length > 0 && (_jsx(DashboardSectionComponent, { section: "charts", children: charts(data.sections, section, sortByOrdering).map((item, index) => (_jsx(ChartDataLoader, { item: item, dateBucket: dateBucket, additionalProcessing: additionalProcessing, filters: appliedFilters, children: ({ isLoading, data, error, dateBucket, }) => (_jsx(ChartComponent, { report: data, error: error, onClick: () => {
|
|
640
632
|
if (!isLoading && onClickReport) {
|
|
641
633
|
handleOnClickDashboardItem({
|
|
642
634
|
...item,
|
|
643
635
|
...data,
|
|
644
636
|
});
|
|
645
637
|
}
|
|
646
|
-
}, onClickChartElement: onClickChartElement, isLoading: isLoading, dateBucket: dateBucket, children: error ? (_jsx(ErrorComponent, { label: error })) : (_jsx(ChartDisplay, { reportId: data.id, config: data, loading: isLoading, containerStyle: chartContainerStyle, colors: theme.chartColors?.length
|
|
638
|
+
}, hoverActions: hoverActions, onClickChartElement: onClickChartElement, isLoading: isLoading, dateBucket: dateBucket, children: error ? (_jsx(ErrorComponent, { label: error, containerStyle: { minHeight: 300, height: 300 } })) : (_jsx(ChartDisplay, { reportId: data.id, config: data, loading: isLoading, containerStyle: chartContainerStyle, colors: theme.chartColors?.length
|
|
647
639
|
? theme.chartColors
|
|
648
|
-
: undefined, scrollable: false, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, comparisonLineStyle: comparisonLineStyle, onClickChartElement: onClickChartElement })) }, item.name + '' + index)) }, `${item._id}${index}`))) })), tables(section).length > 0 && (_jsx(DashboardSectionComponent, { section: "tables", children: tables(section).map((item, index) => (_jsx(DataLoader, { item: item, filters: appliedFilters, children: ({ isLoading, error, onPageChange, onSortChange, data, }) => (_jsx(TableComponent, { report: data, isLoading: isLoading, error: error, onClick: !isLoading && onClickReport
|
|
640
|
+
: undefined, scrollable: false, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, comparisonLineStyle: comparisonLineStyle, onClickChartElement: onClickChartElement })) }, item.name + '' + index)) }, `${item._id}${index}`))) })), tables(data.sections, section, sortByOrdering).length > 0 && (_jsx(DashboardSectionComponent, { section: "tables", children: tables(data.sections, section, sortByOrdering).map((item, index) => (_jsx(DataLoader, { item: item, filters: appliedFilters, children: ({ isLoading, error, onPageChange, onSortChange, data, }) => (_jsx(TableComponent, { report: data, isLoading: isLoading, error: error, onClick: !isLoading && onClickReport
|
|
649
641
|
? () => handleOnClickDashboardItem({
|
|
650
642
|
...item,
|
|
651
643
|
...data,
|
|
652
644
|
})
|
|
653
|
-
: undefined, rowCount: data?.rowCount ?? data?.rows?.length ?? 0, onPageChange: (page) => onPageChange(page), onSortChange: (sort) => onSortChange(sort) })) }, `${item._id}${index}`))) }))] }, section + '' + sectionIndex));
|
|
645
|
+
: undefined, hoverActions: hoverActions, rowCount: data?.rowCount ?? data?.rows?.length ?? 0, onPageChange: (page) => onPageChange(page), onSortChange: (sort) => onSortChange(sort) })) }, `${item._id}${index}`))) }))] }, section + '' + sectionIndex));
|
|
654
646
|
})] }));
|
|
655
647
|
}
|
|
@@ -71,6 +71,8 @@ export interface QuillTheme {
|
|
|
71
71
|
borderWidth: number;
|
|
72
72
|
primaryButtonColor?: string;
|
|
73
73
|
secondaryButtonColor?: string;
|
|
74
|
+
primaryButtonTextColor?: string;
|
|
75
|
+
secondaryButtonTextColor?: string;
|
|
74
76
|
buttonFontWeight?: number;
|
|
75
77
|
labelFontWeight?: number;
|
|
76
78
|
fontSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillProvider.d.ts","sourceRoot":"","sources":["../../src/QuillProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,kBAAmB,SAAQ,sBAAsB;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAwB7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,QAAA,MAAM,aAAa,kGAQhB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"QuillProvider.d.ts","sourceRoot":"","sources":["../../src/QuillProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,kBAAmB,SAAQ,sBAAsB;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED,UAAU,iBAAkB,SAAQ,sBAAsB;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAwB7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,QAAA,MAAM,aAAa,kGAQhB,kBAAkB,4CAapB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ContextProvider } from './Context';
|
|
3
3
|
export const defaultQuillTheme = {
|
|
4
4
|
fontFamily: 'Inter; Helvetica',
|
|
@@ -85,20 +85,6 @@ export const defaultQuillTheme = {
|
|
|
85
85
|
* @see https://docs.quillsql.com/components/quill-provider
|
|
86
86
|
*/
|
|
87
87
|
const QuillProvider = ({ organizationId, publicKey, queryEndpoint = 'https://quill-344421.uc.r.appspot.com/cloud', queryHeaders, children, theme = defaultQuillTheme, withCredentials, }) => {
|
|
88
|
-
return (
|
|
89
|
-
::-webkit-scrollbar {
|
|
90
|
-
width: 0;
|
|
91
|
-
height: 0;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/* For Internet Explorer and Edge */
|
|
95
|
-
* {
|
|
96
|
-
-ms-overflow-style: none;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/* For Firefox */
|
|
100
|
-
* {
|
|
101
|
-
scrollbar-width: none;
|
|
102
|
-
}` })] }));
|
|
88
|
+
return (_jsx(ContextProvider, { initialTheme: theme, publicKey: publicKey, customerId: organizationId, queryEndpoint: queryEndpoint, queryHeaders: queryHeaders ?? undefined, withCredentials: withCredentials, children: children }));
|
|
103
89
|
};
|
|
104
90
|
export default QuillProvider;
|