@quillsql/react 2.10.17 → 2.10.18

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.
Files changed (59) hide show
  1. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  2. package/dist/cjs/Dashboard.d.ts +24 -16
  3. package/dist/cjs/Dashboard.d.ts.map +1 -1
  4. package/dist/cjs/Dashboard.js +86 -478
  5. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +3 -0
  6. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  7. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +260 -0
  8. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +20 -1
  9. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  10. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +93 -4
  11. package/dist/cjs/QuillProvider.d.ts +1 -0
  12. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  13. package/dist/cjs/QuillProvider.js +1 -0
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +1 -2
  16. package/dist/cjs/components/QuillSelect.d.ts +3 -0
  17. package/dist/cjs/components/QuillSelect.d.ts.map +1 -0
  18. package/dist/cjs/components/QuillSelect.js +109 -0
  19. package/dist/cjs/components/UiComponents.d.ts +1 -0
  20. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  21. package/dist/cjs/index.d.ts +0 -1
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +1 -3
  24. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  25. package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -0
  26. package/dist/cjs/utils/aggregate.js +2 -2
  27. package/dist/esm/ChartEditor.d.ts.map +1 -1
  28. package/dist/esm/Dashboard.d.ts +24 -16
  29. package/dist/esm/Dashboard.d.ts.map +1 -1
  30. package/dist/esm/Dashboard.js +84 -475
  31. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +3 -0
  32. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -0
  33. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +256 -0
  34. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +20 -1
  35. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  36. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +91 -3
  37. package/dist/esm/QuillProvider.d.ts +1 -0
  38. package/dist/esm/QuillProvider.d.ts.map +1 -1
  39. package/dist/esm/QuillProvider.js +1 -0
  40. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  41. package/dist/esm/ReportBuilder.js +0 -1
  42. package/dist/esm/components/QuillSelect.d.ts +3 -0
  43. package/dist/esm/components/QuillSelect.d.ts.map +1 -0
  44. package/dist/esm/components/QuillSelect.js +105 -0
  45. package/dist/esm/components/UiComponents.d.ts +1 -0
  46. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  47. package/dist/esm/index.d.ts +0 -1
  48. package/dist/esm/index.d.ts.map +1 -1
  49. package/dist/esm/index.js +0 -1
  50. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  51. package/dist/esm/internals/ReportBuilder/PivotModal.js +10 -1
  52. package/dist/esm/utils/aggregate.js +1 -1
  53. package/package.json +1 -1
  54. package/dist/cjs/AddToDashboardModal.d.ts +0 -82
  55. package/dist/cjs/AddToDashboardModal.d.ts.map +0 -1
  56. package/dist/cjs/AddToDashboardModal.js +0 -1469
  57. package/dist/esm/AddToDashboardModal.d.ts +0 -82
  58. package/dist/esm/AddToDashboardModal.d.ts.map +0 -1
  59. package/dist/esm/AddToDashboardModal.js +0 -1435
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GACV,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GACV,MAAM,mCAAmC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -7,7 +7,6 @@ export { default as SQLEditor, SchemaListComponent } from './SQLEditor';
7
7
  export { default as ReportBuilder } from './ReportBuilder';
8
8
  export { default as ChartBuilder } from './ChartBuilder';
9
9
  export { default as ChartEditor } from './ChartEditor';
10
- export { default as AddToDashboardModal } from './AddToDashboardModal';
11
10
  export { useDashboard } from './hooks/useDashboard';
12
11
  export { useQuill } from './hooks/useQuill';
13
12
  export { downloadCSV } from './utils/downloadCSV';
@@ -1 +1 @@
1
- {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"AA6BA,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAkBD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAqxBtB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA,OAyB1D;AAkHD,wBAAgB,WAAW,CAAC,SAAS,KAAA,WAOpC;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,GAAG,EACd,YAAY,EAAE,OAAO,EACrB,QAAQ,SAAK,EACb,SAAS,GAAE,GAAU;;;;;;EA+XtB"}
1
+ {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"AA8BA,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAkBD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAqxBtB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA,OAyB1D;AAkHD,wBAAgB,WAAW,CAAC,SAAS,KAAA,WAOpC;AAKD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,GAAG,EACd,YAAY,EAAE,OAAO,EACrB,QAAQ,SAAK,EACb,SAAS,GAAE,GAAU;;;;;;EAyYtB"}
@@ -5,7 +5,7 @@ import { ClientContext } from '../../Context';
5
5
  import { getDataFromCloud } from '../../utils/dataFetcher';
6
6
  import { RefreshIcon } from '../../assets';
7
7
  import { PivotList, PivotCard } from './PivotList';
8
- import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, min, max, } from 'date-fns';
8
+ import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, min, max, add, } from 'date-fns';
9
9
  import { valueFormatter } from '../../utils/valueFormatter';
10
10
  import { numberFormatOptions, snakeCaseToTitleCase } from '../../ChartBuilder';
11
11
  import { QuillCard } from '../../components/QuillCard';
@@ -569,7 +569,16 @@ export function isDateField(fieldType) {
569
569
  fieldType === 'timestamp' ||
570
570
  fieldType === 'timestamptz');
571
571
  }
572
+ const isNullUndefinedOrInvalidDate = (date) => date === null || date === undefined || isNaN(date.getTime());
572
573
  export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = null) {
574
+ if (dateRange[0] === null && dateRange[1] === null) {
575
+ dateRange = [new Date(0), add(new Date(), { years: 5 })];
576
+ }
577
+ if (!compRange ||
578
+ isNullUndefinedOrInvalidDate(compRange[0]) ||
579
+ isNullUndefinedOrInvalidDate(compRange[1])) {
580
+ compRange = null;
581
+ }
573
582
  const pivotRows = [];
574
583
  const uniqueRows = (isDateField(pivot.rowFieldType)
575
584
  ? getDateBuckets(dateRange, pivot.rowField, data)
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
+ import { COMPARISON_OPTIONS } from '../DateRangePicker/dateRangePickerUtils';
2
3
  import { getPostgresBasicType } from '../ReportBuilder';
3
- import { COMPARISON_OPTIONS } from '../Dashboard';
4
4
  import { add, sub, startOfWeek, startOfDay, startOfMonth, startOfYear, parse, } from 'date-fns';
5
5
  function findTimePeriod(dateFilter) {
6
6
  if (!dateFilter) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.10.17",
3
+ "version": "2.10.18",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",
@@ -1,82 +0,0 @@
1
- import React from 'react';
2
- import { startOfHour } from 'date-fns';
3
- interface Option {
4
- value: string;
5
- label: string;
6
- }
7
- interface SelectComponentProps {
8
- onChange: (value: string) => void;
9
- value: string;
10
- options: Option[];
11
- }
12
- interface TextInputComponentProps {
13
- onChange: (e: any) => void;
14
- value: string;
15
- id: string;
16
- }
17
- interface ButtonComponentProps {
18
- onClick: () => void;
19
- label: string;
20
- }
21
- interface TextInputComponentProps {
22
- onChange: (e: any) => void;
23
- value: string;
24
- id: string;
25
- }
26
- interface ModalComponentProps {
27
- children: any;
28
- isOpen: boolean;
29
- onClose?: () => void;
30
- title?: string;
31
- }
32
- interface AddToDashboardModalProps {
33
- isOpen: boolean;
34
- setIsOpen: (isOpen: boolean) => void;
35
- SelectComponent?: (props: SelectComponentProps) => JSX.Element;
36
- TextInputComponent?: (props: TextInputComponentProps) => JSX.Element;
37
- ButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
38
- SecondaryButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
39
- rows: object[];
40
- columns: object[];
41
- query: string;
42
- ModalComponent?: (props: ModalComponentProps) => JSX.Element;
43
- formHeaderStyle?: React.CSSProperties;
44
- formLabelStyle?: React.CSSProperties;
45
- showTableFormatOptions?: boolean;
46
- showDateFieldOptions?: boolean;
47
- showAccessControlOptions?: boolean;
48
- onAddToDashboardComplete?: () => void;
49
- fields?: object[];
50
- }
51
- export default function AddToDashboardModal({ isOpen, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, rows, columns, query, report, ModalComponent, formHeaderStyle, formLabelStyle, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, onAddToDashboardComplete, fields, }: AddToDashboardModalProps): import("react/jsx-runtime").JSX.Element;
52
- export declare function ChartForm({ data, fields, theme, saveVisualization, report, editChart, schema, query, organizationName, SelectComponent, TextInputComponent, client, ButtonComponent, SecondaryButtonComponent, formHeaderStyle, formLabelStyle, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, newFields, }: {
53
- data: any;
54
- fields: any;
55
- theme: any;
56
- saveVisualization: any;
57
- report: any;
58
- editChart: any;
59
- schema: any;
60
- query: any;
61
- organizationName: any;
62
- SelectComponent: any;
63
- TextInputComponent: any;
64
- client: any;
65
- ButtonComponent: any;
66
- SecondaryButtonComponent: any;
67
- formHeaderStyle: any;
68
- formLabelStyle: any;
69
- showTableFormatOptions: any;
70
- showDateFieldOptions: any;
71
- showAccessControlOptions: any;
72
- newFields: any;
73
- }): import("react/jsx-runtime").JSX.Element;
74
- export declare function isValidDate(d: any): boolean;
75
- export declare const isArrayOfValidDates: (arr: any, field: any) => any;
76
- export declare function formatDateBuckets(startDate: any, endDate: any): {
77
- unit: string;
78
- format: string;
79
- startOf: typeof startOfHour;
80
- };
81
- export {};
82
- //# sourceMappingURL=AddToDashboardModal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AddToDashboardModal.d.ts","sourceRoot":"","sources":["../../src/AddToDashboardModal.tsx"],"names":[],"mappings":"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"}