@quillsql/react 2.11.15 → 2.11.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/cjs/Chart.d.ts +117 -42
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +44 -18
  4. package/dist/cjs/ChartBuilder.d.ts +195 -28
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +124 -63
  7. package/dist/cjs/ChartEditor.d.ts +114 -18
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +47 -15
  10. package/dist/cjs/Dashboard.d.ts +148 -90
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +46 -152
  13. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  17. package/dist/cjs/QuillProvider.d.ts +105 -2
  18. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  19. package/dist/cjs/QuillProvider.js +59 -0
  20. package/dist/cjs/ReportBuilder.d.ts +188 -34
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +551 -426
  23. package/dist/cjs/SQLEditor.d.ts +158 -29
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +52 -32
  26. package/dist/cjs/Table.d.ts +119 -15
  27. package/dist/cjs/Table.d.ts.map +1 -1
  28. package/dist/cjs/Table.js +37 -6
  29. package/dist/cjs/TableChart.d.ts.map +1 -1
  30. package/dist/cjs/TableChart.js +0 -194
  31. package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  32. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
  33. package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
  34. package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
  35. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/LineChart.js +3 -3
  37. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
  38. package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
  39. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
  40. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
  42. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
  43. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  44. package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
  45. package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
  46. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  47. package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
  48. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
  49. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  50. package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
  51. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  52. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  53. package/dist/cjs/components/Dashboard/TableComponent.js +6 -9
  54. package/dist/cjs/components/QuillSelect.d.ts +4 -1
  55. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  56. package/dist/cjs/components/QuillSelect.js +13 -8
  57. package/dist/cjs/components/QuillTable.d.ts +16 -2
  58. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  59. package/dist/cjs/components/QuillTable.js +4 -4
  60. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  61. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +33 -14
  63. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +19 -19
  66. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +18 -20
  69. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  70. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/convert.js +40 -20
  73. package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
  74. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/ui.d.ts +83 -19
  76. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  77. package/dist/cjs/components/ReportBuilder/ui.js +68 -121
  78. package/dist/cjs/components/ReportBuilder/util.d.ts +3 -1
  79. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  80. package/dist/cjs/components/ReportBuilder/util.js +34 -8
  81. package/dist/cjs/components/UiComponents.d.ts +98 -97
  82. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  83. package/dist/cjs/components/UiComponents.js +132 -112
  84. package/dist/cjs/hooks/index.d.ts +1 -0
  85. package/dist/cjs/hooks/index.d.ts.map +1 -1
  86. package/dist/cjs/hooks/index.js +3 -1
  87. package/dist/cjs/hooks/useTheme.d.ts +7 -0
  88. package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
  89. package/dist/cjs/hooks/useTheme.js +12 -0
  90. package/dist/cjs/index.d.ts +10 -2
  91. package/dist/cjs/index.d.ts.map +1 -1
  92. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotList.js +10 -10
  94. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +29 -14
  95. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.js +73 -49
  97. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  98. package/dist/cjs/utils/dataFetcher.js +2 -0
  99. package/dist/cjs/utils/width.d.ts +12 -0
  100. package/dist/cjs/utils/width.d.ts.map +1 -0
  101. package/dist/cjs/utils/width.js +25 -0
  102. package/dist/esm/Chart.d.ts +117 -42
  103. package/dist/esm/Chart.d.ts.map +1 -1
  104. package/dist/esm/Chart.js +45 -19
  105. package/dist/esm/ChartBuilder.d.ts +195 -28
  106. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  107. package/dist/esm/ChartBuilder.js +124 -63
  108. package/dist/esm/ChartEditor.d.ts +114 -18
  109. package/dist/esm/ChartEditor.d.ts.map +1 -1
  110. package/dist/esm/ChartEditor.js +51 -19
  111. package/dist/esm/Dashboard.d.ts +148 -90
  112. package/dist/esm/Dashboard.d.ts.map +1 -1
  113. package/dist/esm/Dashboard.js +49 -153
  114. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  115. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  116. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  117. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  118. package/dist/esm/QuillProvider.d.ts +105 -2
  119. package/dist/esm/QuillProvider.d.ts.map +1 -1
  120. package/dist/esm/QuillProvider.js +59 -0
  121. package/dist/esm/ReportBuilder.d.ts +188 -34
  122. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  123. package/dist/esm/ReportBuilder.js +553 -428
  124. package/dist/esm/SQLEditor.d.ts +158 -29
  125. package/dist/esm/SQLEditor.d.ts.map +1 -1
  126. package/dist/esm/SQLEditor.js +53 -33
  127. package/dist/esm/Table.d.ts +119 -15
  128. package/dist/esm/Table.d.ts.map +1 -1
  129. package/dist/esm/Table.js +38 -7
  130. package/dist/esm/TableChart.d.ts.map +1 -1
  131. package/dist/esm/TableChart.js +0 -194
  132. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  133. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  134. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  135. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  136. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  137. package/dist/esm/components/Chart/LineChart.js +3 -3
  138. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  139. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  140. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  141. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  142. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  143. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  144. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  145. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  146. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  147. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  148. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  149. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  150. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  152. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  153. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  154. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  155. package/dist/esm/components/QuillSelect.d.ts +4 -1
  156. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  157. package/dist/esm/components/QuillSelect.js +14 -9
  158. package/dist/esm/components/QuillTable.d.ts +16 -2
  159. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  160. package/dist/esm/components/QuillTable.js +4 -4
  161. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  162. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  163. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +34 -15
  164. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  165. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  166. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +20 -20
  167. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  168. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  169. package/dist/esm/components/ReportBuilder/AddSortPopover.js +20 -22
  170. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  171. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
  172. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/convert.js +33 -13
  174. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  175. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  176. package/dist/esm/components/ReportBuilder/ui.d.ts +83 -19
  177. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  178. package/dist/esm/components/ReportBuilder/ui.js +67 -119
  179. package/dist/esm/components/ReportBuilder/util.d.ts +3 -1
  180. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/util.js +31 -7
  182. package/dist/esm/components/UiComponents.d.ts +98 -97
  183. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  184. package/dist/esm/components/UiComponents.js +125 -110
  185. package/dist/esm/hooks/index.d.ts +1 -0
  186. package/dist/esm/hooks/index.d.ts.map +1 -1
  187. package/dist/esm/hooks/index.js +1 -0
  188. package/dist/esm/hooks/useTheme.d.ts +7 -0
  189. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  190. package/dist/esm/hooks/useTheme.js +10 -0
  191. package/dist/esm/index.d.ts +10 -2
  192. package/dist/esm/index.d.ts.map +1 -1
  193. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  194. package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
  195. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
  196. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  197. package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
  198. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  199. package/dist/esm/utils/dataFetcher.js +2 -0
  200. package/dist/esm/utils/width.d.ts +12 -0
  201. package/dist/esm/utils/width.d.ts.map +1 -0
  202. package/dist/esm/utils/width.js +21 -0
  203. package/package.json +1 -1
  204. package/dist/cjs/BarList.d.ts.map +0 -1
  205. package/dist/cjs/PieChart.d.ts.map +0 -1
  206. package/dist/esm/BarList.d.ts.map +0 -1
  207. package/dist/esm/PieChart.d.ts.map +0 -1
  208. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  209. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -1,50 +1,180 @@
1
- import React from 'react';
2
- import { ModalComponentProps, TableComponentProps } from './components/UiComponents';
1
+ import React, { ReactNode } from 'react';
2
+ import { DashboardItem } from './Dashboard';
3
3
  export declare function convertPostgresColumn(column: any): {
4
4
  label: any;
5
5
  field: any;
6
6
  format: string;
7
7
  fieldType: string;
8
8
  };
9
- interface ButtonComponentProps {
10
- onClick: () => void;
11
- label: string;
12
- }
13
- interface SQLEditorProps {
14
- containerStyle: React.CSSProperties;
15
- ButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
16
- SecondaryButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
17
- TextInputComponent?: (props: TextInputComponentProps) => JSX.Element;
18
- TableComponent?: (props: TableComponentProps) => JSX.Element;
9
+ /**
10
+ * Props for the Quill SQLEditor component.
11
+ */
12
+ export interface SQLEditorProps {
13
+ /**
14
+ * A primary button component.
15
+ */
16
+ ButtonComponent?: (props: {
17
+ onClick: () => void;
18
+ label: string;
19
+ }) => JSX.Element;
20
+ /**
21
+ * A secondary button component.
22
+ */
23
+ SecondaryButtonComponent?: (props: {
24
+ onClick: () => void;
25
+ label: string;
26
+ }) => JSX.Element;
27
+ /**
28
+ * A input element for getting text from the user.
29
+ */
30
+ TextInputComponent?: (props: {
31
+ id: string;
32
+ width: number;
33
+ value: string;
34
+ placeholder?: string;
35
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
36
+ }) => JSX.Element;
37
+ /**
38
+ * A table component to show the results of the SQL query.
39
+ */
40
+ TableComponent?: (props: {
41
+ rows: {
42
+ [key: string]: any;
43
+ }[];
44
+ columns: {
45
+ field: string;
46
+ label: string;
47
+ }[];
48
+ isLoading?: boolean;
49
+ }) => JSX.Element;
50
+ /**
51
+ * A component to show while the query results are loading.
52
+ */
19
53
  LoadingComponent?: () => JSX.Element;
20
- ModalComponent?: (_props: ModalComponentProps) => JSX.Element;
54
+ /**
55
+ * A modal component to use to open the add to dashboard dialog.
56
+ */
57
+ ModalComponent?: (props: {
58
+ isOpen: boolean;
59
+ setIsOpen: (isOpen: boolean) => void;
60
+ title?: string;
61
+ children: ReactNode;
62
+ width?: number;
63
+ height?: number;
64
+ }) => JSX.Element;
65
+ /**
66
+ * A callback that is fired when the query changes.
67
+ */
21
68
  onChangeQuery?: (query: string) => void;
69
+ /**
70
+ * A callback that is fired when the data changes.
71
+ */
22
72
  onChangeData?: (data: object[]) => void;
23
- onChangeColumns?: (columns: object[]) => void;
73
+ /**
74
+ * A callback that is fired when the data fields change.
75
+ */
24
76
  onChangeFields?: (fields: object[]) => void;
25
- defaultQuery?: string;
26
- chartBuilderEnabled?: boolean;
77
+ /**
78
+ * A callback that is fired when the data columns change.
79
+ */
80
+ onChangeColumns?: (columns: object[]) => void;
81
+ /**
82
+ * A callback that is fired when a dashboard item has been added to a dashboard.
83
+ */
84
+ onAddToDashboardComplete?: () => void;
85
+ /**
86
+ * Whether the chart builder is in horizontal view mode.
87
+ *
88
+ * Horizontal view mode is where the chart and table are displayed on the left
89
+ * and the editing form is displayed on the right, rather than being stacked
90
+ * vertically.
91
+ */
92
+ isChartBuilderHorizontalView?: boolean;
93
+ /**
94
+ * A callback that is fired when the data columns change.
95
+ */
96
+ isChartBuilderEnabled?: boolean;
97
+ /**
98
+ * Whether the "new query" button is enabled.
99
+ */
100
+ isNewQueryEnabled?: boolean;
101
+ /**
102
+ * Whether the SQLEditor is in edit mode.
103
+ */
104
+ isEditMode?: boolean;
105
+ /**
106
+ * Whether to show table format options.
107
+ */
27
108
  showTableFormatOptions?: boolean;
109
+ /**
110
+ * Whether to show date field options.
111
+ */
28
112
  showDateFieldOptions?: boolean;
113
+ /**
114
+ * Whether to show access control options.
115
+ */
29
116
  showAccessControlOptions?: boolean;
117
+ /**
118
+ * A dashboard item.
119
+ */
120
+ dashboardItem?: DashboardItem | any;
121
+ /**
122
+ * The default query to use as a placeholder.
123
+ */
124
+ defaultQuery?: string;
125
+ /**
126
+ * The default dashboard to dashboard items to.
127
+ */
30
128
  destinationDashboard?: string;
31
- newQueryEnabled?: boolean;
32
- isEditMode?: boolean;
33
- dashboardItem?: any;
129
+ /**
130
+ * The title of the ChartBuilder dialog.
131
+ */
34
132
  chartBuilderTitle?: string;
133
+ /**
134
+ * The label of the button to open the ChartBuilder dialog.
135
+ */
35
136
  chartBuilderButtonLabel?: string;
137
+ /**
138
+ * The label of the button to add the current query to a dashboard.
139
+ *
140
+ * @default "Add to dashboard"
141
+ */
36
142
  addToDashboardButtonLabel?: string;
37
- onAddToDashboardComplete?: () => void;
143
+ /**
144
+ * The name of the current organization.
145
+ */
38
146
  organizationName?: string;
39
- chartBuilderHorizontalView?: boolean;
40
- }
41
- interface TextInputComponentProps {
42
- onChange: (e: any) => void;
43
- value: string;
44
- id: string;
45
- placeholder?: string;
147
+ /**
148
+ * Styles the top-level container of the SQLEditor.
149
+ */
150
+ containerStyle?: React.CSSProperties;
46
151
  }
47
- export default function QueryEditor({ containerStyle, ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent, newQueryEnabled, LoadingComponent, ModalComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode, chartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel, dashboardItem, organizationName, chartBuilderHorizontalView, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
152
+ /**
153
+ * ### Quill SQLEditor
154
+ *
155
+ * Allows your users to build and write custom SQL queries and then add those
156
+ * queries into their dashboard as a metric, chart, or table.
157
+ *
158
+ * @example
159
+ * ```js
160
+ * // Usage without custom components
161
+ * <SQLEditor />
162
+ * ```
163
+ *
164
+ * @example
165
+ * ```js
166
+ * // You can also pass your own components and default values.
167
+ * <SQLEditor
168
+ * defaultQuery="SELECT SUM(amount) FROM TRANSACTIONS"
169
+ * ButtonComponen={MyButton}
170
+ * SecondaryButtonComponen={MySecondaryButton}
171
+ * />
172
+ * ```
173
+ *
174
+ * ### SQLEditor API
175
+ * @see https://docs.quillsql.com/components/sql-editor
176
+ */
177
+ export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent, isNewQueryEnabled, LoadingComponent, ModalComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode, isChartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel, dashboardItem, organizationName, isChartBuilderHorizontalView, containerStyle, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
48
178
  export declare const SchemaListComponent: ({ schema, theme, loading, LoadingComponent, width, onClick, }: {
49
179
  schema: any;
50
180
  theme: any;
@@ -53,5 +183,4 @@ export declare const SchemaListComponent: ({ schema, theme, loading, LoadingComp
53
183
  width: any;
54
184
  onClick?: (() => void) | undefined;
55
185
  }) => import("react/jsx-runtime").JSX.Element;
56
- export {};
57
186
  //# sourceMappingURL=SQLEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAMN,MAAM,OAAO,CAAC;AAQf,OAAO,EAGL,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,2BAA2B,CAAC;AAInC,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;EAwE3C;AA2BD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IACrE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC9D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAQD,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuCD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAoC,EACpC,eAAgC,EAChC,wBAAkD,EAClD,kBAAmC,EACnC,cAA2B,EAC3B,eAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAkB,EAClB,mBAA2B,EAC3B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,aAAyB,EACzB,gBAA4B,EAC5B,0BAAkC,GACnC,EAAE,cAAc,2CA+WhB;AA6JD,eAAO,MAAM,mBAAmB;;;;;;;6CAuG/B,CAAC"}
1
+ {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
@@ -5,17 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SchemaListComponent = exports.convertPostgresColumn = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ /* eslint-disable no-unused-vars */
8
9
  // @ts-nocheck
9
10
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
11
  const react_1 = require("react");
11
12
  const react_2 = __importDefault(require("@monaco-editor/react"));
12
- // import './nightOwlLight.css';
13
13
  const Context_1 = require("./Context");
14
- const QuillTable_1 = __importDefault(require("./components/QuillTable"));
15
14
  const dataFetcher_1 = require("./utils/dataFetcher");
16
15
  const ChartBuilder_1 = require("./ChartBuilder");
17
16
  const UiComponents_1 = require("./components/UiComponents");
18
- const ui_1 = require("./components/ReportBuilder/ui");
17
+ const UiComponents_2 = require("./components/UiComponents");
18
+ const width_1 = require("./utils/width");
19
19
  function convertPostgresColumn(column) {
20
20
  let format;
21
21
  let fieldType;
@@ -112,26 +112,32 @@ function setEditorTheme(editor, monaco) {
112
112
  console.log('ERROR: ', e);
113
113
  }
114
114
  }
115
- const QuillButton = ({ onClick, label, theme, secondary, }) => ((0, jsx_runtime_1.jsx)("button", { style: {
116
- borderRadius: '6px',
117
- backgroundColor: secondary
118
- ? theme?.secondaryButtonColor || '#F5F5F5'
119
- : theme?.primaryButtonColor,
120
- opacity: 1,
121
- paddingLeft: '16px',
122
- paddingRight: '16px',
123
- // paddingTop: '10px',
124
- // paddingBottom: '10px',
125
- fontSize: '14px',
126
- fontWeight: 600,
127
- color: secondary ? theme?.primaryTextColor : '#FFFFFF',
128
- cursor: 'pointer',
129
- outline: 'none',
130
- border: 'none',
131
- fontFamily: theme?.fontFamily,
132
- height: 38,
133
- }, onClick: onClick, children: label }));
134
- function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, TextInputComponent = ui_1.QuillTextInput, TableComponent = QuillTable_1.default, newQueryEnabled = false, LoadingComponent, ModalComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode = false, chartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, chartBuilderHorizontalView = false, }) {
115
+ /**
116
+ * ### Quill SQLEditor
117
+ *
118
+ * Allows your users to build and write custom SQL queries and then add those
119
+ * queries into their dashboard as a metric, chart, or table.
120
+ *
121
+ * @example
122
+ * ```js
123
+ * // Usage without custom components
124
+ * <SQLEditor />
125
+ * ```
126
+ *
127
+ * @example
128
+ * ```js
129
+ * // You can also pass your own components and default values.
130
+ * <SQLEditor
131
+ * defaultQuery="SELECT SUM(amount) FROM TRANSACTIONS"
132
+ * ButtonComponen={MyButton}
133
+ * SecondaryButtonComponen={MySecondaryButton}
134
+ * />
135
+ * ```
136
+ *
137
+ * ### SQLEditor API
138
+ * @see https://docs.quillsql.com/components/sql-editor
139
+ */
140
+ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, TextInputComponent = UiComponents_2.QuillTextInput, TableComponent = UiComponents_1.QuillTableComponent, isNewQueryEnabled = false, LoadingComponent, ModalComponent = UiComponents_1.MemoizedModal, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode = false, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, }) {
135
141
  const [sqlPrompt, setSqlPrompt] = (0, react_1.useState)('');
136
142
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
137
143
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
@@ -146,6 +152,20 @@ function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = U
146
152
  const [schemaLoading, setSchemaLoading] = (0, react_1.useState)(false);
147
153
  const [isChartBuilderOpen, setIsChartBuilderOpen] = (0, react_1.useState)(false);
148
154
  const [displayTable, setDisplayTable] = (0, react_1.useState)(false);
155
+ const formRef = (0, react_1.useRef)(null);
156
+ const [searchBarWidth, setSearchBarWidth] = (0, react_1.useState)(200);
157
+ (0, react_1.useEffect)(() => {
158
+ // Since the TextInput component takes a required numeric width parameter,
159
+ // we dynamically calculate the width of this component here.
160
+ function handleResize() {
161
+ (0, width_1.updateFirstChildWidth)(formRef, setSearchBarWidth, { gap: 12 });
162
+ }
163
+ handleResize();
164
+ window.addEventListener('resize', handleResize);
165
+ return () => {
166
+ window.removeEventListener('resize', handleResize);
167
+ };
168
+ }, []);
149
169
  const getSchema = async (isSubscribed) => {
150
170
  setSchemaLoading(true);
151
171
  const { queryEndpoint, queryHeaders, publicKey } = client;
@@ -276,8 +296,8 @@ function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = U
276
296
  onChangeQuery(query);
277
297
  }
278
298
  }, [query]);
279
- return ((0, jsx_runtime_1.jsxs)("div", { style: containerStyle, children: [(!chartBuilderHorizontalView ||
280
- (chartBuilderHorizontalView && !isChartBuilderOpen)) && ((0, jsx_runtime_1.jsx)("div", { style: {
299
+ return ((0, jsx_runtime_1.jsxs)("div", { style: containerStyle, children: [(!isChartBuilderHorizontalView ||
300
+ (isChartBuilderHorizontalView && !isChartBuilderOpen)) && ((0, jsx_runtime_1.jsx)("div", { style: {
281
301
  height: '100%',
282
302
  display: 'flex',
283
303
  flexDirection: 'column',
@@ -295,7 +315,7 @@ function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = U
295
315
  width: 'calc(100% - 290px)',
296
316
  height: '100%',
297
317
  overflowX: 'hidden',
298
- }, children: [(0, jsx_runtime_1.jsxs)("form", { onSubmit: (e) => {
318
+ }, children: [(0, jsx_runtime_1.jsxs)("form", { ref: formRef, onSubmit: (e) => {
299
319
  e.preventDefault();
300
320
  handleRunSqlPrompt();
301
321
  }, style: {
@@ -304,7 +324,7 @@ function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = U
304
324
  gap: 12,
305
325
  paddingTop: 16,
306
326
  paddingBottom: 16,
307
- }, children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: "ai-search", value: sqlPrompt, style: { width: '100%', fontSize: 14 }, onChange: (e) => setSqlPrompt(e.target.value), placeholder: "Ask a question..." }), (ButtonComponent && ((0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: handleRunSqlPrompt, label: "Ask AI" }))) || ((0, jsx_runtime_1.jsx)(QuillButton, { theme: theme, onClick: handleRunSqlPrompt, label: "Ask AI" }))] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 'calc(50% - 40px)' }, children: (0, jsx_runtime_1.jsx)(SQLEditorComponent, { query: query, setQuery: setQuery, handleRunQuery: handleRunQuery, handleFixWithAI: handleFixWithAI, newQueryEnabled: newQueryEnabled, handleClearQuery: handleClearQuery, theme: theme, defineEditorTheme: defineEditorTheme, setEditorTheme: setEditorTheme, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, loading: sqlResponseLoading, LoadingComponent: LoadingComponent }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
327
+ }, children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: "ai-search", value: sqlPrompt, width: searchBarWidth, onChange: (e) => setSqlPrompt(e.target.value), placeholder: "Ask a question..." }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: handleRunSqlPrompt, label: "Ask AI" })] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 'calc(50% - 40px)' }, children: (0, jsx_runtime_1.jsx)(SQLEditorComponent, { query: query, setQuery: setQuery, handleRunQuery: handleRunQuery, handleFixWithAI: handleFixWithAI, isNewQueryEnabled: isNewQueryEnabled, handleClearQuery: handleClearQuery, theme: theme, defineEditorTheme: defineEditorTheme, setEditorTheme: setEditorTheme, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, loading: sqlResponseLoading, LoadingComponent: LoadingComponent }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
308
328
  display: 'flex',
309
329
  flexDirection: 'column',
310
330
  height: 'calc(50% - 108px)',
@@ -329,17 +349,17 @@ function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent = U
329
349
  borderRadius: 6,
330
350
  padding: 20,
331
351
  width: '100%',
332
- }, children: [errorMessage, (SecondaryButtonComponent && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" }))) || ((0, jsx_runtime_1.jsx)(QuillButton, { secondary: true, onClick: handleFixWithAI, label: "Fix with AI", theme: theme }))] }) })), errorMessage || !displayTable ? null : ((0, jsx_runtime_1.jsx)(TableComponent, { rows: rows, columns: columns, containerStyle: { height: 'calc(100%)' }, LoadingComponent: LoadingComponent, loading: sqlQueryLoading }))] }), chartBuilderEnabled && rows.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: {
352
+ }, children: [errorMessage, (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" })] }) })), errorMessage || !displayTable ? null : ((0, jsx_runtime_1.jsx)(TableComponent, { isLoading: sqlQueryLoading, rows: rows, columns: columns }))] }), isChartBuilderEnabled && rows.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: {
333
353
  display: 'flex',
334
354
  flexDirection: 'row',
335
355
  alignItems: 'center',
336
356
  justifyContent: 'flex-end',
337
357
  width: '100%',
338
358
  height: '70px',
339
- }, children: (ButtonComponent && ((0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }))) || ((0, jsx_runtime_1.jsx)(QuillButton, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel, theme: theme })) }))] })] }) }) })), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: columns, fields: fields, query: query, horizontalView: chartBuilderHorizontalView, isEditMode: isEditMode, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, destinationDashboard: destinationDashboard, title: chartBuilderTitle, button: chartBuilderButtonLabel, buttonLabel: addToDashboardButtonLabel, dashboardItem: dashboardItem, organizationName: organizationName, Modal: ModalComponent, Button: ButtonComponent })] }));
359
+ }, children: (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }) }))] })] }) }) })), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: columns, fields: fields, query: query, horizontalView: isChartBuilderHorizontalView, isEditMode: isEditMode, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, destinationDashboard: destinationDashboard, title: chartBuilderTitle, button: chartBuilderButtonLabel, buttonLabel: addToDashboardButtonLabel, dashboardItem: dashboardItem, organizationName: organizationName, Modal: ModalComponent, Button: ButtonComponent })] }));
340
360
  }
341
- exports.default = QueryEditor;
342
- const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI, handleClearQuery, defineEditorTheme, setEditorTheme, ButtonComponent, SecondaryButtonComponent, newQueryEnabled, theme, loading, LoadingComponent, }) => {
361
+ exports.default = SQLEditor;
362
+ const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI, handleClearQuery, defineEditorTheme, setEditorTheme, ButtonComponent, SecondaryButtonComponent, isNewQueryEnabled, theme, loading, LoadingComponent, }) => {
343
363
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
344
364
  background: theme.backgroundColor,
345
365
  // maxHeight: 700,
@@ -374,7 +394,7 @@ const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI,
374
394
  flexDirection: 'row',
375
395
  alignItems: 'center',
376
396
  height: 70,
377
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: 12 }, children: [(ButtonComponent && ((0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: handleRunQuery, label: "Run query" }))) || ((0, jsx_runtime_1.jsx)(QuillButton, { onClick: handleRunQuery, label: "Run query", theme: theme })), newQueryEnabled && ((0, jsx_runtime_1.jsx)("div", { children: (SecondaryButtonComponent && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleClearQuery, label: "Clear query" }))) || ((0, jsx_runtime_1.jsx)(QuillButton, { secondary: true, onClick: handleClearQuery, label: "Clear query", theme: theme })) }))] }) })] }));
397
+ }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: 12 }, children: [(0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: handleRunQuery, label: "Run query" }), isNewQueryEnabled && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleClearQuery, label: "Clear query" }))] }) })] }));
378
398
  };
379
399
  const SchemaListComponent = ({ schema, theme, loading, LoadingComponent, width, onClick = () => { }, }) => {
380
400
  if (loading) {
@@ -3,25 +3,129 @@ export interface TableColumn {
3
3
  label: string;
4
4
  field: string;
5
5
  }
6
- interface ChartIdTableProps {
7
- chartId: string;
8
- containerStyle?: React.CSSProperties;
6
+ /**
7
+ * Props for the Quill Table component.
8
+ */
9
+ export interface TableProps {
10
+ /**
11
+ * The id of the table to render, if any.
12
+ *
13
+ * When a `chartId` is passed, the table will first fetch the data necessary
14
+ * to render this table, and then it will render the rows and columns that it
15
+ * receives from the server.
16
+ *
17
+ * NOTE: A `chartId` must be passed if `rows` and `columns` are not present.
18
+ */
19
+ chartId?: string;
20
+ /**
21
+ * The rows of the table to show, if any.
22
+ *
23
+ * When `rows` and `columns` are passed, the table will not refetch the given
24
+ * dashboard item and will instead simply render the rows and columns it was
25
+ * given.
26
+ *
27
+ * NOTE: Both `rows` and `columns` must be passed if `chartId` is not present.
28
+ *
29
+ * @example
30
+ * ```js
31
+ * let rows = {[
32
+ * { x: 1, y: 1, z: 0 },
33
+ * { x: 2, y: 2, z: 0 },
34
+ * { x: 3, y: 3, z: 0 },
35
+ * { x: 4, y: 4, z: 0 }
36
+ * ]};
37
+ * let columns = {[
38
+ * { label: "My X-Axis", field: "x" },
39
+ * { label: "My Y-Axis", field: "y" }
40
+ * ]}'
41
+ * ```
42
+ */
43
+ rows: {
44
+ [key: string]: any;
45
+ }[];
46
+ /**
47
+ * The columns of the table to show, if any.
48
+ *
49
+ * When `rows` and `columns` are passed, the table will not refetch the given
50
+ * dashboard item and will instead simply render the rows and columns it was
51
+ * given.
52
+ *
53
+ * NOTE: Both `rows` and `columns` must be passed if `chartId` is not present.
54
+ *
55
+ * @example
56
+ * ```js
57
+ * let rows = {[
58
+ * { x: 1, y: 1, z: 0 },
59
+ * { x: 2, y: 2, z: 0 },
60
+ * { x: 3, y: 3, z: 0 },
61
+ * { x: 4, y: 4, z: 0 }
62
+ * ]};
63
+ * let columns = {[
64
+ * { label: "My X-Axis", field: "x" },
65
+ * { label: "My Y-Axis", field: "y" }
66
+ * ]}'
67
+ * ```
68
+ */
69
+ columns: {
70
+ label: string;
71
+ field: string;
72
+ }[];
73
+ /**
74
+ * The placeholder filename to use when downloading this table as a csv file.
75
+ */
9
76
  csvFilename?: string;
77
+ /**
78
+ * Whether to show the download csv button.
79
+ */
10
80
  showDownloadCSVButton?: boolean;
81
+ /**
82
+ * Whether this table component is loading.
83
+ */
84
+ isLoading?: boolean;
85
+ /**
86
+ * A callback that is fired when the user clicks download csv.
87
+ */
88
+ downloadCSV?: () => void;
89
+ /**
90
+ * A loading component to show when the table is loading.
91
+ */
11
92
  LoadingComponent?: () => JSX.Element;
12
- }
13
- interface DataTableProps {
14
- columns: TableColumn[];
15
- rows: object[];
93
+ /**
94
+ * Styles the top-level container of the Table.
95
+ */
16
96
  containerStyle?: React.CSSProperties;
17
- csvFilename?: string;
18
- showDownloadCSVButton?: boolean;
19
- LoadingComponent?: () => JSX.Element;
20
- loading?: boolean;
21
- height?: string;
22
- downloadCSV?: () => void;
23
97
  }
24
- type TableWrapperProps = ChartIdTableProps | DataTableProps;
25
- declare const Table: (data: TableWrapperProps) => import("react/jsx-runtime").JSX.Element;
98
+ /**
99
+ * ### Quill Table
100
+ *
101
+ * A simple component that displays the given data as a table.
102
+ *
103
+ * @example
104
+ * ```js
105
+ * // Usage with chart id (will auto-fetch data)
106
+ * <Table chartId="12345" />
107
+ * ```
108
+ *
109
+ * @example
110
+ * ```js
111
+ * // Usage with rows and columns (will not auto-fetch data)
112
+ * <Table
113
+ * rows={[
114
+ * { x: 1, y: 1, z: 0 },
115
+ * { x: 2, y: 2, z: 0 },
116
+ * { x: 3, y: 3, z: 0 },
117
+ * { x: 4, y: 4, z: 0 }
118
+ * ]}
119
+ * columns={[
120
+ * { label: "My X-Axis", field: "x" },
121
+ * { label: "My Y-Axis", field: "y" }
122
+ * ]}
123
+ * />
124
+ * ```
125
+ *
126
+ * ### Table API
127
+ * @see https://docs.quillsql.com/components/table
128
+ */
129
+ declare const Table: (props: TableProps) => import("react/jsx-runtime").JSX.Element;
26
130
  export default Table;
27
131
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAc/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACtC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,KAAK,iBAAiB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE5D,QAAA,MAAM,KAAK,SAAU,iBAAiB,4CAmCrC,CAAC;AAgGF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CAiC/B,CAAC;AA8FF,eAAe,KAAK,CAAC"}
package/dist/cjs/Table.js CHANGED
@@ -11,17 +11,48 @@ const merge_1 = require("./utils/merge");
11
11
  const QuillTable_1 = __importDefault(require("./components/QuillTable"));
12
12
  const useFormat_1 = require("./hooks/useFormat");
13
13
  const useExport_1 = require("./hooks/useExport");
14
- const Table = (data) => {
14
+ /**
15
+ * ### Quill Table
16
+ *
17
+ * A simple component that displays the given data as a table.
18
+ *
19
+ * @example
20
+ * ```js
21
+ * // Usage with chart id (will auto-fetch data)
22
+ * <Table chartId="12345" />
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```js
27
+ * // Usage with rows and columns (will not auto-fetch data)
28
+ * <Table
29
+ * rows={[
30
+ * { x: 1, y: 1, z: 0 },
31
+ * { x: 2, y: 2, z: 0 },
32
+ * { x: 3, y: 3, z: 0 },
33
+ * { x: 4, y: 4, z: 0 }
34
+ * ]}
35
+ * columns={[
36
+ * { label: "My X-Axis", field: "x" },
37
+ * { label: "My Y-Axis", field: "y" }
38
+ * ]}
39
+ * />
40
+ * ```
41
+ *
42
+ * ### Table API
43
+ * @see https://docs.quillsql.com/components/table
44
+ */
45
+ const Table = (props) => {
46
+ let data = props;
15
47
  const { dispatch, dashboard } = (0, react_1.useContext)(Context_1.DashboardContext);
16
48
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
17
49
  const [client, _] = (0, react_1.useContext)(Context_1.ClientContext);
18
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
19
50
  if ('rows' in data && 'columns' in data) {
20
- return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { showDownloadCSVButton: data.showDownloadCSVButton, downloadFileName: data.csvFilename, columns: data.columns, rows: data.rows, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, loading: data.loading, downloadCSV: data.downloadCSV }));
51
+ return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { showDownloadCSVButton: data.showDownloadCSVButton, downloadFileName: data.csvFilename, columns: data.columns, rows: data.rows, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
21
52
  }
22
- return ((0, jsx_runtime_1.jsx)(ChartUpdater, { showDownloadCSVButton: data.showDownloadCSVButton, dispatch: dispatch, dashboard: dashboard, chartId: data.chartId, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, theme: theme, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent }));
53
+ return ((0, jsx_runtime_1.jsx)(ChartUpdater, { showDownloadCSVButton: data.showDownloadCSVButton, dispatch: dispatch, dashboard: dashboard, chartId: data.chartId, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent }));
23
54
  };
24
- const ChartUpdater = ({ chartId, containerStyle, dashboard, dispatch, client, dashboardFilters, theme, csvFilename, showDownloadCSVButton = true, LoadingComponent, }) => {
55
+ const ChartUpdater = ({ chartId, containerStyle, dashboard, dispatch, client, dashboardFilters, csvFilename, showDownloadCSVButton = true, LoadingComponent, }) => {
25
56
  const { rows, loading } = (0, useFormat_1.useMemoizedRows)(chartId);
26
57
  const { downloadCSV } = (0, useExport_1.useExport)(chartId);
27
58
  (0, react_1.useEffect)(() => {
@@ -74,6 +105,6 @@ const ChartUpdater = ({ chartId, containerStyle, dashboard, dispatch, client, da
74
105
  // @ts-ignore
75
106
  columns: dashboard[chartId]?.columns || [],
76
107
  // @ts-ignore
77
- rows: rows || dashboard[chartId]?.rows || [], containerStyle: containerStyle, LoadingComponent: LoadingComponent, loading: loading, downloadCSV: downloadCSV }));
108
+ rows: rows || dashboard[chartId]?.rows || [], containerStyle: containerStyle, LoadingComponent: LoadingComponent, isLoading: loading, downloadCSV: downloadCSV }));
78
109
  };
79
110
  exports.default = Table;
@@ -1 +1 @@
1
- {"version":3,"file":"TableChart.d.ts","sourceRoot":"","sources":["../../src/TableChart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAqEjD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,KAAA,UAW9C;AAuED,QAAA,MAAM,UAAU,qFAoQf,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"TableChart.d.ts","sourceRoot":"","sources":["../../src/TableChart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,KAAA,UAW9C;AAoED,QAAA,MAAM,UAAU,qFAsEf,CAAC;AAEF,eAAe,UAAU,CAAC"}