@quillsql/react 2.16.82 → 2.16.83

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.
package/dist/index.cjs CHANGED
@@ -56310,6 +56310,25 @@ var encodeRuleField = (field, table) => {
56310
56310
  }
56311
56311
  return tableName ? `${tableName}.${fieldName}` : fieldName;
56312
56312
  };
56313
+ var parseRuleField = (ruleField, config) => {
56314
+ if (config?.field) {
56315
+ return {
56316
+ field: config.field,
56317
+ table: config.table
56318
+ };
56319
+ }
56320
+ if (ruleField.includes(".")) {
56321
+ const [table, ...fieldParts] = ruleField.split(".");
56322
+ return {
56323
+ table: config?.table ?? table,
56324
+ field: fieldParts.join(".")
56325
+ };
56326
+ }
56327
+ return {
56328
+ table: config?.table,
56329
+ field: ruleField
56330
+ };
56331
+ };
56313
56332
  var isRelativeDateQueryBuilderOperator = (operator) => {
56314
56333
  const compactOperatorKey = normalizeCompactToken(
56315
56334
  extractOperatorToken(operator)
@@ -56468,8 +56487,12 @@ var qualifyQueryBuilderRuleGroupFields = (group, fieldConfigByName, allowedTable
56468
56487
  const reportQualifiedKeys = reportBuilderColumnsToQualifiedKeys(
56469
56488
  reportColumns ?? void 0
56470
56489
  );
56471
- const qualifyFieldName = (field) => {
56490
+ const qualifyFieldName = (field, table) => {
56472
56491
  const f = String(field ?? "").trim();
56492
+ const t = String(table ?? "").trim();
56493
+ if (t && !f.includes(".")) {
56494
+ return `${t}.${f}`;
56495
+ }
56473
56496
  if (!f || f.includes(".")) {
56474
56497
  return f;
56475
56498
  }
@@ -56521,7 +56544,7 @@ var qualifyQueryBuilderRuleGroupFields = (group, fieldConfigByName, allowedTable
56521
56544
  if (isRule(entry)) {
56522
56545
  return {
56523
56546
  ...entry,
56524
- field: qualifyFieldName(entry.field)
56547
+ field: qualifyFieldName(entry.field, entry.table)
56525
56548
  };
56526
56549
  }
56527
56550
  return entry;
@@ -61401,6 +61424,11 @@ var toNormalizedRelativeDateUnit = (rawUnit, fallbackUnit = "day") => {
61401
61424
  const unit = String(rawUnit ?? "").trim().toLowerCase();
61402
61425
  return RELATIVE_DATE_UNIT_KEYS.has(unit) ? unit : fallbackUnit;
61403
61426
  };
61427
+ var normalizeRelativeDateAmount = (value) => {
61428
+ if (typeof value !== "string" || !value.trim()) return value;
61429
+ const amount = Number(value);
61430
+ return Number.isFinite(amount) ? amount : value;
61431
+ };
61404
61432
  var toRelativeDateTuple = (value, fallbackUnit = "day") => {
61405
61433
  if (Array.isArray(value)) {
61406
61434
  if (value.length >= 2) {
@@ -61470,7 +61498,7 @@ var normalizeRelativeDateRules = (nextQuery, previousQuery) => {
61470
61498
  previousTuple[1]
61471
61499
  );
61472
61500
  const operatorToken = normalizeOperatorToken(nextRule.operator);
61473
- const nextAmount = operatorToken === "inthecurrent" ? 1 : nextAmountRaw;
61501
+ const nextAmount = operatorToken === "inthecurrent" ? 1 : normalizeRelativeDateAmount(nextAmountRaw);
61474
61502
  return {
61475
61503
  ...nextRule,
61476
61504
  value: [nextAmount, nextUnitRaw]
@@ -65412,6 +65440,7 @@ async function recoverFromFailedReportTaskExecution({
65412
65440
  if (!rebuiltState) {
65413
65441
  return null;
65414
65442
  }
65443
+ rebuiltState.rules = fetchedReportBuilderState?.rules ?? baseReport?.reportBuilderState?.rules ?? rebuiltState.rules;
65415
65444
  const persistedColumns = reportColumnsFromReportBuilderState(rebuiltState);
65416
65445
  const recoveryBaseReport = {
65417
65446
  ...EMPTY_INTERNAL_REPORT,
@@ -67125,14 +67154,21 @@ function useReport(reportIdArg, options = {}) {
67125
67154
  );
67126
67155
  const filtersForQueryBuilder = (0, import_react62.useMemo)(
67127
67156
  () => canonicalizeMultiselectStringRulesToOptionValues(
67128
- queryFilters,
67157
+ qualifyQueryBuilderRuleGroupFields(
67158
+ queryFilters,
67159
+ queryBuilderFieldConfigByName,
67160
+ fieldOptionsAllowedTableNames,
67161
+ sourceReport?.reportBuilderState?.columns
67162
+ ),
67129
67163
  filterValueOptionsByFieldName,
67130
67164
  queryBuilderFieldConfigByName
67131
67165
  ),
67132
67166
  [
67133
67167
  queryFilters,
67134
67168
  filterValueOptionsByFieldName,
67135
- queryBuilderFieldConfigByName
67169
+ queryBuilderFieldConfigByName,
67170
+ fieldOptionsAllowedTableNames,
67171
+ sourceReport?.reportBuilderState?.columns
67136
67172
  ]
67137
67173
  );
67138
67174
  const baseReportBuilderTables = sourceReport?.reportBuilderState?.tables ?? [];
@@ -67720,14 +67756,17 @@ function useReport(reportIdArg, options = {}) {
67720
67756
  if (entry && typeof entry === "object" && "field" in entry) {
67721
67757
  const previousFieldName = String(entry.field ?? "").trim();
67722
67758
  const ruleTableName = String(entry.table ?? "").trim();
67723
- const tableQualifiedKey = ruleTableName && previousFieldName && !previousFieldName.includes(".") ? `${ruleTableName}.${previousFieldName}` : "";
67724
- const nextFieldName = tableQualifiedKey && queryBuilderFieldConfigByName[tableQualifiedKey] ? tableQualifiedKey : normalizeQueryBuilderFieldNameForConfig(previousFieldName);
67725
- if (!nextFieldName || nextFieldName === previousFieldName) {
67759
+ const editorField = ruleTableName && !previousFieldName.includes(".") ? `${ruleTableName}.${previousFieldName}` : previousFieldName;
67760
+ const fieldKey = normalizeQueryBuilderFieldNameForConfig(editorField);
67761
+ if (!fieldKey) {
67726
67762
  return entry;
67727
67763
  }
67728
67764
  return {
67729
67765
  ...entry,
67730
- field: nextFieldName
67766
+ ...parseRuleField(
67767
+ fieldKey,
67768
+ queryBuilderFieldConfigByName[fieldKey]
67769
+ )
67731
67770
  };
67732
67771
  }
67733
67772
  return entry;
@@ -67899,6 +67938,10 @@ function useReport(reportIdArg, options = {}) {
67899
67938
  resolvedGroupColumnsBy,
67900
67939
  resolvedGroupRowsBy
67901
67940
  ]);
67941
+ const filtersForRequest = (0, import_react62.useMemo)(
67942
+ () => normalizeQueryBuilderFiltersForConfig(queryFilters),
67943
+ [normalizeQueryBuilderFiltersForConfig, queryFilters]
67944
+ );
67902
67945
  const effectiveReportBuilderState = (0, import_react62.useMemo)(() => {
67903
67946
  if (!sourceReport && effectiveReportBuilderTables.length === 0) {
67904
67947
  return void 0;
@@ -67906,7 +67949,7 @@ function useReport(reportIdArg, options = {}) {
67906
67949
  return {
67907
67950
  tables: effectiveReportBuilderTables,
67908
67951
  columns: effectiveReportBuilderColumns,
67909
- rules: queryFilters,
67952
+ rules: filtersForRequest,
67910
67953
  pivot: pivotState ? {
67911
67954
  ...pivotState,
67912
67955
  sort: Boolean(pivotSort?.sortField),
@@ -67934,7 +67977,7 @@ function useReport(reportIdArg, options = {}) {
67934
67977
  }, [
67935
67978
  effectiveReportBuilderColumns,
67936
67979
  effectiveReportBuilderTables,
67937
- queryFilters,
67980
+ filtersForRequest,
67938
67981
  limit,
67939
67982
  pivotState,
67940
67983
  pivotSort,
package/dist/index.js CHANGED
@@ -56468,6 +56468,25 @@ var encodeRuleField = (field, table) => {
56468
56468
  }
56469
56469
  return tableName ? `${tableName}.${fieldName}` : fieldName;
56470
56470
  };
56471
+ var parseRuleField = (ruleField, config) => {
56472
+ if (config?.field) {
56473
+ return {
56474
+ field: config.field,
56475
+ table: config.table
56476
+ };
56477
+ }
56478
+ if (ruleField.includes(".")) {
56479
+ const [table, ...fieldParts] = ruleField.split(".");
56480
+ return {
56481
+ table: config?.table ?? table,
56482
+ field: fieldParts.join(".")
56483
+ };
56484
+ }
56485
+ return {
56486
+ table: config?.table,
56487
+ field: ruleField
56488
+ };
56489
+ };
56471
56490
  var isRelativeDateQueryBuilderOperator = (operator) => {
56472
56491
  const compactOperatorKey = normalizeCompactToken(
56473
56492
  extractOperatorToken(operator)
@@ -56626,8 +56645,12 @@ var qualifyQueryBuilderRuleGroupFields = (group, fieldConfigByName, allowedTable
56626
56645
  const reportQualifiedKeys = reportBuilderColumnsToQualifiedKeys(
56627
56646
  reportColumns ?? void 0
56628
56647
  );
56629
- const qualifyFieldName = (field) => {
56648
+ const qualifyFieldName = (field, table) => {
56630
56649
  const f = String(field ?? "").trim();
56650
+ const t = String(table ?? "").trim();
56651
+ if (t && !f.includes(".")) {
56652
+ return `${t}.${f}`;
56653
+ }
56631
56654
  if (!f || f.includes(".")) {
56632
56655
  return f;
56633
56656
  }
@@ -56679,7 +56702,7 @@ var qualifyQueryBuilderRuleGroupFields = (group, fieldConfigByName, allowedTable
56679
56702
  if (isRule(entry)) {
56680
56703
  return {
56681
56704
  ...entry,
56682
- field: qualifyFieldName(entry.field)
56705
+ field: qualifyFieldName(entry.field, entry.table)
56683
56706
  };
56684
56707
  }
56685
56708
  return entry;
@@ -61604,6 +61627,11 @@ var toNormalizedRelativeDateUnit = (rawUnit, fallbackUnit = "day") => {
61604
61627
  const unit = String(rawUnit ?? "").trim().toLowerCase();
61605
61628
  return RELATIVE_DATE_UNIT_KEYS.has(unit) ? unit : fallbackUnit;
61606
61629
  };
61630
+ var normalizeRelativeDateAmount = (value) => {
61631
+ if (typeof value !== "string" || !value.trim()) return value;
61632
+ const amount = Number(value);
61633
+ return Number.isFinite(amount) ? amount : value;
61634
+ };
61607
61635
  var toRelativeDateTuple = (value, fallbackUnit = "day") => {
61608
61636
  if (Array.isArray(value)) {
61609
61637
  if (value.length >= 2) {
@@ -61673,7 +61701,7 @@ var normalizeRelativeDateRules = (nextQuery, previousQuery) => {
61673
61701
  previousTuple[1]
61674
61702
  );
61675
61703
  const operatorToken = normalizeOperatorToken(nextRule.operator);
61676
- const nextAmount = operatorToken === "inthecurrent" ? 1 : nextAmountRaw;
61704
+ const nextAmount = operatorToken === "inthecurrent" ? 1 : normalizeRelativeDateAmount(nextAmountRaw);
61677
61705
  return {
61678
61706
  ...nextRule,
61679
61707
  value: [nextAmount, nextUnitRaw]
@@ -65620,6 +65648,7 @@ async function recoverFromFailedReportTaskExecution({
65620
65648
  if (!rebuiltState) {
65621
65649
  return null;
65622
65650
  }
65651
+ rebuiltState.rules = fetchedReportBuilderState?.rules ?? baseReport?.reportBuilderState?.rules ?? rebuiltState.rules;
65623
65652
  const persistedColumns = reportColumnsFromReportBuilderState(rebuiltState);
65624
65653
  const recoveryBaseReport = {
65625
65654
  ...EMPTY_INTERNAL_REPORT,
@@ -67333,14 +67362,21 @@ function useReport(reportIdArg, options = {}) {
67333
67362
  );
67334
67363
  const filtersForQueryBuilder = useMemo33(
67335
67364
  () => canonicalizeMultiselectStringRulesToOptionValues(
67336
- queryFilters,
67365
+ qualifyQueryBuilderRuleGroupFields(
67366
+ queryFilters,
67367
+ queryBuilderFieldConfigByName,
67368
+ fieldOptionsAllowedTableNames,
67369
+ sourceReport?.reportBuilderState?.columns
67370
+ ),
67337
67371
  filterValueOptionsByFieldName,
67338
67372
  queryBuilderFieldConfigByName
67339
67373
  ),
67340
67374
  [
67341
67375
  queryFilters,
67342
67376
  filterValueOptionsByFieldName,
67343
- queryBuilderFieldConfigByName
67377
+ queryBuilderFieldConfigByName,
67378
+ fieldOptionsAllowedTableNames,
67379
+ sourceReport?.reportBuilderState?.columns
67344
67380
  ]
67345
67381
  );
67346
67382
  const baseReportBuilderTables = sourceReport?.reportBuilderState?.tables ?? [];
@@ -67928,14 +67964,17 @@ function useReport(reportIdArg, options = {}) {
67928
67964
  if (entry && typeof entry === "object" && "field" in entry) {
67929
67965
  const previousFieldName = String(entry.field ?? "").trim();
67930
67966
  const ruleTableName = String(entry.table ?? "").trim();
67931
- const tableQualifiedKey = ruleTableName && previousFieldName && !previousFieldName.includes(".") ? `${ruleTableName}.${previousFieldName}` : "";
67932
- const nextFieldName = tableQualifiedKey && queryBuilderFieldConfigByName[tableQualifiedKey] ? tableQualifiedKey : normalizeQueryBuilderFieldNameForConfig(previousFieldName);
67933
- if (!nextFieldName || nextFieldName === previousFieldName) {
67967
+ const editorField = ruleTableName && !previousFieldName.includes(".") ? `${ruleTableName}.${previousFieldName}` : previousFieldName;
67968
+ const fieldKey = normalizeQueryBuilderFieldNameForConfig(editorField);
67969
+ if (!fieldKey) {
67934
67970
  return entry;
67935
67971
  }
67936
67972
  return {
67937
67973
  ...entry,
67938
- field: nextFieldName
67974
+ ...parseRuleField(
67975
+ fieldKey,
67976
+ queryBuilderFieldConfigByName[fieldKey]
67977
+ )
67939
67978
  };
67940
67979
  }
67941
67980
  return entry;
@@ -68107,6 +68146,10 @@ function useReport(reportIdArg, options = {}) {
68107
68146
  resolvedGroupColumnsBy,
68108
68147
  resolvedGroupRowsBy
68109
68148
  ]);
68149
+ const filtersForRequest = useMemo33(
68150
+ () => normalizeQueryBuilderFiltersForConfig(queryFilters),
68151
+ [normalizeQueryBuilderFiltersForConfig, queryFilters]
68152
+ );
68110
68153
  const effectiveReportBuilderState = useMemo33(() => {
68111
68154
  if (!sourceReport && effectiveReportBuilderTables.length === 0) {
68112
68155
  return void 0;
@@ -68114,7 +68157,7 @@ function useReport(reportIdArg, options = {}) {
68114
68157
  return {
68115
68158
  tables: effectiveReportBuilderTables,
68116
68159
  columns: effectiveReportBuilderColumns,
68117
- rules: queryFilters,
68160
+ rules: filtersForRequest,
68118
68161
  pivot: pivotState ? {
68119
68162
  ...pivotState,
68120
68163
  sort: Boolean(pivotSort?.sortField),
@@ -68142,7 +68185,7 @@ function useReport(reportIdArg, options = {}) {
68142
68185
  }, [
68143
68186
  effectiveReportBuilderColumns,
68144
68187
  effectiveReportBuilderTables,
68145
- queryFilters,
68188
+ filtersForRequest,
68146
68189
  limit,
68147
68190
  pivotState,
68148
68191
  pivotSort,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.16.82",
3
+ "version": "2.16.83",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {