@quillsql/react 2.11.16 → 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 (203) 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 +194 -30
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +122 -62
  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 -91
  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 -42
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +466 -394
  23. package/dist/cjs/SQLEditor.d.ts +158 -23
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +35 -30
  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 +9 -3
  61. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +8 -6
  63. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +4 -14
  66. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +15 -17
  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 -18
  76. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  77. package/dist/cjs/components/ReportBuilder/ui.js +52 -100
  78. package/dist/cjs/components/ReportBuilder/util.d.ts +2 -1
  79. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  80. package/dist/cjs/components/ReportBuilder/util.js +16 -9
  81. package/dist/cjs/components/UiComponents.d.ts +86 -86
  82. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  83. package/dist/cjs/components/UiComponents.js +118 -103
  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/esm/Chart.d.ts +117 -42
  100. package/dist/esm/Chart.d.ts.map +1 -1
  101. package/dist/esm/Chart.js +45 -19
  102. package/dist/esm/ChartBuilder.d.ts +194 -30
  103. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  104. package/dist/esm/ChartBuilder.js +122 -62
  105. package/dist/esm/ChartEditor.d.ts +114 -18
  106. package/dist/esm/ChartEditor.d.ts.map +1 -1
  107. package/dist/esm/ChartEditor.js +51 -19
  108. package/dist/esm/Dashboard.d.ts +148 -91
  109. package/dist/esm/Dashboard.d.ts.map +1 -1
  110. package/dist/esm/Dashboard.js +49 -153
  111. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  112. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  113. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  114. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  115. package/dist/esm/QuillProvider.d.ts +105 -2
  116. package/dist/esm/QuillProvider.d.ts.map +1 -1
  117. package/dist/esm/QuillProvider.js +59 -0
  118. package/dist/esm/ReportBuilder.d.ts +188 -42
  119. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  120. package/dist/esm/ReportBuilder.js +468 -396
  121. package/dist/esm/SQLEditor.d.ts +158 -23
  122. package/dist/esm/SQLEditor.d.ts.map +1 -1
  123. package/dist/esm/SQLEditor.js +35 -30
  124. package/dist/esm/Table.d.ts +119 -15
  125. package/dist/esm/Table.d.ts.map +1 -1
  126. package/dist/esm/Table.js +38 -7
  127. package/dist/esm/TableChart.d.ts.map +1 -1
  128. package/dist/esm/TableChart.js +0 -194
  129. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  130. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  131. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  132. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  133. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  134. package/dist/esm/components/Chart/LineChart.js +3 -3
  135. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  136. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  137. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  138. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  139. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  140. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  141. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  142. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  143. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  144. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  145. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  146. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  147. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  148. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  149. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  150. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  152. package/dist/esm/components/QuillSelect.d.ts +4 -1
  153. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  154. package/dist/esm/components/QuillSelect.js +14 -9
  155. package/dist/esm/components/QuillTable.d.ts +16 -2
  156. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  157. package/dist/esm/components/QuillTable.js +4 -4
  158. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
  159. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  160. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +8 -6
  161. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  162. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  163. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +4 -14
  164. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  165. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  166. package/dist/esm/components/ReportBuilder/AddSortPopover.js +17 -19
  167. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  168. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
  169. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  170. package/dist/esm/components/ReportBuilder/convert.js +33 -13
  171. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  172. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/ui.d.ts +83 -18
  174. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  175. package/dist/esm/components/ReportBuilder/ui.js +50 -98
  176. package/dist/esm/components/ReportBuilder/util.d.ts +2 -1
  177. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  178. package/dist/esm/components/ReportBuilder/util.js +14 -8
  179. package/dist/esm/components/UiComponents.d.ts +86 -86
  180. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  181. package/dist/esm/components/UiComponents.js +111 -101
  182. package/dist/esm/hooks/index.d.ts +1 -0
  183. package/dist/esm/hooks/index.d.ts.map +1 -1
  184. package/dist/esm/hooks/index.js +1 -0
  185. package/dist/esm/hooks/useTheme.d.ts +7 -0
  186. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  187. package/dist/esm/hooks/useTheme.js +10 -0
  188. package/dist/esm/index.d.ts +10 -2
  189. package/dist/esm/index.d.ts.map +1 -1
  190. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  191. package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
  192. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
  193. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  194. package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
  195. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  196. package/dist/esm/utils/dataFetcher.js +2 -0
  197. package/package.json +1 -1
  198. package/dist/cjs/BarList.d.ts.map +0 -1
  199. package/dist/cjs/PieChart.d.ts.map +0 -1
  200. package/dist/esm/BarList.d.ts.map +0 -1
  201. package/dist/esm/PieChart.d.ts.map +0 -1
  202. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  203. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable no-unused-vars */
2
3
  import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
3
4
  import { ClientContext, DashboardContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
4
5
  import { getData, getDataFromCloud } from './utils/dataFetcher';
@@ -8,8 +9,8 @@ import { PivotCard } from './internals/ReportBuilder/PivotList';
8
9
  import Chart from './Chart';
9
10
  import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, } from './components/UiComponents';
10
11
  import { mergeComparisonRange } from './utils/merge';
11
- import { QuillSelectComponent } from './components/QuillSelect';
12
12
  import { removeDoubleQuotes, snakeCaseToTitleCase, } from './utils/textProcessing';
13
+ import { QuillSelectComponent } from './components/QuillSelect';
13
14
  const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
14
15
  const POSTGRES_DATE_TYPES = [
15
16
  'timestamp',
@@ -137,18 +138,76 @@ const formatOptions = [
137
138
  { value: 'percent', label: 'percent' },
138
139
  { value: 'string', label: 'string' },
139
140
  ];
141
+ /**
142
+ * ### Quill Chart Builder with Modal
143
+ *
144
+ * Renders a ChartBuilder component with a modal.
145
+ *
146
+ * @example
147
+ * ```js
148
+ * // Usage without custom components
149
+ * <ChartBuilder />
150
+ * ```
151
+ *
152
+ * @example
153
+ * ```js
154
+ * // You can also pass your own components
155
+ * <ChartBuilder
156
+ * ButtonComponent={MyButton}
157
+ * SecondaryButtonComponent={MySecondaryButton}
158
+ * />
159
+ * ```
160
+ *
161
+ * ### Chart Builder API
162
+ * @see https://docs.quillsql.com/components/chart-builder#with-modal
163
+ */
140
164
  export function ChartBuilderWithModal(props) {
141
- const [theme] = useContext(ThemeContext);
142
- const Modal = props.Modal ?? MemoizedModal;
143
- const { isOpen, setIsOpen, title, horizontalView, ...rest } = props;
144
- return (_jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, onClose: () => setIsOpen(false), title: title || 'Add to dashboard', style: horizontalView
145
- ? {
146
- width: 'calc(100vw - 80px)',
147
- height: 'calc(100vh - 80px)',
148
- }
149
- : {}, theme: theme, ...rest, children: _jsx(ChartBuilder, { ...props }) }));
165
+ const parentRef = useRef(null);
166
+ const [modalWidth, setModalWidth] = useState(200);
167
+ const [modalHeight, setModalHeight] = useState(200);
168
+ const { isOpen, setIsOpen, title, isHorizontalView } = props;
169
+ const Modal = props.ModalComponent ?? MemoizedModal;
170
+ useEffect(() => {
171
+ function handleResize() {
172
+ setModalWidth(window.innerWidth - 80);
173
+ setModalHeight(window.innerHeight - 80);
174
+ }
175
+ handleResize();
176
+ window.addEventListener('resize', handleResize);
177
+ return () => {
178
+ window.removeEventListener('resize', handleResize);
179
+ };
180
+ }, []);
181
+ return (_jsx("div", { ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
182
+ // For isHorizontalView, use full viewport size minus 80px for padding,
183
+ // otherwise use the default layout method of the modal (contents).
184
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { ...props }) }) }));
150
185
  }
151
- export default function ChartBuilder({ TextInput = QuillTextInput, Select = QuillSelectComponent, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, Header = MemoizedHeader, Label = MemoizedLabel, DeleteButton = MemoizedDeleteButton, Text = MemoizedText, Popover = MemoizedPopover, isOpen, isEditMode = false, horizontalView = false, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, formHeaderStyle, formLabelStyle, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, }) {
186
+ /**
187
+ * ### Quill Chart Builder
188
+ *
189
+ * A simple form that lets users turn a SQL query into a chart, metric, or table
190
+ * and then add that dashboard item into one of their dashboards.
191
+ *
192
+ * @example
193
+ * ```js
194
+ * // Usage without custom components
195
+ * <ChartBuilder />
196
+ * ```
197
+ *
198
+ * @example
199
+ * ```js
200
+ * // You can also pass your own components
201
+ * <ChartBuilder
202
+ * ButtonComponent={MyButton}
203
+ * SecondaryButtonComponent={MySecondaryButton}
204
+ * />
205
+ * ```
206
+ *
207
+ * ### Chart Builder API
208
+ * @see https://docs.quillsql.com/components/chart-builder
209
+ */
210
+ export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, }) {
152
211
  const dateRange = dr || [null, null, null];
153
212
  const [client] = useContext(ClientContext);
154
213
  const [theme] = useContext(ThemeContext);
@@ -368,6 +427,12 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
368
427
  }
369
428
  const result = await getReferencedTables(client, query, schema, true);
370
429
  setDateFieldOptions(result);
430
+ if (result[0] && result[0].columns[0]) {
431
+ setDefaultDateField({
432
+ table: result[0].name,
433
+ field: result[0].columns[0].name,
434
+ });
435
+ }
371
436
  const allReferencedFields = await getReferencedTables(client, query, schema, false);
372
437
  setAllTables(allReferencedFields.map((table) => table.name));
373
438
  setTableName(result[0]?.name);
@@ -571,7 +636,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
571
636
  dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields. This feature is not applicable to pie charts. We recommend switching to a column or bar chart instead.`);
572
637
  }
573
638
  if (dashboardHasDateFilter &&
574
- (!defaultDateField ||
639
+ ((!defaultDateField.table && !defaultDateField.field) ||
575
640
  (!formData.dateField.field && !formData.dateField.table))) {
576
641
  dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field. It is not recommended to add this chart because the global filter cannot be applied.`);
577
642
  }
@@ -664,79 +729,79 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
664
729
  display: 'flex',
665
730
  padding: modalPadding,
666
731
  gap: '20px',
667
- flexDirection: horizontalView ? 'row' : 'column',
732
+ flexDirection: isHorizontalView ? 'row' : 'column',
668
733
  boxSizing: 'border-box',
669
734
  }, children: [_jsxs("div", { style: {
670
735
  display: 'flex',
671
736
  flexDirection: 'column',
672
737
  gap: '20px',
673
- ...(horizontalView && {
738
+ ...(isHorizontalView && {
674
739
  flexGrow: 1,
675
740
  maxWidth: !isOpen ? '100%' : 'calc(100% - 665px - 20px)', // width of left sidebar plus gap
676
741
  }),
677
- }, children: [(!horizontalView || formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
742
+ }, children: [(!isHorizontalView || formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
678
743
  width: '100%',
679
744
  height: formData.chartType === 'metric'
680
745
  ? 100
681
- : horizontalView
746
+ : isHorizontalView
682
747
  ? '100%'
683
748
  : 400,
684
- ...(horizontalView && { flexGrow: 1 }),
749
+ ...(isHorizontalView && { flexGrow: 1 }),
685
750
  } })),
686
751
  // Make sure to display non-pivoted table when using pivot chart
687
- horizontalView && formData.chartType !== 'table' ? (_jsx(Chart, { config: {
752
+ isHorizontalView && formData.chartType !== 'table' ? (_jsx(Chart, { config: {
688
753
  ...formData,
689
754
  pivot: undefined,
690
755
  chartType: 'table',
691
756
  rows,
692
- rowsPerPage: 20,
757
+ rowsPerPage: 10,
693
758
  }, containerStyle: {
694
759
  height: '100%',
695
760
  width: '100%',
696
761
  flexGrow: 1,
697
- } })) : (horizontalView && (_jsx(Chart, { config: {
762
+ } })) : (isHorizontalView && (_jsx(Chart, { config: {
698
763
  ...formData,
699
764
  chartType: 'table',
700
765
  rows,
701
- rowsPerPage: 20,
766
+ rowsPerPage: 10,
702
767
  }, containerStyle: {
703
768
  height: '100%',
704
769
  width: '100%',
705
770
  flexGrow: 1,
706
- } })))] }), (isOpen || !horizontalView) && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
771
+ } })))] }), (isOpen || !isHorizontalView) && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
707
772
  display: 'flex',
708
773
  flexDirection: 'column',
709
774
  height: '100%',
710
- ...(horizontalView && {
775
+ ...(isHorizontalView && {
711
776
  minWidth: 665,
712
777
  maxWidth: 665,
713
778
  width: 665,
714
779
  gap: 20,
715
780
  }),
716
- }, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Name" }), _jsx(TextInput, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Dashboard" }), _jsx(Select, { value: formData.dashboardName || '', onChange: async (e) => {
717
- await updateDashboardFilters(e);
718
- handleChange(e, 'dashboardName');
781
+ }, children: [_jsxs("div", { style: { overflow: 'auto' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Name" }), _jsx(TextInputComponent, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Dashboard" }), _jsx(SelectComponent, { value: formData.dashboardName || '', onChange: async (e) => {
782
+ handleChange(e.target.value, 'dashboardName');
783
+ await updateDashboardFilters(e.target.value);
719
784
  }, options: dashboardOptions.map((elem) => ({
720
785
  label: elem.label,
721
786
  value: elem.label,
722
- })), theme: theme })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Chart type" }), _jsx(Select, { value: formData.chartType, onChange: (e) => handleChange(e, 'chartType'),
787
+ })) })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Chart type" }), _jsx(SelectComponent, { value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
723
788
  // filter out metric for all pivots
724
789
  // filter out bar and pie for row and column pivot
725
- options: getChartTypeOptions(formData), theme: theme })] })] }), _jsx("br", {}), _jsxs("div", { style: {
790
+ options: getChartTypeOptions(formData) })] })] }), _jsx("br", {}), _jsxs("div", { style: {
726
791
  display: 'flex',
727
792
  flexDirection: 'column',
728
793
  gap: 12,
729
794
  marginTop: 6,
730
- }, children: [_jsx(Header, { children: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
795
+ }, children: [_jsx(HeaderComponent, { label: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
731
796
  maxWidth: 200,
732
797
  // marginTop: 6,
733
798
  display: 'flex',
734
799
  flexDirection: 'column',
735
- }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: Select, ButtonComponent: Button, SecondaryButtonComponent: SecondaryButton, PopoverComponent: Popover, LabelComponent: Label, TextComponent: Text, HeaderComponent: Header, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && (_jsx("div", { style: {
800
+ }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && (_jsx("div", { style: {
736
801
  // width: 592,
737
802
  paddingRight: 42,
738
803
  maxWidth: 750,
739
- }, children: _jsx("div", { style: { width: !horizontalView ? divWidth : 'auto' }, children: _jsx(PivotCard, { pivotTable: {
804
+ }, children: _jsx("div", { style: { width: !isHorizontalView ? divWidth : 'auto' }, children: _jsx(PivotCard, { pivotTable: {
740
805
  pivot: formData.pivot,
741
806
  rows: selectedPivotTable?.rows,
742
807
  columns: selectedPivotTable?.columns,
@@ -748,29 +813,29 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
748
813
  setPivotValueField(formData.pivot?.valueField);
749
814
  setPivotAggregation(formData.pivot?.aggregationType);
750
815
  setPivotPopUpTitle('Edit Pivot');
751
- }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: Button, HeaderComponent: Header, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: Label, TextComponent: Text }) }) }))] })] }), _jsx("br", {}), (formData.pivot || formData.chartType !== 'table') && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
816
+ }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), _jsx("br", {}), (formData.pivot || formData.chartType !== 'table') && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
752
817
  display: 'flex',
753
818
  flexDirection: 'column',
754
819
  gap: 6,
755
820
  marginTop: 6,
756
- }, children: _jsx(Header, { children: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(Label, { children: CHART_TO_LABELS[formData.chartType]?.xAxisLabel }), _jsxs("div", { style: {
821
+ }, children: _jsx(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), _jsxs("div", { style: {
757
822
  display: 'flex',
758
823
  flexDirection: 'row',
759
824
  gap: 12,
760
- }, children: [_jsx(Select, { value: formData.xAxisField, onChange: (e) => handleChange(e, 'xAxisField'), options: formData.pivot
825
+ }, children: [_jsx(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
761
826
  ? getPivotMetricOptions(formData.pivot)
762
827
  : fieldOptions.map((elem) => ({
763
828
  label: elem.field,
764
829
  value: elem.field,
765
- })), theme: theme }), _jsx(TextInput, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
830
+ })) }), _jsx(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
766
831
  ? formData.pivot.rowField
767
- : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(Select, { value: formData.pivot &&
832
+ : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(SelectComponent, { value: formData.pivot &&
768
833
  isDateField(formData.pivot.rowFieldType)
769
834
  ? 'pivot_date'
770
- : formData.xAxisFormat, onChange: (e) => handleChange(e, 'xAxisFormat'), options: formData.pivot &&
835
+ : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
771
836
  isDateField(formData.pivot.rowFieldType)
772
837
  ? [{ value: 'pivot_date', label: 'date' }]
773
- : formatOptions, theme: theme })] }, 'xAxisField'), _jsx("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(Label, { children: CHART_TO_LABELS[formData.chartType]?.yAxisLabel }), _jsx("div", { style: {
838
+ : formatOptions })] }, 'xAxisField'), _jsx("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsx("div", { style: {
774
839
  display: 'flex',
775
840
  flexDirection: 'column',
776
841
  gap: 10,
@@ -778,9 +843,9 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
778
843
  display: 'flex',
779
844
  flexDirection: 'row',
780
845
  gap: 12,
781
- }, children: [_jsx(Select, { value: formData.pivot
846
+ }, children: [_jsx(SelectComponent, { value: formData.pivot
782
847
  ? formData.pivot.valueField
783
- : yAxisField.field, onChange: (e) => handleChange(e, 'yAxisFields.field', index), theme: theme, options: formData.pivot
848
+ : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
784
849
  ? [
785
850
  {
786
851
  label: `Pivot Column (${formData.pivot.valueField})`,
@@ -794,21 +859,21 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
794
859
  .map((elem) => ({
795
860
  label: elem.field,
796
861
  value: elem.field,
797
- })) }), _jsx(TextInput, { id: "chart-builder-y-axis-label", width: 200, value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(Select, { theme: theme, value: formData.pivot
862
+ })) }), _jsx(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(SelectComponent, { value: formData.pivot
798
863
  ? NUMBER_OPTIONS.find((option) => {
799
864
  return (option.value === yAxisField.format);
800
865
  })
801
866
  ? // @ts-ignore
802
867
  NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
803
868
  : 'whole_number'
804
- : yAxisField.format, onChange: (e) => handleChange(e, 'yAxisFields.format', index), options: formData.pivot
869
+ : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
805
870
  ? NUMBER_OPTIONS
806
- : formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef, children: _jsx(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && (_jsxs(_Fragment, { children: [_jsx("br", {}), _jsx(SecondaryButton, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), _jsx("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && (_jsxs("div", { children: [_jsxs("div", { style: {
871
+ : formatOptions }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && (_jsxs(_Fragment, { children: [_jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), _jsx("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && (_jsxs("div", { children: [_jsxs("div", { style: {
807
872
  display: 'flex',
808
873
  flexDirection: 'column',
809
874
  gap: 6,
810
875
  marginTop: 6,
811
- }, children: [_jsx(Header, { children: "Table" }), _jsx(Label, { children: "Columns" })] }), _jsx("div", { style: {
876
+ }, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(LabelComponent, { label: "Columns" })] }), _jsx("div", { style: {
812
877
  display: 'flex',
813
878
  flexDirection: 'column',
814
879
  gap: 10,
@@ -821,10 +886,10 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
821
886
  display: 'flex',
822
887
  flexDirection: 'row',
823
888
  gap: 12,
824
- }, children: [_jsx(Select, { theme: theme, value: column.label, onChange: (e) => handleChange(e, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
889
+ }, children: [_jsx(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
825
890
  label: elem.label,
826
891
  value: elem.label,
827
- })) }), _jsx(TextInput, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(Select, { theme: theme, value:
892
+ })) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value:
828
893
  // The first index use rowField for the rest of them use value fields
829
894
  formData.pivot &&
830
895
  column.field === formData.pivot.rowField
@@ -833,7 +898,7 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
833
898
  ? 'pivot_date'
834
899
  : 'string'
835
900
  : formData.pivot?.valueFieldType ||
836
- 'whole_number', onChange: (e) => handleChange(e, 'pivotColumn', index), options: formData.pivot && index === 0
901
+ 'whole_number', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
837
902
  ? isDateField(formData.pivot.rowFieldType)
838
903
  ? [{ label: 'date', value: 'pivot_date' }]
839
904
  : [{ label: 'string', value: 'string' }]
@@ -842,22 +907,22 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
842
907
  display: 'flex',
843
908
  flexDirection: 'row',
844
909
  gap: 12,
845
- }, children: [_jsx(Select, { theme: theme, value: column.field, onChange: (e) => handleChange(e, 'columns.field', index), options: fields.map((elem) => ({
910
+ }, children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: fields.map((elem) => ({
846
911
  label: elem.field,
847
912
  value: elem.field,
848
- })) }), _jsx(TextInput, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(Select, { theme: theme, value: column.format, onChange: (e) => handleChange(e, 'columns.format', index), options: formatOptions }), _jsx("div", { ref: deleteRef, children: _jsx(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), _jsx("br", {}), _jsx(SecondaryButton, { onClick: () => handleAddField('columns'), label: "Add column +" }), _jsx("br", {}), _jsx("br", {})] })), showDateFieldOptions && formData.dateField && (_jsxs("div", { style: {
913
+ })) }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), _jsx("br", {}), _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), _jsx("br", {}), _jsx("br", {})] })), showDateFieldOptions && formData.dateField && (_jsxs("div", { style: {
849
914
  display: 'flex',
850
915
  flexDirection: 'column',
851
916
  gap: 6,
852
917
  marginTop: 6,
853
- }, children: [_jsx(Header, { children: "Date field" }), _jsxs("div", { style: {
918
+ }, children: [_jsx(HeaderComponent, { label: "Date field" }), _jsxs("div", { style: {
854
919
  display: 'flex',
855
920
  flexDirection: 'row',
856
921
  gap: 12,
857
- }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Table" }), _jsx(Select, { theme: theme, value: formData.dateField?.table, onChange: (e) => handleChange(e, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
922
+ }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Table" }), _jsx(SelectComponent, { value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
858
923
  label: elem.name,
859
924
  value: elem.name,
860
- })) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Field" }), _jsx(Select, { theme: theme, value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e, 'dateField.field'), options: dateFieldOptions
925
+ })) })] }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(LabelComponent, { label: "Field" }), _jsx(SelectComponent, { value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
861
926
  ?.find((elem) => elem.name === formData.dateField?.table)
862
927
  ?.columns?.map((elem) => ({
863
928
  label: elem.name,
@@ -867,13 +932,13 @@ export default function ChartBuilder({ TextInput = QuillTextInput, Select = Quil
867
932
  flexDirection: 'column',
868
933
  gap: 12,
869
934
  marginTop: 6,
870
- }, children: [_jsx(Header, { children: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), _jsxs("div", { style: {
935
+ }, children: [_jsx(HeaderComponent, { label: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), _jsxs("div", { style: {
871
936
  display: 'flex',
872
937
  flexDirection: 'row',
873
938
  justifyContent: 'flex-end',
874
939
  marginTop: 'auto',
875
940
  gap: 10,
876
- }, children: [!horizontalView && dashboardItem && (_jsx(SecondaryButton, { onClick: deleteChart, label: 'Delete' })), _jsx(Button, { onClick: () => editChart(), label: buttonLabel
941
+ }, children: [!isHorizontalView && dashboardItem && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), _jsx(ButtonComponent, { onClick: () => editChart(), label: buttonLabel
877
942
  ? buttonLabel
878
943
  : dashboardItem
879
944
  ? 'Save changes'
@@ -942,21 +1007,16 @@ function SegmentedControl({ onChange, value, theme, organizationName, }) {
942
1007
  ` }), organizationName] }))] }));
943
1008
  }
944
1009
  export function DashboardFilterModal({ isOpen, setIsOpen, override, theme, issues, }) {
945
- return (_jsx(MemoizedModal, { isOpen: isOpen, onClose: () => {
946
- setIsOpen(false);
947
- }, setIsOpen: setIsOpen, theme: theme, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
1010
+ return (_jsx(MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', children: _jsxs("div", { style: {
948
1011
  display: 'flex',
949
1012
  flexDirection: 'column',
950
1013
  width: '600px',
951
1014
  padding: '20px',
952
1015
  boxSizing: 'border-box',
953
- }, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}), _jsxs("div", { style: {
1016
+ }, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("br", {}), _jsx("div", { style: {
954
1017
  display: 'flex',
955
1018
  flexDirection: 'row',
956
1019
  gap: '12px',
957
1020
  justifyContent: 'flex-end',
958
- }, children: [_jsx(MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }), _jsx(MemoizedSecondaryButton, { label: "Override", onClick: () => {
959
- override();
960
- setIsOpen(false);
961
- } })] })] }) }));
1021
+ }, children: _jsx(MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
962
1022
  }
@@ -1,29 +1,125 @@
1
- /// <reference types="react" />
2
- import { SelectComponentProps, TextInputComponentProps, ButtonComponentProps, ModalComponentProps, HeaderProps, LabelProps, TextProps, DeleteButtonProps, PopoverComponentProps } from './components/UiComponents';
3
- interface ChartEditorProps {
1
+ import React, { ReactNode } from 'react';
2
+ /**
3
+ * Props for the Quill ChartEditor component.
4
+ */
5
+ export interface ChartEditorProps {
6
+ /** Whether the modal is open. */
4
7
  isOpen: boolean;
8
+ /** A callback that sets the isOpen state. */
9
+ setIsOpen: (isOpen: boolean) => void;
10
+ /** The id of the chart that is being edited. */
5
11
  chartId: string;
6
- admin?: boolean;
12
+ /** Whether the editor has administrative priveleges. */
13
+ isAdmin?: boolean;
14
+ /** Whether the editor is editing an existing query. */
7
15
  isEditMode?: boolean;
16
+ /** The title of the chart builder form. */
8
17
  chartBuilderTitle?: string;
18
+ /** The button label for the chart builder. */
9
19
  chartBuilderButtonLabel?: string;
20
+ /**
21
+ * A callback that is fired when the add to dashboard flow has been completed.
22
+ */
10
23
  onAddToDashboardComplete?: () => void;
24
+ /** A callback that is fired when the item is deleted. */
11
25
  onDelete?: () => void;
12
- setIsOpen: (isOpen: boolean) => void;
13
- Select?: (props: SelectComponentProps) => JSX.Element;
14
- TextInput?: (props: TextInputComponentProps) => JSX.Element;
15
- Button?: (props: ButtonComponentProps) => JSX.Element;
16
- SecondaryButton?: (props: ButtonComponentProps) => JSX.Element;
17
- Header?: (props: HeaderProps) => JSX.Element;
18
- Label?: (props: LabelProps) => JSX.Element;
19
- Text?: (props: TextProps) => JSX.Element;
20
- DeleteButton?: (props: DeleteButtonProps) => JSX.Element;
21
- Modal?: (props: ModalComponentProps) => JSX.Element;
22
- Popover?: (props: PopoverComponentProps) => JSX.Element;
26
+ /** A select component. */
27
+ SelectComponent?: (props: {
28
+ value: string;
29
+ label?: string;
30
+ options: {
31
+ value: string;
32
+ label: string;
33
+ }[];
34
+ onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
35
+ }) => JSX.Element;
36
+ /** An input component to get text from your users. */
37
+ TextInputComponent?: (props: {
38
+ id: string;
39
+ width: number;
40
+ value: string;
41
+ placeholder?: string;
42
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
43
+ }) => JSX.Element;
44
+ /** A button component. */
45
+ ButtonComponent?: (props: {
46
+ onClick: () => void;
47
+ label: string;
48
+ }) => JSX.Element;
49
+ /** A secondary button. */
50
+ SecondaryButtonComponent?: (props: {
51
+ onClick: () => void;
52
+ label: string;
53
+ }) => JSX.Element;
54
+ /**
55
+ * A small delete button used to click out of things. Usually an "X" icon.
56
+ */
57
+ DeleteButtonComponent?: (props: {
58
+ onClick: () => void;
59
+ }) => JSX.Element;
60
+ /** A header component. */
61
+ HeaderComponent?: (props: {
62
+ label: string;
63
+ }) => JSX.Element;
64
+ /** A label component. */
65
+ LabelComponent?: (props: {
66
+ label: string;
67
+ }) => JSX.Element;
68
+ /** A text component. */
69
+ TextComponent?: (props: {
70
+ label: string;
71
+ }) => JSX.Element;
72
+ /**
73
+ * A modal component.
74
+ */
75
+ ModalComponent?: (props: {
76
+ isOpen: boolean;
77
+ setIsOpen: (isOpen: boolean) => void;
78
+ title?: string | undefined;
79
+ children: ReactNode;
80
+ width?: number | undefined;
81
+ height?: number | undefined;
82
+ }) => JSX.Element;
83
+ /** A popover component. */
84
+ PopoverComponent?: (props: {
85
+ isOpen: boolean;
86
+ setIsOpen: (isOpen: boolean) => void;
87
+ triggerLabel?: string;
88
+ popoverTitle?: string;
89
+ popoverChildren: ReactNode;
90
+ }) => JSX.Element;
91
+ /** The default dashboard to add the item to. */
23
92
  destinationDashboard?: string;
93
+ /** The name of the current organization. */
24
94
  organizationName?: string;
25
- horizontalView?: boolean;
95
+ /** Whether the ChartBuilder is in horizontal view mode. */
96
+ isHorizontalView?: boolean;
26
97
  }
27
- export default function ChartEditor({ isOpen, chartId, isEditMode, admin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, horizontalView, onDelete, setIsOpen, Select, TextInput, Button, SecondaryButton, Header, Label, Text, DeleteButton, Modal, Popover, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
28
- export {};
98
+ /**
99
+ * ### Quill Chart Editor
100
+ *
101
+ * Presents the Quill Chart Builder form as a modal.
102
+ *
103
+ * @example
104
+ * ```js
105
+ * // Usage without custom components
106
+ * <ChartEditor isOpen={true} chartId="1234" />
107
+ * ```
108
+ *
109
+ * @example
110
+ * ```js
111
+ * // You can also pass your own components
112
+ * <ChartEditor
113
+ * isOpen={isOpen}
114
+ * setIsOpen={setIsOpen}
115
+ * chartId="1234"
116
+ * Button={MyButton}
117
+ * Modal={MyModal}
118
+ * />
119
+ * ```
120
+ *
121
+ * ### Chart Editor API
122
+ * @see https://docs.quillsql.com/components/chart-editor
123
+ */
124
+ export default function ChartEditor({ isOpen, chartId, isAdmin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, isHorizontalView, onDelete, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, LabelComponent, TextComponent, DeleteButtonComponent, ModalComponent, PopoverComponent, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
29
125
  //# sourceMappingURL=ChartEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":";AASA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAKnC,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,GAAG,CAAC,OAAO,CAAC;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAa,EACb,oBAAoB,EACpB,iBAAgC,EAChC,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,eAAe,EACf,MAAM,EACN,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,GACR,EAAE,gBAAgB,2CA6LlB"}
1
+ {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"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"}