@quillsql/react 2.11.16 → 2.11.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/cjs/Chart.d.ts +109 -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 +204 -30
  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 +123 -19
  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 +51 -159
  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 +194 -42
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +563 -416
  23. package/dist/cjs/SQLEditor.d.ts +160 -23
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +36 -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/QuillCard.d.ts +2 -7
  55. package/dist/cjs/components/QuillCard.d.ts.map +1 -1
  56. package/dist/cjs/components/QuillCard.js +15 -9
  57. package/dist/cjs/components/QuillSelect.d.ts +4 -1
  58. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  59. package/dist/cjs/components/QuillSelect.js +13 -8
  60. package/dist/cjs/components/QuillTable.d.ts +16 -2
  61. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  62. package/dist/cjs/components/QuillTable.js +4 -4
  63. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
  64. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +10 -6
  66. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  67. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +5 -15
  69. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  70. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  71. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +15 -17
  72. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  73. package/dist/cjs/components/ReportBuilder/convert.d.ts +3 -1
  74. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/convert.js +60 -21
  76. package/dist/cjs/components/ReportBuilder/operators.d.ts +15 -10
  77. package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -1
  78. package/dist/cjs/components/ReportBuilder/operators.js +23 -10
  79. package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
  80. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
  81. package/dist/cjs/components/ReportBuilder/ui.d.ts +82 -18
  82. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  83. package/dist/cjs/components/ReportBuilder/ui.js +55 -103
  84. package/dist/cjs/components/ReportBuilder/util.d.ts +10 -4
  85. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  86. package/dist/cjs/components/ReportBuilder/util.js +124 -71
  87. package/dist/cjs/components/UiComponents.d.ts +81 -87
  88. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  89. package/dist/cjs/components/UiComponents.js +76 -103
  90. package/dist/cjs/hooks/index.d.ts +1 -0
  91. package/dist/cjs/hooks/index.d.ts.map +1 -1
  92. package/dist/cjs/hooks/index.js +3 -1
  93. package/dist/cjs/hooks/useTheme.d.ts +7 -0
  94. package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
  95. package/dist/cjs/hooks/useTheme.js +12 -0
  96. package/dist/cjs/index.d.ts +10 -2
  97. package/dist/cjs/index.d.ts.map +1 -1
  98. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +5 -2
  99. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  100. package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -21
  101. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +30 -14
  102. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  103. package/dist/cjs/internals/ReportBuilder/PivotModal.js +77 -52
  104. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  105. package/dist/cjs/utils/dataFetcher.js +2 -0
  106. package/dist/cjs/utils/parserBigQuery.d.ts +6 -0
  107. package/dist/cjs/utils/parserBigQuery.d.ts.map +1 -0
  108. package/dist/cjs/utils/parserBigQuery.js +60 -0
  109. package/dist/cjs/utils/parserPostgres.d.ts +3 -0
  110. package/dist/cjs/utils/parserPostgres.d.ts.map +1 -0
  111. package/dist/cjs/utils/parserPostgres.js +42 -0
  112. package/dist/esm/Chart.d.ts +109 -42
  113. package/dist/esm/Chart.d.ts.map +1 -1
  114. package/dist/esm/Chart.js +45 -19
  115. package/dist/esm/ChartBuilder.d.ts +204 -30
  116. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  117. package/dist/esm/ChartBuilder.js +124 -63
  118. package/dist/esm/ChartEditor.d.ts +123 -19
  119. package/dist/esm/ChartEditor.d.ts.map +1 -1
  120. package/dist/esm/ChartEditor.js +51 -19
  121. package/dist/esm/Dashboard.d.ts +148 -91
  122. package/dist/esm/Dashboard.d.ts.map +1 -1
  123. package/dist/esm/Dashboard.js +54 -160
  124. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  125. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  126. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  127. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  128. package/dist/esm/QuillProvider.d.ts +105 -2
  129. package/dist/esm/QuillProvider.d.ts.map +1 -1
  130. package/dist/esm/QuillProvider.js +59 -0
  131. package/dist/esm/ReportBuilder.d.ts +194 -42
  132. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  133. package/dist/esm/ReportBuilder.js +566 -419
  134. package/dist/esm/SQLEditor.d.ts +160 -23
  135. package/dist/esm/SQLEditor.d.ts.map +1 -1
  136. package/dist/esm/SQLEditor.js +36 -30
  137. package/dist/esm/Table.d.ts +119 -15
  138. package/dist/esm/Table.d.ts.map +1 -1
  139. package/dist/esm/Table.js +38 -7
  140. package/dist/esm/TableChart.d.ts.map +1 -1
  141. package/dist/esm/TableChart.js +0 -194
  142. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  143. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  144. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  145. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  146. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  147. package/dist/esm/components/Chart/LineChart.js +3 -3
  148. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  149. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  150. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  151. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  152. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  153. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  154. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  155. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  156. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  157. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  158. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  159. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  160. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  161. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  162. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  163. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  164. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  165. package/dist/esm/components/QuillCard.d.ts +2 -7
  166. package/dist/esm/components/QuillCard.d.ts.map +1 -1
  167. package/dist/esm/components/QuillCard.js +15 -9
  168. package/dist/esm/components/QuillSelect.d.ts +4 -1
  169. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  170. package/dist/esm/components/QuillSelect.js +14 -9
  171. package/dist/esm/components/QuillTable.d.ts +16 -2
  172. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  173. package/dist/esm/components/QuillTable.js +4 -4
  174. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +9 -3
  175. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  176. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +10 -6
  177. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +13 -1
  178. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  179. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +5 -15
  180. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +21 -1
  181. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  182. package/dist/esm/components/ReportBuilder/AddSortPopover.js +17 -19
  183. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  184. package/dist/esm/components/ReportBuilder/convert.d.ts +3 -1
  185. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  186. package/dist/esm/components/ReportBuilder/convert.js +51 -13
  187. package/dist/esm/components/ReportBuilder/operators.d.ts +15 -10
  188. package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -1
  189. package/dist/esm/components/ReportBuilder/operators.js +23 -10
  190. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  191. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  192. package/dist/esm/components/ReportBuilder/ui.d.ts +82 -18
  193. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  194. package/dist/esm/components/ReportBuilder/ui.js +53 -101
  195. package/dist/esm/components/ReportBuilder/util.d.ts +10 -4
  196. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  197. package/dist/esm/components/ReportBuilder/util.js +114 -67
  198. package/dist/esm/components/UiComponents.d.ts +81 -87
  199. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  200. package/dist/esm/components/UiComponents.js +71 -102
  201. package/dist/esm/hooks/index.d.ts +1 -0
  202. package/dist/esm/hooks/index.d.ts.map +1 -1
  203. package/dist/esm/hooks/index.js +1 -0
  204. package/dist/esm/hooks/useTheme.d.ts +7 -0
  205. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  206. package/dist/esm/hooks/useTheme.js +10 -0
  207. package/dist/esm/index.d.ts +10 -2
  208. package/dist/esm/index.d.ts.map +1 -1
  209. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +5 -2
  210. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  211. package/dist/esm/internals/ReportBuilder/PivotList.js +21 -21
  212. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +30 -14
  213. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  214. package/dist/esm/internals/ReportBuilder/PivotModal.js +77 -52
  215. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  216. package/dist/esm/utils/dataFetcher.js +2 -0
  217. package/dist/esm/utils/parserBigQuery.d.ts +6 -0
  218. package/dist/esm/utils/parserBigQuery.d.ts.map +1 -0
  219. package/dist/esm/utils/parserBigQuery.js +52 -0
  220. package/dist/esm/utils/parserPostgres.d.ts +3 -0
  221. package/dist/esm/utils/parserPostgres.d.ts.map +1 -0
  222. package/dist/esm/utils/parserPostgres.js +37 -0
  223. package/package.json +1 -1
  224. package/dist/cjs/BarList.d.ts.map +0 -1
  225. package/dist/cjs/PieChart.d.ts.map +0 -1
  226. package/dist/esm/BarList.d.ts.map +0 -1
  227. package/dist/esm/PieChart.d.ts.map +0 -1
  228. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  229. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DashboardFilterModal = exports.ChartBuilderWithModal = exports.dateFormatOptions = exports.numberFormatOptions = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ /* eslint-disable no-unused-vars */
8
9
  const react_1 = require("react");
9
10
  const Context_1 = require("./Context");
10
11
  const dataFetcher_1 = require("./utils/dataFetcher");
@@ -14,8 +15,9 @@ const PivotList_1 = require("./internals/ReportBuilder/PivotList");
14
15
  const Chart_1 = __importDefault(require("./Chart"));
15
16
  const UiComponents_1 = require("./components/UiComponents");
16
17
  const merge_1 = require("./utils/merge");
17
- const QuillSelect_1 = require("./components/QuillSelect");
18
18
  const textProcessing_1 = require("./utils/textProcessing");
19
+ const QuillSelect_1 = require("./components/QuillSelect");
20
+ const QuillCard_1 = require("./components/QuillCard");
19
21
  const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
20
22
  const POSTGRES_DATE_TYPES = [
21
23
  'timestamp',
@@ -143,19 +145,77 @@ const formatOptions = [
143
145
  { value: 'percent', label: 'percent' },
144
146
  { value: 'string', label: 'string' },
145
147
  ];
148
+ /**
149
+ * ### Quill Chart Builder with Modal
150
+ *
151
+ * Renders a ChartBuilder component with a modal.
152
+ *
153
+ * @example
154
+ * ```js
155
+ * // Usage without custom components
156
+ * <ChartBuilder />
157
+ * ```
158
+ *
159
+ * @example
160
+ * ```js
161
+ * // You can also pass your own components
162
+ * <ChartBuilder
163
+ * ButtonComponent={MyButton}
164
+ * SecondaryButtonComponent={MySecondaryButton}
165
+ * />
166
+ * ```
167
+ *
168
+ * ### Chart Builder API
169
+ * @see https://docs.quillsql.com/components/chart-builder#with-modal
170
+ */
146
171
  function ChartBuilderWithModal(props) {
147
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
148
- const Modal = props.Modal ?? UiComponents_1.MemoizedModal;
149
- const { isOpen, setIsOpen, title, horizontalView, ...rest } = props;
150
- return ((0, jsx_runtime_1.jsx)(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, onClose: () => setIsOpen(false), title: title || 'Add to dashboard', style: horizontalView
151
- ? {
152
- width: 'calc(100vw - 80px)',
153
- height: 'calc(100vh - 80px)',
154
- }
155
- : {}, theme: theme, ...rest, children: (0, jsx_runtime_1.jsx)(ChartBuilder, { ...props }) }));
172
+ const parentRef = (0, react_1.useRef)(null);
173
+ const [modalWidth, setModalWidth] = (0, react_1.useState)(200);
174
+ const [modalHeight, setModalHeight] = (0, react_1.useState)(200);
175
+ const { isOpen, setIsOpen, title, isHorizontalView } = props;
176
+ const Modal = props.ModalComponent ?? UiComponents_1.MemoizedModal;
177
+ (0, react_1.useEffect)(() => {
178
+ function handleResize() {
179
+ setModalWidth(window.innerWidth - 80);
180
+ setModalHeight(window.innerHeight - 80);
181
+ }
182
+ handleResize();
183
+ window.addEventListener('resize', handleResize);
184
+ return () => {
185
+ window.removeEventListener('resize', handleResize);
186
+ };
187
+ }, []);
188
+ return ((0, jsx_runtime_1.jsx)("div", { ref: parentRef, children: (0, jsx_runtime_1.jsx)(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
189
+ // For isHorizontalView, use full viewport size minus 80px for padding,
190
+ // otherwise use the default layout method of the modal (contents).
191
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (0, jsx_runtime_1.jsx)(ChartBuilder, { ...props }) }) }));
156
192
  }
157
193
  exports.ChartBuilderWithModal = ChartBuilderWithModal;
158
- function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = QuillSelect_1.QuillSelectComponent, Button = UiComponents_1.MemoizedButton, SecondaryButton = UiComponents_1.MemoizedSecondaryButton, Header = UiComponents_1.MemoizedHeader, Label = UiComponents_1.MemoizedLabel, DeleteButton = UiComponents_1.MemoizedDeleteButton, Text = UiComponents_1.MemoizedText, Popover = UiComponents_1.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, }) {
194
+ /**
195
+ * ### Quill Chart Builder
196
+ *
197
+ * A simple form that lets users turn a SQL query into a chart, metric, or table
198
+ * and then add that dashboard item into one of their dashboards.
199
+ *
200
+ * @example
201
+ * ```js
202
+ * // Usage without custom components
203
+ * <ChartBuilder />
204
+ * ```
205
+ *
206
+ * @example
207
+ * ```js
208
+ * // You can also pass your own components
209
+ * <ChartBuilder
210
+ * ButtonComponent={MyButton}
211
+ * SecondaryButtonComponent={MySecondaryButton}
212
+ * />
213
+ * ```
214
+ *
215
+ * ### Chart Builder API
216
+ * @see https://docs.quillsql.com/components/chart-builder
217
+ */
218
+ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, 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, hideDeleteButton = false, hideSubmitButton = false, }) {
159
219
  const dateRange = dr || [null, null, null];
160
220
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
161
221
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
@@ -375,6 +435,12 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
375
435
  }
376
436
  const result = await getReferencedTables(client, query, schema, true);
377
437
  setDateFieldOptions(result);
438
+ if (result[0] && result[0].columns[0]) {
439
+ setDefaultDateField({
440
+ table: result[0].name,
441
+ field: result[0].columns[0].name,
442
+ });
443
+ }
378
444
  const allReferencedFields = await getReferencedTables(client, query, schema, false);
379
445
  setAllTables(allReferencedFields.map((table) => table.name));
380
446
  setTableName(result[0]?.name);
@@ -578,7 +644,7 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
578
644
  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.`);
579
645
  }
580
646
  if (dashboardHasDateFilter &&
581
- (!defaultDateField ||
647
+ ((!defaultDateField.table && !defaultDateField.field) ||
582
648
  (!formData.dateField.field && !formData.dateField.table))) {
583
649
  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.`);
584
650
  }
@@ -671,79 +737,79 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
671
737
  display: 'flex',
672
738
  padding: modalPadding,
673
739
  gap: '20px',
674
- flexDirection: horizontalView ? 'row' : 'column',
740
+ flexDirection: isHorizontalView ? 'row' : 'column',
675
741
  boxSizing: 'border-box',
676
742
  }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
677
743
  display: 'flex',
678
744
  flexDirection: 'column',
679
745
  gap: '20px',
680
- ...(horizontalView && {
746
+ ...(isHorizontalView && {
681
747
  flexGrow: 1,
682
748
  maxWidth: !isOpen ? '100%' : 'calc(100% - 665px - 20px)', // width of left sidebar plus gap
683
749
  }),
684
- }, children: [(!horizontalView || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.default, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
750
+ }, children: [(!isHorizontalView || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.default, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
685
751
  width: '100%',
686
752
  height: formData.chartType === 'metric'
687
753
  ? 100
688
- : horizontalView
754
+ : isHorizontalView
689
755
  ? '100%'
690
756
  : 400,
691
- ...(horizontalView && { flexGrow: 1 }),
757
+ ...(isHorizontalView && { flexGrow: 1 }),
692
758
  } })),
693
759
  // Make sure to display non-pivoted table when using pivot chart
694
- horizontalView && formData.chartType !== 'table' ? ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
760
+ isHorizontalView && formData.chartType !== 'table' ? ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
695
761
  ...formData,
696
762
  pivot: undefined,
697
763
  chartType: 'table',
698
764
  rows,
699
- rowsPerPage: 20,
765
+ rowsPerPage: 10,
700
766
  }, containerStyle: {
701
767
  height: '100%',
702
768
  width: '100%',
703
769
  flexGrow: 1,
704
- } })) : (horizontalView && ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
770
+ } })) : (isHorizontalView && ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
705
771
  ...formData,
706
772
  chartType: 'table',
707
773
  rows,
708
- rowsPerPage: 20,
774
+ rowsPerPage: 10,
709
775
  }, containerStyle: {
710
776
  height: '100%',
711
777
  width: '100%',
712
778
  flexGrow: 1,
713
- } })))] }), (isOpen || !horizontalView) && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
779
+ } })))] }), (isOpen || !isHorizontalView) && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
714
780
  display: 'flex',
715
781
  flexDirection: 'column',
716
782
  height: '100%',
717
- ...(horizontalView && {
783
+ ...(isHorizontalView && {
718
784
  minWidth: 665,
719
785
  maxWidth: 665,
720
786
  width: 665,
721
787
  gap: 20,
722
788
  }),
723
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { overflow: 'auto' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Name" }), (0, jsx_runtime_1.jsx)(TextInput, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Dashboard" }), (0, jsx_runtime_1.jsx)(Select, { value: formData.dashboardName || '', onChange: async (e) => {
724
- await updateDashboardFilters(e);
725
- handleChange(e, 'dashboardName');
789
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { overflow: 'auto' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Name" }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Dashboard" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.dashboardName || '', onChange: async (e) => {
790
+ handleChange(e.target.value, 'dashboardName');
791
+ await updateDashboardFilters(e.target.value);
726
792
  }, options: dashboardOptions.map((elem) => ({
727
793
  label: elem.label,
728
794
  value: elem.label,
729
- })), theme: theme })] })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Chart type" }), (0, jsx_runtime_1.jsx)(Select, { value: formData.chartType, onChange: (e) => handleChange(e, 'chartType'),
795
+ })) })] })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Chart type" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
730
796
  // filter out metric for all pivots
731
797
  // filter out bar and pie for row and column pivot
732
- options: getChartTypeOptions(formData), theme: theme })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
798
+ options: getChartTypeOptions(formData) })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
733
799
  display: 'flex',
734
800
  flexDirection: 'column',
735
801
  gap: 12,
736
802
  marginTop: 6,
737
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Pivot" }), (0, jsx_runtime_1.jsxs)("div", { style: { fontFamily: theme?.fontFamily }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
803
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsxs)("div", { style: { fontFamily: theme?.fontFamily }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
738
804
  maxWidth: 200,
739
805
  // marginTop: 6,
740
806
  display: 'flex',
741
807
  flexDirection: 'column',
742
- }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.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 && ((0, jsx_runtime_1.jsx)("div", { style: {
808
+ }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.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, CardComponent: CardComponent, 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 && ((0, jsx_runtime_1.jsx)("div", { style: {
743
809
  // width: 592,
744
810
  paddingRight: 42,
745
811
  maxWidth: 750,
746
- }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: !horizontalView ? divWidth : 'auto' }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: {
812
+ }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: !isHorizontalView ? divWidth : 'auto' }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: {
747
813
  pivot: formData.pivot,
748
814
  rows: selectedPivotTable?.rows,
749
815
  columns: selectedPivotTable?.columns,
@@ -755,29 +821,29 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
755
821
  setPivotValueField(formData.pivot?.valueField);
756
822
  setPivotAggregation(formData.pivot?.aggregationType);
757
823
  setPivotPopUpTitle('Edit Pivot');
758
- }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: Button, HeaderComponent: Header, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: Label, TextComponent: Text }) }) }))] })] }), (0, jsx_runtime_1.jsx)("br", {}), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
824
+ }, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), (0, jsx_runtime_1.jsx)("br", {}), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
759
825
  display: 'flex',
760
826
  flexDirection: 'column',
761
827
  gap: 6,
762
828
  marginTop: 6,
763
- }, children: (0, jsx_runtime_1.jsx)(Header, { children: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Label, { children: CHART_TO_LABELS[formData.chartType]?.xAxisLabel }), (0, jsx_runtime_1.jsxs)("div", { style: {
829
+ }, children: (0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)("div", { style: {
764
830
  display: 'flex',
765
831
  flexDirection: 'row',
766
832
  gap: 12,
767
- }, children: [(0, jsx_runtime_1.jsx)(Select, { value: formData.xAxisField, onChange: (e) => handleChange(e, 'xAxisField'), options: formData.pivot
833
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
768
834
  ? getPivotMetricOptions(formData.pivot)
769
835
  : fieldOptions.map((elem) => ({
770
836
  label: elem.field,
771
837
  value: elem.field,
772
- })), theme: theme }), (0, jsx_runtime_1.jsx)(TextInput, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
838
+ })) }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
773
839
  ? formData.pivot.rowField
774
- : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), (0, jsx_runtime_1.jsx)(Select, { value: formData.pivot &&
840
+ : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot &&
775
841
  (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
776
842
  ? 'pivot_date'
777
- : formData.xAxisFormat, onChange: (e) => handleChange(e, 'xAxisFormat'), options: formData.pivot &&
843
+ : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
778
844
  (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
779
845
  ? [{ value: 'pivot_date', label: 'date' }]
780
- : formatOptions, theme: theme })] }, 'xAxisField'), (0, jsx_runtime_1.jsx)("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Label, { children: CHART_TO_LABELS[formData.chartType]?.yAxisLabel }), (0, jsx_runtime_1.jsx)("div", { style: {
846
+ : formatOptions })] }, 'xAxisField'), (0, jsx_runtime_1.jsx)("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsx)("div", { style: {
781
847
  display: 'flex',
782
848
  flexDirection: 'column',
783
849
  gap: 10,
@@ -785,9 +851,9 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
785
851
  display: 'flex',
786
852
  flexDirection: 'row',
787
853
  gap: 12,
788
- }, children: [(0, jsx_runtime_1.jsx)(Select, { value: formData.pivot
854
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
789
855
  ? formData.pivot.valueField
790
- : yAxisField.field, onChange: (e) => handleChange(e, 'yAxisFields.field', index), theme: theme, options: formData.pivot
856
+ : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
791
857
  ? [
792
858
  {
793
859
  label: `Pivot Column (${formData.pivot.valueField})`,
@@ -801,21 +867,21 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
801
867
  .map((elem) => ({
802
868
  label: elem.field,
803
869
  value: elem.field,
804
- })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: formData.pivot
870
+ })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
805
871
  ? NUMBER_OPTIONS.find((option) => {
806
872
  return (option.value === yAxisField.format);
807
873
  })
808
874
  ? // @ts-ignore
809
875
  NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
810
876
  : 'whole_number'
811
- : yAxisField.format, onChange: (e) => handleChange(e, 'yAxisFields.format', index), options: formData.pivot
877
+ : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
812
878
  ? NUMBER_OPTIONS
813
- : formatOptions }), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, children: (0, jsx_runtime_1.jsx)(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), (0, jsx_runtime_1.jsx)("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
879
+ : formatOptions }), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), (0, jsx_runtime_1.jsx)("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
814
880
  display: 'flex',
815
881
  flexDirection: 'column',
816
882
  gap: 6,
817
883
  marginTop: 6,
818
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Table" }), (0, jsx_runtime_1.jsx)(Label, { children: "Columns" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
884
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(LabelComponent, { label: "Columns" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
819
885
  display: 'flex',
820
886
  flexDirection: 'column',
821
887
  gap: 10,
@@ -828,10 +894,10 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
828
894
  display: 'flex',
829
895
  flexDirection: 'row',
830
896
  gap: 12,
831
- }, children: [(0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.label, onChange: (e) => handleChange(e, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
897
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
832
898
  label: elem.label,
833
899
  value: elem.label,
834
- })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value:
900
+ })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value:
835
901
  // The first index use rowField for the rest of them use value fields
836
902
  formData.pivot &&
837
903
  column.field === formData.pivot.rowField
@@ -840,7 +906,7 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
840
906
  ? 'pivot_date'
841
907
  : 'string'
842
908
  : formData.pivot?.valueFieldType ||
843
- 'whole_number', onChange: (e) => handleChange(e, 'pivotColumn', index), options: formData.pivot && index === 0
909
+ 'whole_number', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
844
910
  ? (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
845
911
  ? [{ label: 'date', value: 'pivot_date' }]
846
912
  : [{ label: 'string', value: 'string' }]
@@ -849,22 +915,22 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
849
915
  display: 'flex',
850
916
  flexDirection: 'row',
851
917
  gap: 12,
852
- }, children: [(0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.field, onChange: (e) => handleChange(e, 'columns.field', index), options: fields.map((elem) => ({
918
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: fields.map((elem) => ({
853
919
  label: elem.field,
854
920
  value: elem.field,
855
- })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.format, onChange: (e) => handleChange(e, 'columns.format', index), options: formatOptions }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, children: (0, jsx_runtime_1.jsx)(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: () => handleAddField('columns'), label: "Add column +" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {})] })), showDateFieldOptions && formData.dateField && ((0, jsx_runtime_1.jsxs)("div", { style: {
921
+ })) }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {})] })), showDateFieldOptions && formData.dateField && ((0, jsx_runtime_1.jsxs)("div", { style: {
856
922
  display: 'flex',
857
923
  flexDirection: 'column',
858
924
  gap: 6,
859
925
  marginTop: 6,
860
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Date field" }), (0, jsx_runtime_1.jsxs)("div", { style: {
926
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Date field" }), (0, jsx_runtime_1.jsxs)("div", { style: {
861
927
  display: 'flex',
862
928
  flexDirection: 'row',
863
929
  gap: 12,
864
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Table" }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: formData.dateField?.table, onChange: (e) => handleChange(e, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
930
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
865
931
  label: elem.name,
866
932
  value: elem.name,
867
- })) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Field" }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e, 'dateField.field'), options: dateFieldOptions
933
+ })) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
868
934
  ?.find((elem) => elem.name === formData.dateField?.table)
869
935
  ?.columns?.map((elem) => ({
870
936
  label: elem.name,
@@ -874,17 +940,17 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
874
940
  flexDirection: 'column',
875
941
  gap: 12,
876
942
  marginTop: 6,
877
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Organization access" }), (0, jsx_runtime_1.jsx)(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), (0, jsx_runtime_1.jsxs)("div", { style: {
943
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Organization access" }), (0, jsx_runtime_1.jsx)(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), (0, jsx_runtime_1.jsxs)("div", { style: {
878
944
  display: 'flex',
879
945
  flexDirection: 'row',
880
946
  justifyContent: 'flex-end',
881
947
  marginTop: 'auto',
882
948
  gap: 10,
883
- }, children: [!horizontalView && dashboardItem && ((0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: deleteChart, label: 'Delete' })), (0, jsx_runtime_1.jsx)(Button, { onClick: () => editChart(), label: buttonLabel
949
+ }, children: [!hideDeleteButton && !isHorizontalView && dashboardItem && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && ((0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => editChart(), label: buttonLabel
884
950
  ? buttonLabel
885
951
  : dashboardItem
886
952
  ? 'Save changes'
887
- : 'Add to dashboard' })] })] }))] }), (0, jsx_runtime_1.jsx)(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, override: () => editChart(true), theme: theme, issues: filterIssues })] }));
953
+ : 'Add to dashboard' }))] })] }))] }), (0, jsx_runtime_1.jsx)(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, override: () => editChart(true), theme: theme, issues: filterIssues })] }));
888
954
  }
889
955
  exports.default = ChartBuilder;
890
956
  function SegmentedControl({ onChange, value, theme, organizationName, }) {
@@ -950,22 +1016,17 @@ function SegmentedControl({ onChange, value, theme, organizationName, }) {
950
1016
  ` }), organizationName] }))] }));
951
1017
  }
952
1018
  function DashboardFilterModal({ isOpen, setIsOpen, override, theme, issues, }) {
953
- return ((0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedModal, { isOpen: isOpen, onClose: () => {
954
- setIsOpen(false);
955
- }, setIsOpen: setIsOpen, theme: theme, title: 'Chart not compatible with selected dashboard', children: (0, jsx_runtime_1.jsxs)("div", { style: {
1019
+ return ((0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', children: (0, jsx_runtime_1.jsxs)("div", { style: {
956
1020
  display: 'flex',
957
1021
  flexDirection: 'column',
958
1022
  width: '600px',
959
1023
  padding: '20px',
960
1024
  boxSizing: 'border-box',
961
- }, children: [issues.map((issue, index) => ((0, jsx_runtime_1.jsx)("span", { style: { paddingTop: '10px' }, children: issue }, issue))), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
1025
+ }, children: [issues.map((issue, index) => ((0, jsx_runtime_1.jsx)("span", { style: { paddingTop: '10px' }, children: issue }, issue))), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("div", { style: {
962
1026
  display: 'flex',
963
1027
  flexDirection: 'row',
964
1028
  gap: '12px',
965
1029
  justifyContent: 'flex-end',
966
- }, children: [(0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }), (0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedSecondaryButton, { label: "Override", onClick: () => {
967
- override();
968
- setIsOpen(false);
969
- } })] })] }) }));
1030
+ }, children: (0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
970
1031
  }
971
1032
  exports.DashboardFilterModal = DashboardFilterModal;
@@ -1,29 +1,133 @@
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;
7
- isEditMode?: boolean;
12
+ /** Whether the editor has administrative priveleges. */
13
+ isAdmin?: boolean;
14
+ /** The title of the chart builder form. */
8
15
  chartBuilderTitle?: string;
16
+ /** The button label for the chart builder. */
9
17
  chartBuilderButtonLabel?: string;
18
+ /**
19
+ * A callback that is fired when the add to dashboard flow has been completed.
20
+ */
10
21
  onAddToDashboardComplete?: () => void;
22
+ /** A callback that is fired when the item is deleted. */
11
23
  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;
24
+ /** A select component. */
25
+ SelectComponent?: (props: {
26
+ value: string;
27
+ label?: string;
28
+ options: {
29
+ value: string;
30
+ label: string;
31
+ }[];
32
+ onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
33
+ }) => JSX.Element;
34
+ /** An input component to get text from your users. */
35
+ TextInputComponent?: (props: {
36
+ id: string;
37
+ width: number;
38
+ value: string;
39
+ placeholder?: string;
40
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
41
+ }) => JSX.Element;
42
+ /** A button component. */
43
+ ButtonComponent?: (props: {
44
+ onClick: () => void;
45
+ label: string;
46
+ }) => JSX.Element;
47
+ /** A secondary button. */
48
+ SecondaryButtonComponent?: (props: {
49
+ onClick: () => void;
50
+ label: string;
51
+ }) => JSX.Element;
52
+ /**
53
+ * A small delete button used to click out of things. Usually an "X" icon.
54
+ */
55
+ DeleteButtonComponent?: (props: {
56
+ onClick: () => void;
57
+ }) => JSX.Element;
58
+ /** A header component. */
59
+ HeaderComponent?: (props: {
60
+ label: string;
61
+ }) => JSX.Element;
62
+ /** A label component. */
63
+ LabelComponent?: (props: {
64
+ label: string;
65
+ }) => JSX.Element;
66
+ /** A text component. */
67
+ TextComponent?: (props: {
68
+ label: string;
69
+ }) => JSX.Element;
70
+ /** A card component used as a dismissable container of pivot information. */
71
+ CardComponent?: (props: {
72
+ children: ReactNode;
73
+ onClick?: () => void;
74
+ onDelete?: () => void;
75
+ }) => JSX.Element;
76
+ /**
77
+ * A modal component.
78
+ */
79
+ ModalComponent?: (props: {
80
+ isOpen: boolean;
81
+ setIsOpen: (isOpen: boolean) => void;
82
+ title?: string | undefined;
83
+ children: ReactNode;
84
+ width?: number | undefined;
85
+ height?: number | undefined;
86
+ }) => JSX.Element;
87
+ /** A popover component. */
88
+ PopoverComponent?: (props: {
89
+ isOpen: boolean;
90
+ setIsOpen: (isOpen: boolean) => void;
91
+ triggerLabel?: string;
92
+ popoverTitle?: string;
93
+ popoverChildren: ReactNode;
94
+ }) => JSX.Element;
95
+ /** The default dashboard to add the item to. */
23
96
  destinationDashboard?: string;
97
+ /** The name of the current organization. */
24
98
  organizationName?: string;
25
- horizontalView?: boolean;
99
+ /** Whether the ChartBuilder is in horizontal view mode. */
100
+ isHorizontalView?: boolean;
101
+ /** Whether to hide the delete button. */
102
+ hideDeleteButton?: boolean;
103
+ /** Whether to hide the submit button. */
104
+ hideSubmitButton?: boolean;
26
105
  }
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 {};
106
+ /**
107
+ * ### Quill Chart Editor
108
+ *
109
+ * Presents the Quill Chart Builder form as a modal.
110
+ *
111
+ * @example
112
+ * ```js
113
+ * // Usage without custom components
114
+ * <ChartEditor isOpen={true} chartId="1234" />
115
+ * ```
116
+ *
117
+ * @example
118
+ * ```js
119
+ * // You can also pass your own components
120
+ * <ChartEditor
121
+ * isOpen={isOpen}
122
+ * setIsOpen={setIsOpen}
123
+ * chartId="1234"
124
+ * Button={MyButton}
125
+ * Modal={MyModal}
126
+ * />
127
+ * ```
128
+ *
129
+ * ### Chart Editor API
130
+ * @see https://docs.quillsql.com/components/chart-editor
131
+ */
132
+ export default function ChartEditor({ isOpen, chartId, isAdmin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, isHorizontalView, onDelete, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, LabelComponent, TextComponent, DeleteButtonComponent, ModalComponent, CardComponent, PopoverComponent, hideDeleteButton, hideSubmitButton, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
29
133
  //# 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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"}