@quillsql/react 2.11.15 → 2.11.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/cjs/Chart.d.ts +117 -42
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +44 -18
  4. package/dist/cjs/ChartBuilder.d.ts +195 -28
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +124 -63
  7. package/dist/cjs/ChartEditor.d.ts +114 -18
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +47 -15
  10. package/dist/cjs/Dashboard.d.ts +148 -90
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +46 -152
  13. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  17. package/dist/cjs/QuillProvider.d.ts +105 -2
  18. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  19. package/dist/cjs/QuillProvider.js +59 -0
  20. package/dist/cjs/ReportBuilder.d.ts +188 -34
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +551 -426
  23. package/dist/cjs/SQLEditor.d.ts +158 -29
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +52 -32
  26. package/dist/cjs/Table.d.ts +119 -15
  27. package/dist/cjs/Table.d.ts.map +1 -1
  28. package/dist/cjs/Table.js +37 -6
  29. package/dist/cjs/TableChart.d.ts.map +1 -1
  30. package/dist/cjs/TableChart.js +0 -194
  31. package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  32. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
  33. package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
  34. package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
  35. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/LineChart.js +3 -3
  37. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
  38. package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
  39. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
  40. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
  42. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
  43. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  44. package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
  45. package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
  46. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  47. package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
  48. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
  49. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  50. package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
  51. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  52. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  53. package/dist/cjs/components/Dashboard/TableComponent.js +6 -9
  54. package/dist/cjs/components/QuillSelect.d.ts +4 -1
  55. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  56. package/dist/cjs/components/QuillSelect.js +13 -8
  57. package/dist/cjs/components/QuillTable.d.ts +16 -2
  58. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  59. package/dist/cjs/components/QuillTable.js +4 -4
  60. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  61. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +33 -14
  63. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +19 -19
  66. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +18 -20
  69. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  70. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/convert.js +40 -20
  73. package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
  74. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/ui.d.ts +83 -19
  76. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  77. package/dist/cjs/components/ReportBuilder/ui.js +68 -121
  78. package/dist/cjs/components/ReportBuilder/util.d.ts +3 -1
  79. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  80. package/dist/cjs/components/ReportBuilder/util.js +34 -8
  81. package/dist/cjs/components/UiComponents.d.ts +98 -97
  82. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  83. package/dist/cjs/components/UiComponents.js +132 -112
  84. package/dist/cjs/hooks/index.d.ts +1 -0
  85. package/dist/cjs/hooks/index.d.ts.map +1 -1
  86. package/dist/cjs/hooks/index.js +3 -1
  87. package/dist/cjs/hooks/useTheme.d.ts +7 -0
  88. package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
  89. package/dist/cjs/hooks/useTheme.js +12 -0
  90. package/dist/cjs/index.d.ts +10 -2
  91. package/dist/cjs/index.d.ts.map +1 -1
  92. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotList.js +10 -10
  94. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +29 -14
  95. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.js +73 -49
  97. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  98. package/dist/cjs/utils/dataFetcher.js +2 -0
  99. package/dist/cjs/utils/width.d.ts +12 -0
  100. package/dist/cjs/utils/width.d.ts.map +1 -0
  101. package/dist/cjs/utils/width.js +25 -0
  102. package/dist/esm/Chart.d.ts +117 -42
  103. package/dist/esm/Chart.d.ts.map +1 -1
  104. package/dist/esm/Chart.js +45 -19
  105. package/dist/esm/ChartBuilder.d.ts +195 -28
  106. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  107. package/dist/esm/ChartBuilder.js +124 -63
  108. package/dist/esm/ChartEditor.d.ts +114 -18
  109. package/dist/esm/ChartEditor.d.ts.map +1 -1
  110. package/dist/esm/ChartEditor.js +51 -19
  111. package/dist/esm/Dashboard.d.ts +148 -90
  112. package/dist/esm/Dashboard.d.ts.map +1 -1
  113. package/dist/esm/Dashboard.js +49 -153
  114. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  115. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  116. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  117. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  118. package/dist/esm/QuillProvider.d.ts +105 -2
  119. package/dist/esm/QuillProvider.d.ts.map +1 -1
  120. package/dist/esm/QuillProvider.js +59 -0
  121. package/dist/esm/ReportBuilder.d.ts +188 -34
  122. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  123. package/dist/esm/ReportBuilder.js +553 -428
  124. package/dist/esm/SQLEditor.d.ts +158 -29
  125. package/dist/esm/SQLEditor.d.ts.map +1 -1
  126. package/dist/esm/SQLEditor.js +53 -33
  127. package/dist/esm/Table.d.ts +119 -15
  128. package/dist/esm/Table.d.ts.map +1 -1
  129. package/dist/esm/Table.js +38 -7
  130. package/dist/esm/TableChart.d.ts.map +1 -1
  131. package/dist/esm/TableChart.js +0 -194
  132. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  133. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  134. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  135. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  136. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  137. package/dist/esm/components/Chart/LineChart.js +3 -3
  138. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  139. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  140. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  141. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  142. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  143. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  144. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  145. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  146. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  147. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  148. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  149. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  150. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  152. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  153. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  154. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  155. package/dist/esm/components/QuillSelect.d.ts +4 -1
  156. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  157. package/dist/esm/components/QuillSelect.js +14 -9
  158. package/dist/esm/components/QuillTable.d.ts +16 -2
  159. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  160. package/dist/esm/components/QuillTable.js +4 -4
  161. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  162. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  163. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +34 -15
  164. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  165. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  166. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +20 -20
  167. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  168. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  169. package/dist/esm/components/ReportBuilder/AddSortPopover.js +20 -22
  170. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  171. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
  172. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/convert.js +33 -13
  174. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  175. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  176. package/dist/esm/components/ReportBuilder/ui.d.ts +83 -19
  177. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  178. package/dist/esm/components/ReportBuilder/ui.js +67 -119
  179. package/dist/esm/components/ReportBuilder/util.d.ts +3 -1
  180. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/util.js +31 -7
  182. package/dist/esm/components/UiComponents.d.ts +98 -97
  183. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  184. package/dist/esm/components/UiComponents.js +125 -110
  185. package/dist/esm/hooks/index.d.ts +1 -0
  186. package/dist/esm/hooks/index.d.ts.map +1 -1
  187. package/dist/esm/hooks/index.js +1 -0
  188. package/dist/esm/hooks/useTheme.d.ts +7 -0
  189. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  190. package/dist/esm/hooks/useTheme.js +10 -0
  191. package/dist/esm/index.d.ts +10 -2
  192. package/dist/esm/index.d.ts.map +1 -1
  193. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  194. package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
  195. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
  196. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  197. package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
  198. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  199. package/dist/esm/utils/dataFetcher.js +2 -0
  200. package/dist/esm/utils/width.d.ts +12 -0
  201. package/dist/esm/utils/width.d.ts.map +1 -0
  202. package/dist/esm/utils/width.js +21 -0
  203. package/package.json +1 -1
  204. package/dist/cjs/BarList.d.ts.map +0 -1
  205. package/dist/cjs/PieChart.d.ts.map +0 -1
  206. package/dist/esm/BarList.d.ts.map +0 -1
  207. package/dist/esm/PieChart.d.ts.map +0 -1
  208. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  209. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -1,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,2 +1,31 @@
1
- export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, HandleButton, }: any): import("react/jsx-runtime").JSX.Element;
1
+ /// <reference types="react" />
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, }: {
4
+ onSave: any;
5
+ orderedColumnNames: any;
6
+ setOrderedColumnNames: any;
7
+ selectedColumns: any;
8
+ setSelectedColumns: any;
9
+ isSelectedAllColumns: any;
10
+ clearAllState: any;
11
+ nameToColumn: any;
12
+ baseAst: any;
13
+ setBaseAst: any;
14
+ pivot: any;
15
+ initialTableName: any;
16
+ defaultAST: any;
17
+ defaultTable: any;
18
+ setPivot: any;
19
+ TextInput: (props: TextInputComponentProps) => JSX.Element;
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;
28
+ SecondaryButton: any;
29
+ Button: any;
30
+ }): import("react/jsx-runtime").JSX.Element;
2
31
  //# sourceMappingURL=AddColumnPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnPopover.tsx"],"names":[],"mappings":"AAoBA,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,GAAG,2CAgML"}
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,12 +1,23 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useContext, useState } from 'react';
2
+ /* eslint-disable no-unused-vars */
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';
5
6
  import { CSS as DND_CSS } from '@dnd-kit/utilities';
6
7
  import { ThemeContext } from '../../Context';
7
- export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, HandleButton, }) {
8
+ import { updateFirstChildWidth } from '../../utils/width';
9
+ import { snakeCaseToTitleCase } from '../../utils/textProcessing';
10
+ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, TextInput, SelectColumn, SecondaryButton, Button, }) {
8
11
  const [theme] = useContext(ThemeContext);
9
12
  const [search, setSearch] = useState('');
13
+ const [searchResults, setSearchResults] = useState(orderedColumnNames);
14
+ const textInputContainerRef = useRef(null);
15
+ const [searchInputWidth, setSearchInputWidth] = useState(200);
16
+ useEffect(() => {
17
+ // Since the TextInput component takes a required numeric width parameter,
18
+ // we dynamically calculate the width of this component onload here.
19
+ updateFirstChildWidth(textInputContainerRef, setSearchInputWidth);
20
+ }, []);
10
21
  const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
11
22
  coordinateGetter: sortableKeyboardCoordinates,
12
23
  }));
@@ -27,32 +38,40 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
27
38
  const { valueField, rowField, columnField } = pivot;
28
39
  return [valueField, rowField, columnField].filter(Boolean);
29
40
  };
30
- const searchResults = orderedColumnNames
31
- .filter((row) => {
32
- const [table, _column] = row.split('.');
33
- return (selectedColumns.length === 0 || selectedColumns[0].startsWith(table));
34
- })
35
- .filter((row) => search.length === 0 || row.includes(search));
41
+ useEffect(() => {
42
+ setSearchResults(orderedColumnNames
43
+ .filter((row) => {
44
+ const [table, _column] = row.split('.');
45
+ const selectedTable = selectedColumns[0]?.split('.')[0];
46
+ return selectedColumns.length === 0 || selectedTable === table;
47
+ })
48
+ .filter((row) => search.length === 0 ||
49
+ row.includes(search) ||
50
+ snakeCaseToTitleCase(row)
51
+ .toLowerCase()
52
+ .includes(search.toLowerCase())));
53
+ }, [search, orderedColumnNames, selectedColumns]);
36
54
  return (_jsxs("div", { style: {
37
55
  display: 'flex',
38
56
  flexDirection: 'column',
39
57
  gap: 2,
40
58
  minWidth: 300,
41
59
  maxHeight: 500,
42
- }, children: [_jsx("div", { style: {
60
+ }, children: [_jsx("div", { ref: textInputContainerRef, style: {
43
61
  position: 'relative',
44
62
  display: 'flex',
45
63
  flexDirection: 'row',
46
64
  alignItems: 'center',
47
65
  marginTop: 2,
48
- }, children: _jsx(TextInput, { type: "text", value: search, placeholder: 'Search...', style: { marginBottom: 6, width: '100%' }, onChange: (e) => setSearch(e.target.value) }) }), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: orderedColumnNames, strategy: verticalListSortingStrategy, children: _jsxs("div", { style: {
66
+ marginBottom: 6,
67
+ }, children: _jsx(TextInput, { id: 'add_column_search_bar', value: search, placeholder: 'Search...', width: searchInputWidth, onChange: (e) => setSearch(e.target.value) }) }), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: orderedColumnNames, strategy: verticalListSortingStrategy, children: _jsxs("div", { style: {
49
68
  display: 'flex',
50
69
  flexDirection: 'column',
51
70
  gap: 8,
52
71
  overflowY: 'auto',
53
72
  maxWidth: '300px',
54
73
  }, children: [searchResults.map((value) => {
55
- 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));
56
75
  }), search.length > 0 && searchResults.length === 0 && (_jsx("div", { style: { fontFamily: theme?.fontFamily }, children: "No results found" }))] }) }) }), _jsxs("div", { style: {
57
76
  display: 'flex',
58
77
  width: '100%',
@@ -60,7 +79,7 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
60
79
  gap: 8,
61
80
  justifyContent: 'end',
62
81
  marginTop: 12,
63
- }, children: [selectedColumns.length > 0 && !isSelectedAllColumns() && (_jsx(SecondaryButton, { onClick: () => setSelectedColumns(orderedColumnNames.filter((row) => {
82
+ }, children: [selectedColumns.length > 0 && !isSelectedAllColumns() && (_jsx(SecondaryButton, { onClick: () => setSelectedColumns(searchResults.filter((row) => {
64
83
  const [table, _column] = row.split('.');
65
84
  return selectedColumns[0].startsWith(table);
66
85
  })), label: "Select all" })), selectedColumns.length > 0 && isSelectedAllColumns() && (_jsx(SecondaryButton, { onClick: () => setSelectedColumns([]), label: "Clear" })), _jsx(Button, { onClick: () => {
@@ -105,7 +124,7 @@ export default function AddColumnPopover({ onSave, orderedColumnNames, setOrdere
105
124
  onSave();
106
125
  }, label: "Select columns" })] })] }));
107
126
  }
108
- const SortableItem = ({ id, label, setSelectedColumns, theme, selectedColumns, SelectColumn, HandleButton, }) => {
127
+ const SortableItem = ({ id, label, setSelectedColumns, selectedColumns, SelectColumn, }) => {
109
128
  const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: id });
110
129
  const style = {
111
130
  transform: DND_CSS.Transform.toString(transform),
@@ -121,7 +140,7 @@ const SortableItem = ({ id, label, setSelectedColumns, theme, selectedColumns, S
121
140
  }
122
141
  });
123
142
  };
124
- 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: {
125
144
  cursor: 'grab',
126
- }, ...attributes, ...listeners, children: _jsx(HandleButton, {}) }) }) }));
145
+ }, ...attributes, ...listeners, children: _jsx(props.dragIcon, {}) })) }) }));
127
146
  };
@@ -1,3 +1,26 @@
1
- export declare const LimitSentence: ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle, LimitPopover, EditPopover, children, }: any) => import("react/jsx-runtime").JSX.Element;
2
- export declare const AddLimitPopover: ({ onSave, initialLimit, isEdit, onDelete, }: any) => import("react/jsx-runtime").JSX.Element;
1
+ /// <reference types="react" />
2
+ import { ButtonComponentProps, TextInputComponentProps } from '../UiComponents';
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;
16
+ export interface AddLimitPopoverProps {
17
+ onSave: (limit: number) => void;
18
+ initialLimit?: number;
19
+ isEdit?: boolean;
20
+ onDelete?: () => void;
21
+ TextInput?: (props: TextInputComponentProps) => JSX.Element;
22
+ Button?: (props: ButtonComponentProps) => JSX.Element;
23
+ SecondaryButton?: (props: ButtonComponentProps) => JSX.Element;
24
+ }
25
+ export declare const AddLimitPopover: ({ onSave, initialLimit, isEdit, onDelete, TextInput, Button, SecondaryButton, }: AddLimitPopoverProps) => import("react/jsx-runtime").JSX.Element;
3
26
  //# sourceMappingURL=AddLimitPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddLimitPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddLimitPopover.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,wGASvB,GAAG,4CAiCL,CAAC;AAEF,eAAO,MAAM,eAAe,gDAKzB,GAAG,4CAmCL,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"}
@@ -1,38 +1,38 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useContext } from 'react';
3
- import { MemoizedButton, MemoizedSecondaryButton } from '../UiComponents';
3
+ import { MemoizedButton, MemoizedSecondaryButton, QuillTextInput, } from '../UiComponents';
4
4
  import { ThemeContext } from '../../Context';
5
- import { QuillTextInput } from './ui';
6
- const SORT_VALUE_TO_LABEL = {
7
- ASC: 'ascending',
8
- DESC: 'descending',
9
- };
10
- export const LimitSentence = ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle = 'Edit limit', LimitPopover, EditPopover, children, }) => {
5
+ export const LimitSentence = ({ limit, handleDelete, setOpenPopover, onSave, popoverTitle = 'Edit limit', LimitPopover, EditPopover, TextInput = QuillTextInput, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
11
6
  const [isOpen, setIsOpen] = useState(false);
12
7
  const handleClickDelete = (e) => {
13
8
  setOpenPopover(null);
14
9
  handleDelete();
15
10
  };
16
- return (_jsx("div", { style: { width: '100%' }, children: _jsx(LimitPopover
17
- // @ts-ignore
18
- , {
19
- // @ts-ignore
20
- 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) => {
21
12
  setIsOpen(false);
22
13
  onSave(column, direction);
23
- }, isEdit: true, onDelete: handleClickDelete, initialLimit: limit.value[0].value }), isOpen: isOpen, setIsOpen: setIsOpen, onDelete: () => {
24
- handleDelete();
25
- } }) }));
14
+ }, isEdit: true, onDelete: handleClickDelete, initialLimit: limit.value[0].value, TextInput: TextInput, Button: Button, SecondaryButton: SecondaryButton }) }) }));
26
15
  };
27
- export const AddLimitPopover = ({ onSave, initialLimit, isEdit, onDelete, }) => {
28
- const [limit, setLimit] = useState(initialLimit || 0);
16
+ export const AddLimitPopover = ({ onSave, initialLimit = 0, isEdit = false, onDelete = () => { }, TextInput = QuillTextInput, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, }) => {
17
+ const [limit, setLimit] = useState(initialLimit);
29
18
  const [theme] = useContext(ThemeContext);
30
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: [_jsx("div", { style: { display: 'flex', flexDirection: 'row', gap: 12, padding: '6px 0px' }, children: _jsx(QuillTextInput, { value: limit, type: "number", style: { width: 200, minHeight: 32, padding: '6px 12px' }, onChange: (e) => {
31
- setLimit(e.target.value);
19
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: [_jsx("div", { style: {
20
+ display: 'flex',
21
+ flexDirection: 'row',
22
+ gap: 12,
23
+ padding: '6px 0px',
24
+ }, children: _jsx(TextInput, { id: 'add_limit_input', value: limit.toString() ?? initialLimit.toString(), width: 200,
25
+ // style={{ minHeight: 32, padding: '6px 12px' }}
26
+ onChange: (e) => {
27
+ if (Number.isNaN(parseFloat(e.target.value || '0'))) {
28
+ alert('Please input a number.');
29
+ return;
30
+ }
31
+ setLimit(parseFloat(e.target.value || '0'));
32
32
  } }) }), _jsx("div", { style: {
33
33
  display: 'flex',
34
34
  flexDirection: 'row',
35
35
  justifyContent: 'end',
36
36
  gap: 12,
37
- }, children: isEdit ? (_jsxs(_Fragment, { children: [_jsx(MemoizedSecondaryButton, { onClick: onDelete, label: "Delete" }), _jsx(MemoizedButton, { onClick: () => onSave(limit), label: "Edit limit" })] })) : (_jsx(MemoizedButton, { onClick: () => onSave(limit), label: "Add limit" })) })] }));
37
+ }, children: isEdit ? (_jsxs(_Fragment, { children: [_jsx(SecondaryButton, { onClick: onDelete, label: "Delete" }), _jsx(Button, { onClick: () => onSave(limit), label: "Edit limit" })] })) : (_jsx(Button, { onClick: () => onSave(limit), label: "Add limit" })) })] }));
38
38
  };
@@ -1,3 +1,23 @@
1
- export declare const SortSentence: ({ sortData, keyPrefix, columns, handleDelete, setEditPopoverKey, setOpenPopover, setActiveEditItem, setIsPending, setActivePath, onSave, popoverTitle, SortPopover, EditPopover, children, }: any) => import("react/jsx-runtime").JSX.Element | undefined;
2
- export declare const AddSortPopover: ({ onSave, columns, isEdit, onDelete, column, }: any) => import("react/jsx-runtime").JSX.Element;
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;
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,iMAetB,GAAG,wDA2CL,CAAC;AAEF,eAAO,MAAM,cAAc,mDAMxB,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"}