@uniformdev/context-ui 20.32.1-alpha.4 → 20.32.2-alpha.2

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.d.mts CHANGED
@@ -50,6 +50,11 @@ declare const enrichmentCriteriaMenuOperators: Array<{
50
50
  description?: string;
51
51
  value: DimensionMatch['op'];
52
52
  }>;
53
+ declare function getValidCriteriaOperatorsFor(rhsType: ResolvedDimensionDefinition['category'] | 'QUIRK' | undefined): {
54
+ name: string;
55
+ description?: string;
56
+ value: DimensionMatch["op"];
57
+ }[];
53
58
  declare function CriteriaOperatorMenu({ onChange, value, rhsType, ...props }: CriteriaOperatorMenuProps): _emotion_react_types_jsx_namespace.EmotionJSX.Element;
54
59
 
55
60
  interface UseContextDataResult {
@@ -181,4 +186,4 @@ declare const validateContextConfig: (contextConfig?: ContextConfig) => Promise<
181
186
  result?: ManifestGetResponse;
182
187
  }>;
183
188
 
184
- export { type AbTestListProps, AbTestSelector, type AbTestSelectorProps, type ContextConfig, ContextData, type ContextDataProps, CriteriaMatchMenu, type CriteriaMatchMenuProps, CriteriaOperatorMenu, type CriteriaOperatorMenuProps, type DataContextErrorProps, DimensionMenu, type DimensionMenuProps, DimensionValue, type DimensionValueProps, type DimensionsData, EditLink, type EditLinkProps, EnrichmentTag, type EnrichmentTagProps, PersonalizationCriteria, type PersonalizationCriteriaProps, PersonalizationCriteriaStatic, type PersonalizationCriteriaStaticProps, ProjectUIVersion, type ResolvedDimensionDefinition, type UseContextDataResult, type UseDimensionsResult, type UseValidateContextConfigResult, addAbTestLink, addEnrichmentLink, contextCriteriaMenuOperators, convertErrorsToObj, enrichmentCriteriaMenuOperators, isEnrichmentTagData, isPersonalizationCriteriaData, opHasRhs, useContextConfig, useContextData, useDimensions, useDimensionsDataContext, useManifest, useValidateContextConfig, validateContextConfig };
189
+ export { type AbTestListProps, AbTestSelector, type AbTestSelectorProps, type ContextConfig, ContextData, type ContextDataProps, CriteriaMatchMenu, type CriteriaMatchMenuProps, CriteriaOperatorMenu, type CriteriaOperatorMenuProps, type DataContextErrorProps, DimensionMenu, type DimensionMenuProps, DimensionValue, type DimensionValueProps, type DimensionsData, EditLink, type EditLinkProps, EnrichmentTag, type EnrichmentTagProps, PersonalizationCriteria, type PersonalizationCriteriaProps, PersonalizationCriteriaStatic, type PersonalizationCriteriaStaticProps, ProjectUIVersion, type ResolvedDimensionDefinition, type UseContextDataResult, type UseDimensionsResult, type UseValidateContextConfigResult, addAbTestLink, addEnrichmentLink, contextCriteriaMenuOperators, convertErrorsToObj, enrichmentCriteriaMenuOperators, getValidCriteriaOperatorsFor, isEnrichmentTagData, isPersonalizationCriteriaData, opHasRhs, useContextConfig, useContextData, useDimensions, useDimensionsDataContext, useManifest, useValidateContextConfig, validateContextConfig };
package/dist/index.d.ts CHANGED
@@ -50,6 +50,11 @@ declare const enrichmentCriteriaMenuOperators: Array<{
50
50
  description?: string;
51
51
  value: DimensionMatch['op'];
52
52
  }>;
53
+ declare function getValidCriteriaOperatorsFor(rhsType: ResolvedDimensionDefinition['category'] | 'QUIRK' | undefined): {
54
+ name: string;
55
+ description?: string;
56
+ value: DimensionMatch["op"];
57
+ }[];
53
58
  declare function CriteriaOperatorMenu({ onChange, value, rhsType, ...props }: CriteriaOperatorMenuProps): _emotion_react_types_jsx_namespace.EmotionJSX.Element;
54
59
 
55
60
  interface UseContextDataResult {
@@ -181,4 +186,4 @@ declare const validateContextConfig: (contextConfig?: ContextConfig) => Promise<
181
186
  result?: ManifestGetResponse;
182
187
  }>;
183
188
 
184
- export { type AbTestListProps, AbTestSelector, type AbTestSelectorProps, type ContextConfig, ContextData, type ContextDataProps, CriteriaMatchMenu, type CriteriaMatchMenuProps, CriteriaOperatorMenu, type CriteriaOperatorMenuProps, type DataContextErrorProps, DimensionMenu, type DimensionMenuProps, DimensionValue, type DimensionValueProps, type DimensionsData, EditLink, type EditLinkProps, EnrichmentTag, type EnrichmentTagProps, PersonalizationCriteria, type PersonalizationCriteriaProps, PersonalizationCriteriaStatic, type PersonalizationCriteriaStaticProps, ProjectUIVersion, type ResolvedDimensionDefinition, type UseContextDataResult, type UseDimensionsResult, type UseValidateContextConfigResult, addAbTestLink, addEnrichmentLink, contextCriteriaMenuOperators, convertErrorsToObj, enrichmentCriteriaMenuOperators, isEnrichmentTagData, isPersonalizationCriteriaData, opHasRhs, useContextConfig, useContextData, useDimensions, useDimensionsDataContext, useManifest, useValidateContextConfig, validateContextConfig };
189
+ export { type AbTestListProps, AbTestSelector, type AbTestSelectorProps, type ContextConfig, ContextData, type ContextDataProps, CriteriaMatchMenu, type CriteriaMatchMenuProps, CriteriaOperatorMenu, type CriteriaOperatorMenuProps, type DataContextErrorProps, DimensionMenu, type DimensionMenuProps, DimensionValue, type DimensionValueProps, type DimensionsData, EditLink, type EditLinkProps, EnrichmentTag, type EnrichmentTagProps, PersonalizationCriteria, type PersonalizationCriteriaProps, PersonalizationCriteriaStatic, type PersonalizationCriteriaStaticProps, ProjectUIVersion, type ResolvedDimensionDefinition, type UseContextDataResult, type UseDimensionsResult, type UseValidateContextConfigResult, addAbTestLink, addEnrichmentLink, contextCriteriaMenuOperators, convertErrorsToObj, enrichmentCriteriaMenuOperators, getValidCriteriaOperatorsFor, isEnrichmentTagData, isPersonalizationCriteriaData, opHasRhs, useContextConfig, useContextData, useDimensions, useDimensionsDataContext, useManifest, useValidateContextConfig, validateContextConfig };
package/dist/index.esm.js CHANGED
@@ -310,9 +310,12 @@ var quirkCriteriaMenuOperators = [
310
310
  value: "!="
311
311
  }
312
312
  ];
313
+ function getValidCriteriaOperatorsFor(rhsType) {
314
+ return rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
315
+ }
313
316
  function CriteriaOperatorMenu({ onChange, value, rhsType, ...props }) {
314
317
  var _a, _b;
315
- const operators = rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
318
+ const operators = getValidCriteriaOperatorsFor(rhsType);
316
319
  return /* @__PURE__ */ jsx6(
317
320
  InputComboBox,
318
321
  {
@@ -553,7 +556,7 @@ function useDimensionsDataContext() {
553
556
 
554
557
  // src/components/DimensionMenu/CriteriaMatchMenu.tsx
555
558
  import { InputComboBox as InputComboBox3 } from "@uniformdev/design-system";
556
- import { useState as useState5 } from "react";
559
+ import { useEffect as useEffect4, useRef, useState as useState5 } from "react";
557
560
 
558
561
  // src/components/DimensionMenu/DimensionGroupHeading.tsx
559
562
  import { Icon } from "@uniformdev/design-system";
@@ -740,6 +743,15 @@ function CriteriaMatchMenu({
740
743
  const [inputValue, setInputValue] = useState5(
741
744
  typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
742
745
  );
746
+ const currentInputValue = useRef(inputValue);
747
+ currentInputValue.current = inputValue;
748
+ useEffect4(() => {
749
+ if (currentInputValue.current !== criteriaMatch.r && !criteriaMatch.rDim) {
750
+ setInputValue(
751
+ typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
752
+ );
753
+ }
754
+ }, [criteriaMatch.r, criteriaMatch.rDim]);
743
755
  const rDim = criteriaMatch.rDim;
744
756
  const targetDim = criteriaMatch.rDim ? dimensions.dimIndex[criteriaMatch.rDim] : void 0;
745
757
  const groupedDimensions = useGroupedDimensions(dimensions.dimensions, void 0);
@@ -1473,12 +1485,15 @@ var PersonalizationCriteriaStatic = ({
1473
1485
  return;
1474
1486
  }
1475
1487
  if ("dim" in selection) {
1488
+ const validOperators = getValidCriteriaOperatorsFor(selection.category);
1489
+ const existingOpRemainsValid = !("t" in currentCriteria && currentCriteria.t === "q") && validOperators.some((op) => op.value === currentCriteria.op);
1476
1490
  const newCriteria = {
1477
1491
  ...currentCriteria,
1478
1492
  l: selection.dim,
1479
1493
  t: void 0,
1480
- op: ">",
1481
- r: 0
1494
+ op: existingOpRemainsValid ? currentCriteria.op : ">",
1495
+ r: existingOpRemainsValid ? currentCriteria.r : 0,
1496
+ rDim: existingOpRemainsValid ? currentCriteria.rDim : void 0
1482
1497
  };
1483
1498
  update(newCriteria, index);
1484
1499
  } else {
@@ -1757,7 +1772,7 @@ function ProjectUIVersion({ children, versionMap, contextConfig }) {
1757
1772
  }
1758
1773
 
1759
1774
  // src/hooks/useValidateContextConfig.ts
1760
- import { useEffect as useEffect4, useState as useState8 } from "react";
1775
+ import { useEffect as useEffect5, useState as useState8 } from "react";
1761
1776
 
1762
1777
  // src/utils/validateContextConfig.ts
1763
1778
  import { UncachedManifestClient } from "@uniformdev/context/api";
@@ -1798,7 +1813,7 @@ var useValidateContextConfig = (contextConfig) => {
1798
1813
  error: void 0
1799
1814
  });
1800
1815
  const { apiKey, apiHost, projectId } = contextConfig || {};
1801
- useEffect4(() => {
1816
+ useEffect5(() => {
1802
1817
  if (!apiKey || !apiHost) {
1803
1818
  return;
1804
1819
  }
@@ -1839,6 +1854,7 @@ export {
1839
1854
  contextCriteriaMenuOperators,
1840
1855
  convertErrorsToObj,
1841
1856
  enrichmentCriteriaMenuOperators,
1857
+ getValidCriteriaOperatorsFor,
1842
1858
  isEnrichmentTagData,
1843
1859
  isPersonalizationCriteriaData,
1844
1860
  opHasRhs,
package/dist/index.js CHANGED
@@ -47,6 +47,7 @@ __export(src_exports, {
47
47
  contextCriteriaMenuOperators: () => contextCriteriaMenuOperators,
48
48
  convertErrorsToObj: () => convertErrorsToObj,
49
49
  enrichmentCriteriaMenuOperators: () => enrichmentCriteriaMenuOperators,
50
+ getValidCriteriaOperatorsFor: () => getValidCriteriaOperatorsFor,
50
51
  isEnrichmentTagData: () => isEnrichmentTagData,
51
52
  isPersonalizationCriteriaData: () => isPersonalizationCriteriaData,
52
53
  opHasRhs: () => opHasRhs,
@@ -363,9 +364,12 @@ var quirkCriteriaMenuOperators = [
363
364
  value: "!="
364
365
  }
365
366
  ];
367
+ function getValidCriteriaOperatorsFor(rhsType) {
368
+ return rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
369
+ }
366
370
  function CriteriaOperatorMenu({ onChange, value, rhsType, ...props }) {
367
371
  var _a, _b;
368
- const operators = rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
372
+ const operators = getValidCriteriaOperatorsFor(rhsType);
369
373
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
370
374
  import_design_system2.InputComboBox,
371
375
  {
@@ -793,6 +797,15 @@ function CriteriaMatchMenu({
793
797
  const [inputValue, setInputValue] = (0, import_react11.useState)(
794
798
  typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
795
799
  );
800
+ const currentInputValue = (0, import_react11.useRef)(inputValue);
801
+ currentInputValue.current = inputValue;
802
+ (0, import_react11.useEffect)(() => {
803
+ if (currentInputValue.current !== criteriaMatch.r && !criteriaMatch.rDim) {
804
+ setInputValue(
805
+ typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
806
+ );
807
+ }
808
+ }, [criteriaMatch.r, criteriaMatch.rDim]);
796
809
  const rDim = criteriaMatch.rDim;
797
810
  const targetDim = criteriaMatch.rDim ? dimensions.dimIndex[criteriaMatch.rDim] : void 0;
798
811
  const groupedDimensions = useGroupedDimensions(dimensions.dimensions, void 0);
@@ -1509,12 +1522,15 @@ var PersonalizationCriteriaStatic = ({
1509
1522
  return;
1510
1523
  }
1511
1524
  if ("dim" in selection) {
1525
+ const validOperators = getValidCriteriaOperatorsFor(selection.category);
1526
+ const existingOpRemainsValid = !("t" in currentCriteria && currentCriteria.t === "q") && validOperators.some((op) => op.value === currentCriteria.op);
1512
1527
  const newCriteria = {
1513
1528
  ...currentCriteria,
1514
1529
  l: selection.dim,
1515
1530
  t: void 0,
1516
- op: ">",
1517
- r: 0
1531
+ op: existingOpRemainsValid ? currentCriteria.op : ">",
1532
+ r: existingOpRemainsValid ? currentCriteria.r : 0,
1533
+ rDim: existingOpRemainsValid ? currentCriteria.rDim : void 0
1518
1534
  };
1519
1535
  update(newCriteria, index);
1520
1536
  } else {
@@ -1876,6 +1892,7 @@ __reExport(src_exports, require("@uniformdev/design-system"), module.exports);
1876
1892
  contextCriteriaMenuOperators,
1877
1893
  convertErrorsToObj,
1878
1894
  enrichmentCriteriaMenuOperators,
1895
+ getValidCriteriaOperatorsFor,
1879
1896
  isEnrichmentTagData,
1880
1897
  isPersonalizationCriteriaData,
1881
1898
  opHasRhs,
package/dist/index.mjs CHANGED
@@ -310,9 +310,12 @@ var quirkCriteriaMenuOperators = [
310
310
  value: "!="
311
311
  }
312
312
  ];
313
+ function getValidCriteriaOperatorsFor(rhsType) {
314
+ return rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
315
+ }
313
316
  function CriteriaOperatorMenu({ onChange, value, rhsType, ...props }) {
314
317
  var _a, _b;
315
- const operators = rhsType === "QUIRK" ? quirkCriteriaMenuOperators : rhsType === "ENR" ? enrichmentCriteriaMenuOperators : contextCriteriaMenuOperators;
318
+ const operators = getValidCriteriaOperatorsFor(rhsType);
316
319
  return /* @__PURE__ */ jsx6(
317
320
  InputComboBox,
318
321
  {
@@ -553,7 +556,7 @@ function useDimensionsDataContext() {
553
556
 
554
557
  // src/components/DimensionMenu/CriteriaMatchMenu.tsx
555
558
  import { InputComboBox as InputComboBox3 } from "@uniformdev/design-system";
556
- import { useState as useState5 } from "react";
559
+ import { useEffect as useEffect4, useRef, useState as useState5 } from "react";
557
560
 
558
561
  // src/components/DimensionMenu/DimensionGroupHeading.tsx
559
562
  import { Icon } from "@uniformdev/design-system";
@@ -740,6 +743,15 @@ function CriteriaMatchMenu({
740
743
  const [inputValue, setInputValue] = useState5(
741
744
  typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
742
745
  );
746
+ const currentInputValue = useRef(inputValue);
747
+ currentInputValue.current = inputValue;
748
+ useEffect4(() => {
749
+ if (currentInputValue.current !== criteriaMatch.r && !criteriaMatch.rDim) {
750
+ setInputValue(
751
+ typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
752
+ );
753
+ }
754
+ }, [criteriaMatch.r, criteriaMatch.rDim]);
743
755
  const rDim = criteriaMatch.rDim;
744
756
  const targetDim = criteriaMatch.rDim ? dimensions.dimIndex[criteriaMatch.rDim] : void 0;
745
757
  const groupedDimensions = useGroupedDimensions(dimensions.dimensions, void 0);
@@ -1473,12 +1485,15 @@ var PersonalizationCriteriaStatic = ({
1473
1485
  return;
1474
1486
  }
1475
1487
  if ("dim" in selection) {
1488
+ const validOperators = getValidCriteriaOperatorsFor(selection.category);
1489
+ const existingOpRemainsValid = !("t" in currentCriteria && currentCriteria.t === "q") && validOperators.some((op) => op.value === currentCriteria.op);
1476
1490
  const newCriteria = {
1477
1491
  ...currentCriteria,
1478
1492
  l: selection.dim,
1479
1493
  t: void 0,
1480
- op: ">",
1481
- r: 0
1494
+ op: existingOpRemainsValid ? currentCriteria.op : ">",
1495
+ r: existingOpRemainsValid ? currentCriteria.r : 0,
1496
+ rDim: existingOpRemainsValid ? currentCriteria.rDim : void 0
1482
1497
  };
1483
1498
  update(newCriteria, index);
1484
1499
  } else {
@@ -1757,7 +1772,7 @@ function ProjectUIVersion({ children, versionMap, contextConfig }) {
1757
1772
  }
1758
1773
 
1759
1774
  // src/hooks/useValidateContextConfig.ts
1760
- import { useEffect as useEffect4, useState as useState8 } from "react";
1775
+ import { useEffect as useEffect5, useState as useState8 } from "react";
1761
1776
 
1762
1777
  // src/utils/validateContextConfig.ts
1763
1778
  import { UncachedManifestClient } from "@uniformdev/context/api";
@@ -1798,7 +1813,7 @@ var useValidateContextConfig = (contextConfig) => {
1798
1813
  error: void 0
1799
1814
  });
1800
1815
  const { apiKey, apiHost, projectId } = contextConfig || {};
1801
- useEffect4(() => {
1816
+ useEffect5(() => {
1802
1817
  if (!apiKey || !apiHost) {
1803
1818
  return;
1804
1819
  }
@@ -1839,6 +1854,7 @@ export {
1839
1854
  contextCriteriaMenuOperators,
1840
1855
  convertErrorsToObj,
1841
1856
  enrichmentCriteriaMenuOperators,
1857
+ getValidCriteriaOperatorsFor,
1842
1858
  isEnrichmentTagData,
1843
1859
  isPersonalizationCriteriaData,
1844
1860
  opHasRhs,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/context-ui",
3
- "version": "20.32.1-alpha.4+d57d1b5dfa",
3
+ "version": "20.32.2-alpha.2+63682964b1",
4
4
  "description": "React-based functionality and components for Uniform Context",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -30,8 +30,8 @@
30
30
  "dependencies": {
31
31
  "@emotion/react": "11.13.5",
32
32
  "@react-icons/all-files": "https://github.com/react-icons/react-icons/releases/download/v5.5.0/react-icons-all-files-5.5.0.tgz",
33
- "@uniformdev/context": "20.32.1-alpha.4+d57d1b5dfa",
34
- "@uniformdev/design-system": "20.32.1-alpha.4+d57d1b5dfa",
33
+ "@uniformdev/context": "20.32.2-alpha.2+63682964b1",
34
+ "@uniformdev/design-system": "20.32.2-alpha.2+63682964b1",
35
35
  "immer": "10.1.1",
36
36
  "react-beautiful-dnd": "13.1.1",
37
37
  "react-select": "5.10.0",
@@ -65,5 +65,5 @@
65
65
  "publishConfig": {
66
66
  "access": "public"
67
67
  },
68
- "gitHead": "d57d1b5dfa94641fb683cbc7e2e9333516b4019f"
68
+ "gitHead": "63682964b1d48a8e78403f5c67365bb0db875568"
69
69
  }