@quillsql/react 2.12.15 → 2.12.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 (105) hide show
  1. package/dist/cjs/Chart.d.ts +4 -0
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +27 -10
  4. package/dist/cjs/ChartBuilder.d.ts +3 -1
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +3 -3
  7. package/dist/cjs/ChartEditor.d.ts +3 -1
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +2 -2
  10. package/dist/cjs/Dashboard.d.ts +8 -2
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +3 -3
  13. package/dist/cjs/ReportBuilder.d.ts +3 -1
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +22 -19
  16. package/dist/cjs/SQLEditor.d.ts +3 -1
  17. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  18. package/dist/cjs/SQLEditor.js +2 -2
  19. package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
  20. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/BarChart.js +2 -2
  22. package/dist/cjs/components/Chart/BarList.d.ts +1 -0
  23. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/BarList.js +2 -2
  25. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  26. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  27. package/dist/cjs/components/Chart/LineChart.js +2 -2
  28. package/dist/cjs/components/Chart/PieChart.d.ts +1 -0
  29. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  30. package/dist/cjs/components/Chart/PieChart.js +2 -2
  31. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
  32. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
  34. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  35. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +6 -3
  36. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
  37. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  38. package/dist/cjs/components/ReportBuilder/util.js +8 -8
  39. package/dist/cjs/internals/ReportBuilder/PivotForm.js +3 -3
  40. package/dist/cjs/internals/ReportBuilder/PivotList.js +3 -3
  41. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -1
  42. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  43. package/dist/cjs/internals/ReportBuilder/PivotModal.js +76 -34
  44. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
  45. package/dist/cjs/utils/axisFormatter.js +16 -0
  46. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  47. package/dist/cjs/utils/columnProcessing.js +1 -0
  48. package/dist/cjs/utils/textProcessing.d.ts +1 -0
  49. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  50. package/dist/cjs/utils/textProcessing.js +21 -1
  51. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  52. package/dist/cjs/utils/valueFormatter.js +15 -0
  53. package/dist/esm/Chart.d.ts +4 -0
  54. package/dist/esm/Chart.d.ts.map +1 -1
  55. package/dist/esm/Chart.js +27 -10
  56. package/dist/esm/ChartBuilder.d.ts +3 -1
  57. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  58. package/dist/esm/ChartBuilder.js +4 -4
  59. package/dist/esm/ChartEditor.d.ts +3 -1
  60. package/dist/esm/ChartEditor.d.ts.map +1 -1
  61. package/dist/esm/ChartEditor.js +2 -2
  62. package/dist/esm/Dashboard.d.ts +8 -2
  63. package/dist/esm/Dashboard.d.ts.map +1 -1
  64. package/dist/esm/Dashboard.js +3 -3
  65. package/dist/esm/ReportBuilder.d.ts +3 -1
  66. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  67. package/dist/esm/ReportBuilder.js +23 -20
  68. package/dist/esm/SQLEditor.d.ts +3 -1
  69. package/dist/esm/SQLEditor.d.ts.map +1 -1
  70. package/dist/esm/SQLEditor.js +2 -2
  71. package/dist/esm/components/Chart/BarChart.d.ts +2 -1
  72. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  73. package/dist/esm/components/Chart/BarChart.js +2 -2
  74. package/dist/esm/components/Chart/BarList.d.ts +1 -0
  75. package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
  76. package/dist/esm/components/Chart/BarList.js +2 -2
  77. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  78. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  79. package/dist/esm/components/Chart/LineChart.js +2 -2
  80. package/dist/esm/components/Chart/PieChart.d.ts +1 -0
  81. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  82. package/dist/esm/components/Chart/PieChart.js +2 -2
  83. package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
  84. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  85. package/dist/esm/components/Dashboard/ChartComponent.js +1 -1
  86. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  87. package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -4
  88. package/dist/esm/components/ReportBuilder/AddSortPopover.js +3 -3
  89. package/dist/esm/components/ReportBuilder/bigDateMap.js +2 -2
  90. package/dist/esm/components/ReportBuilder/util.js +9 -9
  91. package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -4
  92. package/dist/esm/internals/ReportBuilder/PivotList.js +4 -4
  93. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -1
  94. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  95. package/dist/esm/internals/ReportBuilder/PivotModal.js +77 -35
  96. package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
  97. package/dist/esm/utils/axisFormatter.js +16 -0
  98. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  99. package/dist/esm/utils/columnProcessing.js +1 -0
  100. package/dist/esm/utils/textProcessing.d.ts +1 -0
  101. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  102. package/dist/esm/utils/textProcessing.js +19 -0
  103. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  104. package/dist/esm/utils/valueFormatter.js +15 -0
  105. package/package.json +1 -1
@@ -6,7 +6,7 @@ import { PivotList, PivotCard } from './PivotList';
6
6
  import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, } from 'date-fns';
7
7
  import { valueFormatter } from '../../utils/valueFormatter';
8
8
  import { numberFormatOptions, dateFormatOptions } from '../../ChartBuilder';
9
- import { snakeCaseToTitleCase } from '../../utils/textProcessing';
9
+ import { snakeAndCamelCaseToTitleCase, } from '../../utils/textProcessing';
10
10
  import { QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, } from '../../components/UiComponents';
11
11
  import { isNumericColumnType, } from '../../components/ReportBuilder/ast';
12
12
  import { QuillCard } from '../../components/QuillCard';
@@ -292,7 +292,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
292
292
  allowedColumnFields,
293
293
  allowedRowFields,
294
294
  allowedValueFields,
295
- columns
295
+ columns,
296
296
  ]);
297
297
  const pivotFieldChange = async (field, value) => {
298
298
  setErrors([]);
@@ -402,7 +402,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
402
402
  : e.target.value);
403
403
  }, options: allowedRowFields.map((field) => {
404
404
  return {
405
- label: snakeCaseToTitleCase(field),
405
+ label: snakeAndCamelCaseToTitleCase(field),
406
406
  value: field,
407
407
  };
408
408
  }), width: 200 }) }), _jsx("div", { ref: colFieldRef, children: _jsx(SelectComponent, { id: "pivot-row-field", label: "Column field", value: pivotColumnField, onChange: (e) => {
@@ -412,7 +412,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
412
412
  : e.target.value);
413
413
  }, options: allowedColumnFields.map((field) => {
414
414
  return {
415
- label: snakeCaseToTitleCase(field),
415
+ label: snakeAndCamelCaseToTitleCase(field),
416
416
  value: field,
417
417
  };
418
418
  }), width: 200 }) })] }), _jsxs(PivotRowContainer, { children: [_jsx(SelectComponent, { id: "pivot-row-field", label: "Value field", value: pivotValueField, onChange: (e) => {
@@ -422,7 +422,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
422
422
  : e.target.value);
423
423
  }, options: allowedValueFields.map((field) => {
424
424
  return {
425
- label: snakeCaseToTitleCase(field),
425
+ label: snakeAndCamelCaseToTitleCase(field),
426
426
  value: field,
427
427
  };
428
428
  }), width: 200 }), _jsx(SelectComponent, { id: "pivot-row-field", label: "Aggregation type", value: pivotAggregation, onChange: (e) => {
@@ -520,14 +520,14 @@ export function generatePivotTableYAxis(pivot, cols, format) {
520
520
  }
521
521
  export function generatePivotTitle(pivot) {
522
522
  if (pivot.rowField && !pivot.valueField) {
523
- return snakeCaseToTitleCase(`${pivot.aggregationType} of ${pivot.rowField}
523
+ return snakeAndCamelCaseToTitleCase(`${pivot.aggregationType} of ${pivot.rowField}
524
524
  `);
525
525
  }
526
526
  else if (pivot.valueField && !pivot.rowField) {
527
- return snakeCaseToTitleCase(`${pivot.aggregationType} of ${pivot.valueField}
527
+ return snakeAndCamelCaseToTitleCase(`${pivot.aggregationType} of ${pivot.valueField}
528
528
  `);
529
529
  }
530
- return snakeCaseToTitleCase(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
530
+ return snakeAndCamelCaseToTitleCase(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
531
531
  }
532
532
  function castValueToDate(value) {
533
533
  if (!value) {
@@ -600,10 +600,30 @@ function getDateRange(dateRange, column, data) {
600
600
  return dateRange;
601
601
  }
602
602
  }
603
- function getDateBuckets(dateRange, column, data) {
603
+ function determineIntervalThroughOverride(dateBucket, dateRange) {
604
+ switch (dateBucket) {
605
+ case 'day':
606
+ return eachDayOfInterval(dateRange);
607
+ case 'week':
608
+ return eachWeekOfInterval(dateRange, { weekStartsOn: 1 });
609
+ case 'month':
610
+ return eachMonthOfInterval(dateRange);
611
+ case 'year':
612
+ return eachYearOfInterval(dateRange);
613
+ default:
614
+ return eachMonthOfInterval(dateRange);
615
+ }
616
+ }
617
+ function getDateBuckets(dateRange, column, data, dateBucket) {
604
618
  if (!dateRange) {
619
+ if (dateBucket) {
620
+ return determineIntervalThroughOverride(dateBucket, getDateRange(undefined, column, data));
621
+ }
605
622
  return eachMonthOfInterval(getDateRange(dateRange, column, data));
606
623
  }
624
+ if (dateBucket) {
625
+ return determineIntervalThroughOverride(dateBucket, dateRange);
626
+ }
607
627
  const dayDifference = differenceInDays(dateRange.end, dateRange.start);
608
628
  return dayDifferenceToInterval(dayDifference, dateRange);
609
629
  }
@@ -628,24 +648,45 @@ function dayDifferenceToInterval(dayDifference, dateRange) {
628
648
  return eachYearOfInterval(dateRange);
629
649
  }
630
650
  }
631
- function getDateString(value, dateRange) {
651
+ function getDateString(value, dateRange, dateBucket) {
632
652
  let format;
633
- if (!dateRange || !dateRange[0]) {
634
- format = 'MMM_yyyy';
653
+ if (dateBucket) {
654
+ switch (dateBucket) {
655
+ case 'day':
656
+ format = 'MMM_dd';
657
+ break;
658
+ case 'week':
659
+ format = 'MMM_dd-MMM_dd';
660
+ break;
661
+ case 'month':
662
+ format = 'MMM_yyyy';
663
+ break;
664
+ case 'year':
665
+ format = 'yyyy';
666
+ break;
667
+ default:
668
+ format = 'MMM_yyyy';
669
+ break;
670
+ }
635
671
  }
636
672
  else {
637
- const dayDifference = differenceInDays(new Date(dateRange[1]), new Date(dateRange[0]));
638
- if (dayDifference < 14) {
639
- format = 'MMM_dd_yyyy';
640
- }
641
- else if (dayDifference < 60) {
642
- format = 'MMM_dd-MMM_dd';
643
- }
644
- else if (dayDifference < 365 * 3) {
673
+ if (!dateRange) {
645
674
  format = 'MMM_yyyy';
646
675
  }
647
676
  else {
648
- format = 'yyyy';
677
+ const dayDifference = differenceInDays(new Date(dateRange.end), new Date(dateRange.start));
678
+ if (dayDifference < 14) {
679
+ format = 'MMM_dd_yyyy';
680
+ }
681
+ else if (dayDifference < 60) {
682
+ format = 'MMM_dd-MMM_dd';
683
+ }
684
+ else if (dayDifference < 365 * 3) {
685
+ format = 'MMM_yyyy';
686
+ }
687
+ else {
688
+ format = 'yyyy';
689
+ }
649
690
  }
650
691
  }
651
692
  return valueFormatter({
@@ -690,7 +731,7 @@ const fixBigQueryData = (data = []) => {
690
731
  }
691
732
  return newData;
692
733
  };
693
- export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined) {
734
+ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined, dateBucket) {
694
735
  // If there is no rowField, aggregate on the valueField
695
736
  if (!pivot.rowField) {
696
737
  return valueFieldAggregation(data, pivot.valueField, pivot.aggregationType, isComparison);
@@ -709,7 +750,7 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
709
750
  }
710
751
  const pivotRows = [];
711
752
  const uniqueRows = (isDateField(pivot.rowFieldType)
712
- ? getDateBuckets(dateRange, pivot.rowField, data)
753
+ ? getDateBuckets(dateRange, pivot.rowField, data, dateBucket)
713
754
  : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
714
755
  const rowDateRange = getDateRange(dateRange, pivot.rowField, data);
715
756
  const compRowDateRange = getDateRange(compRange ?? dateRange, pivot.rowField, data);
@@ -717,7 +758,7 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
717
758
  // @ts-ignore
718
759
  const uniqueColumns = (pivot.columnField
719
760
  ? isDateField(pivot.columnFieldType || '')
720
- ? getDateBuckets(dateRange, pivot.columnField, data)
761
+ ? getDateBuckets(dateRange, pivot.columnField, data, dateBucket)
721
762
  : [...new Set(data.map((item) => item[pivot.columnField || '']))]
722
763
  : [pivot.valueField]).filter((col) => Boolean(col));
723
764
  // Map from new dates to their corresponding prior dates
@@ -734,12 +775,12 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
734
775
  data.forEach((item) => {
735
776
  if (isDateCol) {
736
777
  const key = getDateString(item[col], dateRange);
737
- const value = getDateString(item[`comparison_${col}`], dateRange);
778
+ const value = getDateString(item[`comparison_${col}`], dateRange, dateBucket);
738
779
  COL_DATE_MAP[key] = value;
739
780
  }
740
781
  if (isDateRow) {
741
782
  const key = getDateString(item[row], dateRange);
742
- const value = getDateString(item[`comparison_${row}`], dateRange);
783
+ const value = getDateString(item[`comparison_${row}`], dateRange, dateBucket);
743
784
  ROW_DATE_MAP[key] = value;
744
785
  }
745
786
  });
@@ -769,7 +810,7 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
769
810
  rowsToGenerate.forEach((rowValue, rowIndex) => {
770
811
  const row = {
771
812
  [pivot.rowField]: isDateField(pivot.rowFieldType)
772
- ? getDateString(rowValue, dateRange)
813
+ ? getDateString(rowValue, dateRange, dateBucket)
773
814
  : rowValue === null
774
815
  ? 'Null'
775
816
  : rowValue === false
@@ -974,12 +1015,14 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
974
1015
  });
975
1016
  const columns = [
976
1017
  {
977
- label: pivot.rowField === null ? 'Null' : snakeCaseToTitleCase(pivot.rowField),
1018
+ label: pivot.rowField === null
1019
+ ? 'Null'
1020
+ : snakeAndCamelCaseToTitleCase(pivot.rowField),
978
1021
  field: pivot.rowField,
979
1022
  },
980
1023
  ...uniqueColumns.map((column, index) => {
981
1024
  const columnName = isDateField(pivot.columnFieldType || '')
982
- ? getDateString(column, dateRange)
1025
+ ? getDateString(column, dateRange, dateBucket)
983
1026
  : column;
984
1027
  return {
985
1028
  label: column === null
@@ -990,14 +1033,14 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
990
1033
  !pivot.columnField &&
991
1034
  index === 1
992
1035
  ? 'Count'
993
- : snakeCaseToTitleCase(columnName),
1036
+ : snakeAndCamelCaseToTitleCase(columnName),
994
1037
  field: columnName,
995
1038
  };
996
1039
  }),
997
1040
  ...(isComparison && pivot.columnField
998
1041
  ? uniqueColumns.map((column, index) => {
999
1042
  const columnName = isDateField(pivot.columnFieldType || '')
1000
- ? getDateString(column, dateRange)
1043
+ ? getDateString(column, dateRange, dateBucket)
1001
1044
  : column;
1002
1045
  return {
1003
1046
  label: column === null
@@ -1009,9 +1052,8 @@ export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimi
1009
1052
  index === 1
1010
1053
  ? 'Comparison Count'
1011
1054
  : isDateField(pivot.columnFieldType || '')
1012
- ? COL_DATE_MAP[getDateString(column, dateRange)] ??
1013
- 'Comparison'
1014
- : `comparison ${snakeCaseToTitleCase(columnName)}`,
1055
+ ? COL_DATE_MAP[getDateString(column, dateRange, dateBucket)] ?? 'Comparison'
1056
+ : `comparison ${snakeAndCamelCaseToTitleCase(columnName)}`,
1015
1057
  field: `comparison_${columnName}`,
1016
1058
  };
1017
1059
  })
@@ -1093,6 +1135,6 @@ function valueFieldAggregation(data, valueField, aggregationType, isComparison)
1093
1135
  }
1094
1136
  return {
1095
1137
  rows: [row],
1096
- columns: [{ label: snakeCaseToTitleCase(valueField), field: valueField }],
1138
+ columns: [{ label: snakeAndCamelCaseToTitleCase(valueField), field: valueField }],
1097
1139
  };
1098
1140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OA8B5B,CAAC"}
1
+ {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
@@ -24,7 +24,9 @@ export const axisFormatter = ({ value, field, fields, }) => {
24
24
  string: formatString,
25
25
  yyyy: format_YYYY,
26
26
  MMM_yyyy: format_MMM_yyyy,
27
+ MMM_dd: format_MMM_dd,
27
28
  MMM_dd_yyyy: format_MMM_dd_yyyy,
29
+ MMM_ww_yyyy: format_MMM_ww_yyyy,
28
30
  hh_ap_pm: format_hh_ap_pm,
29
31
  'MMM_dd-MMM_dd': format_MMM_dd_MMM_dd,
30
32
  'MMM_dd_hh:mm_ap_pm': format_MMM_dd_hh_mm_ap_pm,
@@ -201,6 +203,7 @@ const _getUTCDateHelper = (value, fmt) => {
201
203
  return format(utcDate, fmt);
202
204
  };
203
205
  const format_YYYY = (value) => _getUTCDateHelper(value, 'yyyy');
206
+ const format_MMM_dd = (value) => _getUTCDateHelper(value, 'dd MMM');
204
207
  const format_MMM_yyyy = (value) => _getUTCDateHelper(value, 'MMM yyyy');
205
208
  const format_hh_ap_pm = (value) => _getUTCDateHelper(value, 'hh:mm aa');
206
209
  const format_MMM_dd_yyyy = (value) => _getUTCDateHelper(value, 'dd MMM yyyy');
@@ -218,6 +221,19 @@ const format_MMM_dd_MMM_dd = (value) => {
218
221
  return `${format(monday, 'MMM dd')} - ${format(sunday, 'MMM dd')}`;
219
222
  }
220
223
  };
224
+ const format_MMM_ww_yyyy = (value) => {
225
+ const utcDate = utcToZonedTime(new Date(value), 'UTC');
226
+ if (!isValid(utcDate))
227
+ return 'Invalid date';
228
+ const currentDate = new Date();
229
+ const startOfWeekDate = startOfWeek(utcDate, { weekStartsOn: 1 });
230
+ const endOfWeekDate = endOfWeek(utcDate, { weekStartsOn: 1 });
231
+ const month = format(utcDate, 'MMM');
232
+ const startDay = format(startOfWeekDate, 'd');
233
+ const endDay = format(endOfWeekDate, 'd');
234
+ const year = format(utcDate, 'yyyy');
235
+ return `${month}, ${startDay}-${endDay}, ${year}`;
236
+ };
221
237
  const format_MMM_dd_hh_mm_ap_pm = (value) => {
222
238
  const utcDate = utcToZonedTime(new Date(value), 'UTC');
223
239
  if (!isValid(utcDate))
@@ -1 +1 @@
1
- {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
1
+ {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
@@ -182,6 +182,7 @@ export function convertFieldTypeToJSType(fieldType) {
182
182
  return 'date';
183
183
  case 'interval':
184
184
  case 'varchar':
185
+ case 'text':
185
186
  default:
186
187
  return 'string';
187
188
  }
@@ -1,5 +1,6 @@
1
1
  export declare function capitalize(text: string): string;
2
2
  export declare function depluralize(text: string): string;
3
3
  export declare function snakeCaseToTitleCase(str: string): string;
4
+ export declare function snakeAndCamelCaseToTitleCase(str: string): string;
4
5
  export declare function removeDoubleQuotes(str: string): string;
5
6
  //# sourceMappingURL=textProcessing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
1
+ {"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,UAiBvD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
@@ -22,6 +22,25 @@ export function snakeCaseToTitleCase(str) {
22
22
  : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
23
23
  .join(' ');
24
24
  }
25
+ export function snakeAndCamelCaseToTitleCase(str) {
26
+ if (!str) {
27
+ return str;
28
+ }
29
+ if (str.includes('_')) {
30
+ return str
31
+ .split(/_| /)
32
+ .map((word) => (word === 'id' ? 'ID' : capitalize(word)))
33
+ .join(' ');
34
+ }
35
+ else {
36
+ const text = str.replace(/([a-z])([A-Z])/g, '$1 $2');
37
+ const newText = text
38
+ .split(' ')
39
+ .map((word) => (word === 'Id' || word === 'id' ? 'ID' : capitalize(word)))
40
+ .join(' ');
41
+ return newText;
42
+ }
43
+ }
25
44
  export function removeDoubleQuotes(str) {
26
45
  if (!str) {
27
46
  return str;
@@ -1 +1 @@
1
- {"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MAwChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAwCH,CAAC;AAoMF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MAkDF,CAAC"}
1
+ {"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MA0ChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAwCH,CAAC;AAiNF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MAkDF,CAAC"}
@@ -36,8 +36,10 @@ export const valueFormatter = ({ value, field, fields }) => {
36
36
  two_decimal_places: formatTwoDecimalPlaces,
37
37
  string: formatString,
38
38
  yyyy: format_YYYY,
39
+ MMM_dd: format_MMM_dd,
39
40
  MMM_yyyy: format_MMM_yyyy,
40
41
  MMM_dd_yyyy: format_MMM_dd_yyyy,
42
+ MMM_ww_yyyy: format_MMM_ww_yyyy,
41
43
  hh_ap_pm: format_hh_ap_pm,
42
44
  'MMM_dd-MMM_dd': format_MMM_dd_MMM_dd,
43
45
  'MMM_dd_hh:mm_ap_pm': format_MMM_dd_hh_mm_ap_pm,
@@ -233,6 +235,19 @@ const format_wo_yyyy = (value) => {
233
235
  return 'Invalid date';
234
236
  return `${getWeek(utcDate)},${utcDate.getFullYear()}`;
235
237
  };
238
+ const format_MMM_ww_yyyy = (value) => {
239
+ const utcDate = utcToZonedTime(new Date(value), 'UTC');
240
+ if (!isValid(utcDate))
241
+ return 'Invalid date';
242
+ const currentDate = new Date();
243
+ const startOfWeekDate = startOfWeek(utcDate, { weekStartsOn: 1 });
244
+ const endOfWeekDate = endOfWeek(utcDate, { weekStartsOn: 1 });
245
+ const month = format(utcDate, 'MMM');
246
+ const startDay = format(startOfWeekDate, 'd');
247
+ const endDay = format(endOfWeekDate, 'd');
248
+ const year = format(utcDate, 'yyyy');
249
+ return `${month}, ${startDay}-${endDay}, ${year}`;
250
+ };
236
251
  /**
237
252
  * Parses a numeric string back into a number, taking into account that
238
253
  * users in different locales will format numbers differently (eg. 1,234 means
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.12.15",
3
+ "version": "2.12.17",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",