@quillsql/react 1.7.2 → 1.7.3

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 (136) hide show
  1. package/lib/AddToDashboardModal.js +249 -369
  2. package/lib/AddToDashboardModal.js.map +1 -1
  3. package/lib/BarList.js +92 -109
  4. package/lib/BarList.js.map +1 -1
  5. package/lib/Chart.d.ts +0 -1
  6. package/lib/Chart.js +359 -419
  7. package/lib/Chart.js.map +1 -1
  8. package/lib/Context.d.ts +1 -2
  9. package/lib/Context.js +91 -85
  10. package/lib/Context.js.map +1 -1
  11. package/lib/Dashboard.js +181 -209
  12. package/lib/Dashboard.js.map +1 -1
  13. package/lib/DateRangePicker/Calendar.js +87 -91
  14. package/lib/DateRangePicker/Calendar.js.map +1 -1
  15. package/lib/DateRangePicker/DateRangePicker.js +70 -68
  16. package/lib/DateRangePicker/DateRangePicker.js.map +1 -1
  17. package/lib/DateRangePicker/DateRangePickerButton.js +46 -57
  18. package/lib/DateRangePicker/DateRangePickerButton.js.map +1 -1
  19. package/lib/DateRangePicker/dateRangePickerUtils.js +105 -99
  20. package/lib/DateRangePicker/dateRangePickerUtils.js.map +1 -1
  21. package/lib/DateRangePicker/index.js +8 -1
  22. package/lib/DateRangePicker/index.js.map +1 -1
  23. package/lib/PieChart.js +221 -225
  24. package/lib/PieChart.js.map +1 -1
  25. package/lib/QuillProvider.d.ts +1 -2
  26. package/lib/QuillProvider.js +8 -18
  27. package/lib/QuillProvider.js.map +1 -1
  28. package/lib/ReportBuilder.js +430 -526
  29. package/lib/ReportBuilder.js.map +1 -1
  30. package/lib/SQLEditor.js +182 -268
  31. package/lib/SQLEditor.js.map +1 -1
  32. package/lib/Table.js +208 -261
  33. package/lib/Table.js.map +1 -1
  34. package/lib/TableChart.js +76 -75
  35. package/lib/TableChart.js.map +1 -1
  36. package/lib/assets/ArrowDownHeadIcon.js +5 -28
  37. package/lib/assets/ArrowDownHeadIcon.js.map +1 -1
  38. package/lib/assets/ArrowDownIcon.js +5 -28
  39. package/lib/assets/ArrowDownIcon.js.map +1 -1
  40. package/lib/assets/ArrowDownRightIcon.js +5 -28
  41. package/lib/assets/ArrowDownRightIcon.js.map +1 -1
  42. package/lib/assets/ArrowLeftHeadIcon.js +5 -28
  43. package/lib/assets/ArrowLeftHeadIcon.js.map +1 -1
  44. package/lib/assets/ArrowRightHeadIcon.js +5 -28
  45. package/lib/assets/ArrowRightHeadIcon.js.map +1 -1
  46. package/lib/assets/ArrowRightIcon.js +5 -28
  47. package/lib/assets/ArrowRightIcon.js.map +1 -1
  48. package/lib/assets/ArrowUpHeadIcon.js +5 -28
  49. package/lib/assets/ArrowUpHeadIcon.js.map +1 -1
  50. package/lib/assets/ArrowUpIcon.js +5 -28
  51. package/lib/assets/ArrowUpIcon.js.map +1 -1
  52. package/lib/assets/ArrowUpRightIcon.js +5 -28
  53. package/lib/assets/ArrowUpRightIcon.js.map +1 -1
  54. package/lib/assets/CalendarIcon.js +5 -28
  55. package/lib/assets/CalendarIcon.js.map +1 -1
  56. package/lib/assets/DoubleArrowLeftHeadIcon.js +5 -28
  57. package/lib/assets/DoubleArrowLeftHeadIcon.js.map +1 -1
  58. package/lib/assets/DoubleArrowRightHeadIcon.js +5 -28
  59. package/lib/assets/DoubleArrowRightHeadIcon.js.map +1 -1
  60. package/lib/assets/ExclamationFilledIcon.js +5 -28
  61. package/lib/assets/ExclamationFilledIcon.js.map +1 -1
  62. package/lib/assets/LoadingSpinner.js +5 -28
  63. package/lib/assets/LoadingSpinner.js.map +1 -1
  64. package/lib/assets/SearchIcon.js +5 -28
  65. package/lib/assets/SearchIcon.js.map +1 -1
  66. package/lib/assets/XCircleIcon.js +5 -28
  67. package/lib/assets/XCircleIcon.js.map +1 -1
  68. package/lib/assets/index.js +38 -16
  69. package/lib/assets/index.js.map +1 -1
  70. package/lib/components/BigModal/BigModal.js +45 -43
  71. package/lib/components/BigModal/BigModal.js.map +1 -1
  72. package/lib/components/Dropdown/Dropdown.js +57 -53
  73. package/lib/components/Dropdown/Dropdown.js.map +1 -1
  74. package/lib/components/Dropdown/DropdownItem.js +43 -40
  75. package/lib/components/Dropdown/DropdownItem.js.map +1 -1
  76. package/lib/components/Dropdown/index.js +10 -2
  77. package/lib/components/Dropdown/index.js.map +1 -1
  78. package/lib/components/Modal/Modal.js +45 -43
  79. package/lib/components/Modal/Modal.js.map +1 -1
  80. package/lib/components/Modal/index.js +8 -1
  81. package/lib/components/Modal/index.js.map +1 -1
  82. package/lib/components/selectUtils.js +20 -15
  83. package/lib/components/selectUtils.js.map +1 -1
  84. package/lib/contexts/BaseColorContext.js +5 -3
  85. package/lib/contexts/BaseColorContext.js.map +1 -1
  86. package/lib/contexts/HoveredValueContext.js +5 -3
  87. package/lib/contexts/HoveredValueContext.js.map +1 -1
  88. package/lib/contexts/RootStylesContext.js +5 -3
  89. package/lib/contexts/RootStylesContext.js.map +1 -1
  90. package/lib/contexts/SelectedValueContext.js +5 -3
  91. package/lib/contexts/SelectedValueContext.js.map +1 -1
  92. package/lib/contexts/index.js +14 -4
  93. package/lib/contexts/index.js.map +1 -1
  94. package/lib/hooks/index.js +14 -4
  95. package/lib/hooks/index.js.map +1 -1
  96. package/lib/hooks/useInternalState.js +9 -7
  97. package/lib/hooks/useInternalState.js.map +1 -1
  98. package/lib/hooks/useOnClickOutside.js +8 -6
  99. package/lib/hooks/useOnClickOutside.js.map +1 -1
  100. package/lib/hooks/useOnWindowResize.js +9 -7
  101. package/lib/hooks/useOnWindowResize.js.map +1 -1
  102. package/lib/hooks/useQuill.js +60 -111
  103. package/lib/hooks/useQuill.js.map +1 -1
  104. package/lib/hooks/useSelectOnKeyDown.js +17 -15
  105. package/lib/hooks/useSelectOnKeyDown.js.map +1 -1
  106. package/lib/index.js +22 -8
  107. package/lib/index.js.map +1 -1
  108. package/lib/lib/font.d.ts +13 -0
  109. package/lib/lib/font.js +17 -0
  110. package/lib/lib/font.js.map +1 -0
  111. package/lib/lib/index.d.ts +3 -0
  112. package/lib/lib/index.js +20 -0
  113. package/lib/lib/index.js.map +1 -0
  114. package/lib/lib/inputTypes.d.ts +20 -0
  115. package/lib/lib/inputTypes.js +57 -0
  116. package/lib/lib/inputTypes.js.map +1 -0
  117. package/lib/lib/utils.d.ts +9 -0
  118. package/lib/lib/utils.js +46 -0
  119. package/lib/lib/utils.js.map +1 -0
  120. package/package.json +6 -13
  121. package/src/AddToDashboardModal.tsx +2 -9
  122. package/src/Chart.tsx +49 -20
  123. package/src/Context.tsx +0 -3
  124. package/src/Dashboard.tsx +2 -3
  125. package/src/PieChart.tsx +2 -2
  126. package/src/QuillProvider.tsx +0 -3
  127. package/src/ReportBuilder.tsx +3 -9
  128. package/src/SQLEditor.tsx +99 -12
  129. package/src/Table.tsx +51 -8
  130. package/src/hooks/useQuill.ts +1 -2
  131. package/src/lib/font.ts +14 -0
  132. package/src/lib/index.ts +3 -0
  133. package/src/lib/inputTypes.ts +81 -0
  134. package/src/lib/utils.tsx +46 -0
  135. package/tsconfig.json +3 -3
  136. package/rollup.config.ts +0 -21
package/src/SQLEditor.tsx CHANGED
@@ -13,7 +13,6 @@ import {
13
13
  } from '@heroicons/react/20/solid';
14
14
  import { QuillTheme } from './QuillProvider';
15
15
  import { SpecialTable } from './Table';
16
- import { TailSpin } from 'react-loader-spinner';
17
16
 
18
17
  export function convertPostgresColumn(column) {
19
18
  let format;
@@ -256,14 +255,8 @@ export default function QueryEditor({
256
255
  };
257
256
 
258
257
  const handleRunQuery = async () => {
259
- const {
260
- publicKey,
261
- customerId,
262
- environment,
263
- queryEndpoint,
264
- queryHeaders,
265
- withCredentials,
266
- } = client;
258
+ const { publicKey, customerId, environment, queryEndpoint, queryHeaders } =
259
+ client;
267
260
  try {
268
261
  let response;
269
262
  setSqlQueryLoading(true);
@@ -271,7 +264,7 @@ export default function QueryEditor({
271
264
  response = await axios.post(
272
265
  queryEndpoint,
273
266
  { metadata: { query, task: 'query' } },
274
- { headers: queryHeaders, withCredentials }
267
+ { headers: queryHeaders }
275
268
  );
276
269
  } else {
277
270
  response = await axios.post(
@@ -679,7 +672,54 @@ const SQLEditorComponent = ({
679
672
  >
680
673
  {LoadingComponent && <LoadingComponent />}
681
674
  {!LoadingComponent && (
682
- <TailSpin height={36} width={36} color="#364153" />
675
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
676
+ <defs>
677
+ <linearGradient
678
+ id="circleGradient"
679
+ gradientUnits="objectBoundingBox"
680
+ >
681
+ <stop offset="0%" stop-color="#F9F9FA" />
682
+ <stop offset="5%" stop-color="#F9F9FA" />
683
+ <stop offset="100%" stop-color="#D1D1D1" />
684
+ </linearGradient>
685
+ <mask id="mask">
686
+ <circle cx="12" cy="12" r="12" fill="white" />
687
+ <path
688
+ id="sector"
689
+ fill="black"
690
+ d="M15,15 L15,1.8 A13.2,13.2 0 0,1 15,1.8 Z"
691
+ >
692
+ <animate
693
+ attributeName="d"
694
+ from="M15,15 L15,1.8 A13.2,13.2 0 0,0 15,1.8 Z"
695
+ to="M15,15 L15,1.8 A13.2,13.2 0 1,1 15,1.8 Z"
696
+ dur="2s"
697
+ repeatCount="indefinite"
698
+ />
699
+ </path>
700
+ </mask>
701
+ </defs>
702
+ <g transform="rotate(0 15 15)">
703
+ <animateTransform
704
+ attributeName="transform"
705
+ attributeType="XML"
706
+ type="rotate"
707
+ from="0 12 12"
708
+ to="360 12 12"
709
+ dur="2s"
710
+ repeatCount="indefinite"
711
+ />
712
+ <circle
713
+ cx="12"
714
+ cy="12"
715
+ r="12"
716
+ fill="none"
717
+ stroke="url(#circleGradient)"
718
+ stroke-width="8"
719
+ mask="url(#mask)"
720
+ />
721
+ </g>
722
+ </svg>
683
723
  )}
684
724
  </div>
685
725
  ) : (
@@ -824,7 +864,54 @@ const SchemaListComponent = ({ schema, theme, loading, LoadingComponent }) => {
824
864
  <div style={{ height: 100 }} />
825
865
  {LoadingComponent && <LoadingComponent />}
826
866
  {!LoadingComponent && (
827
- <TailSpin height={36} width={36} color="#364153" />
867
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
868
+ <defs>
869
+ <linearGradient
870
+ id="circleGradient"
871
+ gradientUnits="objectBoundingBox"
872
+ >
873
+ <stop offset="0%" stop-color="#F9F9FA" />
874
+ <stop offset="5%" stop-color="#F9F9FA" />
875
+ <stop offset="100%" stop-color="#D1D1D1" />
876
+ </linearGradient>
877
+ <mask id="mask">
878
+ <circle cx="12" cy="12" r="12" fill="white" />
879
+ <path
880
+ id="sector"
881
+ fill="black"
882
+ d="M15,15 L15,1.8 A13.2,13.2 0 0,1 15,1.8 Z"
883
+ >
884
+ <animate
885
+ attributeName="d"
886
+ from="M15,15 L15,1.8 A13.2,13.2 0 0,0 15,1.8 Z"
887
+ to="M15,15 L15,1.8 A13.2,13.2 0 1,1 15,1.8 Z"
888
+ dur="2s"
889
+ repeatCount="indefinite"
890
+ />
891
+ </path>
892
+ </mask>
893
+ </defs>
894
+ <g transform="rotate(0 15 15)">
895
+ <animateTransform
896
+ attributeName="transform"
897
+ attributeType="XML"
898
+ type="rotate"
899
+ from="0 12 12"
900
+ to="360 12 12"
901
+ dur="2s"
902
+ repeatCount="indefinite"
903
+ />
904
+ <circle
905
+ cx="12"
906
+ cy="12"
907
+ r="12"
908
+ fill="none"
909
+ stroke="url(#circleGradient)"
910
+ stroke-width="8"
911
+ mask="url(#mask)"
912
+ />
913
+ </g>
914
+ </svg>
828
915
  )}
829
916
  </div>
830
917
  );
package/src/Table.tsx CHANGED
@@ -2,12 +2,8 @@
2
2
  // @ts-nocheck
3
3
  import React, { useContext, useEffect, useMemo, useState } from 'react';
4
4
  import axios from 'axios';
5
- import {
6
- ClientContext,
7
- DashboardContext,
8
- ThemeContext,
9
- } from './Context';
10
- import Skeleton from 'react-loading-skeleton';
5
+ import { ClientContext, DashboardContext, ThemeContext } from './Context';
6
+ // import Skeleton from 'react-loading-skeleton';
11
7
  import { valueFormatter } from './Chart';
12
8
  // import { SpecialTable } from './SQLEditor';
13
9
  import { QuillTheme } from './QuillProvider';
@@ -834,7 +830,54 @@ const ChartUpdater = ({
834
830
  boxSizing: 'content-box',
835
831
  }}
836
832
  >
837
- <Skeleton
833
+ <svg
834
+ width="100%"
835
+ height="100%"
836
+ xmlns="http://www.w3.org/2000/svg"
837
+ xmlns:xlink="http://www.w3.org/1999/xlink"
838
+ >
839
+ <rect width="100%" height="100%" fill="#F9F9FA" />
840
+
841
+ <defs fill="#F9F9FA">
842
+ <linearGradient
843
+ id="skeletonGradient"
844
+ x1="0%"
845
+ y1="0%"
846
+ x2="10%"
847
+ y2="0%"
848
+ gradientUnits="userSpaceOnUse"
849
+ >
850
+ <stop offset="0%" stop-color="rgba(255,255,255,0)" />
851
+ <stop offset="50%" stop-color="#FEFEFE" />
852
+ <stop offset="100%" stop-color="rgba(255,255,255,0)" />
853
+ <animate
854
+ attributeName="x1"
855
+ from="-100%"
856
+ to="100%"
857
+ dur="2s"
858
+ repeatCount="indefinite"
859
+ />
860
+ <animate
861
+ attributeName="x2"
862
+ from="-50%"
863
+ to="150%"
864
+ dur="2s"
865
+ repeatCount="indefinite"
866
+ />
867
+ </linearGradient>
868
+ </defs>
869
+
870
+ <rect width="50%" height="100%" fill="url(#skeletonGradient)">
871
+ <animate
872
+ attributeName="x"
873
+ from="-100%"
874
+ to="100%"
875
+ dur="2s"
876
+ repeatCount="indefinite"
877
+ />
878
+ </rect>
879
+ </svg>
880
+ {/* <Skeleton
838
881
  count={1}
839
882
  // height={containerStyle?.height}
840
883
  height={
@@ -850,7 +893,7 @@ const ChartUpdater = ({
850
893
  // baseColor="#F3F4F6"
851
894
  baseColor="#F9F9FA"
852
895
  width="100%"
853
- />
896
+ /> */}
854
897
  </div>
855
898
  </div>
856
899
  );
@@ -74,14 +74,13 @@ export const useQuill = (
74
74
  environment,
75
75
  queryEndpoint,
76
76
  queryHeaders,
77
- withCredentials,
78
77
  } = client;
79
78
  try {
80
79
  if (queryEndpoint) {
81
80
  const resp = await axios.post(
82
81
  queryEndpoint,
83
82
  { metadata: { id: chartId, task: 'item' } },
84
- { headers: queryHeaders, withCredentials }
83
+ { headers: queryHeaders }
85
84
  );
86
85
  setLoading(false);
87
86
  setData({
@@ -0,0 +1,14 @@
1
+ export const fontSize = {
2
+ xs: 'qq-text-xs',
3
+ sm: 'qq-text-sm',
4
+ md: 'qq-text-base',
5
+ lg: 'qq-text-lg',
6
+ xl: 'qq-text-xl',
7
+ threeXl: 'qq-text-3xl',
8
+ };
9
+
10
+ export const fontWeight = {
11
+ sm: 'qq-font-normal',
12
+ md: 'qq-font-medium',
13
+ lg: 'qq-font-semibold',
14
+ };
@@ -0,0 +1,3 @@
1
+ export * from './inputTypes';
2
+ export * from './font';
3
+ export * from './utils';
@@ -0,0 +1,81 @@
1
+ export type ValueFormatter = {
2
+ (value: number): string;
3
+ };
4
+
5
+ const iconVariantValues = [
6
+ 'simple',
7
+ 'light',
8
+ 'shadow',
9
+ 'solid',
10
+ 'outlined',
11
+ ] as const;
12
+
13
+ export type IconVariant = (typeof iconVariantValues)[number];
14
+
15
+ export type HorizontalPosition = 'left' | 'right';
16
+
17
+ export type VerticalPosition = 'top' | 'bottom';
18
+
19
+ export type ButtonVariant = 'primary' | 'secondary' | 'light';
20
+
21
+ const deltaTypeValues = [
22
+ 'increase',
23
+ 'moderateIncrease',
24
+ 'decrease',
25
+ 'moderateDecrease',
26
+ 'unchanged',
27
+ ] as const;
28
+
29
+ export type DeltaType = (typeof deltaTypeValues)[number];
30
+
31
+ const sizeValues = ['xs', 'sm', 'md', 'lg', 'xl'] as const;
32
+
33
+ export type Size = (typeof sizeValues)[number];
34
+
35
+ const colorValues = [
36
+ 'slate',
37
+ 'gray',
38
+ 'zinc',
39
+ 'neutral',
40
+ 'stone',
41
+ 'red',
42
+ 'orange',
43
+ 'amber',
44
+ 'yellow',
45
+ 'lime',
46
+ 'green',
47
+ 'emerald',
48
+ 'teal',
49
+ 'cyan',
50
+ 'sky',
51
+ 'blue',
52
+ 'indigo',
53
+ 'violet',
54
+ 'purple',
55
+ 'fuchsia',
56
+ 'pink',
57
+ 'rose',
58
+ ] as const;
59
+
60
+ export type Color = (typeof colorValues)[number];
61
+
62
+ const justifyContentValues = [
63
+ 'start',
64
+ 'end',
65
+ 'center',
66
+ 'between',
67
+ 'around',
68
+ 'evenly',
69
+ ] as const;
70
+ export type JustifyContent = (typeof justifyContentValues)[number];
71
+
72
+ const alignItemsValues = [
73
+ 'start',
74
+ 'end',
75
+ 'center',
76
+ 'baseline',
77
+ 'stretch',
78
+ ] as const;
79
+ export type AlignItems = (typeof alignItemsValues)[number];
80
+
81
+ export type FlexDirection = 'row' | 'col' | 'row-reverse' | 'col-reverse';
@@ -0,0 +1,46 @@
1
+ import { ValueFormatter } from './inputTypes';
2
+
3
+ export const defaultValueFormatter: ValueFormatter = (value: number) =>
4
+ value.toString();
5
+
6
+ export const sumNumericArray = (arr: number[]) =>
7
+ arr.reduce((prefixSum, num) => prefixSum + num, 0);
8
+
9
+ export const removeValueFromArray = (value: any, array: any[]): any[] => {
10
+ const index = array.indexOf(value);
11
+ if (index > -1) {
12
+ array.splice(index, 1);
13
+ }
14
+ return array;
15
+ };
16
+
17
+ export const isValueInArray = (value: any, array: any[]): boolean => {
18
+ for (let i = 0; i < array.length; i++) {
19
+ if (array[i] === value) {
20
+ return true;
21
+ }
22
+ }
23
+ return false;
24
+ };
25
+
26
+ export const stringIsNumeric = (str: string | undefined): boolean => {
27
+ return !isNaN(Number(str)) && str !== undefined;
28
+ };
29
+
30
+ export const stringEndsWithNumber = (str: string): boolean => {
31
+ return stringIsNumeric(str.split('-').pop());
32
+ };
33
+
34
+ export function mergeRefs<T = any>(
35
+ refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>
36
+ ): React.RefCallback<T> {
37
+ return value => {
38
+ refs.forEach(ref => {
39
+ if (typeof ref === 'function') {
40
+ ref(value);
41
+ } else if (ref != null) {
42
+ (ref as React.MutableRefObject<T | null>).current = value;
43
+ }
44
+ });
45
+ };
46
+ }
package/tsconfig.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "es5",
4
- "lib": ["dom", "dom.iterable", "esnext"],
3
+ "target": "es2022",
4
+ "lib": ["dom", "dom.iterable", "es2022"],
5
5
  "allowJs": true,
6
6
  "skipLibCheck": true,
7
7
  "esModuleInterop": true,
8
8
  "allowSyntheticDefaultImports": true,
9
9
  "strict": true,
10
10
  "forceConsistentCasingInFileNames": true,
11
- "module": "esnext",
11
+ "module": "commonjs",
12
12
  "moduleResolution": "node",
13
13
  "resolveJsonModule": true,
14
14
  "isolatedModules": true,
package/rollup.config.ts DELETED
@@ -1,21 +0,0 @@
1
- import typescript from '@rollup/plugin-typescript';
2
- import resolve from '@rollup/plugin-node-resolve';
3
-
4
- export default [
5
- // {
6
- // input: 'src/index.ts',
7
- // output: {
8
- // file: 'lib/cjs/index.js',
9
- // format: 'cjs',
10
- // },
11
- // plugins: [typescript() , resolve()],
12
- // },
13
- {
14
- input: 'src/index.ts',
15
- output: {
16
- file: 'lib/esm/index.js',
17
- format: 'esm',
18
- },
19
- plugins: [typescript(), resolve()],
20
- },
21
- ];