@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,23 +1,45 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext, useMemo } from 'react';
2
3
  import { COMPARISON_OPTIONS } from '../../DateRangePicker/dateRangePickerUtils';
3
4
  import { valueFormatter } from '../../utils/valueFormatter';
4
5
  import ChartError from '../Chart/ChartError';
5
6
  import ChartSkeleton from '../Chart/ChartSkeleton';
6
- export default function QuillMetricComponent({ dashboardItem, onClickDashboardItem, error, isLoading, theme, style, }) {
7
+ import { generatePivotTable } from '../../internals/ReportBuilder/PivotModal';
8
+ import { DashboardFiltersContext } from '../../Context';
9
+ import { useTheme } from '../../hooks';
10
+ export default function QuillMetricComponent({ dashboardItem, onClick, error, isLoading, }) {
11
+ const theme = useTheme();
12
+ const { dashboardFilters } = useContext(DashboardFiltersContext);
7
13
  const data = dashboardItem;
8
- const isComparison = data.rows.length > 0 &&
9
- Object.keys(data.rows[0]).includes(`comparison_${data.xAxisField}`);
14
+ const config = dashboardItem;
15
+ const dateFilter = Object.values(dashboardFilters).find((filter) => filter.filterType == 'date_range');
16
+ const pivotTable = useMemo(() => {
17
+ const pivot = config?.pivot;
18
+ const data = config;
19
+ return pivot && data?.rows
20
+ ? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
21
+ dateFilter
22
+ ? [dateFilter.startDate || null, dateFilter.endDate || null, null]
23
+ : [null, null, null], Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate
24
+ ? [
25
+ dateFilter?.comparisonRange.startDate,
26
+ dateFilter?.comparisonRange.endDate,
27
+ null,
28
+ ]
29
+ : [null, null, null])
30
+ : null;
31
+ }, [config?.pivot]);
10
32
  const primaryMetricLabel = data?.filtersApplied?.date_range?.preset?.label;
11
33
  const comparisonKey = data?.filtersApplied?.date_range?.comparisonRange?.value;
12
34
  const comparisonLabel = COMPARISON_OPTIONS.find((opt) => opt.value === comparisonKey)?.text;
13
- return (_jsx("div", { onClick: onClickDashboardItem
14
- ? () => onClickDashboardItem(dashboardItem)
15
- : () => { }, style: {
35
+ const rows = pivotTable?.rows ?? data.rows ?? [];
36
+ const isComparison = rows.length > 0 &&
37
+ Object.keys(rows[0]).includes(`comparison_${data.xAxisField}`);
38
+ return (_jsx("div", { onClick: () => onClick && onClick(dashboardItem), style: {
16
39
  cursor: 'pointer',
17
40
  boxSizing: 'content-box',
18
41
  borderRadius: 8,
19
42
  paddingBottom: isLoading ? 0 : 30,
20
- ...style,
21
43
  }, children: _jsx("div", { style: {
22
44
  width: '100%',
23
45
  height: '100%',
@@ -50,7 +72,7 @@ export default function QuillMetricComponent({ dashboardItem, onClickDashboardIt
50
72
  display: 'block',
51
73
  maxWidth: '100%',
52
74
  overflow: 'hidden',
53
- }, children: dashboardItem?.name }), onClickDashboardItem ? (_jsx("div", { style: {
75
+ }, children: dashboardItem?.name }), onClick ? (_jsx("div", { style: {
54
76
  fontFamily: theme.fontFamily,
55
77
  color: theme.primaryTextColor,
56
78
  boxSizing: 'content-box',
@@ -60,11 +82,13 @@ export default function QuillMetricComponent({ dashboardItem, onClickDashboardIt
60
82
  display: 'flex',
61
83
  alignItems: 'center',
62
84
  justifyContent: 'flex-end',
63
- }, children: 'view report →' })) : null] }), isLoading ? (_jsx(ChartSkeleton, { containerStyle: { maxHeight: '78px', height: style?.height ?? '100%' } })) : error ? (_jsx(ChartError, {})) : data.rows?.length === 0 ||
64
- data.rows[0][data.xAxisField] === null ? (_jsx("div", { style: {
85
+ }, children: 'view report →' })) : null] }), isLoading ? (_jsx(ChartSkeleton, { containerStyle: {
86
+ maxHeight: '78px',
87
+ height: '100%',
88
+ } })) : error ? (_jsx(ChartError, {})) : rows?.length === 0 || rows[0][data.xAxisField] === null ? (_jsx("div", { style: {
65
89
  display: 'flex',
66
90
  flex: '1 0 auto',
67
- height: style?.height ?? '100%',
91
+ height: '100%',
68
92
  margin: 'auto',
69
93
  justifyContent: 'center',
70
94
  alignItems: 'center',
@@ -72,7 +96,6 @@ export default function QuillMetricComponent({ dashboardItem, onClickDashboardIt
72
96
  color: theme.secondaryTextColor,
73
97
  maxWidth: '100%',
74
98
  width: '100%',
75
- ...style,
76
99
  }, children: "No results" })) : (_jsx("div", { style: {
77
100
  padding: 0,
78
101
  height: '100%',
@@ -99,9 +122,9 @@ export default function QuillMetricComponent({ dashboardItem, onClickDashboardIt
99
122
  gap: 4,
100
123
  alignItems: 'baseline',
101
124
  marginRight: 'auto',
102
- }, children: [_jsx("span", { children: data.rows.length > 0 &&
125
+ }, children: [_jsx("span", { children: rows.length > 0 &&
103
126
  valueFormatter({
104
- value: data.rows[0][data.xAxisField] ?? 0,
127
+ value: rows[0][data.xAxisField] ?? 0,
105
128
  field: data.xAxisField,
106
129
  fields: [
107
130
  {
@@ -130,10 +153,9 @@ export default function QuillMetricComponent({ dashboardItem, onClickDashboardIt
130
153
  fontWeight: '500',
131
154
  fontFamily: theme?.fontFamily,
132
155
  color: theme?.secondaryTextColor,
133
- }, children: data.rows.length > 0 &&
156
+ }, children: rows.length > 0 &&
134
157
  valueFormatter({
135
- value: data.rows[0][`comparison_${data.xAxisField}`] ??
136
- 0,
158
+ value: rows[0][`comparison_${data.xAxisField}`] ?? 0,
137
159
  field: data.xAxisField,
138
160
  fields: [
139
161
  {
@@ -1,3 +1,4 @@
1
1
  /// <reference types="react" />
2
- export default function QuillTableComponent({ dashboardItem, onClickDashboardItem, isLoading, error, theme, style, children, }: any): JSX.Element;
2
+ import { DashboardItemProps } from '../../Dashboard';
3
+ export default function QuillTableComponent({ dashboardItem, onClick, isLoading, error, }: DashboardItemProps): JSX.Element;
3
4
  //# sourceMappingURL=TableComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AASA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,GACT,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAiKnB"}
1
+ {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA2JlC"}
@@ -7,7 +7,9 @@ import { DashboardFiltersContext } from '../../Context';
7
7
  import { quillFormat } from '../../utils/valueFormatter';
8
8
  import ChartSkeleton from '../Chart/ChartSkeleton';
9
9
  import ChartError from '../Chart/ChartError';
10
- export default function QuillTableComponent({ dashboardItem, onClickDashboardItem, isLoading, error, theme, style, children, }) {
10
+ import { useTheme } from '../../hooks';
11
+ export default function QuillTableComponent({ dashboardItem, onClick, isLoading, error, }) {
12
+ const theme = useTheme();
11
13
  const { dashboardFilters } = useContext(DashboardFiltersContext);
12
14
  const config = dashboardItem;
13
15
  const data = dashboardItem;
@@ -57,12 +59,7 @@ export default function QuillTableComponent({ dashboardItem, onClickDashboardIte
57
59
  return formattedRow;
58
60
  }, {});
59
61
  });
60
- return (_jsxs("div", { style: {
61
- cursor: 'pointer',
62
- ...style,
63
- }, onClick: onClickDashboardItem
64
- ? () => onClickDashboardItem(dashboardItem)
65
- : () => { }, children: [_jsxs("div", { style: {
62
+ return (_jsxs("div", { style: { cursor: 'pointer' }, onClick: () => onClick && onClick(dashboardItem), children: [_jsxs("div", { style: {
66
63
  display: 'flex',
67
64
  flexDirection: 'row',
68
65
  justifyContent: 'space-between',
@@ -81,7 +78,7 @@ export default function QuillTableComponent({ dashboardItem, onClickDashboardIte
81
78
  display: 'block',
82
79
  maxWidth: '100%',
83
80
  overflow: 'hidden',
84
- }, children: dashboardItem?.name }), onClickDashboardItem ? (_jsx("div", { style: {
81
+ }, children: dashboardItem?.name }), onClick ? (_jsx("div", { style: {
85
82
  fontFamily: theme.fontFamily,
86
83
  color: theme.primaryTextColor,
87
84
  boxSizing: 'content-box',
@@ -97,7 +94,7 @@ export default function QuillTableComponent({ dashboardItem, onClickDashboardIte
97
94
  } })) : error ? (_jsx(ChartError, { containerStyle: {
98
95
  width: '100%',
99
96
  height: '400px',
100
- } })) : (_jsx(QuillTable, { rows: formattedRows ?? [], columns: columns ?? data.yAxisFields, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
97
+ } })) : (_jsx(QuillTable, { rows: formattedRows ?? [], columns: columns ?? data.yAxisFields, rowsPerPage: 10, containerStyle: {
101
98
  width: '100%',
102
99
  height: '400px',
103
100
  }, showDownloadCSVButton: true, downloadCSV: () => {
@@ -1,3 +1,6 @@
1
1
  import { SelectComponentProps } from './UiComponents';
2
- export declare function QuillSelectComponent({ options, value, onChange, theme, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
2
+ /**
3
+ * A robust select component that implements the new minimal Select interface.
4
+ */
5
+ export declare function QuillSelectComponent({ options, value, onChange, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
3
6
  //# sourceMappingURL=QuillSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE,oBAAoB,2CAwMtB"}
1
+ {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,oBAAoB,2CA0MtB"}
@@ -1,17 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
- import { useRef, useState } from 'react';
4
- export function QuillSelectComponent({ options, value, onChange, theme, label, }) {
3
+ import { useContext, useRef, useState } from 'react';
4
+ import { ThemeContext } from '../Context';
5
+ /**
6
+ * A robust select component that implements the new minimal Select interface.
7
+ */
8
+ export function QuillSelectComponent({ options, value, onChange, label, }) {
9
+ const [theme] = useContext(ThemeContext);
5
10
  const [showModal, setShowModal] = useState(false);
6
11
  const modalRef = useRef(null);
7
- useOnClickOutside(modalRef, (e) => {
8
- setShowModal(false);
9
- });
12
+ useOnClickOutside(modalRef, (e) => setShowModal(false));
10
13
  return (_jsxs("div", { style: {
11
14
  position: 'relative',
12
15
  width: 200,
13
16
  minWidth: 200,
14
- boxShadow: 'rgba(0, 0, 0, 0.1) 0px 1px 5px 0px',
15
17
  borderRadius: '6px',
16
18
  }, children: [label && (_jsx("div", { style: {
17
19
  fontSize: 14,
@@ -62,7 +64,6 @@ export function QuillSelectComponent({ options, value, onChange, theme, label, }
62
64
  paddingBottom: 6,
63
65
  paddingLeft: 6,
64
66
  paddingRight: 6,
65
- boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
66
67
  fontFamily: theme.fontFamily,
67
68
  maxHeight: '50vh',
68
69
  overflow: 'scroll',
@@ -85,7 +86,9 @@ export function QuillSelectComponent({ options, value, onChange, theme, label, }
85
86
  height: 34,
86
87
  minHeight: 34,
87
88
  }, className: "quill-option", onClick: () => {
88
- onChange('');
89
+ // Manually create a synthetic ChangeEvent and pass it to callback
90
+ const changeEvent = { target: { value: '' } };
91
+ onChange(changeEvent);
89
92
  setShowModal(false);
90
93
  }, children: [_jsx("style", { children: `
91
94
  .quill-option {
@@ -113,7 +116,9 @@ export function QuillSelectComponent({ options, value, onChange, theme, label, }
113
116
  minHeight: 34,
114
117
  overflow: 'hidden',
115
118
  }, className: "quill-option", onClick: () => {
116
- onChange(option.value);
119
+ // Manually create a synthetic ChangeEvent and pass it to callback
120
+ const changeEvent = { target: { value: option.value } };
121
+ onChange(changeEvent);
117
122
  setShowModal(false);
118
123
  }, children: [_jsx("style", { children: `
119
124
  .quill-option {
@@ -1,3 +1,17 @@
1
- import { TableComponentProps } from './UiComponents';
2
- export default function QuillTable({ rows, columns, loading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
1
+ import React from 'react';
2
+ import { ButtonComponentProps } from './UiComponents';
3
+ export interface TableComponentProps {
4
+ rows: any[];
5
+ columns: any[];
6
+ containerStyle?: React.CSSProperties;
7
+ isLoading?: boolean;
8
+ showDownloadCSVButton?: boolean;
9
+ downloadFileName?: string;
10
+ downloadCSV?: () => void;
11
+ LoadingComponent?: () => JSX.Element;
12
+ DownloadCSVButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
13
+ rowsPerPage?: number;
14
+ emptyStateLabel?: string;
15
+ }
16
+ export default function QuillTable({ rows, columns, isLoading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
3
17
  //# sourceMappingURL=QuillTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAMrD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAA0C,EAC1C,WAAgB,EAChB,eAA8B,EAC9B,WAAW,GACZ,EAAE,mBAAmB,2CAwZrB"}
1
+ {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAA0C,EAC1C,WAAgB,EAChB,eAA8B,EAC9B,WAAW,GACZ,EAAE,mBAAmB,2CAwZrB"}
@@ -3,7 +3,7 @@ import { useContext, useEffect, useState } from 'react';
3
3
  import { compareValues } from '../utils/valueFormatter';
4
4
  import { ThemeContext } from '../Context';
5
5
  import ChartSkeleton from './Chart/ChartSkeleton';
6
- export default function QuillTable({ rows, columns, loading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent = () => _jsx(ChartSkeleton, {}), rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, }) {
6
+ export default function QuillTable({ rows, columns, isLoading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent = () => _jsx(ChartSkeleton, {}), rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, }) {
7
7
  const [activeRows, setActiveRows] = useState([]);
8
8
  const [page, setPage] = useState(1);
9
9
  const [maxPage, setMaxPage] = useState(1);
@@ -13,7 +13,7 @@ export default function QuillTable({ rows, columns, loading, showDownloadCSVButt
13
13
  const [isPaginating, setIsPaginating] = useState(true);
14
14
  useEffect(() => {
15
15
  setIsPaginating(true);
16
- if (rows.length === 0 && loading) {
16
+ if (rows.length === 0 && isLoading) {
17
17
  return;
18
18
  }
19
19
  const sortedRows = [...rows];
@@ -30,7 +30,7 @@ export default function QuillTable({ rows, columns, loading, showDownloadCSVButt
30
30
  }
31
31
  setActiveRows(sortedRows.slice(start, end));
32
32
  setIsPaginating(false);
33
- }, [page, rows, sortColumn, sortDirection, loading, columns]);
33
+ }, [page, rows, sortColumn, sortDirection, isLoading, columns]);
34
34
  const increasePage = () => {
35
35
  if (page === maxPage) {
36
36
  return;
@@ -52,7 +52,7 @@ export default function QuillTable({ rows, columns, loading, showDownloadCSVButt
52
52
  setSortDirection('desc');
53
53
  }
54
54
  };
55
- if (loading || isPaginating) {
55
+ if (isLoading || isPaginating) {
56
56
  return (_jsx("div", { style: {
57
57
  ...containerStyle,
58
58
  }, children: _jsx(LoadingComponent, {}) }));
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { TextInputComponentProps } from '../UiComponents';
3
- export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, HandleButton, }: {
3
+ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, }: {
4
4
  onSave: any;
5
5
  orderedColumnNames: any;
6
6
  setOrderedColumnNames: any;
@@ -17,9 +17,15 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
17
17
  defaultTable: any;
18
18
  setPivot: any;
19
19
  TextInput: (props: TextInputComponentProps) => JSX.Element;
20
- SelectColumn: any;
20
+ SelectColumn: (props: {
21
+ label: string;
22
+ isSelected: boolean;
23
+ setSelected: () => void;
24
+ DragHandle: ({ dragIcon }: {
25
+ dragIcon: () => JSX.Element;
26
+ }) => JSX.Element;
27
+ }) => JSX.Element;
21
28
  SecondaryButton: any;
22
29
  Button: any;
23
- HandleButton: any;
24
30
  }): import("react/jsx-runtime").JSX.Element;
25
31
  //# sourceMappingURL=AddColumnPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnPopover.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,MAAM,EACN,YAAY,GACb,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,YAAY,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,EAAE,GAAG,CAAC;CACnB,2CAsNA"}
1
+ {"version":3,"file":"AddColumnPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnPopover.tsx"],"names":[],"mappings":";AAoBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,eAAe,EACf,MAAM,GACP,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;CACb,2CAoNA"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* eslint-disable no-unused-vars */
2
3
  import { useContext, useState, useRef, useEffect } from 'react';
3
4
  import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
4
5
  import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy, useSortable, } from '@dnd-kit/sortable';
@@ -6,7 +7,7 @@ import { CSS as DND_CSS } from '@dnd-kit/utilities';
6
7
  import { ThemeContext } from '../../Context';
7
8
  import { updateFirstChildWidth } from '../../utils/width';
8
9
  import { snakeCaseToTitleCase } from '../../utils/textProcessing';
9
- export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, HandleButton, }) {
10
+ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, }) {
10
11
  const [theme] = useContext(ThemeContext);
11
12
  const [search, setSearch] = useState('');
12
13
  const [searchResults, setSearchResults] = useState(orderedColumnNames);
@@ -41,7 +42,8 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
41
42
  setSearchResults(orderedColumnNames
42
43
  .filter((row) => {
43
44
  const [table, _column] = row.split('.');
44
- return (selectedColumns.length === 0 || selectedColumns[0].startsWith(table));
45
+ const selectedTable = selectedColumns[0]?.split('.')[0];
46
+ return selectedColumns.length === 0 || selectedTable === table;
45
47
  })
46
48
  .filter((row) => search.length === 0 ||
47
49
  row.includes(search) ||
@@ -69,7 +71,7 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
69
71
  overflowY: 'auto',
70
72
  maxWidth: '300px',
71
73
  }, children: [searchResults.map((value) => {
72
- return (_jsx(SortableItem, { theme: theme, selectedColumns: selectedColumns, setSelectedColumns: setSelectedColumns, id: value, label: value.replace('.', ' | '), SelectColumn: SelectColumn, HandleButton: HandleButton }, value));
74
+ return (_jsx(SortableItem, { selectedColumns: selectedColumns, setSelectedColumns: setSelectedColumns, id: value, label: value.replace('.', ' | '), SelectColumn: SelectColumn }, value));
73
75
  }), search.length > 0 && searchResults.length === 0 && (_jsx("div", { style: { fontFamily: theme?.fontFamily }, children: "No results found" }))] }) }) }), _jsxs("div", { style: {
74
76
  display: 'flex',
75
77
  width: '100%',
@@ -122,7 +124,7 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
122
124
  onSave();
123
125
  }, label: "Select columns" })] })] }));
124
126
  }
125
- const SortableItem = ({ id, label, setSelectedColumns, theme, selectedColumns, SelectColumn, HandleButton, }) => {
127
+ const SortableItem = ({ id, label, setSelectedColumns, selectedColumns, SelectColumn, }) => {
126
128
  const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: id });
127
129
  const style = {
128
130
  transform: DND_CSS.Transform.toString(transform),
@@ -138,7 +140,7 @@ const SortableItem = ({ id, label, setSelectedColumns, theme, selectedColumns, S
138
140
  }
139
141
  });
140
142
  };
141
- return (_jsx("div", { style: { userSelect: 'none', ...style }, ref: setNodeRef, children: _jsx(SelectColumn, { selected: selectedColumns?.includes(id), setSelected: handleSelect, label: label, children: _jsx("div", { style: {
143
+ return (_jsx("div", { style: { userSelect: 'none', ...style }, ref: setNodeRef, children: _jsx(SelectColumn, { isSelected: selectedColumns?.includes(id), setSelected: handleSelect, label: label, DragHandle: (props) => (_jsx("div", { style: {
142
144
  cursor: 'grab',
143
- }, ...attributes, ...listeners, children: _jsx(HandleButton, {}) }) }) }));
145
+ }, ...attributes, ...listeners, children: _jsx(props.dragIcon, {}) })) }) }));
144
146
  };
@@ -1,6 +1,18 @@
1
1
  /// <reference types="react" />
2
2
  import { ButtonComponentProps, TextInputComponentProps } from '../UiComponents';
3
- export declare const LimitSentence: ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle, LimitPopover, EditPopover, TextInput, Button, SecondaryButton, children, }: any) => import("react/jsx-runtime").JSX.Element;
3
+ import { LimitPopoverComponentProps } from './ui';
4
+ export declare const LimitSentence: ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle, LimitPopover, EditPopover, TextInput, Button, SecondaryButton, }: {
5
+ limit: any;
6
+ handleDelete: () => void;
7
+ setOpenPopover: (arg: any) => void;
8
+ onSave: (column: any, direction: any) => void;
9
+ popoverTitle?: string | undefined;
10
+ LimitPopover: (props: LimitPopoverComponentProps) => JSX.Element;
11
+ EditPopover: any;
12
+ TextInput: any;
13
+ Button: (props: ButtonComponentProps) => JSX.Element;
14
+ SecondaryButton: (props: ButtonComponentProps) => JSX.Element;
15
+ }) => import("react/jsx-runtime").JSX.Element;
4
16
  export interface AddLimitPopoverProps {
5
17
  onSave: (limit: number) => void;
6
18
  initialLimit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"AddLimitPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddLimitPopover.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,oBAAoB,EAIpB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAUzB,eAAO,MAAM,aAAa,4IAYvB,GAAG,4CAoCL,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,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;CAChE;AAED,eAAO,MAAM,eAAe,oFAQzB,oBAAoB,4CA+CtB,CAAC"}
1
+ {"version":3,"file":"AddLimitPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddLimitPopover.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,oBAAoB,EAIpB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,MAAM,CAAC;AAElD,eAAO,MAAM,aAAa;WAYjB,GAAG;kBACI,MAAM,IAAI;0BACF,GAAG,KAAK,IAAI;qBACjB,GAAG,aAAa,GAAG,KAAK,IAAI;;0BAEvB,0BAA0B,KAAK,WAAW;iBACnD,GAAG;eACL,GAAG;oBACE,oBAAoB,KAAK,WAAW;6BAC3B,oBAAoB,KAAK,WAAW;6CAiC9D,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,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;CAChE;AAED,eAAO,MAAM,eAAe,oFAQzB,oBAAoB,4CA8CtB,CAAC"}
@@ -2,26 +2,16 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { useState, useContext } from 'react';
3
3
  import { MemoizedButton, MemoizedSecondaryButton, QuillTextInput, } from '../UiComponents';
4
4
  import { ThemeContext } from '../../Context';
5
- const SORT_VALUE_TO_LABEL = {
6
- ASC: 'ascending',
7
- DESC: 'descending',
8
- };
9
- export const LimitSentence = ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle = 'Edit limit', LimitPopover, EditPopover, TextInput = QuillTextInput, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, children, }) => {
5
+ export const LimitSentence = ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle = 'Edit limit', LimitPopover, EditPopover, TextInput = QuillTextInput, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
10
6
  const [isOpen, setIsOpen] = useState(false);
11
7
  const handleClickDelete = (e) => {
12
8
  setOpenPopover(null);
13
9
  handleDelete();
14
10
  };
15
- return (_jsx("div", { style: { width: '100%' }, children: _jsx(LimitPopover
16
- // @ts-ignore
17
- , {
18
- // @ts-ignore
19
- filterLabel: `limit ${limit.value[0].value}`, onClickDelete: handleClickDelete, popoverTitle: popoverTitle, popoverChildren: _jsx(EditPopover, { onSave: (column, direction) => {
11
+ return (_jsx("div", { style: { width: '100%' }, children: _jsx(LimitPopover, { isOpen: isOpen, setIsOpen: setIsOpen, limitLabel: `limit ${limit.value[0].value}`, onClickDelete: handleClickDelete, popoverTitle: popoverTitle, popoverChildren: _jsx(EditPopover, { onSave: (column, direction) => {
20
12
  setIsOpen(false);
21
13
  onSave(column, direction);
22
- }, isEdit: true, onDelete: handleClickDelete, initialLimit: limit.value[0].value, TextInput: TextInput, Button: Button, SecondaryButton: SecondaryButton }), isOpen: isOpen, setIsOpen: setIsOpen, onDelete: () => {
23
- handleDelete();
24
- } }) }));
14
+ }, isEdit: true, onDelete: handleClickDelete, initialLimit: limit.value[0].value, TextInput: TextInput, Button: Button, SecondaryButton: SecondaryButton }) }) }));
25
15
  };
26
16
  export const AddLimitPopover = ({ onSave, initialLimit = 0, isEdit = false, onDelete = () => { }, TextInput = QuillTextInput, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
27
17
  const [limit, setLimit] = useState(initialLimit);
@@ -31,7 +21,7 @@ export const AddLimitPopover = ({ onSave, initialLimit = 0, isEdit = false, onDe
31
21
  flexDirection: 'row',
32
22
  gap: 12,
33
23
  padding: '6px 0px',
34
- }, children: _jsx(TextInput, { id: 'add_limit_input', value: limit, width: 200,
24
+ }, children: _jsx(TextInput, { id: 'add_limit_input', value: limit.toString() ?? initialLimit.toString(), width: 200,
35
25
  // style={{ minHeight: 32, padding: '6px 12px' }}
36
26
  onChange: (e) => {
37
27
  if (Number.isNaN(parseFloat(e.target.value || '0'))) {
@@ -1,3 +1,23 @@
1
- export declare const SortSentence: ({ sortData, keyPrefix, columns, handleDelete, setEditPopoverKey, setOpenPopover, setActiveEditItem, setIsPending, setActivePath, onSave, popoverTitle, SortPopover, EditPopover, Select, Button, SecondaryButton, children, }: any) => import("react/jsx-runtime").JSX.Element | null;
1
+ /// <reference types="react" />
2
+ import { ButtonComponentProps, SelectComponentProps } from '../UiComponents';
3
+ import { SortPopoverComponentProps } from './ui';
4
+ export declare const SortSentence: ({ sortData, keyPrefix, columns, handleDelete, setEditPopoverKey, setOpenPopover, setActiveEditItem, setIsPending, setActivePath, onSave, popoverTitle, SortPopover, EditPopover, Select, Button, SecondaryButton, }: {
5
+ sortData: any;
6
+ columns: any;
7
+ setIsPending: any;
8
+ setEditPopoverKey: any;
9
+ setActiveEditItem: any;
10
+ setOpenPopover: any;
11
+ setActivePath: any;
12
+ keyPrefix?: any;
13
+ handleDelete: any;
14
+ onSave: any;
15
+ popoverTitle?: string | undefined;
16
+ SortPopover: (props: SortPopoverComponentProps) => JSX.Element;
17
+ EditPopover: any;
18
+ Select?: ((props: SelectComponentProps) => JSX.Element) | undefined;
19
+ Button?: ((props: ButtonComponentProps) => JSX.Element) | undefined;
20
+ SecondaryButton?: ((props: ButtonComponentProps) => JSX.Element) | undefined;
21
+ }) => import("react/jsx-runtime").JSX.Element | null;
2
22
  export declare const AddSortPopover: ({ onSave, columns, isEdit, onDelete, column, Select, Button, SecondaryButton, }: any) => import("react/jsx-runtime").JSX.Element;
3
23
  //# sourceMappingURL=AddSortPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddSortPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddSortPopover.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY,kOAkBtB,GAAG,mDA8CL,CAAC;AAEF,eAAO,MAAM,cAAc,oFASxB,GAAG,4CAiEL,CAAC"}
1
+ {"version":3,"file":"AddSortPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddSortPopover.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,oBAAoB,EAGpB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,MAAM,CAAC;AAOjD,eAAO,MAAM,YAAY;cAkBb,GAAG;aACJ,GAAG;kBACE,GAAG;uBACE,GAAG;uBACH,GAAG;oBACN,GAAG;mBACJ,GAAG;gBACN,GAAG;kBACD,GAAG;YACT,GAAG;;yBAEU,yBAAyB,KAAK,WAAW;iBACjD,GAAG;sBACC,oBAAoB,KAAK,WAAW;sBACpC,oBAAoB,KAAK,WAAW;+BAC3B,oBAAoB,KAAK,WAAW;oDAoD/D,CAAC;AAEF,eAAO,MAAM,cAAc,oFASxB,GAAG,4CA6DL,CAAC"}
@@ -1,15 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useContext } from 'react';
2
+ import { useState } from 'react';
3
3
  import { QuillSelectComponent } from '../QuillSelect';
4
- import { MemoizedButton, MemoizedSecondaryButton } from '../UiComponents';
5
- import { ThemeContext } from '../../Context';
4
+ import { MemoizedButton, MemoizedSecondaryButton, } from '../UiComponents';
6
5
  import { snakeCaseToTitleCase } from '../../utils/textProcessing';
7
6
  const SORT_VALUE_TO_LABEL = {
8
7
  ASC: 'ascending',
9
8
  DESC: 'descending',
10
9
  };
11
- export const SortSentence = ({ sortData, keyPrefix, columns, handleDelete, setEditPopoverKey, setOpenPopover, setActiveEditItem, setIsPending, setActivePath, onSave, popoverTitle = 'Edit Sort', SortPopover, EditPopover, Select = QuillSelectComponent, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, children, }) => {
10
+ export const SortSentence = ({ sortData, keyPrefix, columns, handleDelete, setEditPopoverKey, setOpenPopover, setActiveEditItem, setIsPending, setActivePath, onSave, popoverTitle = 'Edit Sort', SortPopover, EditPopover, Select = QuillSelectComponent, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
12
11
  const [isOpen, setIsOpen] = useState(false);
12
+ const handleSetIsOpen = (isOpen) => {
13
+ setIsOpen(isOpen);
14
+ if (!isOpen) {
15
+ setIsPending(false);
16
+ setActiveEditItem(null);
17
+ setActivePath(null);
18
+ }
19
+ };
13
20
  const handleClickDelete = (e) => {
14
21
  e.stopPropagation(); // don't call onClick handler
15
22
  setIsPending(false);
@@ -21,37 +28,28 @@ export const SortSentence = ({ sortData, keyPrefix, columns, handleDelete, setEd
21
28
  if (!sortData && (!sortData.expr.column || !sortData.expr.value)) {
22
29
  return null;
23
30
  }
24
- return (_jsx("div", { children: _jsx(SortPopover
25
- // @ts-ignore
26
- , {
27
- // @ts-ignore
28
- filterLabel: `${snakeCaseToTitleCase(sortData.expr.column) || snakeCaseToTitleCase(sortData.expr.value)} ${SORT_VALUE_TO_LABEL[sortData.type]}`, onClickDelete: handleClickDelete, popoverTitle: popoverTitle, popoverChildren: _jsx(EditPopover, { onSave: (column, direction) => {
31
+ return (_jsx("div", { children: _jsx(SortPopover, { isOpen: isOpen, setIsOpen: handleSetIsOpen, sortLabel: `${snakeCaseToTitleCase(sortData.expr.column) || snakeCaseToTitleCase(sortData.expr.value)} ${SORT_VALUE_TO_LABEL[sortData.type]}`, onClickDelete: handleClickDelete, popoverTitle: popoverTitle, popoverChildren: _jsx(EditPopover, { onSave: (column, direction) => {
29
32
  setIsOpen(false);
30
33
  onSave(column, direction);
31
- }, columns: columns, isEdit: true, onDelete: handleClickDelete, column: sortData.expr.column || sortData.expr.value, Select: Select, Button: Button, SecondaryButton: SecondaryButton }), isOpen: isOpen, setIsOpen: setIsOpen, onDelete: () => {
32
- setIsPending(false);
33
- setActiveEditItem(null);
34
- setActivePath(null);
35
- } }) }));
34
+ }, columns: columns, isEdit: true, onDelete: handleClickDelete, column: sortData.expr.column || sortData.expr.value, Select: Select, Button: Button, SecondaryButton: SecondaryButton }) }) }));
36
35
  };
37
36
  export const AddSortPopover = ({ onSave, columns, isEdit, onDelete, column, Select = QuillSelectComponent, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
38
37
  const [sortColumn, setSortColumn] = useState(column || '');
39
38
  const [sortDirection, setSortDirection] = useState('ASC');
40
- const [theme] = useContext(ThemeContext);
41
39
  return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: [_jsxs("div", { style: {
42
40
  display: 'flex',
43
41
  flexDirection: 'row',
44
42
  gap: 12,
45
43
  padding: '6px 0px',
46
- }, children: [_jsx(Select, { theme: theme, value: sortColumn, onChange: (value) => {
47
- setSortColumn(value);
44
+ }, children: [_jsx(Select, { value: sortColumn, onChange: (e) => {
45
+ setSortColumn(e.target.value);
48
46
  }, options: [
49
47
  ...columns.map((column) => ({
50
48
  label: snakeCaseToTitleCase(column.split('.')[1] || ''),
51
49
  value: column.split('.')[1],
52
50
  })),
53
- ] }), _jsx(Select, { theme: theme, value: sortDirection, onChange: (value) => {
54
- setSortDirection(value);
51
+ ] }), _jsx(Select, { value: sortDirection, onChange: (e) => {
52
+ setSortDirection(e.target.value);
55
53
  }, options: [
56
54
  { label: 'Ascending', value: 'ASC' },
57
55
  { label: 'Descending', value: 'DESC' },
@@ -248,7 +248,7 @@ export const DATE_DESCRIPTION_MAP = {
248
248
  },
249
249
  },
250
250
  },
251
- })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
251
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} in the previous ${node.right.right.expr.value.toLowerCase()}`,
252
252
  [JSON.stringify({
253
253
  type: 'binary_expr',
254
254
  left: {
@@ -20,8 +20,9 @@ export declare function convertGroupBy(ast: AST, prevPivot: Pivot | undefined, s
20
20
  pivot: Pivot;
21
21
  } | {
22
22
  pivot: Partial<{
23
- aggregationType: "sum" | "average" | "count" | "min" | "max";
23
+ aggregationType: "sum" | "average" | "count" | "min" | "max" | "avg";
24
24
  valueField: string;
25
+ valueFieldType?: string | undefined;
25
26
  rowField?: string | undefined;
26
27
  rowFieldType?: string | undefined;
27
28
  columnField?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAMJ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AASjD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAuCpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,SAAS,EAAE,GACxB,GAAG,CAAC,MAAM,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,SAAS,mBAAc,EACvB,YAAY,EAAE,SAAS,EAAE;;;;;;;;;;;;;;EA8b1B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;EA6G5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyJtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAMJ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AASjD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAuCpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,SAAS,EAAE,GACxB,GAAG,CAAC,MAAM,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,SAAS,mBAAc,EACvB,YAAY,EAAE,SAAS,EAAE;;;;;;;;;;;;;;;EAwd1B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;EA6G5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyJtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E"}