@quillsql/react 2.9.1 → 2.9.3

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 (309) hide show
  1. package/dist/AddToDashboardModal.d.ts +1 -0
  2. package/dist/AddToDashboardModal.d.ts.map +1 -1
  3. package/dist/AddToDashboardModal.js +152 -181
  4. package/dist/AddToDashboardModal.js.map +1 -1
  5. package/dist/BarList.d.ts +1 -0
  6. package/dist/BarList.js +36 -44
  7. package/dist/Chart.d.ts +5 -24
  8. package/dist/Chart.d.ts.map +1 -1
  9. package/dist/Chart.js +203 -802
  10. package/dist/Chart.js.map +1 -1
  11. package/dist/ChartBuilder.d.ts +1 -0
  12. package/dist/ChartBuilder.d.ts.map +1 -1
  13. package/dist/ChartBuilder.js +89 -91
  14. package/dist/ChartBuilder.js.map +1 -1
  15. package/dist/ChartEditor.d.ts +1 -0
  16. package/dist/ChartEditor.d.ts.map +1 -1
  17. package/dist/ChartEditor.js +23 -22
  18. package/dist/ChartEditor.js.map +1 -1
  19. package/dist/Context.d.ts +20 -0
  20. package/dist/Context.d.ts.map +1 -1
  21. package/dist/Context.js +82 -62
  22. package/dist/Context.js.map +1 -1
  23. package/dist/Dashboard.d.ts +4 -1
  24. package/dist/Dashboard.d.ts.map +1 -1
  25. package/dist/Dashboard.js +238 -336
  26. package/dist/Dashboard.js.map +1 -1
  27. package/dist/DateRangePicker/Calendar.d.ts +1 -0
  28. package/dist/DateRangePicker/Calendar.js +41 -46
  29. package/dist/DateRangePicker/DateRangePicker.d.ts +1 -0
  30. package/dist/DateRangePicker/DateRangePicker.js +32 -61
  31. package/dist/DateRangePicker/DateRangePickerButton.d.ts +1 -0
  32. package/dist/DateRangePicker/DateRangePickerButton.js +14 -17
  33. package/dist/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  34. package/dist/DateRangePicker/dateRangePickerUtils.js +76 -90
  35. package/dist/DateRangePicker/index.d.ts +1 -0
  36. package/dist/DateRangePicker/index.js +1 -9
  37. package/dist/PieChart.d.ts +1 -0
  38. package/dist/PieChart.js +35 -70
  39. package/dist/QuillProvider.d.ts +1 -0
  40. package/dist/QuillProvider.js +4 -7
  41. package/dist/ReportBuilder.d.ts +1 -0
  42. package/dist/ReportBuilder.js +120 -129
  43. package/dist/SQLEditor.d.ts +1 -0
  44. package/dist/SQLEditor.js +56 -65
  45. package/dist/SQLEditor.js.map +1 -1
  46. package/dist/Table.d.ts +1 -0
  47. package/dist/Table.d.ts.map +1 -1
  48. package/dist/Table.js +65 -65
  49. package/dist/Table.js.map +1 -1
  50. package/dist/TableChart.d.ts +1 -0
  51. package/dist/TableChart.js +17 -45
  52. package/dist/api/ServerClient.d.ts +30 -0
  53. package/dist/api/ServerClient.d.ts.map +1 -0
  54. package/dist/api/ServerClient.js +39 -0
  55. package/dist/api/ServerClient.js.map +1 -0
  56. package/dist/assets/ArrowDownHeadIcon.d.ts +1 -0
  57. package/dist/assets/ArrowDownHeadIcon.js +3 -6
  58. package/dist/assets/ArrowDownIcon.d.ts +1 -0
  59. package/dist/assets/ArrowDownIcon.js +3 -6
  60. package/dist/assets/ArrowDownRightIcon.d.ts +1 -0
  61. package/dist/assets/ArrowDownRightIcon.js +3 -6
  62. package/dist/assets/ArrowLeftHeadIcon.d.ts +1 -0
  63. package/dist/assets/ArrowLeftHeadIcon.js +3 -6
  64. package/dist/assets/ArrowRightHeadIcon.d.ts +1 -0
  65. package/dist/assets/ArrowRightHeadIcon.js +3 -6
  66. package/dist/assets/ArrowRightIcon.d.ts +1 -0
  67. package/dist/assets/ArrowRightIcon.js +3 -6
  68. package/dist/assets/ArrowUpHeadIcon.d.ts +1 -0
  69. package/dist/assets/ArrowUpHeadIcon.js +3 -6
  70. package/dist/assets/ArrowUpIcon.d.ts +1 -0
  71. package/dist/assets/ArrowUpIcon.js +3 -6
  72. package/dist/assets/ArrowUpRightIcon.d.ts +1 -0
  73. package/dist/assets/ArrowUpRightIcon.js +3 -6
  74. package/dist/assets/CalendarIcon.d.ts +1 -0
  75. package/dist/assets/CalendarIcon.js +3 -6
  76. package/dist/assets/CalendarNormalIcon.d.ts +1 -0
  77. package/dist/assets/CalendarNormalIcon.js +3 -6
  78. package/dist/assets/DoubleArrowLeftHeadIcon.d.ts +1 -0
  79. package/dist/assets/DoubleArrowLeftHeadIcon.js +3 -6
  80. package/dist/assets/DoubleArrowRightHeadIcon.d.ts +1 -0
  81. package/dist/assets/DoubleArrowRightHeadIcon.js +3 -6
  82. package/dist/assets/ExclamationFilledIcon.d.ts +1 -0
  83. package/dist/assets/ExclamationFilledIcon.js +3 -6
  84. package/dist/assets/FilterIcon.d.ts +1 -0
  85. package/dist/assets/FilterIcon.js +3 -6
  86. package/dist/assets/LoadingSpinner.d.ts +1 -0
  87. package/dist/assets/LoadingSpinner.js +3 -6
  88. package/dist/assets/RefreshIcon.d.ts +1 -0
  89. package/dist/assets/RefreshIcon.js +3 -6
  90. package/dist/assets/SearchIcon.d.ts +1 -0
  91. package/dist/assets/SearchIcon.js +3 -6
  92. package/dist/assets/UpLeftArrowsIcon.d.ts +1 -0
  93. package/dist/assets/UpLeftArrowsIcon.js +3 -6
  94. package/dist/assets/XCircleIcon.d.ts +1 -0
  95. package/dist/assets/XCircleIcon.js +3 -6
  96. package/dist/assets/XIcon.d.ts +1 -0
  97. package/dist/assets/XIcon.js +3 -6
  98. package/dist/assets/index.d.ts +1 -0
  99. package/dist/assets/index.js +21 -49
  100. package/dist/components/Banner/index.d.ts +1 -0
  101. package/dist/components/Banner/index.js +6 -10
  102. package/dist/components/BigModal/BigModal.d.ts +1 -0
  103. package/dist/components/BigModal/BigModal.js +13 -39
  104. package/dist/components/Chart/BarChart.d.ts +15 -0
  105. package/dist/components/Chart/BarChart.d.ts.map +1 -0
  106. package/dist/components/Chart/BarChart.js +57 -0
  107. package/dist/components/Chart/BarChart.js.map +1 -0
  108. package/dist/components/Chart/ChartTooltip.d.ts +29 -0
  109. package/dist/components/Chart/ChartTooltip.d.ts.map +1 -0
  110. package/dist/components/Chart/ChartTooltip.js +229 -0
  111. package/dist/components/Chart/ChartTooltip.js.map +1 -0
  112. package/dist/components/Chart/ChartTooltipFrame.d.ts +6 -0
  113. package/dist/components/Chart/ChartTooltipFrame.d.ts.map +1 -0
  114. package/dist/components/Chart/ChartTooltipFrame.js +12 -0
  115. package/dist/components/Chart/ChartTooltipFrame.js.map +1 -0
  116. package/dist/components/Chart/ChartTooltipGroup.d.ts +11 -0
  117. package/dist/components/Chart/ChartTooltipGroup.d.ts.map +1 -0
  118. package/dist/components/Chart/ChartTooltipGroup.js +23 -0
  119. package/dist/components/Chart/ChartTooltipGroup.js.map +1 -0
  120. package/dist/components/Chart/ChartTooltipRow.d.ts +8 -0
  121. package/dist/components/Chart/ChartTooltipRow.d.ts.map +1 -0
  122. package/dist/components/Chart/ChartTooltipRow.js +41 -0
  123. package/dist/components/Chart/ChartTooltipRow.js.map +1 -0
  124. package/dist/components/Chart/LineChart.d.ts +13 -0
  125. package/dist/components/Chart/LineChart.d.ts.map +1 -0
  126. package/dist/components/Chart/LineChart.js +68 -0
  127. package/dist/components/Chart/LineChart.js.map +1 -0
  128. package/dist/components/Dropdown/Dropdown.d.ts +1 -0
  129. package/dist/components/Dropdown/Dropdown.js +24 -53
  130. package/dist/components/Dropdown/DropdownItem.d.ts +1 -0
  131. package/dist/components/Dropdown/DropdownItem.js +9 -35
  132. package/dist/components/Dropdown/index.d.ts +1 -0
  133. package/dist/components/Dropdown/index.js +2 -11
  134. package/dist/components/Modal/Modal.d.ts +1 -0
  135. package/dist/components/Modal/Modal.js +13 -39
  136. package/dist/components/Modal/index.d.ts +1 -0
  137. package/dist/components/Modal/index.js +1 -9
  138. package/dist/components/QuillCard.d.ts +1 -0
  139. package/dist/components/QuillCard.js +8 -13
  140. package/dist/components/ReportBuilder/ColumnSelector.d.ts +24 -6
  141. package/dist/components/ReportBuilder/ColumnSelector.d.ts.map +1 -1
  142. package/dist/components/ReportBuilder/ColumnSelector.js +56 -8
  143. package/dist/components/ReportBuilder/ColumnSelector.js.map +1 -0
  144. package/dist/components/ReportBuilder/FiltersModal.d.ts +40 -0
  145. package/dist/components/ReportBuilder/FiltersModal.d.ts.map +1 -0
  146. package/dist/components/ReportBuilder/FiltersModal.js +273 -0
  147. package/dist/components/ReportBuilder/FiltersModal.js.map +1 -0
  148. package/dist/components/ReportBuilder/SortModal.d.ts +28 -0
  149. package/dist/components/ReportBuilder/SortModal.d.ts.map +1 -0
  150. package/dist/components/ReportBuilder/SortModal.js +41 -0
  151. package/dist/components/ReportBuilder/SortModal.js.map +1 -0
  152. package/dist/components/SqlTextEditor.d.ts +1 -0
  153. package/dist/components/SqlTextEditor.js +4 -11
  154. package/dist/components/UiComponents.d.ts +1 -0
  155. package/dist/components/UiComponents.js +37 -51
  156. package/dist/components/selectUtils.d.ts +1 -0
  157. package/dist/components/selectUtils.js +6 -17
  158. package/dist/contexts/BaseColorContext.d.ts +1 -0
  159. package/dist/contexts/BaseColorContext.js +3 -6
  160. package/dist/contexts/HoveredValueContext.d.ts +1 -0
  161. package/dist/contexts/HoveredValueContext.js +3 -6
  162. package/dist/contexts/RootStylesContext.d.ts +1 -0
  163. package/dist/contexts/RootStylesContext.js +3 -6
  164. package/dist/contexts/SelectedValueContext.d.ts +1 -0
  165. package/dist/contexts/SelectedValueContext.js +3 -6
  166. package/dist/contexts/index.d.ts +1 -0
  167. package/dist/contexts/index.js +4 -15
  168. package/dist/hooks/index.d.ts +1 -0
  169. package/dist/hooks/index.js +4 -15
  170. package/dist/hooks/useDashboard.d.ts +1 -0
  171. package/dist/hooks/useDashboard.js +10 -15
  172. package/dist/hooks/useInternalState.d.ts +1 -0
  173. package/dist/hooks/useInternalState.js +3 -6
  174. package/dist/hooks/useOnClickOutside.d.ts +1 -0
  175. package/dist/hooks/useOnClickOutside.js +3 -6
  176. package/dist/hooks/useOnWindowResize.d.ts +1 -0
  177. package/dist/hooks/useOnWindowResize.js +4 -7
  178. package/dist/hooks/useQuill.d.ts +3 -2
  179. package/dist/hooks/useQuill.d.ts.map +1 -1
  180. package/dist/hooks/useQuill.js +37 -28
  181. package/dist/hooks/useQuill.js.map +1 -1
  182. package/dist/hooks/useSelectOnKeyDown.d.ts +1 -0
  183. package/dist/hooks/useSelectOnKeyDown.js +4 -7
  184. package/dist/index.d.ts +1 -0
  185. package/dist/index.js +13 -33
  186. package/dist/internals/ReportBuilder/PivotList.d.ts +1 -0
  187. package/dist/internals/ReportBuilder/PivotList.js +14 -20
  188. package/dist/internals/ReportBuilder/PivotModal.d.ts +3 -2
  189. package/dist/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  190. package/dist/internals/ReportBuilder/PivotModal.js +280 -115
  191. package/dist/internals/ReportBuilder/PivotModal.js.map +1 -1
  192. package/dist/internals/ReportBuilder/PivotModal.spec.d.ts +1 -0
  193. package/dist/internals/ReportBuilder/PivotModal.spec.js +70 -73
  194. package/dist/lib/font.d.ts +1 -0
  195. package/dist/lib/font.js +2 -6
  196. package/dist/lib/index.d.ts +1 -0
  197. package/dist/lib/index.js +3 -20
  198. package/dist/lib/inputTypes.d.ts +1 -0
  199. package/dist/lib/inputTypes.js +1 -3
  200. package/dist/lib/utils.d.ts +1 -0
  201. package/dist/lib/utils.js +8 -19
  202. package/dist/test-data/tables.d.ts.map +1 -1
  203. package/dist/test-data/tables.js +27 -585
  204. package/dist/test-data/tables.js.map +1 -0
  205. package/dist/utils/aggregate.d.ts +1 -0
  206. package/dist/utils/aggregate.js +28 -35
  207. package/dist/utils/ast.d.ts +18 -0
  208. package/dist/utils/ast.d.ts.map +1 -0
  209. package/dist/utils/ast.js +310 -0
  210. package/dist/utils/ast.js.map +1 -0
  211. package/dist/utils/axisFormatter.d.ts +1 -0
  212. package/dist/utils/axisFormatter.js +19 -24
  213. package/dist/utils/color.d.ts +13 -0
  214. package/dist/utils/color.d.ts.map +1 -0
  215. package/dist/utils/color.js +247 -0
  216. package/dist/utils/color.js.map +1 -0
  217. package/dist/utils/colorToHex.d.ts +1 -0
  218. package/dist/utils/colorToHex.js +1 -5
  219. package/dist/utils/crypto.d.ts +2 -0
  220. package/dist/utils/crypto.d.ts.map +1 -0
  221. package/dist/utils/crypto.js +6 -0
  222. package/dist/utils/crypto.js.map +1 -0
  223. package/dist/utils/dataFetcher.d.ts +1 -0
  224. package/dist/utils/dataFetcher.d.ts.map +1 -1
  225. package/dist/utils/dataFetcher.js +8 -9
  226. package/dist/utils/dataFetcher.js.map +1 -1
  227. package/dist/utils/dates.d.ts +10 -0
  228. package/dist/utils/dates.d.ts.map +1 -0
  229. package/dist/utils/dates.js +32 -0
  230. package/dist/utils/dates.js.map +1 -0
  231. package/dist/utils/downloadCSV.d.ts +1 -0
  232. package/dist/utils/downloadCSV.js +1 -6
  233. package/dist/utils/getDomain.d.ts +8 -0
  234. package/dist/utils/getDomain.d.ts.map +1 -0
  235. package/dist/utils/getDomain.js +28 -0
  236. package/dist/utils/getDomain.js.map +1 -0
  237. package/dist/utils/merge.d.ts +2 -0
  238. package/dist/utils/merge.d.ts.map +1 -0
  239. package/dist/utils/merge.js +45 -0
  240. package/dist/utils/merge.js.map +1 -0
  241. package/dist/utils/schema.d.ts +7 -2
  242. package/dist/utils/schema.d.ts.map +1 -1
  243. package/dist/utils/schema.js +13 -7
  244. package/dist/utils/schema.js.map +1 -0
  245. package/dist/utils/sorting.d.ts +5 -0
  246. package/dist/utils/sorting.d.ts.map +1 -0
  247. package/dist/utils/sorting.js +14 -0
  248. package/dist/utils/sorting.js.map +1 -0
  249. package/dist/utils/textFormatting.d.ts.map +1 -1
  250. package/dist/utils/textFormatting.js +0 -1
  251. package/dist/utils/textFormatting.js.map +1 -0
  252. package/dist/utils/valueFormatter.d.ts +1 -0
  253. package/dist/utils/valueFormatter.js +19 -24
  254. package/dist/utils/valueFormatterCSV.d.ts +1 -0
  255. package/dist/utils/valueFormatterCSV.js +19 -24
  256. package/package.json +2 -3
  257. package/dist/DateRangePicker/Calendar.js.map +0 -1
  258. package/dist/DateRangePicker/dateRangePickerUtils.js.map +0 -1
  259. package/dist/DateRangePicker/index.js.map +0 -1
  260. package/dist/PieChart.js.map +0 -1
  261. package/dist/QuillProvider.js.map +0 -1
  262. package/dist/assets/ArrowDownIcon.js.map +0 -1
  263. package/dist/assets/ArrowDownRightIcon.js.map +0 -1
  264. package/dist/assets/ArrowLeftHeadIcon.js.map +0 -1
  265. package/dist/assets/ArrowRightHeadIcon.js.map +0 -1
  266. package/dist/assets/ArrowRightIcon.js.map +0 -1
  267. package/dist/assets/ArrowUpHeadIcon.js.map +0 -1
  268. package/dist/assets/ArrowUpIcon.js.map +0 -1
  269. package/dist/assets/ArrowUpRightIcon.js.map +0 -1
  270. package/dist/assets/CalendarIcon.js.map +0 -1
  271. package/dist/assets/CalendarNormalIcon.js.map +0 -1
  272. package/dist/assets/DoubleArrowLeftHeadIcon.js.map +0 -1
  273. package/dist/assets/DoubleArrowRightHeadIcon.js.map +0 -1
  274. package/dist/assets/ExclamationFilledIcon.js.map +0 -1
  275. package/dist/assets/FilterIcon.js.map +0 -1
  276. package/dist/assets/LoadingSpinner.js.map +0 -1
  277. package/dist/assets/RefreshIcon.js.map +0 -1
  278. package/dist/assets/SearchIcon.js.map +0 -1
  279. package/dist/assets/UpLeftArrowsIcon.js.map +0 -1
  280. package/dist/assets/XCircleIcon.js.map +0 -1
  281. package/dist/assets/XIcon.js.map +0 -1
  282. package/dist/assets/index.js.map +0 -1
  283. package/dist/components/BigModal/BigModal.js.map +0 -1
  284. package/dist/components/Dropdown/Dropdown.js.map +0 -1
  285. package/dist/components/Dropdown/DropdownItem.js.map +0 -1
  286. package/dist/components/Dropdown/index.js.map +0 -1
  287. package/dist/components/Modal/Modal.js.map +0 -1
  288. package/dist/components/Modal/index.js.map +0 -1
  289. package/dist/components/QuillCard.js.map +0 -1
  290. package/dist/components/selectUtils.js.map +0 -1
  291. package/dist/contexts/BaseColorContext.js.map +0 -1
  292. package/dist/contexts/HoveredValueContext.js.map +0 -1
  293. package/dist/contexts/RootStylesContext.js.map +0 -1
  294. package/dist/contexts/SelectedValueContext.js.map +0 -1
  295. package/dist/contexts/index.js.map +0 -1
  296. package/dist/hooks/index.js.map +0 -1
  297. package/dist/hooks/useDashboard.js.map +0 -1
  298. package/dist/hooks/useInternalState.js.map +0 -1
  299. package/dist/hooks/useOnClickOutside.js.map +0 -1
  300. package/dist/hooks/useOnWindowResize.js.map +0 -1
  301. package/dist/hooks/useSelectOnKeyDown.js.map +0 -1
  302. package/dist/index.js.map +0 -1
  303. package/dist/internals/ReportBuilder/PivotModal.spec.js.map +0 -1
  304. package/dist/lib/font.js.map +0 -1
  305. package/dist/lib/index.js.map +0 -1
  306. package/dist/lib/inputTypes.js.map +0 -1
  307. package/dist/lib/utils.js.map +0 -1
  308. package/dist/utils/aggregate.js.map +0 -1
  309. package/dist/utils/downloadCSV.js.map +0 -1
package/dist/Dashboard.js CHANGED
@@ -1,48 +1,16 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.QuillDateRangePicker = exports.DashboardFilter = exports.COMPARISON_OPTIONS = void 0;
30
- const jsx_runtime_1 = require("react/jsx-runtime");
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
31
2
  // @ts-nocheck
32
3
  /* eslint-disable @typescript-eslint/ban-ts-comment */
33
- const react_1 = __importStar(require("react"));
34
- const Chart_1 = __importDefault(require("./Chart"));
35
- const dateRangePickerUtils_1 = require("./DateRangePicker/dateRangePickerUtils");
36
- const Context_1 = require("./Context");
37
- const date_fns_1 = require("date-fns");
38
- const Modal_1 = __importDefault(require("./components/Modal/Modal"));
39
- const contexts_1 = require("./contexts");
40
- const Dropdown_1 = require("./components/Dropdown");
41
- const assets_1 = require("./assets");
42
- const hooks_1 = require("./hooks");
43
- const locale_1 = require("date-fns/locale");
44
- const useDashboard_1 = require("./hooks/useDashboard");
45
- exports.COMPARISON_OPTIONS = [
4
+ import React, { useContext, useEffect, useState, useRef, useCallback, } from 'react';
5
+ import Chart from './Chart';
6
+ import { capitalize, defaultOptions, getWeekdays, getRangeFromPreset, PRIMARY_RANGE, COMPARISON_RANGE, PRIMARY_CODES, } from './DateRangePicker/dateRangePickerUtils';
7
+ import { ClientContext, DashboardContext, ThemeContext, DashboardFiltersContext, DateFilterContext, useComparisonRange, useDateFilter, } from './Context';
8
+ import { addDays, eachDayOfInterval, endOfMonth, format, isAfter, isBefore, isEqual, isSaturday, isSunday, nextSaturday, previousSunday, startOfMonth, startOfToday, startOfWeek, startOfYear, sub, subDays, } from 'date-fns';
9
+ import { ArrowDownHeadIcon, ArrowLeftHeadIcon, ArrowRightHeadIcon, CalendarNormalIcon, } from './assets';
10
+ import { useOnClickOutside, } from './hooks';
11
+ import { enUS } from 'date-fns/locale';
12
+ import { useDashboard } from './hooks/useDashboard';
13
+ export const COMPARISON_OPTIONS = [
46
14
  {
47
15
  value: 'PREV_PERIOD',
48
16
  text: 'Previous Period',
@@ -64,10 +32,31 @@ exports.COMPARISON_OPTIONS = [
64
32
  text: 'No comparison',
65
33
  },
66
34
  ];
67
- function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePickerComponent, theme, }) {
68
- const [comparisonValue, setComparisonValue] = (0, react_1.useState)('');
69
- const [filterValue, setFilterValue] = (0, react_1.useState)(null);
70
- (0, react_1.useEffect)(() => {
35
+ export const PRIMARY_OPTIONS = [
36
+ { value: 'THIS_WEEK', text: 'This Week' },
37
+ { value: 'THIS_MONTH', text: 'This Month' },
38
+ { value: 'THIS_YEAR', text: 'This year' },
39
+ { value: 'LAST_7_DAYS', text: 'Last 7 days' },
40
+ { value: 'LAST_30_DAYS', text: 'Last 30 days' },
41
+ { value: 'LAST_90_DAYS', text: 'Last 90 days' },
42
+ { value: 'LAST_6_MONTHS', text: 'Last 6 months' },
43
+ { value: 'ALL_TIME', text: 'All time' },
44
+ ];
45
+ const FILTER_CODE_MAP = {
46
+ wk: 'This week',
47
+ m: 'This month',
48
+ y: 'This year',
49
+ w: 'Last 7 days',
50
+ t: 'Last 30 days',
51
+ '90d': 'Last 90 days',
52
+ '6m': 'Last 6 months',
53
+ at: 'All time',
54
+ };
55
+ export function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePickerComponent, theme, }) {
56
+ const { comparisonRange, setComparisonRange } = useComparisonRange();
57
+ const { setDateFilter } = useDateFilter();
58
+ const [filterValue, setFilterValue] = useState(null);
59
+ useEffect(() => {
71
60
  if (filter.filterType === 'date_range' &&
72
61
  !filter.selectedValue &&
73
62
  !filterValue) {
@@ -79,14 +68,21 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
79
68
  else if (filter.filterType === 'string') {
80
69
  setFilterValue(filter.selectedValue);
81
70
  }
82
- if (filter.comparison) {
83
- setComparisonValue(exports.COMPARISON_OPTIONS.find((option) => {
84
- return option.value === filter.comparisonRange.value;
85
- }).value);
71
+ if (filter.filterType == 'date_range') {
72
+ setDateFilter(FILTER_CODE_MAP[filter.selectedValue ? filter.selectedValue[2] : null]);
73
+ if (filter?.comparisonRange?.value) {
74
+ const newComparisonRange = COMPARISON_OPTIONS.find((option) => {
75
+ return option.value === filter.comparisonRange.value;
76
+ });
77
+ setComparisonRange(newComparisonRange);
78
+ }
79
+ else {
80
+ setComparisonRange(null);
81
+ }
86
82
  }
87
83
  }, [filter]);
88
84
  if (filter.filterType === 'string') {
89
- return ((0, jsx_runtime_1.jsx)(SelectComponent, { label: filter.label, value: filterValue, onChange: (e) => {
85
+ return (_jsx(SelectComponent, { label: filter.label, value: filterValue, onChange: (e) => {
90
86
  onChangeFilter(filter, e);
91
87
  }, options: [
92
88
  ...filter.options.map((elem) => {
@@ -98,11 +94,11 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
98
94
  ] }));
99
95
  }
100
96
  if (filter.filterType == 'date_range') {
101
- return ((0, jsx_runtime_1.jsxs)("div", { style: {
97
+ return (_jsxs("div", { style: {
102
98
  display: 'flex',
103
99
  flexDirection: 'row',
104
100
  alignItems: 'flex-end',
105
- }, children: [(0, jsx_runtime_1.jsx)(DateRangePickerComponent, { dateRange: filterValue ? [filterValue[0], filterValue[1]] : [null, null], label: filter.label,
101
+ }, children: [_jsx(DateRangePickerComponent, { dateRange: filterValue ? [filterValue[0], filterValue[1]] : [null, null], label: filter.label,
106
102
  // value={filterValue}
107
103
  onChangeDateRange: (dateRange) => {
108
104
  onChangeFilter(filter, [dateRange[0], dateRange[1], null]);
@@ -111,7 +107,7 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
111
107
  ? filterValue[2]
112
108
  : '', onChangePreset: (preset) => {
113
109
  if (typeof preset === 'string') {
114
- const fullPreset = (0, dateRangePickerUtils_1.getRangeFromPreset)(preset);
110
+ const fullPreset = getRangeFromPreset(preset);
115
111
  onChangeFilter(filter, fullPreset);
116
112
  setFilterValue(fullPreset);
117
113
  return;
@@ -126,19 +122,19 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
126
122
  new Date(),
127
123
  preset?.value || '',
128
124
  ]);
129
- }, presetOptions: dateRangePickerUtils_1.defaultOptions }), filter.comparison && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("div", { style: {
125
+ }, presetOptions: defaultOptions }), comparisonRange && (_jsx("div", { children: _jsxs("div", { style: {
130
126
  display: 'flex',
131
127
  flexDirection: 'row',
132
128
  alignItems: 'center',
133
- }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
129
+ }, children: [_jsx("div", { style: {
134
130
  paddingLeft: 16,
135
131
  paddingRight: 12,
136
132
  color: theme.secondaryTextColor,
137
- }, children: "compared to" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: comparisonValue, onChange: (e) => {
138
- onChangeFilter(filter, null, exports.COMPARISON_OPTIONS.find((option) => {
133
+ }, children: "compared to" }), _jsx(SelectComponent, { value: comparisonRange.value, onChange: (e) => {
134
+ onChangeFilter(filter, null, COMPARISON_OPTIONS.find((option) => {
139
135
  return option.value === e;
140
136
  }));
141
- }, options: exports.COMPARISON_OPTIONS.map((compareOption) => {
137
+ }, options: COMPARISON_OPTIONS.map((compareOption) => {
142
138
  return {
143
139
  value: compareOption.value,
144
140
  label: compareOption.text,
@@ -147,45 +143,44 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
147
143
  }
148
144
  return null;
149
145
  }
150
- exports.DashboardFilter = DashboardFilter;
151
146
  const options = [
152
147
  {
153
- date_range: [(0, date_fns_1.startOfWeek)((0, date_fns_1.startOfToday)()), (0, date_fns_1.startOfToday)(), 'wk'],
148
+ date_range: [startOfWeek(startOfToday()), startOfToday(), 'wk'],
154
149
  },
155
150
  {
156
- date_range: [(0, date_fns_1.sub)((0, date_fns_1.startOfToday)(), { days: 90 }), (0, date_fns_1.startOfToday)(), '90d'],
151
+ date_range: [sub(startOfToday(), { days: 90 }), startOfToday(), '90d'],
157
152
  },
158
153
  {
159
- date_range: [(0, date_fns_1.sub)((0, date_fns_1.startOfToday)(), { days: 30 }), (0, date_fns_1.startOfToday)(), 't'],
154
+ date_range: [sub(startOfToday(), { days: 30 }), startOfToday(), 't'],
160
155
  },
161
156
  {
162
- date_range: [(0, date_fns_1.sub)((0, date_fns_1.startOfToday)(), { years: 100 }), (0, date_fns_1.startOfToday)(), 'at'],
157
+ date_range: [sub(startOfToday(), { years: 100 }), startOfToday(), 'at'],
163
158
  },
164
159
  {
165
- date_range: [(0, date_fns_1.startOfYear)((0, date_fns_1.startOfToday)()), (0, date_fns_1.startOfToday)(), 'y'],
160
+ date_range: [startOfYear(startOfToday()), startOfToday(), 'y'],
166
161
  },
167
162
  {
168
- date_range: [(0, date_fns_1.startOfMonth)((0, date_fns_1.startOfToday)()), (0, date_fns_1.startOfToday)(), 'm'],
163
+ date_range: [startOfMonth(startOfToday()), startOfToday(), 'm'],
169
164
  },
170
165
  {
171
- date_range: [(0, date_fns_1.sub)((0, date_fns_1.startOfToday)(), { days: 7 }), (0, date_fns_1.startOfToday)(), 'w'],
166
+ date_range: [sub(startOfToday(), { days: 7 }), startOfToday(), 'w'],
172
167
  },
173
168
  {
174
- date_range: [(0, date_fns_1.sub)((0, date_fns_1.startOfToday)(), { months: 6 }), (0, date_fns_1.startOfToday)(), '6m'],
169
+ date_range: [sub(startOfToday(), { months: 6 }), startOfToday(), '6m'],
175
170
  },
176
171
  ];
177
172
  const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
178
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
179
- const handleOnChange = (0, react_1.useCallback)((event) => {
173
+ const [theme] = useContext(ThemeContext);
174
+ const handleOnChange = useCallback((event) => {
180
175
  onChange(event.target.value);
181
176
  }, [onChange]);
182
- return ((0, jsx_runtime_1.jsxs)("div", { children: [label && ((0, jsx_runtime_1.jsx)("div", { style: {
177
+ return (_jsxs("div", { children: [label && (_jsx("div", { style: {
183
178
  marginBottom: 6,
184
179
  fontWeight: theme.labelFontWeight || '600',
185
180
  color: theme.secondaryTextColor,
186
181
  fontFamily: theme.fontFamily,
187
182
  fontSize: 14,
188
- }, children: label })), (0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', height: 38 }, children: [(0, jsx_runtime_1.jsxs)("select", { onChange: handleOnChange, value: value ?? '', id: 'reportbuilderdropdown',
183
+ }, children: label })), _jsxs("div", { style: { position: 'relative', height: 38 }, children: [_jsxs("select", { onChange: handleOnChange, value: value ?? '', id: 'reportbuilderdropdown',
189
184
  // defaultValue="Select"
190
185
  style: {
191
186
  width: '100%',
@@ -209,7 +204,7 @@ const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
209
204
  fontSize: 14,
210
205
  fontWeight: 500,
211
206
  boxSizing: 'border-box',
212
- }, children: [(0, jsx_runtime_1.jsx)("option", { value: "", children: "Select" }), options.map((option, index) => ((0, jsx_runtime_1.jsx)("option", { value: option.value, children: option.label }, option.label + index)))] }), (0, jsx_runtime_1.jsx)(assets_1.ArrowDownHeadIcon, { style: {
207
+ }, children: [_jsx("option", { value: "", children: "Select" }), options.map((option, index) => (_jsx("option", { value: option.value, children: option.label }, option.label + index)))] }), _jsx(ArrowDownHeadIcon, { style: {
213
208
  height: '20px',
214
209
  width: '20px',
215
210
  flex: 'none',
@@ -220,27 +215,27 @@ const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
220
215
  }, "aria-hidden": "true" })] })] }));
221
216
  };
222
217
  const isBetween = (date, startDate, endDate) => {
223
- return (0, date_fns_1.isAfter)(date, startDate) && (0, date_fns_1.isBefore)(date, endDate);
218
+ return isAfter(date, startDate) && isBefore(date, endDate);
224
219
  };
225
220
  function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStartDate, localEndDate, }) {
226
- const firstDayOfDisplayedMonth = (0, date_fns_1.startOfMonth)(anchorDate);
227
- const lastDayOfDisplayedMonth = (0, date_fns_1.endOfMonth)(anchorDate);
228
- const weekdays = (0, dateRangePickerUtils_1.getWeekdays)(locale_1.enUS).map((dayName) => (0, dateRangePickerUtils_1.capitalize)(dayName, locale_1.enUS));
229
- const displayedDates = (0, date_fns_1.eachDayOfInterval)({
230
- start: (0, date_fns_1.isSunday)(firstDayOfDisplayedMonth)
221
+ const firstDayOfDisplayedMonth = startOfMonth(anchorDate);
222
+ const lastDayOfDisplayedMonth = endOfMonth(anchorDate);
223
+ const weekdays = getWeekdays(enUS).map((dayName) => capitalize(dayName, enUS));
224
+ const displayedDates = eachDayOfInterval({
225
+ start: isSunday(firstDayOfDisplayedMonth)
231
226
  ? firstDayOfDisplayedMonth
232
- : (0, date_fns_1.previousSunday)(firstDayOfDisplayedMonth),
233
- end: (0, date_fns_1.isSaturday)(lastDayOfDisplayedMonth)
227
+ : previousSunday(firstDayOfDisplayedMonth),
228
+ end: isSaturday(lastDayOfDisplayedMonth)
234
229
  ? lastDayOfDisplayedMonth
235
- : (0, date_fns_1.nextSaturday)(lastDayOfDisplayedMonth),
230
+ : nextSaturday(lastDayOfDisplayedMonth),
236
231
  });
237
- const displayedTitle = (0, dateRangePickerUtils_1.capitalize)((0, date_fns_1.format)(firstDayOfDisplayedMonth, 'MMMM yyyy', { locale: locale_1.enUS }), locale_1.enUS);
238
- return ((0, jsx_runtime_1.jsxs)("div", { style: {
232
+ const displayedTitle = capitalize(format(firstDayOfDisplayedMonth, 'MMMM yyyy', { locale: enUS }), enUS);
233
+ return (_jsxs("div", { style: {
239
234
  display: 'flex',
240
235
  flexDirection: 'column',
241
236
  flex: 1,
242
237
  // alignItems: 'center',
243
- }, children: [(0, jsx_runtime_1.jsx)("h2", { style: {
238
+ }, children: [_jsx("h2", { style: {
244
239
  color: theme?.textColor || '#364153',
245
240
  fontSize: '13px',
246
241
  fontFamily: theme?.fontFamily,
@@ -254,7 +249,7 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
254
249
  justifyContent: 'center',
255
250
  marginBottom: 3,
256
251
  marginTop: 6,
257
- }, children: displayedTitle }), (0, jsx_runtime_1.jsx)("div", { style: {
252
+ }, children: displayedTitle }), _jsx("div", { style: {
258
253
  color: theme?.primaryTextColor || '#364153',
259
254
  textAlign: 'center',
260
255
  fontSize: 12,
@@ -262,7 +257,7 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
262
257
  display: 'grid',
263
258
  gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',
264
259
  paddingTop: 6,
265
- }, children: weekdays.map((dayName) => ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%', display: 'flex', justifyContent: 'center' }, children: (0, jsx_runtime_1.jsx)("div", { style: {
260
+ }, children: weekdays.map((dayName) => (_jsx("div", { style: { width: '100%', display: 'flex', justifyContent: 'center' }, children: _jsx("div", { style: {
266
261
  display: 'flex',
267
262
  alignItems: 'center',
268
263
  justifyContent: 'center',
@@ -271,22 +266,14 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
271
266
  fontFamily: theme?.fontFamily,
272
267
  color: theme.secondaryTextColor,
273
268
  paddingBottom: 4,
274
- }, children: dayName }) }, dayName))) }), (0, jsx_runtime_1.jsx)("div", { style: {
269
+ }, children: dayName }) }, dayName))) }), _jsx("div", { style: {
275
270
  display: 'grid',
276
271
  gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',
277
272
  borderRadius: 3,
278
273
  overflow: 'hidden',
279
274
  rowGap: 6,
280
275
  }, children: displayedDates.map((date, index) => {
281
- // const isCurrentDateDisabled = isDateDisabled(
282
- // date,
283
- // minDate,
284
- // maxDate,
285
- // firstDayOfDisplayedMonth,
286
- // lastDayOfDisplayedMonth
287
- // );
288
- // console.log(localStartDate === date, localStartDate, date);
289
- return ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' }, children: (0, jsx_runtime_1.jsx)("button", { style: {
276
+ return (_jsx("div", { style: { width: '100%' }, children: _jsx("button", { style: {
290
277
  border: 'none',
291
278
  height: '34px',
292
279
  display: 'flex',
@@ -295,22 +282,22 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
295
282
  justifyContent: 'center',
296
283
  fontFamily: theme?.fontFamily,
297
284
  fontSize: 13,
298
- background: (0, date_fns_1.isEqual)(localStartDate, date) || (0, date_fns_1.isEqual)(localEndDate, date)
285
+ background: isEqual(localStartDate, date) || isEqual(localEndDate, date)
299
286
  ? theme.primaryTextColor
300
287
  : isBetween(date, localStartDate, localEndDate)
301
288
  ? '#F4F4F5'
302
289
  : 'transparent',
303
- color: (0, date_fns_1.isEqual)(localStartDate, date) || (0, date_fns_1.isEqual)(localEndDate, date)
290
+ color: isEqual(localStartDate, date) || isEqual(localEndDate, date)
304
291
  ? theme.backgroundColor
305
292
  : theme.primaryTextColor,
306
- borderRadius: (0, date_fns_1.isEqual)(localStartDate, date) || (0, date_fns_1.isEqual)(localEndDate, date)
293
+ borderRadius: isEqual(localStartDate, date) || isEqual(localEndDate, date)
307
294
  ? 3
308
295
  : 0,
309
296
  ...isBeginningOrEndOfWeek(index),
310
297
  }, type: "button", onClick: () => {
311
298
  onClickDate(date);
312
- }, children: (0, jsx_runtime_1.jsx)("time", { dateTime: (0, date_fns_1.format)(date, 'yyyy-MM-dd', { locale: locale_1.enUS }), children: (0, date_fns_1.format)(date, 'd', { locale: locale_1.enUS }) }) }) }, date.toString()));
313
- }) }), (0, jsx_runtime_1.jsx)("div", { style: { height: 8 } })] }));
299
+ }, children: _jsx("time", { dateTime: format(date, 'yyyy-MM-dd', { locale: enUS }), children: format(date, 'd', { locale: enUS }) }) }) }, date.toString()));
300
+ }) }), _jsx("div", { style: { height: 8 } })] }));
314
301
  }
315
302
  function isBeginningOrEndOfWeek(num) {
316
303
  // Check if the number is 0
@@ -327,48 +314,48 @@ function isBeginningOrEndOfWeek(num) {
327
314
  }
328
315
  const formatDateText = (dateRange, localStartDate, localEndDate) => {
329
316
  if (dateRange.length && dateRange[0] && dateRange[1]) {
330
- return ((0, date_fns_1.format)(dateRange[0], 'MMM dd, yyyy') +
317
+ return (format(dateRange[0], 'MMM dd, yyyy') +
331
318
  ' - ' +
332
- (0, date_fns_1.format)(dateRange[1], 'MMM dd, yyyy'));
319
+ format(dateRange[1], 'MMM dd, yyyy'));
333
320
  }
334
321
  if (localStartDate && localEndDate) {
335
- return ((0, date_fns_1.format)(localStartDate, 'MMM dd, yyyy') +
322
+ return (format(localStartDate, 'MMM dd, yyyy') +
336
323
  ' - ' +
337
- (0, date_fns_1.format)(localEndDate, 'MMM dd, yyyy'));
324
+ format(localEndDate, 'MMM dd, yyyy'));
338
325
  }
339
326
  return '';
340
327
  };
341
328
  function CalendarDropdown({ onChangeDateRange, dateRange }) {
342
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
343
- const [showModal, setShowModal] = (0, react_1.useState)(false);
344
- const modalRef = (0, react_1.useRef)(null);
345
- const parentRef = (0, react_1.useRef)(null);
346
- const handleOnChange = (0, react_1.useCallback)((event) => {
329
+ const [theme] = useContext(ThemeContext);
330
+ const [showModal, setShowModal] = useState(false);
331
+ const modalRef = useRef(null);
332
+ const parentRef = useRef(null);
333
+ const handleOnChange = useCallback((event) => {
347
334
  onChangeDateRange(event.target.value);
348
335
  }, [onChangeDateRange]);
349
- const [anchorDate, setAnchorDate] = (0, react_1.useState)(null);
350
- const [localStartDate, setLocalStartDate] = (0, react_1.useState)(null);
351
- const [localEndDate, setLocalEndDate] = (0, react_1.useState)(null);
336
+ const [anchorDate, setAnchorDate] = useState(null);
337
+ const [localStartDate, setLocalStartDate] = useState(null);
338
+ const [localEndDate, setLocalEndDate] = useState(null);
352
339
  // const firstDayOfFirstMonth = startOfMonth(value[0]);
353
340
  // const lastDayOfLastMonth = endOfMonth(value[1]);
354
341
  // const weekdays = getWeekdays(enUS).map(dayName =>
355
342
  // capitalize(dayName, locale)
356
343
  // );
357
- const prevMonthAnchor = (0, date_fns_1.subDays)((0, date_fns_1.startOfMonth)(anchorDate), 1);
344
+ const prevMonthAnchor = subDays(startOfMonth(anchorDate), 1);
358
345
  const onClickDate = (date) => {
359
- if (localStartDate && (0, date_fns_1.isBefore)(date, localStartDate)) {
346
+ if (localStartDate && isBefore(date, localStartDate)) {
360
347
  setLocalStartDate(date);
361
348
  return;
362
349
  }
363
- if (localEndDate && (0, date_fns_1.isAfter)(date, localEndDate)) {
350
+ if (localEndDate && isAfter(date, localEndDate)) {
364
351
  setLocalEndDate(date);
365
352
  return;
366
353
  }
367
- if (localEndDate && (0, date_fns_1.isBefore)(date, localEndDate)) {
354
+ if (localEndDate && isBefore(date, localEndDate)) {
368
355
  setLocalEndDate(date);
369
356
  return;
370
357
  }
371
- if ((0, date_fns_1.isEqual)(localStartDate, date) || (0, date_fns_1.isEqual)(localEndDate, date)) {
358
+ if (isEqual(localStartDate, date) || isEqual(localEndDate, date)) {
372
359
  setLocalStartDate(null);
373
360
  setLocalEndDate(null);
374
361
  }
@@ -381,19 +368,19 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
381
368
  return;
382
369
  }
383
370
  };
384
- (0, react_1.useEffect)(() => {
371
+ useEffect(() => {
385
372
  if (localEndDate &&
386
373
  localStartDate &&
387
- (0, date_fns_1.isBefore)(localStartDate, localEndDate)) {
374
+ isBefore(localStartDate, localEndDate)) {
388
375
  onChangeDateRange([localStartDate, localEndDate]);
389
376
  }
390
377
  }, [localEndDate, localStartDate]);
391
- (0, react_1.useEffect)(() => {
378
+ useEffect(() => {
392
379
  if (dateRange.length && !anchorDate) {
393
380
  setAnchorDate(dateRange[1]);
394
381
  }
395
382
  }, [dateRange, anchorDate]);
396
- (0, hooks_1.useOnClickOutside)(modalRef, (e) => {
383
+ useOnClickOutside(modalRef, (e) => {
397
384
  // Exclude click on trigger button (e.g. Dropdown Button) from outside click handler
398
385
  const isTriggerElem = parentRef
399
386
  ? parentRef.current?.contains(e.target)
@@ -402,7 +389,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
402
389
  setShowModal(false);
403
390
  }
404
391
  });
405
- return ((0, jsx_runtime_1.jsxs)("div", { ref: parentRef, style: { position: 'relative', height: 38 }, children: [(0, jsx_runtime_1.jsx)("button", {
392
+ return (_jsxs("div", { ref: parentRef, style: { position: 'relative', height: 38 }, children: [_jsx("button", {
406
393
  // onChange={handleOnChange}
407
394
  // value={value}
408
395
  onClick: () => setShowModal((showModal) => !showModal), id: 'reportbuilderdropdown', defaultValue: "Select", style: {
@@ -431,7 +418,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
431
418
  minHeight: 38,
432
419
  marginBottom: 0,
433
420
  paddingLeft: 14 + 15 + 3,
434
- }, children: formatDateText(dateRange, localStartDate, localEndDate) }), (0, jsx_runtime_1.jsx)(assets_1.CalendarNormalIcon, { style: {
421
+ }, children: formatDateText(dateRange, localStartDate, localEndDate) }), _jsx(CalendarNormalIcon, { style: {
435
422
  height: '15px',
436
423
  width: '15px',
437
424
  flex: 'none',
@@ -439,7 +426,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
439
426
  left: 12,
440
427
  top: 11,
441
428
  color: theme?.primaryTextColor,
442
- } }), showModal && ((0, jsx_runtime_1.jsxs)("div", { ref: modalRef, style: {
429
+ } }), showModal && (_jsxs("div", { ref: modalRef, style: {
443
430
  position: 'absolute',
444
431
  zIndex: 1,
445
432
  overflowY: 'auto',
@@ -469,7 +456,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
469
456
  paddingLeft: 8,
470
457
  paddingRight: 8,
471
458
  paddingBottom: 1,
472
- }, children: [(0, jsx_runtime_1.jsx)("button", { style: {
459
+ }, children: [_jsx("button", { style: {
473
460
  height: 32,
474
461
  width: 32,
475
462
  position: 'absolute',
@@ -489,11 +476,11 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
489
476
  alignItems: 'center',
490
477
  justifyContent: 'center',
491
478
  background: 'transparent',
492
- }, onClick: () => setAnchorDate((date) => (0, date_fns_1.subDays)((0, date_fns_1.startOfMonth)(date), 1)), children: (0, jsx_runtime_1.jsx)(assets_1.ArrowLeftHeadIcon, { style: {
479
+ }, onClick: () => setAnchorDate((date) => subDays(startOfMonth(date), 1)), children: _jsx(ArrowLeftHeadIcon, { style: {
493
480
  height: '20px',
494
481
  width: '20px',
495
482
  color: theme?.secondaryTextColor,
496
- }, "aria-hidden": "true" }) }), (0, jsx_runtime_1.jsx)("button", { style: {
483
+ }, "aria-hidden": "true" }) }), _jsx("button", { style: {
497
484
  height: 32,
498
485
  width: 32,
499
486
  borderColor: theme?.borderColor || '#E5E7EB',
@@ -513,33 +500,32 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
513
500
  alignItems: 'center',
514
501
  justifyContent: 'center',
515
502
  background: 'transparent',
516
- }, onClick: () => setAnchorDate((date) => (0, date_fns_1.addDays)((0, date_fns_1.endOfMonth)(date), 1)), children: (0, jsx_runtime_1.jsx)(assets_1.ArrowRightHeadIcon, { style: {
503
+ }, onClick: () => setAnchorDate((date) => addDays(endOfMonth(date), 1)), children: _jsx(ArrowRightHeadIcon, { style: {
517
504
  height: '20px',
518
505
  width: '20px',
519
506
  color: theme?.secondaryTextColor,
520
- }, "aria-hidden": "true" }) }), anchorDate && ((0, jsx_runtime_1.jsx)(Calendar, { anchorDate: prevMonthAnchor, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate })), anchorDate && ((0, jsx_runtime_1.jsx)(Calendar, { anchorDate: anchorDate, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate }))] }))] }));
507
+ }, "aria-hidden": "true" }) }), anchorDate && (_jsx(Calendar, { anchorDate: prevMonthAnchor, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate })), anchorDate && (_jsx(Calendar, { anchorDate: anchorDate, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate }))] }))] }));
521
508
  }
522
- const QuillDateRangePicker = ({ label, dateRange, onChangeDateRange, presetOptions, preset, onChangePreset, }) => {
523
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
524
- return ((0, jsx_runtime_1.jsxs)("div", { children: [label !== '' && ((0, jsx_runtime_1.jsx)("div", { style: {
509
+ export const QuillDateRangePicker = ({ label, dateRange, onChangeDateRange, presetOptions, preset, onChangePreset, }) => {
510
+ const [theme] = useContext(ThemeContext);
511
+ return (_jsxs("div", { children: [label !== '' && (_jsx("div", { style: {
525
512
  marginBottom: 6,
526
513
  fontWeight: theme.labelFontWeight || '600',
527
514
  color: theme.secondaryTextColor,
528
515
  fontFamily: theme.fontFamily,
529
516
  fontSize: 14,
530
- }, children: label })), (0, jsx_runtime_1.jsxs)("div", { style: {
517
+ }, children: label })), _jsxs("div", { style: {
531
518
  display: 'flex',
532
519
  flexDirection: 'row',
533
520
  alignItems: 'center',
534
521
  gap: 12,
535
- }, children: [(0, jsx_runtime_1.jsx)(MemoizedCalendarDropdown, { dateRange: dateRange, onChangeDateRange: onChangeDateRange, theme: theme }), (0, jsx_runtime_1.jsx)(MemoizedDropdown, { options: presetOptions.map((option) => ({
522
+ }, children: [_jsx(MemoizedCalendarDropdown, { dateRange: dateRange, onChangeDateRange: onChangeDateRange, theme: theme }), _jsx(MemoizedDropdown, { options: presetOptions.map((option) => ({
536
523
  label: option.text,
537
524
  value: option.value,
538
525
  })), onChange: onChangePreset, value: preset })] })] }));
539
526
  };
540
- exports.QuillDateRangePicker = QuillDateRangePicker;
541
- const MemoizedCalendarDropdown = react_1.default.memo(CalendarDropdown);
542
- const MemoizedDropdown = react_1.default.memo(QuillDropdownComponent);
527
+ const MemoizedCalendarDropdown = React.memo(CalendarDropdown);
528
+ const MemoizedDropdown = React.memo(QuillDropdownComponent);
543
529
  const areEqual = (prevProps, nextProps) => {
544
530
  // This function returns true if passing nextProps to render would return
545
531
  // the same result as passing prevProps to render, otherwise it returns false
@@ -548,41 +534,48 @@ const areEqual = (prevProps, nextProps) => {
548
534
  prevProps.dateRange[0] === nextProps.dateRange[0] &&
549
535
  prevProps.dateRange[1] === nextProps.dateRange[1]);
550
536
  };
551
- const MemoizedDateRangePicker = react_1.default.memo(exports.QuillDateRangePicker, areEqual);
552
- function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, FilterDropdownComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, DashboardItemComponent, }) {
553
- const { isLoading: isDataLoading, data, reload } = (0, useDashboard_1.useDashboard)(name);
554
- const [dashboardSections, setDashboardSections] = (0, react_1.useState)(null);
555
- const { dashboard } = (0, react_1.useContext)(Context_1.DashboardContext);
556
- const [client] = (0, react_1.useContext)(Context_1.ClientContext);
557
- const [isLoading, setIsLoading] = (0, react_1.useState)(isDataLoading);
558
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
559
- const { dashboardFilters, dashboardFiltersDispatch } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
560
- const { setDateFilter } = (0, react_1.useContext)(Context_1.DateFilterContext);
561
- (0, react_1.useEffect)(() => {
537
+ const MemoizedDateRangePicker = React.memo(QuillDateRangePicker, areEqual);
538
+ const QuillEmptyDashboardComponent = () => _jsx("div", {});
539
+ export default function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, FilterDropdownComponent, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, DashboardItemComponent, }) {
540
+ const { dateFilter } = useDateFilter();
541
+ const { isLoading: isDataLoading, data, reload } = useDashboard(name);
542
+ const [dashboardSections, setDashboardSections] = useState(null);
543
+ const { dashboard } = useContext(DashboardContext);
544
+ const [client] = useContext(ClientContext);
545
+ const [isLoading, setIsLoading] = useState(isDataLoading);
546
+ const [theme] = useContext(ThemeContext);
547
+ const { dashboardFilters, dashboardFiltersDispatch } = useContext(DashboardFiltersContext);
548
+ const { setDateFilter } = useContext(DateFilterContext);
549
+ useEffect(() => {
562
550
  setIsLoading(isDataLoading);
563
551
  }, [isDataLoading]);
564
- (0, react_1.useEffect)(() => {
552
+ useEffect(() => {
565
553
  if (!data)
566
554
  return;
567
555
  onDashboardDataChange(data);
568
556
  }, [data]);
569
- (0, react_1.useEffect)(() => {
557
+ useEffect(() => {
570
558
  reload();
571
559
  }, [name, client]);
560
+ function hashCode(s) {
561
+ return s.split('').reduce(function (a, b) {
562
+ a = (a << 5) - a + b.charCodeAt(0);
563
+ return a & a;
564
+ }, 0);
565
+ }
572
566
  const onDashboardDataChange = (resp) => {
573
567
  setDashboardSections(resp.sections);
574
568
  const bigFilterObj = {};
575
569
  if (resp.dateFilter && Object.keys(resp.dateFilter).length) {
576
- const key = 'LAST_6_MONTHS';
577
- const code = '6m';
570
+ const key = resp.dateFilter.defaultPrimaryRange ?? 'LAST_6_MONTHS';
578
571
  const filter = {
579
- startDate: dateRangePickerUtils_1.PRIMARY_RANGE[key]?.start,
580
- endDate: dateRangePickerUtils_1.PRIMARY_RANGE[key]?.end,
572
+ startDate: PRIMARY_RANGE[key]?.start,
573
+ endDate: PRIMARY_RANGE[key]?.end,
581
574
  filterType: 'date_range',
582
575
  selectedValue: [
583
- dateRangePickerUtils_1.PRIMARY_RANGE[key]?.start,
584
- dateRangePickerUtils_1.PRIMARY_RANGE[key]?.end,
585
- code,
576
+ PRIMARY_RANGE[key]?.start,
577
+ PRIMARY_RANGE[key]?.end,
578
+ PRIMARY_CODES[key],
586
579
  ],
587
580
  options: options,
588
581
  field: 'date_range',
@@ -590,25 +583,27 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
590
583
  };
591
584
  if (resp.dateFilter.comparison) {
592
585
  filter.comparison = true;
586
+ const compKey = resp.dateFilter.defaultComparisonRange ?? 'PREV_PERIOD';
593
587
  const range = { start: filter.startDate, end: filter.endDate };
594
588
  filter.comparisonRange = {
595
- startDate: dateRangePickerUtils_1.COMPARISON_RANGE['PREV_PERIOD'](range)?.start,
596
- endDate: dateRangePickerUtils_1.COMPARISON_RANGE['PREV_PERIOD'](range)?.end,
597
- value: 'PREV_PERIOD',
589
+ startDate: COMPARISON_RANGE[compKey](range)?.start,
590
+ endDate: COMPARISON_RANGE[compKey](range)?.end,
591
+ value: compKey,
598
592
  };
599
593
  }
600
594
  else {
601
595
  filter.comparison = false;
602
596
  }
603
- dashboardFiltersDispatch({
604
- type: 'ADD_DASHBOARD_FILTER',
605
- id: 'date_range',
606
- data: {
607
- ...filter,
608
- },
609
- });
597
+ if (hashCode(JSON.stringify(dashboardFilters?.date_range ?? '')) !==
598
+ hashCode(JSON.stringify(filter))) {
599
+ dashboardFiltersDispatch({
600
+ type: 'ADD_DASHBOARD_FILTER',
601
+ id: 'date_range',
602
+ data: filter,
603
+ });
604
+ }
610
605
  bigFilterObj[filter.field] = filter;
611
- setDateFilter(resp.dateFilter);
606
+ setDateFilter(PRIMARY_OPTIONS.find((opt) => opt.value === resp.dateFilter.defaultPrimaryRange)?.text ?? null);
612
607
  }
613
608
  if (resp.filters && resp.filters.length) {
614
609
  Object.values(resp.filters)
@@ -618,18 +613,20 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
618
613
  bigFilterObj[filter.field] = processFilter(filter);
619
614
  });
620
615
  }
621
- dashboardFiltersDispatch({
622
- type: 'ADD_DASHBOARD_FILTERS',
623
- id: 'tons',
624
- data: bigFilterObj,
625
- });
626
- setDateFilter(null);
616
+ if (hashCode(JSON.stringify(dashboardFilters)) !==
617
+ hashCode(JSON.stringify(bigFilterObj))) {
618
+ dashboardFiltersDispatch({
619
+ type: 'ADD_DASHBOARD_FILTERS',
620
+ id: 'tons',
621
+ data: bigFilterObj,
622
+ });
623
+ }
627
624
  };
628
625
  const handleOnClickDashboardItem = (elem) => {
629
- if (dashboard[elem._id]._id) {
626
+ if (dashboard[elem._id]._id && onClickDashboardItem) {
630
627
  onClickDashboardItem(dashboard[elem._id]);
631
628
  }
632
- else {
629
+ else if (onClickDashboardItem) {
633
630
  onClickDashboardItem({
634
631
  ...dashboard[elem._id],
635
632
  error_id: elem._id,
@@ -678,10 +675,10 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
678
675
  startDate: value ? value[0] : filter.startDate,
679
676
  endDate: value ? value[1] : filter.endDate,
680
677
  filterType: 'date_range',
678
+ label: 'Date',
681
679
  ...(selectedValue ? { selectedValue } : {}),
682
680
  field: 'date_range',
683
681
  options: options,
684
- label: 'Date',
685
682
  };
686
683
  }
687
684
  };
@@ -731,14 +728,14 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
731
728
  startDate: value ? value[0] : filter.startDate,
732
729
  endDate: value ? value[1] : filter.endDate,
733
730
  filterType: 'date_range',
731
+ label: 'Date',
734
732
  ...(selectedValue ? { selectedValue } : {}),
735
733
  field: 'date_range',
736
734
  options: options,
737
- label: 'Date',
738
735
  comparison: true,
739
736
  comparisonRange: {
740
- startDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.start,
741
- endDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.end,
737
+ startDate: COMPARISON_RANGE[key](primaryRange)?.start,
738
+ endDate: COMPARISON_RANGE[key](primaryRange)?.end,
742
739
  value: key,
743
740
  },
744
741
  },
@@ -762,7 +759,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
762
759
  }
763
760
  }
764
761
  };
765
- (0, react_1.useEffect)(() => {
762
+ useEffect(() => {
766
763
  if (dashboardSections && dashboard) {
767
764
  const totalNumberOfItems = Object.values(dashboardSections).reduce((count, arr) => count + arr.length, 0);
768
765
  const itemsLoaded = Object.keys(dashboard).length;
@@ -771,19 +768,21 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
771
768
  }
772
769
  }
773
770
  }, [dashboard, dashboardSections, isLoading]);
774
- (0, react_1.useEffect)(() => {
771
+ useEffect(() => {
775
772
  if (onChangeLoading) {
776
773
  onChangeLoading(isLoading);
777
774
  }
778
775
  }, [isLoading, onChangeLoading]);
779
- if (!dashboardSections)
776
+ if (isLoading)
780
777
  return null;
781
- return ((0, jsx_runtime_1.jsxs)("div", { style: containerStyle, children: [!hideFilters ? ((0, jsx_runtime_1.jsx)("div", { style: {
778
+ if (!dashboardSections || Object.keys(dashboardSections).length == 0)
779
+ return _jsx(EmptyDashboardComponent, {});
780
+ return (_jsxs("div", { style: containerStyle, children: [!hideFilters && (_jsx("div", { style: {
782
781
  display: 'flex',
783
782
  boxSizing: 'content-box',
784
783
  flexDirection: 'row',
785
784
  alignItems: 'center',
786
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
785
+ }, children: _jsx("div", { style: {
787
786
  width: '100%',
788
787
  marginBottom: 25,
789
788
  display: 'flex',
@@ -792,18 +791,18 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
792
791
  gap: 12,
793
792
  }, children: Object.values(dashboardFilters)
794
793
  .sort((filter) => (filter.filterType === 'date_range' ? -1 : 1))
795
- .map((filter, index) => ((0, jsx_runtime_1.jsx)(DashboardFilter, { filter: filter, onChangeFilter: updateFilter, theme: theme, filterValue: dashboardFilters, SelectComponent: FilterDropdownComponent
794
+ .map((filter, index) => (_jsx(DashboardFilter, { filter: filter, onChangeFilter: updateFilter, theme: theme, filterValue: dashboardFilters, SelectComponent: FilterDropdownComponent
796
795
  ? FilterDropdownComponent
797
796
  : MemoizedDropdown, DateRangePickerComponent: DateRangePickerComponent
798
797
  ? DateRangePickerComponent
799
- : MemoizedDateRangePicker }, index))) }) })) : null, Object.keys(dashboardSections)
798
+ : MemoizedDateRangePicker }, index))) }) })), Object.keys(dashboardSections)
800
799
  .sort(function (a, b) {
801
800
  return a.length - b.length;
802
801
  })
803
802
  .map((section, sectionIndex) => {
804
- return ((0, jsx_runtime_1.jsxs)("div", { style: {
803
+ return (_jsxs("div", { style: {
805
804
  width: '100%',
806
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)("div", { style: { height: sectionIndex > 0 ? 25 : 0 } }), section && ((0, jsx_runtime_1.jsx)("h1", { style: {
805
+ }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("div", { style: { height: sectionIndex > 0 ? 25 : 0 } }), section && (_jsx("h1", { style: {
807
806
  fontSize: 22,
808
807
  color: theme.primaryTextColor,
809
808
  fontFamily: theme.fontFamily,
@@ -813,7 +812,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
813
812
  // marginLeft: 25,
814
813
  textAlign: 'left',
815
814
  marginTop: 12,
816
- }, children: section }))] }), dashboardSections[section].filter((elem) => elem.chartType === 'metric').length ? ((0, jsx_runtime_1.jsx)("div", { style: {
815
+ }, children: section }))] }), dashboardSections[section].filter((elem) => elem.chartType === 'metric').length ? (_jsx("div", { style: {
817
816
  boxSizing: 'content-box',
818
817
  width: `100%`,
819
818
  listStyleType: 'none',
@@ -835,21 +834,21 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
835
834
  })
836
835
  .map((elem, index) => {
837
836
  if (DashboardItemComponent) {
838
- return ((0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
837
+ return (_jsx("div", { onClick: onClickDashboardItem
839
838
  ? () => handleOnClickDashboardItem(elem)
840
- : undefined, children: (0, jsx_runtime_1.jsx)(DashboardItemComponent, { dashboardItem: elem, children: (0, jsx_runtime_1.jsx)("div", { style: {
839
+ : void null, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx("div", { style: {
841
840
  padding: 0,
842
841
  // height: '100%',
843
842
  boxSizing: 'content-box',
844
- }, children: (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
843
+ }, children: _jsx(Chart, { containerStyle: {
845
844
  display: 'flex',
846
845
  width: '100%',
847
846
  // height: '100%',
848
- }, isDateFilter: true, chartId: elem._id, colors: theme.chartColors?.length
847
+ }, chartId: elem._id, colors: theme.chartColors?.length
849
848
  ? theme.chartColors
850
849
  : undefined }) }) }) }, elem.name + '' + index));
851
850
  }
852
- return ((0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
851
+ return (_jsx("div", { onClick: onClickDashboardItem
853
852
  ? () => handleOnClickDashboardItem(elem)
854
853
  : undefined, style: {
855
854
  // background: theme.elevatedCardColor,
@@ -862,22 +861,22 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
862
861
  cursor: 'pointer',
863
862
  width: '100%',
864
863
  ...metricContainerStyle,
865
- }, children: (0, jsx_runtime_1.jsx)("div", {
864
+ }, children: _jsx("div", {
866
865
  // className="group-hover:bg-black"
867
866
  style: {
868
867
  width: '100%',
869
868
  boxSizing: 'content-box',
870
869
  height: '100%',
871
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
870
+ }, children: _jsx("div", { style: {
872
871
  width: '100%',
873
872
  boxSizing: 'content-box',
874
873
  height: '100%',
875
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
874
+ }, children: _jsxs("div", { style: {
876
875
  display: 'flex',
877
876
  flexDirection: 'column',
878
877
  justifyContent: 'space-between',
879
878
  boxSizing: 'content-box',
880
- }, children: [(0, jsx_runtime_1.jsxs)("div", {
879
+ }, children: [_jsxs("div", {
881
880
  // className="group-hover:bg-black"
882
881
  style: {
883
882
  display: 'flex',
@@ -888,7 +887,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
888
887
  // paddingLeft: theme.padding,
889
888
  // paddingRight: 25,
890
889
  // paddingTop: theme.padding,
891
- }, children: [(0, jsx_runtime_1.jsx)("div", { title: elem.name, style: {
890
+ }, children: [_jsx("div", { title: elem.name, style: {
892
891
  fontFamily: theme.fontFamily,
893
892
  color: theme.primaryTextColor,
894
893
  boxSizing: 'content-box',
@@ -906,7 +905,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
906
905
  display: 'block',
907
906
  maxWidth: '100%',
908
907
  overflow: 'hidden',
909
- }, children: elem.name }), onClickDashboardItem ? ((0, jsx_runtime_1.jsx)("div", {
908
+ }, children: elem.name }), onClickDashboardItem ? (_jsx("div", {
910
909
  // className="hover:bg-black"
911
910
  style: {
912
911
  fontFamily: theme.fontFamily,
@@ -919,16 +918,16 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
919
918
  display: 'flex',
920
919
  alignItems: 'center',
921
920
  justifyContent: 'flex-end',
922
- }, children: 'view report →' })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: { padding: 0, paddingTop: 10 }, children: (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
921
+ }, children: 'view report →' })) : null] }), _jsx("div", { style: { padding: 0, paddingTop: 10 }, children: _jsx(Chart, { containerStyle: {
923
922
  // display: 'flex',
924
923
  // width: '100%',
925
924
  // height: 30,
926
925
  // marginBottom: 50,
927
926
  // marginTop: 50,
928
- }, isDateFilter: true,
927
+ },
929
928
  // chartFilters={elem.chartFilters}
930
929
  chartId: elem._id }) })] }) }) }) }, elem.name + '' + index));
931
- }) })) : null, dashboardSections[section].filter((elem) => elem.chartType !== 'table' && elem.chartType !== 'metric').length ? ((0, jsx_runtime_1.jsx)("div", { style: {
930
+ }) })) : null, dashboardSections[section].filter((elem) => elem.chartType !== 'table' && elem.chartType !== 'metric').length ? (_jsx("div", { style: {
932
931
  listStyleType: 'none',
933
932
  display: 'grid',
934
933
  gridGap: 25,
@@ -949,20 +948,20 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
949
948
  })
950
949
  .map((elem, index) => {
951
950
  if (DashboardItemComponent) {
952
- return ((0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
951
+ return (_jsx("div", { onClick: onClickDashboardItem
953
952
  ? () => handleOnClickDashboardItem(elem)
954
- : undefined, style: { height: rowHeight || 400 }, children: (0, jsx_runtime_1.jsx)(DashboardItemComponent, { dashboardItem: elem, children: (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
953
+ : undefined, style: { height: rowHeight || 400 }, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx(Chart, { containerStyle: {
955
954
  display: 'flex',
956
955
  width: '100%',
957
956
  // height: '100%',
958
957
  minHeight: 300,
959
958
  height: 300,
960
959
  // background: 'red',
961
- }, isDateFilter: true, chartId: elem._id, colors: theme.chartColors?.length
960
+ }, chartId: elem._id, colors: theme.chartColors?.length
962
961
  ? theme.chartColors
963
962
  : undefined }) }) }, elem.name + '' + index));
964
963
  }
965
- return ((0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
964
+ return (_jsx("div", { onClick: onClickDashboardItem
966
965
  ? () => handleOnClickDashboardItem(elem)
967
966
  : undefined, style: {
968
967
  height: '100%',
@@ -973,26 +972,26 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
973
972
  borderRadius: 8,
974
973
  paddingTop: 20,
975
974
  ...chartContainerStyle,
976
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
975
+ }, children: _jsx("div", { style: {
977
976
  width: '100%',
978
977
  height: '100%',
979
978
  boxSizing: 'content-box',
980
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
979
+ }, children: _jsx("div", { style: {
981
980
  width: '100%',
982
981
  height: '100%',
983
982
  boxSizing: 'content-box',
984
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
983
+ }, children: _jsxs("div", { style: {
985
984
  display: 'flex',
986
985
  flexDirection: 'column',
987
986
  justifyContent: 'space-between',
988
987
  height: '100%',
989
988
  boxSizing: 'content-box',
990
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
989
+ }, children: [_jsxs("div", { style: {
991
990
  display: 'flex',
992
991
  flexDirection: 'row',
993
992
  justifyContent: 'space-between',
994
993
  boxSizing: 'content-box',
995
- }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
994
+ }, children: [_jsx("div", { style: {
996
995
  fontFamily: theme.fontFamily,
997
996
  color: theme.primaryTextColor,
998
997
  boxSizing: 'content-box',
@@ -1005,7 +1004,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1005
1004
  display: 'block',
1006
1005
  maxWidth: '100%',
1007
1006
  overflow: 'hidden',
1008
- }, children: elem.name }), onClickDashboardItem ? ((0, jsx_runtime_1.jsx)("div", { style: {
1007
+ }, children: elem.name }), onClickDashboardItem ? (_jsx("div", { style: {
1009
1008
  fontFamily: theme.fontFamily,
1010
1009
  color: theme.primaryTextColor,
1011
1010
  boxSizing: 'content-box',
@@ -1015,27 +1014,27 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1015
1014
  display: 'flex',
1016
1015
  alignItems: 'center',
1017
1016
  justifyContent: 'flex-end',
1018
- }, children: 'view report →' })) : null] }), (0, jsx_runtime_1.jsx)("div", { style: {
1017
+ }, children: 'view report →' })) : null] }), _jsx("div", { style: {
1019
1018
  padding: 0,
1020
1019
  height: '100%',
1021
1020
  boxSizing: 'content-box',
1022
- }, children: (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
1021
+ }, children: _jsx(Chart, { containerStyle: {
1023
1022
  display: 'flex',
1024
1023
  width: '100%',
1025
1024
  // TODO: fix fixed height
1026
1025
  height: 300,
1027
1026
  marginBottom: 50,
1028
1027
  marginTop: 30,
1029
- }, isDateFilter: true, chartId: elem._id, colors: theme.chartColors?.length
1028
+ }, chartId: elem._id, colors: theme.chartColors?.length
1030
1029
  ? theme.chartColors
1031
1030
  : undefined }) })] }) }) }) }, elem.name + '' + index));
1032
- }) })) : null, dashboardSections[section].filter((elem) => elem.chartType === 'table').length ? ((0, jsx_runtime_1.jsxs)("div", { style: {
1031
+ }) })) : null, dashboardSections[section].filter((elem) => elem.chartType === 'table').length ? (_jsxs("div", { style: {
1033
1032
  boxSizing: 'content-box',
1034
1033
  width: `100%`,
1035
1034
  gap: 20,
1036
1035
  display: 'flex',
1037
1036
  flexDirection: 'column',
1038
- }, children: [(0, jsx_runtime_1.jsx)("div", { style: { height: 0 } }), dashboardSections[section]
1037
+ }, children: [_jsx("div", { style: { height: 0 } }), dashboardSections[section]
1039
1038
  .filter((elem) => elem.chartType === 'table')
1040
1039
  .sort((a, b) => {
1041
1040
  if (a.order === undefined && b.order === undefined)
@@ -1048,23 +1047,23 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1048
1047
  })
1049
1048
  .map((elem, index) => {
1050
1049
  if (DashboardItemComponent) {
1051
- return ((0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
1050
+ return (_jsx("div", { onClick: onClickDashboardItem
1052
1051
  ? () => handleOnClickDashboardItem(elem)
1053
- : undefined, children: (0, jsx_runtime_1.jsx)(DashboardItemComponent, { dashboardItem: elem, children: (0, jsx_runtime_1.jsx)("div", { style: {
1052
+ : undefined, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx("div", { style: {
1054
1053
  padding: 0,
1055
1054
  height: '100%',
1056
1055
  boxSizing: 'content-box',
1057
- }, children: (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
1056
+ }, children: _jsx(Chart, { containerStyle: {
1058
1057
  display: 'flex',
1059
1058
  width: '100%',
1060
1059
  height: '100%',
1061
- }, isDateFilter: true, chartId: elem._id, colors: theme.chartColors?.length
1060
+ }, chartId: elem._id, colors: theme.chartColors?.length
1062
1061
  ? theme.chartColors
1063
1062
  : undefined }) }) }) }, elem.name + '' + index));
1064
1063
  }
1065
- return ((0, jsx_runtime_1.jsxs)("div", { onClick: onClickDashboardItem
1064
+ return (_jsxs("div", { onClick: onClickDashboardItem
1066
1065
  ? () => handleOnClickDashboardItem(elem)
1067
- : undefined, children: [(0, jsx_runtime_1.jsx)("div", { onClick: onClickDashboardItem
1066
+ : undefined, children: [_jsx("div", { onClick: onClickDashboardItem
1068
1067
  ? () => handleOnClickDashboardItem(elem)
1069
1068
  : undefined, style: {
1070
1069
  // background: theme.elevatedCardColor,
@@ -1079,23 +1078,23 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1079
1078
  minHeight: 420,
1080
1079
  height: 420,
1081
1080
  // ...metricContainerStyle,
1082
- }, children: (0, jsx_runtime_1.jsx)("div", {
1081
+ }, children: _jsx("div", {
1083
1082
  // className="group-hover:bg-black"
1084
1083
  style: {
1085
1084
  width: '100%',
1086
1085
  boxSizing: 'content-box',
1087
1086
  height: '100%',
1088
- }, children: (0, jsx_runtime_1.jsx)("div", { style: {
1087
+ }, children: _jsx("div", { style: {
1089
1088
  width: '100%',
1090
1089
  boxSizing: 'content-box',
1091
1090
  height: '100%',
1092
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
1091
+ }, children: _jsxs("div", { style: {
1093
1092
  display: 'flex',
1094
1093
  flexDirection: 'column',
1095
1094
  justifyContent: 'space-between',
1096
1095
  boxSizing: 'content-box',
1097
1096
  height: '100%',
1098
- }, children: [(0, jsx_runtime_1.jsxs)("div", {
1097
+ }, children: [_jsxs("div", {
1099
1098
  // className="group-hover:bg-black"
1100
1099
  style: {
1101
1100
  display: 'flex',
@@ -1106,7 +1105,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1106
1105
  // paddingLeft: theme.padding,
1107
1106
  paddingRight: 25,
1108
1107
  // paddingTop: theme.padding,
1109
- }, children: [(0, jsx_runtime_1.jsx)("div", { title: elem.name, style: {
1108
+ }, children: [_jsx("div", { title: elem.name, style: {
1110
1109
  fontFamily: theme.fontFamily,
1111
1110
  color: theme.primaryTextColor,
1112
1111
  boxSizing: 'content-box',
@@ -1125,7 +1124,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1125
1124
  display: 'block',
1126
1125
  maxWidth: '100%',
1127
1126
  overflow: 'hidden',
1128
- }, children: elem.name }), onClickDashboardItem ? ((0, jsx_runtime_1.jsx)("div", {
1127
+ }, children: elem.name }), onClickDashboardItem ? (_jsx("div", {
1129
1128
  // className="hover:bg-black"
1130
1129
  style: {
1131
1130
  fontFamily: theme.fontFamily,
@@ -1138,116 +1137,19 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
1138
1137
  display: 'flex',
1139
1138
  alignItems: 'center',
1140
1139
  justifyContent: 'flex-end',
1141
- }, children: 'view report →' })) : null] }), (0, jsx_runtime_1.jsxs)("div", { style: {
1140
+ }, children: 'view report →' })) : null] }), _jsxs("div", { style: {
1142
1141
  padding: 0,
1143
1142
  height: '400px',
1144
- }, children: [(0, jsx_runtime_1.jsx)("div", { style: { height: 20 } }), (0, jsx_runtime_1.jsx)(Chart_1.default, { containerStyle: {
1143
+ }, children: [_jsx("div", { style: { height: 20 } }), _jsx(Chart, { containerStyle: {
1145
1144
  // display: 'flex',
1146
1145
  // width: '100%',
1147
1146
  // height: 30,
1148
1147
  // marginBottom: 50,
1149
1148
  height: '100%',
1150
1149
  // paddingLeft: 25,
1151
- }, isDateFilter: true,
1150
+ },
1152
1151
  // chartFilters={elem.chartFilters}
1153
- chartId: elem._id })] })] }) }) }) }, elem.name + '' + index), (0, jsx_runtime_1.jsx)("div", { style: { height: 40 } })] }, elem.name + '' + index));
1154
- })] })) : null, (0, jsx_runtime_1.jsx)("div", { style: { height: 40 } })] }, section + '' + sectionIndex));
1152
+ chartId: elem._id })] })] }) }) }) }, elem.name + '' + index), _jsx("div", { style: { height: 40 } })] }, elem.name + '' + index));
1153
+ })] })) : null, _jsx("div", { style: { height: 40 } })] }, section + '' + sectionIndex));
1155
1154
  })] }));
1156
1155
  }
1157
- exports.default = Dashboard;
1158
- // ----------------------------------------------------------------
1159
- // REST OF CODE NOT USED
1160
- function Filter({ defaultValue, theme, onValueChange, filter }) {
1161
- //should be date as well as strings
1162
- const dropdownOptions = [
1163
- { value: 'popupbagelsmardens', text: 'popupbagelsmardens' },
1164
- { value: 'popupbagelswestport', text: 'popupbagelswestport' },
1165
- { value: 'popupbagelseasthampton', text: 'popupbagelseasthampton' },
1166
- { value: 'popupbagelsgreenwich', text: 'popupbagelsgreenwich' },
1167
- { value: 'popupbagelsredding', text: 'popupbagelsredding' },
1168
- { value: 'popupbagelsthompson', text: 'popupbagelsthompson' },
1169
- ];
1170
- const dropdownRef = (0, react_1.useRef)(null);
1171
- const [showDropdown, setShowDropdown] = (0, react_1.useState)(false);
1172
- const [selectedValue, setSelectedValue] = (0, hooks_1.useInternalState)(defaultValue, undefined);
1173
- const selectedDropdownValue = selectedValue ? selectedValue[2] ?? null : null;
1174
- const handleDropdownOptionClick = (dropdownValue) => {
1175
- setSelectedValue([undefined, undefined, dropdownValue]);
1176
- onValueChange?.([undefined, undefined, dropdownValue]);
1177
- setShowDropdown(false);
1178
- };
1179
- const [hoveredDropdownValue, handleDropdownKeyDown] = (0, hooks_1.useSelectOnKeyDown)(handleDropdownOptionClick, dropdownOptions.map((option) => option.value), showDropdown, setShowDropdown, selectedDropdownValue);
1180
- return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%' }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
1181
- marginBottom: 6,
1182
- fontWeight: '600',
1183
- color: theme.secondaryTextColor,
1184
- fontSize: 14,
1185
- fontFamily: theme.fontFamily,
1186
- }, children: filter.label }), (0, jsx_runtime_1.jsx)(FilterDropdown, { showDropdown: showDropdown, setShowDropdown: setShowDropdown, handleDropdownKeyDown: handleDropdownKeyDown, dropdownRef: dropdownRef, theme: theme, selectedDropdownValue: selectedDropdownValue, dropdownOptions: filter.options, field: filter.field, label: filter.labelField }), (0, jsx_runtime_1.jsx)(FilterModal, { showDropdown: showDropdown, setShowDropdown: setShowDropdown, dropdownRef: dropdownRef, theme: theme, hoveredDropdownValue: hoveredDropdownValue, selectedDropdownValue: selectedDropdownValue, dropdownOptions: filter.options, handleDropdownOptionClick: handleDropdownOptionClick, field: filter.field, label: filter.labelField })] }));
1187
- }
1188
- function removeQuotes(str) {
1189
- if (str.startsWith('"') && str.endsWith('"')) {
1190
- return str.slice(1, -1);
1191
- }
1192
- else {
1193
- return str;
1194
- }
1195
- }
1196
- function FilterDropdown({ setShowDropdown, dropdownRef, showDropdown, handleDropdownKeyDown, theme, dropdownPlaceholder = 'Select', selectedDropdownValue, dropdownOptions, field, label, }) {
1197
- const dropdownText = selectedDropdownValue
1198
- ? String(dropdownOptions.find((option) => option[removeQuotes(field)] === selectedDropdownValue)[removeQuotes(label)])
1199
- : dropdownPlaceholder;
1200
- return ((0, jsx_runtime_1.jsx)("div", { style: {
1201
- display: 'flex',
1202
- alignItems: 'center',
1203
- justifyContent: 'space-between',
1204
- borderRadius: '0.375rem',
1205
- background: theme?.backgroundColor,
1206
- fontFamily: theme?.fontFamily,
1207
- boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
1208
- }, children: (0, jsx_runtime_1.jsxs)("button", { type: "button", style: {
1209
- // fontFamily: theme?.fontFamily,
1210
- borderColor: theme?.borderColor || '#E5E7EB',
1211
- borderStyle: 'solid',
1212
- borderWidth: 1,
1213
- cursor: 'pointer',
1214
- marginLeft: -1,
1215
- borderRadius: '0.375rem',
1216
- // width: '12rem',
1217
- width: '100%',
1218
- overflow: 'hidden',
1219
- textOverflow: 'ellipsis',
1220
- whiteSpace: 'nowrap',
1221
- paddingLeft: '1rem',
1222
- paddingRight: '1rem',
1223
- display: 'inline-flex',
1224
- minHeight: 38,
1225
- justifyContent: 'space-between',
1226
- alignItems: 'center',
1227
- background: theme?.backgroundColor,
1228
- fontSize: theme?.fontSizeSmall || '0.875rem',
1229
- // fontWeight: theme?.fontWeightMedium || '800',
1230
- }, ref: dropdownRef, onClick: () => setShowDropdown(!showDropdown), onKeyDown: handleDropdownKeyDown, children: [(0, jsx_runtime_1.jsx)("p", { style: {
1231
- margin: 0,
1232
- fontFamily: theme?.fontFamily,
1233
- color: theme?.primaryTextColor || '#364153',
1234
- overflow: 'hidden',
1235
- textOverflow: 'ellipsis',
1236
- whiteSpace: 'nowrap',
1237
- fontWeight: theme?.fontWeightMedium || '500',
1238
- fontSize: theme?.fontSizeSmall || '0.875rem',
1239
- }, children: dropdownText }), (0, jsx_runtime_1.jsx)(assets_1.ArrowDownHeadIcon, { style: {
1240
- height: '1.25rem',
1241
- width: '1.25rem',
1242
- flex: 'none',
1243
- color: theme?.secondaryTextColor,
1244
- marginRight: '-0.25rem',
1245
- }, "aria-hidden": "true" })] }) }));
1246
- }
1247
- function FilterModal({ setShowDropdown, dropdownRef, showDropdown, theme, selectedDropdownValue, hoveredDropdownValue, dropdownOptions, handleDropdownOptionClick, field, label, }) {
1248
- return ((0, jsx_runtime_1.jsx)(Modal_1.default, { showModal: showDropdown, setShowModal: setShowDropdown, parentRef: dropdownRef, theme: theme, children: (0, jsx_runtime_1.jsx)(contexts_1.SelectedValueContext.Provider, { value: {
1249
- selectedValue: selectedDropdownValue,
1250
- handleValueChange: handleDropdownOptionClick,
1251
- }, children: (0, jsx_runtime_1.jsx)(contexts_1.HoveredValueContext.Provider, { value: { hoveredValue: hoveredDropdownValue }, children: dropdownOptions.map((row, index) => ((0, jsx_runtime_1.jsx)(Dropdown_1.DropdownItem, { value: row[removeQuotes(field)], text: row[removeQuotes(label)], theme: theme, lastItem: dropdownOptions.length - 1 === index }, row[removeQuotes(field)]))) }) }) }));
1252
- }
1253
- //# sourceMappingURL=Dashboard.js.map