@quillsql/react 2.12.51 → 2.12.53
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.js +1 -1
- package/dist/cjs/ChartBuilder.d.ts +7 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +55 -19
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +42 -7
- package/dist/cjs/Context.d.ts +4 -5
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +22 -34
- package/dist/cjs/Dashboard.d.ts +4 -3
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +66 -39
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +8 -10
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/cjs/QuillProvider.js +1 -1
- package/dist/cjs/ReportBuilder.d.ts +8 -12
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +157 -83
- package/dist/cjs/SQLEditor.d.ts +8 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +80 -28
- package/dist/cjs/Table.js +1 -1
- package/dist/cjs/assets/AdjustmentsIcon.d.ts +5 -0
- package/dist/cjs/assets/AdjustmentsIcon.d.ts.map +1 -0
- package/dist/cjs/assets/AdjustmentsIcon.js +5 -0
- package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/index.d.ts +0 -1
- package/dist/cjs/assets/index.d.ts.map +1 -1
- package/dist/cjs/assets/index.js +1 -3
- package/dist/cjs/components/Chart/ChartError.js +2 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +8 -5
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +24 -20
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +2 -2
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +5 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +23 -4
- 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 +2 -2
- package/dist/cjs/components/Dashboard/util.d.ts +2 -2
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +2 -2
- package/dist/cjs/components/QuillMultiSelect.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +20 -14
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +69 -46
- package/dist/cjs/components/QuillSelect.d.ts +1 -1
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +31 -8
- package/dist/cjs/components/QuillSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +50 -28
- package/dist/cjs/components/QuillTable.d.ts +2 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +7 -4
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +17 -4
- package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts +13 -7
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +14 -11
- package/dist/cjs/components/UiComponents.d.ts +15 -6
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +29 -23
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -2
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.d.ts +10 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +85 -53
- package/dist/cjs/hooks/useExport.js +1 -1
- package/dist/cjs/hooks/useOnClickOutside.js +1 -1
- package/dist/cjs/hooks/useQuill.js +2 -2
- package/dist/cjs/hooks/useVirtualTables.d.ts +12 -3
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +105 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +9 -9
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -15
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -9
- package/dist/cjs/models/Client.d.ts +10 -2
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +3 -3
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +2 -7
- package/dist/cjs/utils/dashboard.d.ts +5 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +106 -6
- package/dist/cjs/utils/dataFetcher.d.ts +4 -4
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +2 -8
- package/dist/cjs/utils/paginationProcessing.js +1 -1
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -2
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +1 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +6 -2
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +12 -9
- package/dist/cjs/utils/report.d.ts +6 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +69 -24
- package/dist/cjs/utils/schema.d.ts +3 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +39 -35
- package/dist/cjs/utils/tableProcessing.d.ts +17 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +42 -23
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +7 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +52 -19
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +43 -8
- package/dist/esm/Context.d.ts +4 -5
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +23 -35
- package/dist/esm/Dashboard.d.ts +4 -3
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +67 -40
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +8 -10
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
- package/dist/esm/QuillProvider.js +1 -1
- package/dist/esm/ReportBuilder.d.ts +8 -12
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +160 -86
- package/dist/esm/SQLEditor.d.ts +8 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +83 -31
- package/dist/esm/Table.js +2 -2
- package/dist/esm/assets/AdjustmentsIcon.d.ts +5 -0
- package/dist/esm/assets/AdjustmentsIcon.d.ts.map +1 -0
- package/dist/esm/assets/AdjustmentsIcon.js +3 -0
- package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/index.d.ts +0 -1
- package/dist/esm/assets/index.d.ts.map +1 -1
- package/dist/esm/assets/index.js +0 -1
- package/dist/esm/components/Chart/ChartError.js +2 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +8 -5
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +24 -20
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +2 -2
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +5 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +25 -6
- 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 +2 -2
- package/dist/esm/components/Dashboard/util.d.ts +2 -2
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +2 -2
- package/dist/esm/components/QuillMultiSelect.d.ts +1 -1
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +21 -15
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +70 -47
- package/dist/esm/components/QuillSelect.d.ts +1 -1
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +32 -9
- package/dist/esm/components/QuillSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +51 -29
- package/dist/esm/components/QuillTable.d.ts +2 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +7 -4
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +17 -4
- package/dist/esm/components/ReportBuilder/convert.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts +13 -7
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +14 -11
- package/dist/esm/components/UiComponents.d.ts +15 -6
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +29 -23
- package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -2
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.d.ts +10 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +86 -54
- package/dist/esm/hooks/useExport.js +1 -1
- package/dist/esm/hooks/useOnClickOutside.js +1 -1
- package/dist/esm/hooks/useQuill.js +3 -3
- package/dist/esm/hooks/useVirtualTables.d.ts +12 -3
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +106 -2
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -9
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +21 -15
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +9 -9
- package/dist/esm/models/Client.d.ts +10 -2
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +3 -3
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +2 -7
- package/dist/esm/utils/dashboard.d.ts +5 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +104 -5
- package/dist/esm/utils/dataFetcher.d.ts +4 -4
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +2 -8
- package/dist/esm/utils/paginationProcessing.js +1 -1
- package/dist/esm/utils/pivotConstructor.d.ts +2 -2
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +1 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +6 -2
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +12 -9
- package/dist/esm/utils/report.d.ts +6 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +68 -24
- package/dist/esm/utils/schema.d.ts +3 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +39 -35
- package/dist/esm/utils/tableProcessing.d.ts +17 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +39 -20
- package/package.json +1 -1
- package/dist/cjs/assets/LoadingSpinner.d.ts +0 -5
- package/dist/cjs/assets/LoadingSpinner.d.ts.map +0 -1
- package/dist/cjs/assets/LoadingSpinner.js +0 -5
- package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
- package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
- package/dist/esm/assets/LoadingSpinner.js +0 -3
|
@@ -10,6 +10,8 @@ export type DataLoaderChildProps = {
|
|
|
10
10
|
direction: string;
|
|
11
11
|
}) => void;
|
|
12
12
|
data: QuillReport;
|
|
13
|
+
rowCount?: number;
|
|
14
|
+
rowCountIsLoading?: boolean;
|
|
13
15
|
};
|
|
14
16
|
export default function DataLoader({ item, children, filters, }: {
|
|
15
17
|
item: any;
|
|
@@ -31,6 +33,8 @@ export type ChartDataLoaderChildProps = {
|
|
|
31
33
|
error?: string;
|
|
32
34
|
data: QuillReport;
|
|
33
35
|
dateBucket?: string;
|
|
36
|
+
rowCount?: number;
|
|
37
|
+
rowCountIsLoading?: boolean;
|
|
34
38
|
};
|
|
35
39
|
export declare const ChartDataLoader: ({ item, children, dateBucket, additionalProcessing, filters, }: {
|
|
36
40
|
item: any;
|
|
@@ -38,7 +42,7 @@ export declare const ChartDataLoader: ({ item, children, dateBucket, additionalP
|
|
|
38
42
|
mapColorsToFields?: ((_report: QuillReport, _theme: QuillTheme) => ColorMapType) | undefined;
|
|
39
43
|
additionalProcessing?: any;
|
|
40
44
|
filters: any[] | null;
|
|
41
|
-
children: ({ isLoading, error, data, dateBucket, }: ChartDataLoaderChildProps) => JSX.Element;
|
|
45
|
+
children: ({ isLoading, error, data, dateBucket, rowCount, rowCountIsLoading, }: ChartDataLoaderChildProps) => JSX.Element;
|
|
42
46
|
}) => JSX.Element;
|
|
43
47
|
export {};
|
|
44
48
|
//# sourceMappingURL=DataLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoCjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CA+Kd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe;UAOpB,GAAG;;mCAGE,WAAW,UACZ,UAAU,KACf,YAAY;2BACM,GAAG;aACjB,GAAG,EAAE,GAAG,IAAI;qFAQlB,yBAAyB,KAAK,WAAW;MAC1C,WA4EH,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext, useEffect, useState } from 'react';
|
|
3
3
|
import { didFiltersChange } from '../../Chart';
|
|
4
4
|
import { ClientContext, DashboardContext, SchemaDataContext, } from '../../Context';
|
|
5
|
-
import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, } from '../../utils/report';
|
|
5
|
+
import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, fetchReportRowCount, } from '../../utils/report';
|
|
6
6
|
import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from '../../utils/paginationProcessing';
|
|
7
|
-
import {
|
|
7
|
+
import { fetchResultsByReport } from '../../utils/tableProcessing';
|
|
8
8
|
const constructReportFromItem = (item) => {
|
|
9
9
|
return {
|
|
10
10
|
...EMPTY_INTERNAL_REPORT,
|
|
@@ -36,6 +36,22 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
36
36
|
const [additionalProcessing, setAdditionProcessing] = useState({
|
|
37
37
|
page: DEFAULT_PAGINATION,
|
|
38
38
|
});
|
|
39
|
+
const [rowCount, setRowCount] = useState(dashboard[item._id]?.rowCount ?? 0);
|
|
40
|
+
const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
|
|
41
|
+
const fetchRowCount = async (processing) => {
|
|
42
|
+
if (!client || !filters) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setRowCountIsLoading(true);
|
|
46
|
+
const rowCount = await fetchReportRowCount(item._id, client, true, filters, processing, schemaData.customFields);
|
|
47
|
+
dispatch({
|
|
48
|
+
type: 'UPDATE_DASHBOARD_ITEM',
|
|
49
|
+
id: item._id,
|
|
50
|
+
data: { rowCount },
|
|
51
|
+
});
|
|
52
|
+
setRowCount(rowCount);
|
|
53
|
+
setRowCountIsLoading(false);
|
|
54
|
+
};
|
|
39
55
|
const onPageChange = (page) => {
|
|
40
56
|
if (additionalProcessing &&
|
|
41
57
|
additionalProcessing.page &&
|
|
@@ -69,7 +85,7 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
69
85
|
setLoading(true);
|
|
70
86
|
try {
|
|
71
87
|
const updatedProcessing = { ...additionalProcessing, ...processing };
|
|
72
|
-
const paginatedRows = await
|
|
88
|
+
const paginatedRows = await fetchResultsByReport(report.id, client, updatedProcessing, filters, schemaData.customFields);
|
|
73
89
|
if (paginatedRows.error) {
|
|
74
90
|
throw new Error('Error fetching chart');
|
|
75
91
|
}
|
|
@@ -106,13 +122,14 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
106
122
|
return;
|
|
107
123
|
}
|
|
108
124
|
setLoading(true);
|
|
109
|
-
const { report, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
|
|
125
|
+
const { report: fetchedReport, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
|
|
126
|
+
fetchRowCount(processing);
|
|
110
127
|
dispatch({
|
|
111
128
|
type: 'ADD_DASHBOARD_ITEM',
|
|
112
129
|
id: item._id,
|
|
113
|
-
data: { ...
|
|
130
|
+
data: { ...fetchedReport, triggerReload: false },
|
|
114
131
|
});
|
|
115
|
-
const convertedReport = convertInternalReportToReport(
|
|
132
|
+
const convertedReport = convertInternalReportToReport(fetchedReport);
|
|
116
133
|
setReport(convertedReport);
|
|
117
134
|
setAdditionProcessing(processing);
|
|
118
135
|
setError(error);
|
|
@@ -136,6 +153,8 @@ export default function DataLoader({ item, children, filters, }) {
|
|
|
136
153
|
onPageChange,
|
|
137
154
|
onSortChange,
|
|
138
155
|
data: report,
|
|
156
|
+
rowCount,
|
|
157
|
+
rowCountIsLoading,
|
|
139
158
|
}) }));
|
|
140
159
|
}
|
|
141
160
|
// The same data-loader pattern as above, but with special logic for charts
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { QuillReport } from '../../models/Report';
|
|
3
|
-
export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }: {
|
|
3
|
+
export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, rowCountIsLoading, onPageChange, onSortChange, }: {
|
|
4
4
|
report: QuillReport;
|
|
5
5
|
onClick?: (report: QuillReport) => void;
|
|
6
6
|
isLoading?: boolean;
|
|
7
7
|
error?: string;
|
|
8
8
|
rowCount?: number;
|
|
9
|
+
rowCountIsLoading?: boolean;
|
|
9
10
|
onPageChange?: (page: number) => void;
|
|
10
11
|
onSortChange?: (sort: {
|
|
11
12
|
field: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE,GAAG,GAAG,CAAC,OAAO,CA0Fd"}
|
|
@@ -6,7 +6,7 @@ import ChartError from '../Chart/ChartError';
|
|
|
6
6
|
import { useExport } from '../../hooks/useExport';
|
|
7
7
|
import { DEFAULT_PAGINATION } from '../../utils/paginationProcessing';
|
|
8
8
|
import { ThemeContext } from '../../Context';
|
|
9
|
-
export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }) {
|
|
9
|
+
export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, rowCountIsLoading, onPageChange, onSortChange, }) {
|
|
10
10
|
const [theme] = useContext(ThemeContext);
|
|
11
11
|
const [initialLoad, setInitialLoad] = useState(true);
|
|
12
12
|
const { downloadCSV } = useExport(report?.id);
|
|
@@ -40,7 +40,7 @@ export default function QuillTableComponent({ report, onClick, isLoading, error,
|
|
|
40
40
|
} })) : error ? (_jsx("div", { style: {
|
|
41
41
|
width: '100%',
|
|
42
42
|
height: '400px',
|
|
43
|
-
}, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
|
|
43
|
+
}, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
|
|
44
44
|
width: '100%',
|
|
45
45
|
height: '400px',
|
|
46
46
|
}, downloadCSV: () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QuillProviderClient } from '../../models/Client';
|
|
2
2
|
export declare function validateTemplatesAgainstFilters(filters: any[], templates: any[]): {
|
|
3
3
|
valid: boolean;
|
|
4
4
|
error: string;
|
|
5
5
|
};
|
|
6
|
-
export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client:
|
|
6
|
+
export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client: QuillProviderClient, dashboardData: any): Promise<any>;
|
|
7
7
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,GAAG,EAAE,EACd,SAAS,EAAE,GAAG,EAAE,GACf;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiCnC;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EAAE,EACnB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,GAAG,CAAC,CAiDd"}
|
|
@@ -36,13 +36,13 @@ export function validateTemplatesAgainstFilters(filters, templates) {
|
|
|
36
36
|
}
|
|
37
37
|
export async function addTemplatesToDashboard(name, newTemplates, client, dashboardData) {
|
|
38
38
|
try {
|
|
39
|
-
const { publicKey,
|
|
39
|
+
const { publicKey, organizationId } = client;
|
|
40
40
|
const hostedBody = {
|
|
41
41
|
metadata: {
|
|
42
42
|
dashboardName: name,
|
|
43
43
|
task: 'add-from-template',
|
|
44
44
|
clientId: publicKey,
|
|
45
|
-
orgId:
|
|
45
|
+
orgId: organizationId || '*',
|
|
46
46
|
templateReportIds: newTemplates.map((template) => template._id),
|
|
47
47
|
},
|
|
48
48
|
};
|
|
@@ -2,7 +2,7 @@ import { MultiSelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillMultiSelectComponent({ options, width, onChange, label, value, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillMultiSelectComponent({ options, width, onChange, label, value, isLoading, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
|
|
7
7
|
value: string;
|
|
8
8
|
onChange: (e: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"QuillMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CAsO3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAyDpB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useOnClickOutside } from '../hooks';
|
|
3
|
-
import {
|
|
3
|
+
import { LoadingSpinner } from './UiComponents';
|
|
4
|
+
import { useContext, useEffect, useMemo, useRef, useState, } from 'react';
|
|
4
5
|
import { ThemeContext } from '../Context';
|
|
5
6
|
/**
|
|
6
7
|
* Helper function for displaying option labels
|
|
@@ -14,20 +15,18 @@ function displaySelectedOptionLabels({ options, value, }) {
|
|
|
14
15
|
return 'Select';
|
|
15
16
|
}
|
|
16
17
|
return matchingOptions
|
|
17
|
-
.map((elem) => elem.label)
|
|
18
|
+
.map((elem) => elem.label ?? '-')
|
|
18
19
|
.join(', ');
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* A robust select component that implements the new minimal Select interface.
|
|
22
23
|
*/
|
|
23
|
-
export function QuillMultiSelectComponent({ options, width, onChange, label, value, }) {
|
|
24
|
+
export function QuillMultiSelectComponent({ options, width, onChange, label, value, isLoading, }) {
|
|
24
25
|
const [theme] = useContext(ThemeContext);
|
|
25
26
|
const [selectedOptions, setSelectedOptions] = useState([]);
|
|
26
27
|
const [showModal, setShowModal] = useState(false);
|
|
27
28
|
const modalRef = useRef(null);
|
|
28
29
|
const debounceTimeoutId = useRef(null);
|
|
29
|
-
// const [searchQuery, setSearchQuery] = useState('');
|
|
30
|
-
// const [filteredOptions, setFilteredOptions] = useState(options);
|
|
31
30
|
useOnClickOutside(modalRef, () => setShowModal(false));
|
|
32
31
|
useEffect(() => {
|
|
33
32
|
if (!value) {
|
|
@@ -37,6 +36,21 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
|
|
|
37
36
|
setSelectedOptions(value);
|
|
38
37
|
}
|
|
39
38
|
}, [value]);
|
|
39
|
+
const sortedItems = useMemo(() => {
|
|
40
|
+
// Sort null to top
|
|
41
|
+
return options.sort((a, b) => {
|
|
42
|
+
if (a.value === null) {
|
|
43
|
+
return -1;
|
|
44
|
+
}
|
|
45
|
+
if (b.value === null) {
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
return a.label.localeCompare(b.label);
|
|
49
|
+
});
|
|
50
|
+
}, [options]);
|
|
51
|
+
const nullLabel = useMemo(() => {
|
|
52
|
+
return sortedItems.some((item) => item.value === '-') ? 'None' : '-';
|
|
53
|
+
}, [sortedItems]);
|
|
40
54
|
const debounce = (updatedChangeEvent) => {
|
|
41
55
|
if (debounceTimeoutId.current) {
|
|
42
56
|
clearTimeout(debounceTimeoutId.current);
|
|
@@ -45,14 +59,6 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
|
|
|
45
59
|
onChange(updatedChangeEvent);
|
|
46
60
|
}, 500);
|
|
47
61
|
};
|
|
48
|
-
// const filterOptions = (query: string) => {
|
|
49
|
-
// setSearchQuery(query);
|
|
50
|
-
// setFilteredOptions(
|
|
51
|
-
// options.filter((option) =>
|
|
52
|
-
// option.label.toLowerCase().includes(query.toLowerCase()),
|
|
53
|
-
// ),
|
|
54
|
-
// );
|
|
55
|
-
// };
|
|
56
62
|
return (_jsxs("div", { style: {
|
|
57
63
|
position: 'relative',
|
|
58
64
|
borderRadius: '6px',
|
|
@@ -112,7 +118,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
|
|
|
112
118
|
fontFamily: theme?.fontFamily,
|
|
113
119
|
maxHeight: '50vh',
|
|
114
120
|
overflow: 'scroll',
|
|
115
|
-
}, children:
|
|
121
|
+
}, children: !isLoading ? (sortedItems.map((option) => (_jsxs("button", { style: {
|
|
116
122
|
display: 'flex',
|
|
117
123
|
alignItems: 'center',
|
|
118
124
|
padding: 8,
|
|
@@ -163,7 +169,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
|
|
|
163
169
|
textOverflow: 'ellipsis',
|
|
164
170
|
whiteSpace: 'nowrap',
|
|
165
171
|
overflow: 'hidden',
|
|
166
|
-
}, children: option.label })] }, option.value))) }))] }));
|
|
172
|
+
}, children: option.label ?? nullLabel })] }, option.value)))) : (_jsx(LoadingSpinner, {})) }))] }));
|
|
167
173
|
}
|
|
168
174
|
export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
|
|
169
175
|
return (_jsxs("div", { style: {
|
|
@@ -2,7 +2,7 @@ import { MultiSelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
|
|
7
7
|
value: string;
|
|
8
8
|
onChange: (e: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CA4U3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAwDpB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useOnClickOutside } from '../hooks';
|
|
3
|
-
import
|
|
3
|
+
import { LoadingSpinner } from './UiComponents';
|
|
4
|
+
import React, { useContext, useEffect, useMemo, useRef, useState, } from 'react';
|
|
4
5
|
import { ThemeContext } from '../Context';
|
|
5
6
|
/**
|
|
6
7
|
* Helper function for displaying option labels
|
|
@@ -20,34 +21,22 @@ function displaySelectedOptionLabels({ options, value, }) {
|
|
|
20
21
|
/**
|
|
21
22
|
* A robust select component that implements the new minimal Select interface.
|
|
22
23
|
*/
|
|
23
|
-
export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, }) {
|
|
24
|
+
export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }) {
|
|
24
25
|
const [theme] = useContext(ThemeContext);
|
|
25
26
|
const [selectedOptions, setSelectedOptions] = useState([]);
|
|
26
27
|
const [showModal, setShowModal] = useState(false);
|
|
27
28
|
const modalRef = useRef(null);
|
|
28
29
|
const debounceTimeoutId = useRef(null);
|
|
29
30
|
const [searchQuery, setSearchQuery] = React.useState('');
|
|
30
|
-
const [
|
|
31
|
+
const [exceedsLimit, setExceedsLimit] = useState(false);
|
|
31
32
|
useEffect(() => {
|
|
32
|
-
|
|
33
|
+
if (options.length > 0 && options?.[0]?.value === 'EXCEEDS_LIMIT') {
|
|
34
|
+
setExceedsLimit(true);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
setExceedsLimit(false);
|
|
38
|
+
}
|
|
33
39
|
}, [options]);
|
|
34
|
-
const handleSearchChange = (value) => {
|
|
35
|
-
setSearchQuery(value);
|
|
36
|
-
const curFilteredItems = value === ''
|
|
37
|
-
? options.slice(0, 20)
|
|
38
|
-
: options
|
|
39
|
-
.filter((option) => {
|
|
40
|
-
if (!option) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return option.value
|
|
44
|
-
.toLowerCase()
|
|
45
|
-
.replace(/\s+/g, '')
|
|
46
|
-
.includes(value.toLowerCase().replace(/\s+/g, ''));
|
|
47
|
-
})
|
|
48
|
-
.slice(0, 20);
|
|
49
|
-
setFilteredItems(curFilteredItems);
|
|
50
|
-
};
|
|
51
40
|
useOnClickOutside(modalRef, () => setShowModal(false));
|
|
52
41
|
useEffect(() => {
|
|
53
42
|
if (!value) {
|
|
@@ -65,14 +54,43 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
65
54
|
onChange(updatedChangeEvent);
|
|
66
55
|
}, 500);
|
|
67
56
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
const filteredItems = React.useMemo(function () {
|
|
58
|
+
// Sort null to top
|
|
59
|
+
if (searchQuery === '') {
|
|
60
|
+
return options.sort((a, b) => {
|
|
61
|
+
if (a.value === null) {
|
|
62
|
+
return -1;
|
|
63
|
+
}
|
|
64
|
+
if (b.value === null) {
|
|
65
|
+
return 1;
|
|
66
|
+
}
|
|
67
|
+
return a.label.localeCompare(b.label);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return options
|
|
71
|
+
.filter((option) => {
|
|
72
|
+
if (!option) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return option.value
|
|
76
|
+
.toLowerCase()
|
|
77
|
+
.replace(/\s+/g, '')
|
|
78
|
+
.includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
|
|
79
|
+
})
|
|
80
|
+
.sort((a, b) => {
|
|
81
|
+
if (a.value === null) {
|
|
82
|
+
return -1;
|
|
83
|
+
}
|
|
84
|
+
if (b.value === null) {
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
return a.label.localeCompare(b.label);
|
|
88
|
+
})
|
|
89
|
+
.slice(0, 20);
|
|
90
|
+
}, [options, searchQuery]);
|
|
91
|
+
const nullLabel = useMemo(() => {
|
|
92
|
+
return filteredItems.some((item) => item.value === '-') ? 'None' : '-';
|
|
93
|
+
}, [filteredItems]);
|
|
76
94
|
return (_jsxs("div", { style: {
|
|
77
95
|
position: 'relative',
|
|
78
96
|
borderRadius: '6px',
|
|
@@ -84,7 +102,7 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
84
102
|
fontFamily: theme?.fontFamily,
|
|
85
103
|
paddingBottom: 5,
|
|
86
104
|
fontWeight: 600,
|
|
87
|
-
}, children: label })), _jsxs("button", { style: {
|
|
105
|
+
}, children: label ?? nullLabel })), _jsxs("button", { style: {
|
|
88
106
|
fontFamily: theme?.fontFamily,
|
|
89
107
|
color: theme?.primaryTextColor,
|
|
90
108
|
width: '100%',
|
|
@@ -133,9 +151,14 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
133
151
|
maxHeight: '50vh',
|
|
134
152
|
overflow: 'scroll',
|
|
135
153
|
fontSize: 14,
|
|
136
|
-
}, children: [options && options.length > 20 && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
|
|
137
|
-
|
|
138
|
-
} })), options && options.length > 20 && (_jsx("div", { style: {
|
|
154
|
+
}, children: [!exceedsLimit && options && options.length > 20 && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
|
|
155
|
+
setSearchQuery(value);
|
|
156
|
+
} })), !exceedsLimit && options && options.length > 20 && (_jsx("div", { style: {
|
|
157
|
+
height: 9,
|
|
158
|
+
width: 230,
|
|
159
|
+
borderTop: '1px solid #e7e7e7',
|
|
160
|
+
} })), !isLoading &&
|
|
161
|
+
(!filteredItems || filteredItems.length === 0 || exceedsLimit) && (_jsxs("div", { style: {
|
|
139
162
|
display: 'flex',
|
|
140
163
|
alignItems: 'center',
|
|
141
164
|
padding: 8,
|
|
@@ -154,18 +177,18 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
154
177
|
gap: 6,
|
|
155
178
|
overflow: 'hidden',
|
|
156
179
|
}, children: [_jsx("style", { children: `
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
.quill-option:hover {
|
|
161
|
-
background: #F4F4F5;
|
|
180
|
+
.quill-option {
|
|
181
|
+
background: white;
|
|
162
182
|
}
|
|
163
|
-
|
|
183
|
+
.quill-option:hover {
|
|
184
|
+
background: #F4F4F5;
|
|
185
|
+
}
|
|
186
|
+
` }), _jsx("span", { style: {
|
|
164
187
|
textOverflow: 'ellipsis',
|
|
165
188
|
whiteSpace: 'nowrap',
|
|
166
189
|
overflow: 'hidden',
|
|
167
190
|
cursor: 'default',
|
|
168
|
-
}, children:
|
|
191
|
+
}, children: exceedsLimit ? 'Too many options' : 'No options available' })] })), !exceedsLimit && !isLoading ? (filteredItems.map((option) => (_jsxs("button", { style: {
|
|
169
192
|
display: 'flex',
|
|
170
193
|
alignItems: 'center',
|
|
171
194
|
padding: 8,
|
|
@@ -206,17 +229,17 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
|
|
|
206
229
|
}
|
|
207
230
|
debounce(updatedChangeEvent);
|
|
208
231
|
}, children: [_jsx("style", { children: `
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
.quill-option:hover {
|
|
213
|
-
background: #F4F4F5;
|
|
232
|
+
.quill-option {
|
|
233
|
+
background: white;
|
|
214
234
|
}
|
|
215
|
-
|
|
235
|
+
.quill-option:hover {
|
|
236
|
+
background: #F4F4F5;
|
|
237
|
+
}
|
|
238
|
+
` }), _jsx("input", { type: "checkbox", checked: selectedOptions.includes(option.value), style: { width: '14px', height: '14px', margin: 'auto 0' }, readOnly: true }), _jsx("span", { style: {
|
|
216
239
|
textOverflow: 'ellipsis',
|
|
217
240
|
whiteSpace: 'nowrap',
|
|
218
241
|
overflow: 'hidden',
|
|
219
|
-
}, children: option.label })] }, option.value)))] }))] }));
|
|
242
|
+
}, children: option.label ?? nullLabel })] }, option.value)))) : isLoading ? (_jsx("div", { children: _jsx(LoadingSpinner, {}) })) : null] }))] }));
|
|
220
243
|
}
|
|
221
244
|
export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
|
|
222
245
|
return (_jsxs("div", { style: {
|
|
@@ -2,5 +2,5 @@ import { SelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillSelectComponent({ options, value, width, onChange, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillSelectComponent({ options, value, width, onChange, label, isLoading, disabled, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=QuillSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,2CA8OtB"}
|
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useOnClickOutside } from '../hooks';
|
|
3
|
-
import {
|
|
3
|
+
import { LoadingSpinner } from './UiComponents';
|
|
4
|
+
import { useContext, useMemo, useRef, useState } from 'react';
|
|
4
5
|
import { ThemeContext } from '../Context';
|
|
5
6
|
/**
|
|
6
7
|
* A robust select component that implements the new minimal Select interface.
|
|
7
8
|
*/
|
|
8
|
-
export function QuillSelectComponent({ options, value, width, onChange, label, }) {
|
|
9
|
+
export function QuillSelectComponent({ options, value, width, onChange, label, isLoading, disabled, }) {
|
|
9
10
|
const [theme] = useContext(ThemeContext);
|
|
10
11
|
const [showModal, setShowModal] = useState(false);
|
|
11
12
|
const modalRef = useRef(null);
|
|
12
13
|
useOnClickOutside(modalRef, () => setShowModal(false));
|
|
14
|
+
const sortedItems = useMemo(() => {
|
|
15
|
+
// Sort null to top
|
|
16
|
+
return options.sort((a, b) => {
|
|
17
|
+
if (a.value === null) {
|
|
18
|
+
return -1;
|
|
19
|
+
}
|
|
20
|
+
if (b.value === null) {
|
|
21
|
+
return 1;
|
|
22
|
+
}
|
|
23
|
+
return a.label.localeCompare(b.label);
|
|
24
|
+
});
|
|
25
|
+
}, [options]);
|
|
26
|
+
const nullLabel = useMemo(() => {
|
|
27
|
+
return sortedItems.some((item) => item.value === '-') ? 'None' : '-';
|
|
28
|
+
}, [sortedItems]);
|
|
13
29
|
return (_jsxs("div", { style: {
|
|
14
30
|
position: 'relative',
|
|
15
31
|
// width: 200,
|
|
@@ -23,7 +39,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
23
39
|
fontFamily: theme?.fontFamily,
|
|
24
40
|
paddingBottom: 5,
|
|
25
41
|
fontWeight: 600,
|
|
26
|
-
}, children: label })), _jsxs("button", { style: {
|
|
42
|
+
}, children: label ?? nullLabel })), _jsxs("button", { style: {
|
|
27
43
|
fontFamily: theme?.fontFamily,
|
|
28
44
|
color: theme?.primaryTextColor,
|
|
29
45
|
width: '100%',
|
|
@@ -44,7 +60,14 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
44
60
|
height: 40,
|
|
45
61
|
minHeight: 40,
|
|
46
62
|
maxHeight: 40,
|
|
47
|
-
}, className: "quill-select-button", onClick: () => setShowModal((showModal) => !showModal), children: [_jsx("style", { children: `
|
|
63
|
+
}, className: "quill-select-button", onClick: () => setShowModal((showModal) => !showModal), disabled: disabled, children: [_jsx("style", { children: `
|
|
64
|
+
.quill-select-button { background: ${theme?.backgroundColor}; }
|
|
65
|
+
.quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }
|
|
66
|
+
.quill-select-button:disabled {
|
|
67
|
+
opacity: 0.5;
|
|
68
|
+
cursor: not-allowed;
|
|
69
|
+
}
|
|
70
|
+
` }), _jsx("span", { style: {
|
|
48
71
|
textOverflow: 'ellipsis',
|
|
49
72
|
whiteSpace: 'nowrap',
|
|
50
73
|
overflow: 'hidden',
|
|
@@ -68,7 +91,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
68
91
|
fontFamily: theme?.fontFamily,
|
|
69
92
|
maxHeight: '50vh',
|
|
70
93
|
overflow: 'scroll',
|
|
71
|
-
}, children: [_jsxs("button", { style: {
|
|
94
|
+
}, children: [!isLoading && (_jsxs("button", { style: {
|
|
72
95
|
display: 'flex',
|
|
73
96
|
alignItems: 'center',
|
|
74
97
|
justifyContent: 'space-between',
|
|
@@ -91,14 +114,14 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
91
114
|
const changeEvent = { target: { value: '' } };
|
|
92
115
|
onChange(changeEvent);
|
|
93
116
|
setShowModal(false);
|
|
94
|
-
}, children: [_jsx("style", { children: `
|
|
117
|
+
}, disabled: disabled, children: [_jsx("style", { children: `
|
|
95
118
|
.quill-option {
|
|
96
119
|
background: white;
|
|
97
120
|
}
|
|
98
121
|
.quill-option:hover {
|
|
99
122
|
background: #F4F4F5;
|
|
100
123
|
}
|
|
101
|
-
` }), 'Select'] }), options.map((option) => (_jsxs("button", { style: {
|
|
124
|
+
` }), 'Select'] })), !isLoading ? (options.map((option) => (_jsxs("button", { style: {
|
|
102
125
|
display: 'flex',
|
|
103
126
|
alignItems: 'center',
|
|
104
127
|
justifyContent: 'space-between',
|
|
@@ -121,7 +144,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
121
144
|
const changeEvent = { target: { value: option.value } };
|
|
122
145
|
onChange(changeEvent);
|
|
123
146
|
setShowModal(false);
|
|
124
|
-
}, children: [_jsx("style", { children: `
|
|
147
|
+
}, disabled: disabled, children: [_jsx("style", { children: `
|
|
125
148
|
.quill-option {
|
|
126
149
|
background: white;
|
|
127
150
|
}
|
|
@@ -132,5 +155,5 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
|
|
|
132
155
|
textOverflow: 'ellipsis',
|
|
133
156
|
whiteSpace: 'nowrap',
|
|
134
157
|
overflow: 'hidden',
|
|
135
|
-
}, children: option.label })] }, option.label)))] }))] }));
|
|
158
|
+
}, children: option.label ?? '-' })] }, option.label)))) : (_jsx(LoadingSpinner, {}))] }))] }));
|
|
136
159
|
}
|
|
@@ -2,5 +2,5 @@ import { SelectComponentProps } from './UiComponents';
|
|
|
2
2
|
/**
|
|
3
3
|
* A robust select component that implements the new minimal Select interface.
|
|
4
4
|
*/
|
|
5
|
-
export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=QuillSelectWithCombo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,2CA8QtB"}
|