@pega/cosmos-react-condition-builder 10.0.0-build.1.9 → 10.0.0-build.2.1

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.
@@ -1,7 +1,9 @@
1
1
  import type { Ref } from 'react';
2
2
  import type { BaseProps, HandleValue, ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';
3
3
  import type { LeafCondition, Field, DateFunctionsByType } from './ConditionBuilder.types';
4
- import type { ComparatorsByType, RHSType } from './core/types';
4
+ import type { Comparator, ComparatorsByType, FieldType, RHSType } from './core/types';
5
+ /** Determines the appropriate RHS value when the comparator changes */
6
+ export declare function resolveRhsForComparator(currentRhs: LeafCondition['rhs'], comparator: Comparator, fieldType: FieldType | undefined, validRhsTypes: Set<RHSType>, dateFunctions?: DateFunctionsByType): LeafCondition['rhs'];
5
7
  /** Determines the default condition object for a given LHS value */
6
8
  export declare function getInitConditionForLhs(lhs: LeafCondition['lhs'], fields: Field[], validRhsTypes: Set<RHSType>, validComparators?: ComparatorsByType[], dateFunctions?: DateFunctionsByType): LeafCondition;
7
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicCondition.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/AtomicCondition.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,GAAG,EAAmB,MAAM,OAAO,CAAC;AAY/D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,+BAA+B,EAChC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI1F,OAAO,KAAK,EAAc,iBAAiB,EAAa,OAAO,EAAE,MAAM,cAAc,CAAC;AAoDtF,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAC3B,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,EACtC,aAAa,CAAC,EAAE,mBAAmB,GAClC,aAAa,CAcf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,GAAE,OAAe,GAC1B,OAAO,CAST;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,wCAAwC;IACxC,SAAS,EAAE,aAAa,CAAC;IAEzB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mEAAmE;IACnE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IAExB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEvC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnE,iDAAiD;IACjD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhD,6CAA6C;IAC7C,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAEvC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEpC,wGAAwG;IACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3B;AAED,mDAAmD;AACnD,QAAA,MAAM,eAAe,EAAE,+BAA+B,CAAC,oBAAoB,CAwL1E,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"AtomicCondition.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/AtomicCondition.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,GAAG,EAAmB,MAAM,OAAO,CAAC;AAY/D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,+BAA+B,EAChC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI1F,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAoDtF,uEAAuE;AACvE,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,EAChC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAC3B,aAAa,CAAC,EAAE,mBAAmB,GAClC,aAAa,CAAC,KAAK,CAAC,CAgBtB;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAC3B,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,EACtC,aAAa,CAAC,EAAE,mBAAmB,GAClC,aAAa,CAcf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,GAAE,OAAe,GAC1B,OAAO,CAST;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,wCAAwC;IACxC,SAAS,EAAE,aAAa,CAAC;IAEzB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mEAAmE;IACnE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IAExB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEvC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnE,iDAAiD;IACjD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhD,6CAA6C;IAC7C,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAEvC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEpC,wGAAwG;IACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3B;AAED,mDAAmD;AACnD,QAAA,MAAM,eAAe,EAAE,+BAA+B,CAAC,oBAAoB,CA4L1E,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -49,6 +49,21 @@ function isRhsValidForComparator(rhs, comparator) {
49
49
  'NOT_CONTAINS'
50
50
  ].includes(comparator);
51
51
  }
52
+ /** Determines the appropriate RHS value when the comparator changes */
53
+ export function resolveRhsForComparator(currentRhs, comparator, fieldType, validRhsTypes, dateFunctions) {
54
+ if (isRhsValidForComparator(currentRhs, comparator))
55
+ return currentRhs;
56
+ if ((comparator === 'IN' || comparator === 'NOT_IN') &&
57
+ currentRhs !== undefined &&
58
+ hasProp(currentRhs, 'value') &&
59
+ currentRhs.value !== '') {
60
+ // Carry the existing single value into the list when switching to IN/NOT_IN
61
+ return typeof currentRhs.value === 'number'
62
+ ? { values: [currentRhs.value] }
63
+ : { values: [String(currentRhs.value)] };
64
+ }
65
+ return getDefaultRhs(fieldType, comparator, validRhsTypes, dateFunctions);
66
+ }
52
67
  /** Determines the default condition object for a given LHS value */
53
68
  export function getInitConditionForLhs(lhs, fields, validRhsTypes, validComparators, dateFunctions) {
54
69
  let comparator;
@@ -130,9 +145,7 @@ const AtomicCondition = forwardRef(function AtomicCondition({ condition, fields,
130
145
  const conditionRhs = condition.rhs
131
146
  ? { ...condition.rhs } // Duplicating rhs to avoid using source object as it can be mutated later.
132
147
  : undefined;
133
- const rhs = isRhsValidForComparator(conditionRhs, comparator)
134
- ? conditionRhs
135
- : getDefaultRhs(fieldType, comparator, validRhsTypes, dateFunctions);
148
+ const rhs = resolveRhsForComparator(conditionRhs, comparator, fieldType, validRhsTypes, dateFunctions);
136
149
  handleConditionChange({ ...condition, comparator, rhs });
137
150
  };
138
151
  // Handle change in the RHS
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicCondition.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/AtomicCondition.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useRef, useState, useImperativeHandle } from 'react';\nimport type { ChangeEvent, Ref, PropsWithoutRef } from 'react';\n\nimport {\n Grid,\n Select,\n Option,\n useI18n,\n hasProp,\n useConsolidatedRef,\n useFocusWithin,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport type {\n BaseProps,\n HandleValue,\n ForwardRefForwardPropsComponent\n} from '@pega/cosmos-react-core';\n\nimport { getItem } from './core/utils';\nimport type { LeafCondition, Field, DateFunctionsByType } from './ConditionBuilder.types';\nimport FieldSelector from './RhsControls/FieldSelector';\nimport RhsControls, { getDefaultRhs, isValidRhs } from './RhsControls';\nimport getComparatorOptions from './core/comparators';\nimport type { Comparator, ComparatorsByType, FieldType, RHSType } from './core/types';\nimport { StyledAtomicCondition } from './ConditionBuilder.styles';\n\n// Returns field-type for a given field-name\nfunction getFieldType(fieldName: string, fields: Field[]): FieldType | undefined {\n const matchingField = getItem(fields, fieldName);\n return matchingField && hasProp(matchingField, 'type') ? matchingField.type : undefined;\n}\n\n// Returns display label for a given field-name\nfunction getFieldLabel(fieldName: string, fields: Field[]): string | undefined {\n const matchingField = getItem(fields, fieldName);\n return matchingField?.primary;\n}\n\n/**\n * Upon changing the comparator, checks if the old RHS is valid for the new comparator\n * NOTE: This works under the assumption that the LHS doesn't change\n */\nfunction isRhsValidForComparator(rhs: LeafCondition['rhs'], comparator: Comparator): boolean {\n if (rhs === undefined) {\n return ['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE', 'IS_FALSE'].includes(comparator);\n }\n if (hasProp(rhs, 'values')) {\n return ['IN', 'NOT_IN'].includes(comparator);\n }\n\n if (hasProp(rhs, 'parameterId')) {\n return ['EQ', 'NEQ'].includes(comparator);\n }\n\n if (hasProp(rhs, 'start')) {\n return ['BTW', 'NOT_BTW'].includes(comparator);\n }\n\n // `rhs.field` and `rhs.value` cases\n return [\n 'EQ',\n 'NEQ',\n 'GT',\n 'GTE',\n 'LT',\n 'LTE',\n 'STARTS_WITH',\n 'NOT_STARTS_WITH',\n 'ENDS_WITH',\n 'NOT_ENDS_WITH',\n 'CONTAINS',\n 'NOT_CONTAINS'\n ].includes(comparator);\n}\n\n/** Determines the default condition object for a given LHS value */\nexport function getInitConditionForLhs(\n lhs: LeafCondition['lhs'],\n fields: Field[],\n validRhsTypes: Set<RHSType>,\n validComparators?: ComparatorsByType[],\n dateFunctions?: DateFunctionsByType\n): LeafCondition {\n let comparator: Comparator;\n let rhs: LeafCondition['rhs'];\n if (lhs.field === '') {\n // If the empty option is selected, reset the comparator and rhs to their default values\n comparator = 'IS_NOT_NULL';\n rhs = undefined;\n } else {\n const newFieldType = getFieldType(lhs.field, fields) as FieldType;\n comparator = getComparatorOptions(newFieldType, validComparators)[0].id; // Find the applicable comparators and select the first among them\n rhs = getDefaultRhs(newFieldType, comparator, validRhsTypes, dateFunctions);\n }\n\n return { lhs, comparator, rhs };\n}\n\n/**\n * Verifies if all the values in the condition are valid.\n * NOTES:\n * - This is intended to be used only on conditions emitted by the components in this package.\n * - If a condition is manually constructed outside these components, this utility could miss some malformed conditions.\n */\nexport function isValidCondition(\n condition: LeafCondition,\n fields: Field[],\n trimValues: boolean = false\n): boolean {\n // If no field is yet selected on the LHS\n if (condition.lhs.field === '') {\n return false;\n }\n // If a field is present on the LHS, check if the RHS is valid\n // No need to check the comparator since the comparator is always assigned a valid value\n const fieldType = getFieldType(condition.lhs.field, fields);\n return isValidRhs(condition.rhs, condition.lhs, fields, fieldType, trimValues);\n}\n\n/** Type definition for the input props of AtomicCondition */\nexport interface AtomicConditionProps extends BaseProps {\n /** Condition to use in the component */\n condition: LeafCondition;\n\n /** (Optional) Index of the condition. Used when rendering multiple conditions */\n index?: number;\n\n /** Metadata (data-model) for the Fields to use in the Condition */\n fields: Field[];\n\n /** Used to enable inline error indicators on invalid inputs */\n indicateErrors: boolean;\n\n /** (Optional) Lookup used to limit the Comparators allowed in the Condition. */\n validComparators?: ComparatorsByType[];\n\n /** Callback for any modifications to the Condition */\n onChange?: (newCondition: LeafCondition, status?: 'error') => void;\n\n /** Callback fired when the condition changes. */\n onBlur?: (newCondition?: LeafCondition) => void;\n\n /** Item flow direction. Defaults to 'row' */\n itemDirection?: 'row' | 'column';\n\n /**\n * Allows presenting the LHS as a readonly text, input or hidden. Defaults presenting as 'input'.\n * NOTE: Make sure that a valid LHS is passed in the 'condition'\n */\n lhsMode?: 'input' | 'label' | 'hidden';\n\n /** Restricts RHS values to only specified types of values.\n * DEFAULT: Set(['LITERAL', 'FIELD']).\n * WARNING: There are LHS/Comparator pairings that require specific RHS types. Please be mindful of\n * these incompatibilities when limiting RHS value types using this prop. We do not support\n * limiting RHS field types to incompatible types and it will result in a validation error\n * if you do so. The pairings referred to here are as follows:\n * - BOOLEAN LHS Fields coupled with \"EQ\" or \"NEQ\" comparators, will always yield a Field RHS\n * - Any LHS Fields coupled with \"IN\" or \"NOT_IN\" comparators, will always yield a Literal RHS (Comma separated list)\n * If you would like to limit RHS value types and avoid these incompatibilities, you will need to exclude these\n * comparators using the validComparators prop.\n */\n validRhsTypes?: Set<RHSType>;\n\n /** (Optional) When enabling 'DATE_FUNCTION's via `validRhsTypes`, pass this to specify which all date functions are applicable per field type */\n dateFunctions?: DateFunctionsByType;\n\n /** (Optional) IANA timezone string used to initialize date/time pickers with the operator's timezone */\n timeZone?: string;\n\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n /** Imperative handle */\n handle?: Ref<HandleValue>;\n}\n\n/** A controlled component for Atomic Conditions */\nconst AtomicCondition: ForwardRefForwardPropsComponent<AtomicConditionProps> = forwardRef(\n function AtomicCondition(\n {\n condition,\n fields,\n indicateErrors,\n validComparators,\n onChange,\n onBlur,\n itemDirection,\n lhsMode = 'input',\n validRhsTypes = new Set<RHSType>(['LITERAL', 'FIELD']),\n dateFunctions,\n timeZone,\n handle,\n ...restProps\n }: PropsWithoutRef<AtomicConditionProps>,\n ref: AtomicConditionProps['ref']\n ) {\n const t = useI18n();\n\n // stores condition form state\n const [state, setState] = useState<LeafCondition>(condition);\n // ref needed to handle use case of onChange and onBlur being triggered at the same time\n // state is not updated by the time blur is invoked, ref is always set to newest value\n const newCondition = useRef(condition);\n\n const fieldType = getFieldType(condition.lhs.field, fields); // Can be `undefined` if no match or if no previous field\n const comparatorOptions = fieldType\n ? getComparatorOptions(fieldType, validComparators).map(option => ({\n ...option,\n label: t(`condition_builder_comparator_${option.label}`)\n }))\n : [{ id: '', label: t('condition_builder_select_placeholder') }];\n\n useAfterInitialEffect(() => {\n setState(condition);\n }, [condition]);\n\n const onFocusChange = (focused: boolean) => {\n if (!focused) {\n // newCondition is returned, as it stores newest value\n onBlur?.(\n newCondition.current && isValidCondition(newCondition.current, fields, true)\n ? newCondition.current\n : undefined\n );\n }\n };\n\n const containerRef = useConsolidatedRef(ref);\n useFocusWithin([containerRef], onFocusChange);\n\n // Handle condition update\n const handleConditionChange = (updatedCondition: LeafCondition, status?: 'error') => {\n newCondition.current = updatedCondition;\n // new condition is returned with status to allow recognizing errors and avoiding clearing wrong values from input\n onChange?.(updatedCondition, status);\n };\n\n // Handle change in the field-selector\n const handleFieldChange = (id: string) => {\n const lhs = { field: id };\n const initCondition = getInitConditionForLhs(\n lhs,\n fields,\n validRhsTypes,\n validComparators,\n dateFunctions\n ); // Determine comparator and rhs for the new lhs\n handleConditionChange(initCondition);\n };\n\n // Handle change in the comparator\n const handleComparatorChange = (e: ChangeEvent<HTMLSelectElement>) => {\n if (e.target.value === '') {\n return; // The option is shown only when an lhs is not yet selected. Ignore this selection for those cases\n }\n const comparator = e.target.value as Comparator;\n const conditionRhs = condition.rhs\n ? ({ ...condition.rhs } as LeafCondition['rhs']) // Duplicating rhs to avoid using source object as it can be mutated later.\n : undefined;\n\n const rhs = isRhsValidForComparator(conditionRhs, comparator)\n ? conditionRhs\n : getDefaultRhs(fieldType as FieldType, comparator, validRhsTypes, dateFunctions);\n\n handleConditionChange({ ...condition, comparator, rhs });\n };\n\n // Handle change in the RHS\n const handleRHSChange = (rhs: LeafCondition['rhs'], status?: 'error') => {\n handleConditionChange({ ...condition, rhs }, status);\n };\n\n const rhsHandle = useRef<HandleValue>(null);\n\n const clear = () => {\n rhsHandle.current?.clear();\n if (newCondition.current) {\n handleConditionChange(\n getInitConditionForLhs(state.lhs, fields, validRhsTypes, validComparators, dateFunctions)\n );\n }\n };\n\n useImperativeHandle(\n handle,\n () => ({\n clear\n }),\n [clear]\n );\n\n const lhsLabel = getFieldLabel(condition.lhs.field, fields);\n\n const gridCols = (() => {\n if (itemDirection === 'column') return 'minmax(0, 1fr)';\n if (lhsMode !== 'input') return '20ch minmax(0, 1fr)';\n return '20ch 20ch minmax(0, 1fr)';\n })();\n\n return (\n <StyledAtomicCondition\n {...restProps}\n name={lhsMode === 'label' ? lhsLabel : undefined}\n aria-label={lhsMode === 'hidden' ? lhsLabel : undefined}\n >\n <Grid\n md={{ container: { cols: gridCols } }}\n container={{\n justifyItems: 'stretch',\n colGap: 0.5,\n rowGap: 0.5\n }}\n ref={containerRef}\n >\n {/* LHS selector */}\n {lhsMode === 'input' && (\n <FieldSelector\n value={state.lhs.field}\n onChange={handleFieldChange}\n fields={fields}\n status={indicateErrors && state.lhs.field === '' ? 'error' : undefined}\n info={\n indicateErrors && state.lhs.field === ''\n ? t('condition_builder_condition_select_info_default')\n : undefined\n }\n />\n )}\n\n {/* Comparator selector */}\n <Select\n value={state.comparator}\n onChange={handleComparatorChange}\n name='comparator'\n label={t('condition_builder_comparator_label')}\n >\n {comparatorOptions.map(option => (\n <Option key={option.id} value={option.id}>\n {option.label}\n </Option>\n ))}\n </Select>\n\n {/* RHS controls */}\n <RhsControls\n lhs={state.lhs}\n comparator={state.comparator}\n rhs={state.rhs}\n fields={fields}\n onChange={handleRHSChange}\n indicateErrors={indicateErrors}\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n itemDirection={itemDirection || 'row'}\n handle={rhsHandle}\n timeZone={timeZone}\n />\n </Grid>\n </StyledAtomicCondition>\n );\n }\n);\n\nexport default AtomicCondition;\n"]}
1
+ {"version":3,"file":"AtomicCondition.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/AtomicCondition.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useRef, useState, useImperativeHandle } from 'react';\nimport type { ChangeEvent, Ref, PropsWithoutRef } from 'react';\n\nimport {\n Grid,\n Select,\n Option,\n useI18n,\n hasProp,\n useConsolidatedRef,\n useFocusWithin,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport type {\n BaseProps,\n HandleValue,\n ForwardRefForwardPropsComponent\n} from '@pega/cosmos-react-core';\n\nimport { getItem } from './core/utils';\nimport type { LeafCondition, Field, DateFunctionsByType } from './ConditionBuilder.types';\nimport FieldSelector from './RhsControls/FieldSelector';\nimport RhsControls, { getDefaultRhs, isValidRhs } from './RhsControls';\nimport getComparatorOptions from './core/comparators';\nimport type { Comparator, ComparatorsByType, FieldType, RHSType } from './core/types';\nimport { StyledAtomicCondition } from './ConditionBuilder.styles';\n\n// Returns field-type for a given field-name\nfunction getFieldType(fieldName: string, fields: Field[]): FieldType | undefined {\n const matchingField = getItem(fields, fieldName);\n return matchingField && hasProp(matchingField, 'type') ? matchingField.type : undefined;\n}\n\n// Returns display label for a given field-name\nfunction getFieldLabel(fieldName: string, fields: Field[]): string | undefined {\n const matchingField = getItem(fields, fieldName);\n return matchingField?.primary;\n}\n\n/**\n * Upon changing the comparator, checks if the old RHS is valid for the new comparator\n * NOTE: This works under the assumption that the LHS doesn't change\n */\nfunction isRhsValidForComparator(rhs: LeafCondition['rhs'], comparator: Comparator): boolean {\n if (rhs === undefined) {\n return ['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE', 'IS_FALSE'].includes(comparator);\n }\n if (hasProp(rhs, 'values')) {\n return ['IN', 'NOT_IN'].includes(comparator);\n }\n\n if (hasProp(rhs, 'parameterId')) {\n return ['EQ', 'NEQ'].includes(comparator);\n }\n\n if (hasProp(rhs, 'start')) {\n return ['BTW', 'NOT_BTW'].includes(comparator);\n }\n\n // `rhs.field` and `rhs.value` cases\n return [\n 'EQ',\n 'NEQ',\n 'GT',\n 'GTE',\n 'LT',\n 'LTE',\n 'STARTS_WITH',\n 'NOT_STARTS_WITH',\n 'ENDS_WITH',\n 'NOT_ENDS_WITH',\n 'CONTAINS',\n 'NOT_CONTAINS'\n ].includes(comparator);\n}\n\n/** Determines the appropriate RHS value when the comparator changes */\nexport function resolveRhsForComparator(\n currentRhs: LeafCondition['rhs'],\n comparator: Comparator,\n fieldType: FieldType | undefined,\n validRhsTypes: Set<RHSType>,\n dateFunctions?: DateFunctionsByType\n): LeafCondition['rhs'] {\n if (isRhsValidForComparator(currentRhs, comparator)) return currentRhs;\n\n if (\n (comparator === 'IN' || comparator === 'NOT_IN') &&\n currentRhs !== undefined &&\n hasProp(currentRhs, 'value') &&\n currentRhs.value !== ''\n ) {\n // Carry the existing single value into the list when switching to IN/NOT_IN\n return typeof currentRhs.value === 'number'\n ? { values: [currentRhs.value] }\n : { values: [String(currentRhs.value)] };\n }\n\n return getDefaultRhs(fieldType, comparator, validRhsTypes, dateFunctions);\n}\n\n/** Determines the default condition object for a given LHS value */\nexport function getInitConditionForLhs(\n lhs: LeafCondition['lhs'],\n fields: Field[],\n validRhsTypes: Set<RHSType>,\n validComparators?: ComparatorsByType[],\n dateFunctions?: DateFunctionsByType\n): LeafCondition {\n let comparator: Comparator;\n let rhs: LeafCondition['rhs'];\n if (lhs.field === '') {\n // If the empty option is selected, reset the comparator and rhs to their default values\n comparator = 'IS_NOT_NULL';\n rhs = undefined;\n } else {\n const newFieldType = getFieldType(lhs.field, fields) as FieldType;\n comparator = getComparatorOptions(newFieldType, validComparators)[0].id; // Find the applicable comparators and select the first among them\n rhs = getDefaultRhs(newFieldType, comparator, validRhsTypes, dateFunctions);\n }\n\n return { lhs, comparator, rhs };\n}\n\n/**\n * Verifies if all the values in the condition are valid.\n * NOTES:\n * - This is intended to be used only on conditions emitted by the components in this package.\n * - If a condition is manually constructed outside these components, this utility could miss some malformed conditions.\n */\nexport function isValidCondition(\n condition: LeafCondition,\n fields: Field[],\n trimValues: boolean = false\n): boolean {\n // If no field is yet selected on the LHS\n if (condition.lhs.field === '') {\n return false;\n }\n // If a field is present on the LHS, check if the RHS is valid\n // No need to check the comparator since the comparator is always assigned a valid value\n const fieldType = getFieldType(condition.lhs.field, fields);\n return isValidRhs(condition.rhs, condition.lhs, fields, fieldType, trimValues);\n}\n\n/** Type definition for the input props of AtomicCondition */\nexport interface AtomicConditionProps extends BaseProps {\n /** Condition to use in the component */\n condition: LeafCondition;\n\n /** (Optional) Index of the condition. Used when rendering multiple conditions */\n index?: number;\n\n /** Metadata (data-model) for the Fields to use in the Condition */\n fields: Field[];\n\n /** Used to enable inline error indicators on invalid inputs */\n indicateErrors: boolean;\n\n /** (Optional) Lookup used to limit the Comparators allowed in the Condition. */\n validComparators?: ComparatorsByType[];\n\n /** Callback for any modifications to the Condition */\n onChange?: (newCondition: LeafCondition, status?: 'error') => void;\n\n /** Callback fired when the condition changes. */\n onBlur?: (newCondition?: LeafCondition) => void;\n\n /** Item flow direction. Defaults to 'row' */\n itemDirection?: 'row' | 'column';\n\n /**\n * Allows presenting the LHS as a readonly text, input or hidden. Defaults presenting as 'input'.\n * NOTE: Make sure that a valid LHS is passed in the 'condition'\n */\n lhsMode?: 'input' | 'label' | 'hidden';\n\n /** Restricts RHS values to only specified types of values.\n * DEFAULT: Set(['LITERAL', 'FIELD']).\n * WARNING: There are LHS/Comparator pairings that require specific RHS types. Please be mindful of\n * these incompatibilities when limiting RHS value types using this prop. We do not support\n * limiting RHS field types to incompatible types and it will result in a validation error\n * if you do so. The pairings referred to here are as follows:\n * - BOOLEAN LHS Fields coupled with \"EQ\" or \"NEQ\" comparators, will always yield a Field RHS\n * - Any LHS Fields coupled with \"IN\" or \"NOT_IN\" comparators, will always yield a Literal RHS (Comma separated list)\n * If you would like to limit RHS value types and avoid these incompatibilities, you will need to exclude these\n * comparators using the validComparators prop.\n */\n validRhsTypes?: Set<RHSType>;\n\n /** (Optional) When enabling 'DATE_FUNCTION's via `validRhsTypes`, pass this to specify which all date functions are applicable per field type */\n dateFunctions?: DateFunctionsByType;\n\n /** (Optional) IANA timezone string used to initialize date/time pickers with the operator's timezone */\n timeZone?: string;\n\n /** Ref forwarded to the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n /** Imperative handle */\n handle?: Ref<HandleValue>;\n}\n\n/** A controlled component for Atomic Conditions */\nconst AtomicCondition: ForwardRefForwardPropsComponent<AtomicConditionProps> = forwardRef(\n function AtomicCondition(\n {\n condition,\n fields,\n indicateErrors,\n validComparators,\n onChange,\n onBlur,\n itemDirection,\n lhsMode = 'input',\n validRhsTypes = new Set<RHSType>(['LITERAL', 'FIELD']),\n dateFunctions,\n timeZone,\n handle,\n ...restProps\n }: PropsWithoutRef<AtomicConditionProps>,\n ref: AtomicConditionProps['ref']\n ) {\n const t = useI18n();\n\n // stores condition form state\n const [state, setState] = useState<LeafCondition>(condition);\n // ref needed to handle use case of onChange and onBlur being triggered at the same time\n // state is not updated by the time blur is invoked, ref is always set to newest value\n const newCondition = useRef(condition);\n\n const fieldType = getFieldType(condition.lhs.field, fields); // Can be `undefined` if no match or if no previous field\n const comparatorOptions = fieldType\n ? getComparatorOptions(fieldType, validComparators).map(option => ({\n ...option,\n label: t(`condition_builder_comparator_${option.label}`)\n }))\n : [{ id: '', label: t('condition_builder_select_placeholder') }];\n\n useAfterInitialEffect(() => {\n setState(condition);\n }, [condition]);\n\n const onFocusChange = (focused: boolean) => {\n if (!focused) {\n // newCondition is returned, as it stores newest value\n onBlur?.(\n newCondition.current && isValidCondition(newCondition.current, fields, true)\n ? newCondition.current\n : undefined\n );\n }\n };\n\n const containerRef = useConsolidatedRef(ref);\n useFocusWithin([containerRef], onFocusChange);\n\n // Handle condition update\n const handleConditionChange = (updatedCondition: LeafCondition, status?: 'error') => {\n newCondition.current = updatedCondition;\n // new condition is returned with status to allow recognizing errors and avoiding clearing wrong values from input\n onChange?.(updatedCondition, status);\n };\n\n // Handle change in the field-selector\n const handleFieldChange = (id: string) => {\n const lhs = { field: id };\n const initCondition = getInitConditionForLhs(\n lhs,\n fields,\n validRhsTypes,\n validComparators,\n dateFunctions\n ); // Determine comparator and rhs for the new lhs\n handleConditionChange(initCondition);\n };\n\n // Handle change in the comparator\n const handleComparatorChange = (e: ChangeEvent<HTMLSelectElement>) => {\n if (e.target.value === '') {\n return; // The option is shown only when an lhs is not yet selected. Ignore this selection for those cases\n }\n const comparator = e.target.value as Comparator;\n const conditionRhs = condition.rhs\n ? ({ ...condition.rhs } as LeafCondition['rhs']) // Duplicating rhs to avoid using source object as it can be mutated later.\n : undefined;\n\n const rhs = resolveRhsForComparator(\n conditionRhs,\n comparator,\n fieldType,\n validRhsTypes,\n dateFunctions\n );\n\n handleConditionChange({ ...condition, comparator, rhs });\n };\n\n // Handle change in the RHS\n const handleRHSChange = (rhs: LeafCondition['rhs'], status?: 'error') => {\n handleConditionChange({ ...condition, rhs }, status);\n };\n\n const rhsHandle = useRef<HandleValue>(null);\n\n const clear = () => {\n rhsHandle.current?.clear();\n if (newCondition.current) {\n handleConditionChange(\n getInitConditionForLhs(state.lhs, fields, validRhsTypes, validComparators, dateFunctions)\n );\n }\n };\n\n useImperativeHandle(\n handle,\n () => ({\n clear\n }),\n [clear]\n );\n\n const lhsLabel = getFieldLabel(condition.lhs.field, fields);\n\n const gridCols = (() => {\n if (itemDirection === 'column') return 'minmax(0, 1fr)';\n if (lhsMode !== 'input') return '20ch minmax(0, 1fr)';\n return '20ch 20ch minmax(0, 1fr)';\n })();\n\n return (\n <StyledAtomicCondition\n {...restProps}\n name={lhsMode === 'label' ? lhsLabel : undefined}\n aria-label={lhsMode === 'hidden' ? lhsLabel : undefined}\n >\n <Grid\n md={{ container: { cols: gridCols } }}\n container={{\n justifyItems: 'stretch',\n colGap: 0.5,\n rowGap: 0.5\n }}\n ref={containerRef}\n >\n {/* LHS selector */}\n {lhsMode === 'input' && (\n <FieldSelector\n value={state.lhs.field}\n onChange={handleFieldChange}\n fields={fields}\n status={indicateErrors && state.lhs.field === '' ? 'error' : undefined}\n info={\n indicateErrors && state.lhs.field === ''\n ? t('condition_builder_condition_select_info_default')\n : undefined\n }\n />\n )}\n\n {/* Comparator selector */}\n <Select\n value={state.comparator}\n onChange={handleComparatorChange}\n name='comparator'\n label={t('condition_builder_comparator_label')}\n >\n {comparatorOptions.map(option => (\n <Option key={option.id} value={option.id}>\n {option.label}\n </Option>\n ))}\n </Select>\n\n {/* RHS controls */}\n <RhsControls\n lhs={state.lhs}\n comparator={state.comparator}\n rhs={state.rhs}\n fields={fields}\n onChange={handleRHSChange}\n indicateErrors={indicateErrors}\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n itemDirection={itemDirection || 'row'}\n handle={rhsHandle}\n timeZone={timeZone}\n />\n </Grid>\n </StyledAtomicCondition>\n );\n }\n);\n\nexport default AtomicCondition;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NumericRangeInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericRangeInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3F,MAAM,WAAW,sBAAuB,SAAQ,SAAS,EAAE,cAAc;IACvE,iCAAiC;IACjC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,6BAA6B;IAC7B,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,iDAAiD;IACjD,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACnC,4BAA4B;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,iBAAiB,qIAuE7B,CAAC"}
1
+ {"version":3,"file":"NumericRangeInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericRangeInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAiB,MAAM,OAAO,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3F,MAAM,WAAW,sBAAuB,SAAQ,SAAS,EAAE,cAAc;IACvE,iCAAiC;IACjC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,6BAA6B;IAC7B,GAAG,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,iDAAiD;IACjD,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACnC,4BAA4B;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,iBAAiB,qIA+E7B,CAAC"}
@@ -27,7 +27,7 @@ export const NumericRangeInput = forwardRef(({ rhs, onChange, status, allowDecim
27
27
  const handleChange = (newValue) => {
28
28
  setInternalValue(newValue);
29
29
  };
30
- const handleBlur = (newValue) => {
30
+ const handleValueCommit = (newValue) => {
31
31
  let outStartValue;
32
32
  let outEndValue;
33
33
  if (newValue.start) {
@@ -47,6 +47,11 @@ export const NumericRangeInput = forwardRef(({ rhs, onChange, status, allowDecim
47
47
  end: outEndValue
48
48
  });
49
49
  };
50
- return (_jsx(NumberRangeInput, { ...props, ref: ref, value: internalValue, onChange: handleChange, onBlur: handleBlur, status: status, info: status === 'error' ? t('condition_builder_invalid_number_range') : undefined, numberOfDecimals: allowDecimal ? undefined : 0, unit: unit === 'percent_1' || unit === 'percent_100' ? 'percent' : undefined, fromPlaceholder: t('range_from_numeric'), toPlaceholder: t('range_to_numeric') }));
50
+ const handleKeyDown = (e) => {
51
+ if (e.key === 'Enter') {
52
+ handleValueCommit({ start: internalValue.start ?? '', end: internalValue.end ?? '' });
53
+ }
54
+ };
55
+ return (_jsx(NumberRangeInput, { ...props, ref: ref, value: internalValue, onChange: handleChange, onBlur: handleValueCommit, onFromInputKeyDown: handleKeyDown, onToInputKeyDown: handleKeyDown, status: status, info: status === 'error' ? t('condition_builder_invalid_number_range') : undefined, numberOfDecimals: allowDecimal ? undefined : 0, unit: unit === 'percent_1' || unit === 'percent_100' ? 'percent' : undefined, fromPlaceholder: t('range_from_numeric'), toPlaceholder: t('range_to_numeric') }));
51
56
  });
52
57
  //# sourceMappingURL=NumericRangeInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumericRangeInput.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericRangeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport { NumberRangeInput, useAfterInitialEffect, useI18n } from '@pega/cosmos-react-core';\nimport type { BaseProps, FormControlProps, NoChildrenProp } from '@pega/cosmos-react-core';\n\nexport interface NumericRangeInputProps extends BaseProps, NoChildrenProp {\n /** Label for the range input. */\n label: FormControlProps['label'];\n /** Determines whether the label is hidden. */\n labelHidden?: FormControlProps['labelHidden'];\n /** Rhs for the condition. */\n rhs?: { start: string | number; end: string | number };\n /** Callback for any modifications to the Rhs. */\n onChange: (rhs: { start: number | undefined; end: number | undefined }) => void;\n /** Used to indicate any errors on the control. */\n status?: 'error';\n /**\n * Determines whether decimals can be entered.\n * @default true\n */\n allowDecimal?: boolean;\n /** Determines whether value is stored in the database in the range of 0 to 1 or 0 to 100. */\n unit?: 'percent_1' | 'percent_100';\n /** Ref to the component. */\n ref?: Ref<HTMLFieldSetElement>;\n}\n\nexport const NumericRangeInput = forwardRef<HTMLFieldSetElement, NumericRangeInputProps>(\n ({ rhs, onChange, status, allowDecimal = true, unit, ...props }, ref) => {\n const t = useI18n();\n // Formats a value as a percentage and fixes floating point rounding errors in input box\n const convertPercentToDisplayValue = (value: string | number | undefined) => {\n if (unit === 'percent_1') {\n const num = typeof value === 'number' ? value : Number(value);\n // Number value of empty string is 0, which we don't want, so we return just value instead\n if (!Number.isNaN(num) && value !== '') {\n return parseFloat((num * 100).toFixed(2));\n }\n }\n return value;\n };\n\n const [internalValue, setInternalValue] = useState<{\n start: string | undefined;\n end: string | undefined;\n }>({\n start: convertPercentToDisplayValue(rhs?.start)?.toString(),\n end: convertPercentToDisplayValue(rhs?.end)?.toString()\n });\n\n useAfterInitialEffect(() => {\n setInternalValue({\n start: convertPercentToDisplayValue(rhs?.start)?.toString(),\n end: convertPercentToDisplayValue(rhs?.end)?.toString()\n });\n }, [rhs?.start, rhs?.end]);\n\n const handleChange = (newValue: { start: string; end: string }) => {\n setInternalValue(newValue);\n };\n\n const handleBlur = (newValue: { start: string; end: string }) => {\n let outStartValue: number | undefined;\n let outEndValue: number | undefined;\n if (newValue.start) {\n const valueAsNumber = Number(newValue.start);\n if (!Number.isNaN(valueAsNumber)) {\n outStartValue = unit === 'percent_1' ? valueAsNumber / 100 : valueAsNumber;\n }\n }\n if (newValue.end) {\n const valueAsNumber = Number(newValue.end);\n if (!Number.isNaN(valueAsNumber)) {\n outEndValue = unit === 'percent_1' ? valueAsNumber / 100 : valueAsNumber;\n }\n }\n onChange({\n start: outStartValue,\n end: outEndValue\n });\n };\n\n return (\n <NumberRangeInput\n {...props}\n ref={ref}\n value={internalValue}\n onChange={handleChange}\n onBlur={handleBlur}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_number_range') : undefined}\n numberOfDecimals={allowDecimal ? undefined : 0}\n unit={unit === 'percent_1' || unit === 'percent_100' ? 'percent' : undefined}\n fromPlaceholder={t('range_from_numeric')}\n toPlaceholder={t('range_to_numeric')}\n />\n );\n }\n);\n"]}
1
+ {"version":3,"file":"NumericRangeInput.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericRangeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState } from 'react';\nimport type { Ref, KeyboardEvent } from 'react';\n\nimport { NumberRangeInput, useAfterInitialEffect, useI18n } from '@pega/cosmos-react-core';\nimport type { BaseProps, FormControlProps, NoChildrenProp } from '@pega/cosmos-react-core';\n\nexport interface NumericRangeInputProps extends BaseProps, NoChildrenProp {\n /** Label for the range input. */\n label: FormControlProps['label'];\n /** Determines whether the label is hidden. */\n labelHidden?: FormControlProps['labelHidden'];\n /** Rhs for the condition. */\n rhs?: { start: string | number; end: string | number };\n /** Callback for any modifications to the Rhs. */\n onChange: (rhs: { start: number | undefined; end: number | undefined }) => void;\n /** Used to indicate any errors on the control. */\n status?: 'error';\n /**\n * Determines whether decimals can be entered.\n * @default true\n */\n allowDecimal?: boolean;\n /** Determines whether value is stored in the database in the range of 0 to 1 or 0 to 100. */\n unit?: 'percent_1' | 'percent_100';\n /** Ref to the component. */\n ref?: Ref<HTMLFieldSetElement>;\n}\n\nexport const NumericRangeInput = forwardRef<HTMLFieldSetElement, NumericRangeInputProps>(\n ({ rhs, onChange, status, allowDecimal = true, unit, ...props }, ref) => {\n const t = useI18n();\n // Formats a value as a percentage and fixes floating point rounding errors in input box\n const convertPercentToDisplayValue = (value: string | number | undefined) => {\n if (unit === 'percent_1') {\n const num = typeof value === 'number' ? value : Number(value);\n // Number value of empty string is 0, which we don't want, so we return just value instead\n if (!Number.isNaN(num) && value !== '') {\n return parseFloat((num * 100).toFixed(2));\n }\n }\n return value;\n };\n\n const [internalValue, setInternalValue] = useState<{\n start: string | undefined;\n end: string | undefined;\n }>({\n start: convertPercentToDisplayValue(rhs?.start)?.toString(),\n end: convertPercentToDisplayValue(rhs?.end)?.toString()\n });\n\n useAfterInitialEffect(() => {\n setInternalValue({\n start: convertPercentToDisplayValue(rhs?.start)?.toString(),\n end: convertPercentToDisplayValue(rhs?.end)?.toString()\n });\n }, [rhs?.start, rhs?.end]);\n\n const handleChange = (newValue: { start: string; end: string }) => {\n setInternalValue(newValue);\n };\n\n const handleValueCommit = (newValue: { start: string; end: string }) => {\n let outStartValue: number | undefined;\n let outEndValue: number | undefined;\n if (newValue.start) {\n const valueAsNumber = Number(newValue.start);\n if (!Number.isNaN(valueAsNumber)) {\n outStartValue = unit === 'percent_1' ? valueAsNumber / 100 : valueAsNumber;\n }\n }\n if (newValue.end) {\n const valueAsNumber = Number(newValue.end);\n if (!Number.isNaN(valueAsNumber)) {\n outEndValue = unit === 'percent_1' ? valueAsNumber / 100 : valueAsNumber;\n }\n }\n onChange({\n start: outStartValue,\n end: outEndValue\n });\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n handleValueCommit({ start: internalValue.start ?? '', end: internalValue.end ?? '' });\n }\n };\n\n return (\n <NumberRangeInput\n {...props}\n ref={ref}\n value={internalValue}\n onChange={handleChange}\n onBlur={handleValueCommit}\n onFromInputKeyDown={handleKeyDown}\n onToInputKeyDown={handleKeyDown}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_number_range') : undefined}\n numberOfDecimals={allowDecimal ? undefined : 0}\n unit={unit === 'percent_1' || unit === 'percent_100' ? 'percent' : undefined}\n fromPlaceholder={t('range_from_numeric')}\n toPlaceholder={t('range_to_numeric')}\n />\n );\n }\n);\n"]}
@@ -1,4 +1,4 @@
1
- import type { Dispatch, SetStateAction } from 'react';
1
+ import type { Dispatch, KeyboardEventHandler, SetStateAction } from 'react';
2
2
  import type { BaseProps, ComboBoxProps, NoChildrenProp } from '@pega/cosmos-react-core';
3
3
  import type { LeafCondition, ParameterValue, ValueSelection } from '../ConditionBuilder.types';
4
4
  import type { Comparator } from '../core/types';
@@ -21,6 +21,8 @@ interface ValueSelectorProps<T extends {
21
21
  onChange: (selection: string[] | string) => void;
22
22
  /** Callback for blur */
23
23
  onBlur?: (selection?: string[] | string) => void;
24
+ /** Fired before running default component onKeyDown handler. */
25
+ onKeyDown?: KeyboardEventHandler;
24
26
  /** Callback for clear */
25
27
  onClear?: () => void;
26
28
  /** Used to indicate any errors on the control */
@@ -38,6 +40,6 @@ interface ValueSelectorProps<T extends {
38
40
  declare const ValueSelector: <F extends object & {
39
41
  id: string;
40
42
  possibleValues?: ValueSelection<F>;
41
- }>({ values, selectedField, comparator, rhs, onChange, onBlur, onClear, status, mode, parameters, placeholder, label, info, setApiError }: ValueSelectorProps<F>) => import("react/jsx-runtime").JSX.Element;
43
+ }>({ values, selectedField, comparator, rhs, onChange, onBlur, onKeyDown, onClear, status, mode, parameters, placeholder, label, info, setApiError }: ValueSelectorProps<F>) => import("react/jsx-runtime").JSX.Element;
42
44
  export default ValueSelector;
43
45
  //# sourceMappingURL=ValueSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValueSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYnG,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,UAAU,kBAAkB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,CACvF,SAAQ,SAAS,EACf,cAAc;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,2BAA2B;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,kCAAkC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,oDAAoD;IACpD,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,wBAAwB;IACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACvD;AAgCD,6EAA6E;AAC7E,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,wIAe3F,kBAAkB,CAAC,CAAC,CAAC,4CA+OvB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ValueSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5E,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAa,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYnG,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEd,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,UAAU,kBAAkB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,CACvF,SAAQ,SAAS,EACf,cAAc;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,2BAA2B;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,kCAAkC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,oDAAoD;IACpD,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,wBAAwB;IACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,gEAAgE;IAChE,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,kDAAkD;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACvD;AAgCD,6EAA6E;AAC7E,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,mJAgB3F,kBAAkB,CAAC,CAAC,CAAC,4CAkPvB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -27,7 +27,7 @@ const getItems = (item, values) => {
27
27
  });
28
28
  };
29
29
  /** A control for selecting multiple values using checkboxes in an overlay */
30
- const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlur, onClear, status, mode, parameters, placeholder, label, info, setApiError }) => {
30
+ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlur, onKeyDown, onClear, status, mode, parameters, placeholder, label, info, setApiError }) => {
31
31
  const t = useI18n();
32
32
  const inputRef = useRef(null);
33
33
  const [filterValue, setFilterValue] = useState('');
@@ -199,6 +199,8 @@ const ValueSelector = ({ values, selectedField, comparator, rhs, onChange, onBlu
199
199
  }, onBlur: () => {
200
200
  onBlur?.(values);
201
201
  setFilterValue('');
202
+ }, onKeyDown: e => {
203
+ onKeyDown?.(e);
202
204
  }, menu: {
203
205
  items,
204
206
  onItemClick: id => {
@@ -1 +1 @@
1
- {"version":3,"file":"ValueSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { BaseProps, ComboBoxProps, MenuProps, NoChildrenProp } from '@pega/cosmos-react-core';\nimport {\n ComboBox,\n createStringMatcher,\n hasProp,\n Icon,\n useI18n,\n usePrevious\n} from '@pega/cosmos-react-core';\nimport type { Selected } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\n\nimport type {\n LeafCondition,\n ParameterValue,\n ReferenceValue,\n ValueSelection\n} from '../ConditionBuilder.types';\nimport type { Comparator } from '../core/types';\n\nconst CHUNK_SIZE = 10;\n\ninterface ValueSelectorProps<T extends { id: string; possibleValues?: ValueSelection<T> }>\n extends BaseProps,\n NoChildrenProp {\n mode: ComboBoxProps['mode'];\n /** Previous selection */\n values: string[] | string | undefined;\n /** Current selected LHS */\n selectedField: T;\n /** Current selected comparator */\n comparator: Comparator;\n /** Rhs for the condition */\n rhs: NonNullable<LeafCondition['rhs']>;\n /** Passed Parameters array for Rhstype PARAMETER */\n parameters: ParameterValue[];\n /** Callback for changes */\n onChange: (selection: string[] | string) => void;\n /** Callback for blur */\n onBlur?: (selection?: string[] | string) => void;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Placeholder text to display in empty control */\n placeholder?: ComboBoxProps['placeholder'];\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Guidance text that appears below the input. */\n info?: ComboBoxProps['info'];\n /** sets status and info */\n setApiError?: Dispatch<SetStateAction<string | null>>;\n}\n\nconst getFilteredOptions = (\n options: (string | ParameterValue | ReferenceValue)[],\n filterValue: string\n) => {\n const matcher = createStringMatcher(filterValue);\n return options.filter(option => {\n if (typeof option === 'object') return matcher.test(option.primary);\n return matcher.test(option);\n });\n};\n\nconst getItems = (\n item: (string | ParameterValue | ReferenceValue)[],\n values: string[] | string | undefined\n) => {\n return item.map(option => {\n if (typeof option === 'object') {\n return {\n ...option,\n selected: Array.isArray(values) ? values.includes(option.id) : values === option.id\n };\n }\n return {\n id: option,\n primary: option,\n selected: Array.isArray(values) ? values.includes(option) : values === option\n };\n });\n};\n\n/** A control for selecting multiple values using checkboxes in an overlay */\nconst ValueSelector = <F extends object & { id: string; possibleValues?: ValueSelection<F> }>({\n values,\n selectedField,\n comparator,\n rhs,\n onChange,\n onBlur,\n onClear,\n status,\n mode,\n parameters,\n placeholder,\n label,\n info,\n setApiError\n}: ValueSelectorProps<F>) => {\n const t = useI18n();\n\n const inputRef = useRef<HTMLDivElement>(null);\n\n const [filterValue, setFilterValue] = useState('');\n const prevFilterValue = usePrevious(filterValue);\n const [loading, setLoading] = useState(false);\n const isSelectedFieldPossibleValuesFunction =\n hasProp(selectedField, 'possibleValues') && typeof selectedField.possibleValues === 'function';\n const [hasMore, setHasMore] = useState(isSelectedFieldPossibleValuesFunction);\n const [items, setItems] = useState<MenuProps['items']>([]);\n const [selected, setSelected] = useState<ComboBoxProps['selected']>();\n\n const fetchPossibleValues = useCallback(\n (isFirstChunkLoad: boolean, subscribed: boolean = true) => {\n const { possibleValues: fn } = selectedField;\n if (typeof fn === 'function' && (isFirstChunkLoad || !loading)) {\n setLoading(true);\n if (isFirstChunkLoad) {\n setApiError?.(null);\n setItems([]);\n }\n fn({\n searchString: filterValue,\n comparator,\n lhs: selectedField,\n pageNumber: isFirstChunkLoad ? 1 : Math.floor(items.length / CHUNK_SIZE) + 1,\n pageSize: CHUNK_SIZE\n })\n .then(response => {\n if (subscribed) {\n setApiError?.(null);\n setHasMore(response.length >= CHUNK_SIZE);\n const newItems = getItems(response, values);\n setItems(curr => (isFirstChunkLoad ? newItems : [...curr, ...newItems]));\n setLoading(false);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n setLoading(false);\n }\n });\n }\n },\n [loading, items, selectedField, filterValue, comparator, values]\n );\n\n useEffect(() => {\n let subscribed = true;\n\n if (hasProp(rhs, 'parameterId')) {\n setItems(getItems(getFilteredOptions(parameters, filterValue), values));\n } else if (hasProp(selectedField, 'possibleValues')) {\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n if (prevFilterValue !== filterValue) {\n fetchPossibleValues(true, subscribed);\n } else {\n setItems(curr =>\n curr.map(i => ({\n ...i,\n selected: Array.isArray(values) ? values.includes(i.id) : values === i.id\n }))\n );\n }\n } else if (Array.isArray(possibleValues)) {\n setItems(getItems(getFilteredOptions(possibleValues, filterValue), values));\n } else {\n setItems([]);\n }\n }\n\n return () => {\n subscribed = false;\n };\n }, [\n rhs,\n parameters,\n filterValue,\n values,\n selectedField.id,\n selectedField.possibleValues,\n comparator\n ]);\n\n useEffect(() => {\n setFilterValue('');\n }, [selectedField, comparator]);\n\n useEffect(() => {\n let subscribed = true;\n\n const handlePossibleValues = (ids: string[], setSelectedFn: (options: Selected[]) => void) => {\n const filteredIds = ids.filter(id => id !== '');\n if (filteredIds.length === 0) {\n setSelectedFn([]);\n return;\n }\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n possibleValues({\n lhs: selectedField,\n ids: filteredIds\n })\n .then(response => {\n if (subscribed) {\n const options = response.map(option =>\n typeof option === 'object'\n ? { id: option.id, text: option.primary }\n : { id: option, text: option }\n );\n setSelectedFn(options);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n return [];\n }\n });\n } else if (Array.isArray(possibleValues)) {\n const options = filteredIds.map(id => {\n const optionLabel = possibleValues.find(\n (opt): opt is ReferenceValue => typeof opt === 'object' && opt.id === id\n );\n return { id, text: optionLabel?.primary ?? id };\n });\n setSelectedFn(options);\n }\n };\n\n if (typeof values === 'string' && values) {\n if (hasProp(rhs, 'parameterId')) {\n const selectedItem = parameters.find(item => item.id === values);\n setSelected({\n items: { id: values, text: selectedItem !== undefined ? selectedItem.primary : values }\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues([values], options => setSelected({ items: options[0] }));\n } else {\n setSelected({\n items: { id: values, text: values }\n });\n }\n } else if (Array.isArray(values) && values.length > 0) {\n const onRemove = (value: string) => {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.filter(selection => selection !== value);\n })()\n );\n };\n if (hasProp(rhs, 'parameterId')) {\n setSelected({\n items: values.map(s => {\n const optionLabel = parameters.find(opt => typeof opt === 'object' && opt.id === s);\n return { id: s, text: optionLabel?.primary ?? s };\n }),\n onRemove\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues(values, options => setSelected({ items: options, onRemove }));\n } else {\n setSelected({ items: values.map(s => ({ id: s, text: s })), onRemove });\n }\n } else {\n setSelected(undefined);\n }\n\n return () => {\n subscribed = false;\n };\n }, [values, rhs, parameters, selectedField.id, selectedField.possibleValues]);\n\n return (\n <ComboBox\n ref={inputRef}\n mode={mode}\n label={label ?? t('condition_builder_possible_values_label')}\n placeholder={placeholder}\n value={filterValue}\n onChange={e => {\n setFilterValue(e.target.value);\n if (mode === 'single-select' && !e.target.value) onChange('');\n }}\n onBlur={() => {\n onBlur?.(values);\n setFilterValue('');\n }}\n menu={{\n items,\n onItemClick: id => {\n if (mode === 'single-select') {\n setFilterValue('');\n onChange(id);\n } else {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.includes(id)\n ? current.filter(selection => selection !== id)\n : [...current, id];\n })()\n );\n }\n },\n loading,\n loadMore: hasMore ? () => fetchPossibleValues(false) : undefined,\n accent: createStringMatcher(filterValue)\n }}\n onMenuOpen={() => fetchPossibleValues(true)}\n selected={selected}\n status={status}\n info={info}\n actions={\n onClear && (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onChange(mode === 'single-select' ? '' : []);\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n )\n }\n />\n );\n};\n\nexport default ValueSelector;\n"]}
1
+ {"version":3,"file":"ValueSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/ValueSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Dispatch, KeyboardEventHandler, SetStateAction } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { BaseProps, ComboBoxProps, MenuProps, NoChildrenProp } from '@pega/cosmos-react-core';\nimport {\n ComboBox,\n createStringMatcher,\n hasProp,\n Icon,\n useI18n,\n usePrevious\n} from '@pega/cosmos-react-core';\nimport type { Selected } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\n\nimport type {\n LeafCondition,\n ParameterValue,\n ReferenceValue,\n ValueSelection\n} from '../ConditionBuilder.types';\nimport type { Comparator } from '../core/types';\n\nconst CHUNK_SIZE = 10;\n\ninterface ValueSelectorProps<T extends { id: string; possibleValues?: ValueSelection<T> }>\n extends BaseProps,\n NoChildrenProp {\n mode: ComboBoxProps['mode'];\n /** Previous selection */\n values: string[] | string | undefined;\n /** Current selected LHS */\n selectedField: T;\n /** Current selected comparator */\n comparator: Comparator;\n /** Rhs for the condition */\n rhs: NonNullable<LeafCondition['rhs']>;\n /** Passed Parameters array for Rhstype PARAMETER */\n parameters: ParameterValue[];\n /** Callback for changes */\n onChange: (selection: string[] | string) => void;\n /** Callback for blur */\n onBlur?: (selection?: string[] | string) => void;\n /** Fired before running default component onKeyDown handler. */\n onKeyDown?: KeyboardEventHandler;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Placeholder text to display in empty control */\n placeholder?: ComboBoxProps['placeholder'];\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Guidance text that appears below the input. */\n info?: ComboBoxProps['info'];\n /** sets status and info */\n setApiError?: Dispatch<SetStateAction<string | null>>;\n}\n\nconst getFilteredOptions = (\n options: (string | ParameterValue | ReferenceValue)[],\n filterValue: string\n) => {\n const matcher = createStringMatcher(filterValue);\n return options.filter(option => {\n if (typeof option === 'object') return matcher.test(option.primary);\n return matcher.test(option);\n });\n};\n\nconst getItems = (\n item: (string | ParameterValue | ReferenceValue)[],\n values: string[] | string | undefined\n) => {\n return item.map(option => {\n if (typeof option === 'object') {\n return {\n ...option,\n selected: Array.isArray(values) ? values.includes(option.id) : values === option.id\n };\n }\n return {\n id: option,\n primary: option,\n selected: Array.isArray(values) ? values.includes(option) : values === option\n };\n });\n};\n\n/** A control for selecting multiple values using checkboxes in an overlay */\nconst ValueSelector = <F extends object & { id: string; possibleValues?: ValueSelection<F> }>({\n values,\n selectedField,\n comparator,\n rhs,\n onChange,\n onBlur,\n onKeyDown,\n onClear,\n status,\n mode,\n parameters,\n placeholder,\n label,\n info,\n setApiError\n}: ValueSelectorProps<F>) => {\n const t = useI18n();\n\n const inputRef = useRef<HTMLDivElement>(null);\n\n const [filterValue, setFilterValue] = useState('');\n const prevFilterValue = usePrevious(filterValue);\n const [loading, setLoading] = useState(false);\n const isSelectedFieldPossibleValuesFunction =\n hasProp(selectedField, 'possibleValues') && typeof selectedField.possibleValues === 'function';\n const [hasMore, setHasMore] = useState(isSelectedFieldPossibleValuesFunction);\n const [items, setItems] = useState<MenuProps['items']>([]);\n const [selected, setSelected] = useState<ComboBoxProps['selected']>();\n\n const fetchPossibleValues = useCallback(\n (isFirstChunkLoad: boolean, subscribed: boolean = true) => {\n const { possibleValues: fn } = selectedField;\n if (typeof fn === 'function' && (isFirstChunkLoad || !loading)) {\n setLoading(true);\n if (isFirstChunkLoad) {\n setApiError?.(null);\n setItems([]);\n }\n fn({\n searchString: filterValue,\n comparator,\n lhs: selectedField,\n pageNumber: isFirstChunkLoad ? 1 : Math.floor(items.length / CHUNK_SIZE) + 1,\n pageSize: CHUNK_SIZE\n })\n .then(response => {\n if (subscribed) {\n setApiError?.(null);\n setHasMore(response.length >= CHUNK_SIZE);\n const newItems = getItems(response, values);\n setItems(curr => (isFirstChunkLoad ? newItems : [...curr, ...newItems]));\n setLoading(false);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n setLoading(false);\n }\n });\n }\n },\n [loading, items, selectedField, filterValue, comparator, values]\n );\n\n useEffect(() => {\n let subscribed = true;\n\n if (hasProp(rhs, 'parameterId')) {\n setItems(getItems(getFilteredOptions(parameters, filterValue), values));\n } else if (hasProp(selectedField, 'possibleValues')) {\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n if (prevFilterValue !== filterValue) {\n fetchPossibleValues(true, subscribed);\n } else {\n setItems(curr =>\n curr.map(i => ({\n ...i,\n selected: Array.isArray(values) ? values.includes(i.id) : values === i.id\n }))\n );\n }\n } else if (Array.isArray(possibleValues)) {\n setItems(getItems(getFilteredOptions(possibleValues, filterValue), values));\n } else {\n setItems([]);\n }\n }\n\n return () => {\n subscribed = false;\n };\n }, [\n rhs,\n parameters,\n filterValue,\n values,\n selectedField.id,\n selectedField.possibleValues,\n comparator\n ]);\n\n useEffect(() => {\n setFilterValue('');\n }, [selectedField, comparator]);\n\n useEffect(() => {\n let subscribed = true;\n\n const handlePossibleValues = (ids: string[], setSelectedFn: (options: Selected[]) => void) => {\n const filteredIds = ids.filter(id => id !== '');\n if (filteredIds.length === 0) {\n setSelectedFn([]);\n return;\n }\n const { possibleValues } = selectedField;\n if (typeof possibleValues === 'function') {\n possibleValues({\n lhs: selectedField,\n ids: filteredIds\n })\n .then(response => {\n if (subscribed) {\n const options = response.map(option =>\n typeof option === 'object'\n ? { id: option.id, text: option.primary }\n : { id: option, text: option }\n );\n setSelectedFn(options);\n }\n })\n .catch(err => {\n if (err && subscribed) {\n setApiError?.(t('condition_builder_possible_values_error'));\n return [];\n }\n });\n } else if (Array.isArray(possibleValues)) {\n const options = filteredIds.map(id => {\n const optionLabel = possibleValues.find(\n (opt): opt is ReferenceValue => typeof opt === 'object' && opt.id === id\n );\n return { id, text: optionLabel?.primary ?? id };\n });\n setSelectedFn(options);\n }\n };\n\n if (typeof values === 'string' && values) {\n if (hasProp(rhs, 'parameterId')) {\n const selectedItem = parameters.find(item => item.id === values);\n setSelected({\n items: { id: values, text: selectedItem !== undefined ? selectedItem.primary : values }\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues([values], options => setSelected({ items: options[0] }));\n } else {\n setSelected({\n items: { id: values, text: values }\n });\n }\n } else if (Array.isArray(values) && values.length > 0) {\n const onRemove = (value: string) => {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.filter(selection => selection !== value);\n })()\n );\n };\n if (hasProp(rhs, 'parameterId')) {\n setSelected({\n items: values.map(s => {\n const optionLabel = parameters.find(opt => typeof opt === 'object' && opt.id === s);\n return { id: s, text: optionLabel?.primary ?? s };\n }),\n onRemove\n });\n } else if (hasProp(selectedField, 'possibleValues')) {\n handlePossibleValues(values, options => setSelected({ items: options, onRemove }));\n } else {\n setSelected({ items: values.map(s => ({ id: s, text: s })), onRemove });\n }\n } else {\n setSelected(undefined);\n }\n\n return () => {\n subscribed = false;\n };\n }, [values, rhs, parameters, selectedField.id, selectedField.possibleValues]);\n\n return (\n <ComboBox\n ref={inputRef}\n mode={mode}\n label={label ?? t('condition_builder_possible_values_label')}\n placeholder={placeholder}\n value={filterValue}\n onChange={e => {\n setFilterValue(e.target.value);\n if (mode === 'single-select' && !e.target.value) onChange('');\n }}\n onBlur={() => {\n onBlur?.(values);\n setFilterValue('');\n }}\n onKeyDown={e => {\n onKeyDown?.(e);\n }}\n menu={{\n items,\n onItemClick: id => {\n if (mode === 'single-select') {\n setFilterValue('');\n onChange(id);\n } else {\n onChange(\n (() => {\n const current = Array.isArray(values) ? values : [];\n return current.includes(id)\n ? current.filter(selection => selection !== id)\n : [...current, id];\n })()\n );\n }\n },\n loading,\n loadMore: hasMore ? () => fetchPossibleValues(false) : undefined,\n accent: createStringMatcher(filterValue)\n }}\n onMenuOpen={() => fetchPossibleValues(true)}\n selected={selected}\n status={status}\n info={info}\n actions={\n onClear && (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onChange(mode === 'single-select' ? '' : []);\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n )\n }\n />\n );\n};\n\nexport default ValueSelector;\n"]}
@@ -11,7 +11,7 @@ import type { LeafCondition, Field, DateFunctionsByType } from '../ConditionBuil
11
11
  */
12
12
  export declare function isValidRhs(rhs: LeafCondition['rhs'], lhs: LeafCondition['lhs'], fields: Field[], fieldType?: FieldType, trimValues?: boolean): boolean;
13
13
  /** For a condition with the given comparator and lhs-field-type, determines an appropriate default value for the Rhs */
14
- export declare function getDefaultRhs(fieldType: FieldType, comparator: Comparator, validRhsTypes: Set<RHSType>, dateFunctions?: DateFunctionsByType): LeafCondition['rhs'];
14
+ export declare function getDefaultRhs(fieldType: FieldType | undefined, comparator: Comparator, validRhsTypes: Set<RHSType>, dateFunctions?: DateFunctionsByType): LeafCondition['rhs'];
15
15
  export declare function truncateISODateString(dateString: string, fieldType: FieldType, withSeconds?: boolean): string;
16
16
  /** Type definition for the input props of RhsControls */
17
17
  interface RhsControlProps extends BaseProps {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AAa5D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2C3F;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,MAAM,EAAE,KAAK,EAAE,EACf,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,GAAE,OAAe,GAC1B,OAAO,CA4GT;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAC3B,aAAa,CAAC,EAAE,mBAAmB,GAClC,aAAa,CAAC,KAAK,CAAC,CAgDtB;AAID,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,WAAW,UAAQ,GAClB,MAAM,CAkBR;AAED,yDAAyD;AACzD,UAAU,eAAgB,SAAQ,SAAS;IACzC,4BAA4B;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1B,mCAAmC;IACnC,UAAU,EAAE,UAAU,CAAC;IAEvB,4BAA4B;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1B,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhE,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IAExB,0BAA0B;IAC1B,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEhC,uDAAuD;IACvD,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE5B,oHAAoH;IACpH,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEpC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,QAAA,MAAM,WAAW,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CA2alE,CAAC;AACF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,OAAO,CAAC;AAa5D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2C3F;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EACzB,MAAM,EAAE,KAAK,EAAE,EACf,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,GAAE,OAAe,GAC1B,OAAO,CA4GT;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAC3B,aAAa,CAAC,EAAE,mBAAmB,GAClC,aAAa,CAAC,KAAK,CAAC,CAgDtB;AAID,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,WAAW,UAAQ,GAClB,MAAM,CAkBR;AAED,yDAAyD;AACzD,UAAU,eAAgB,SAAQ,SAAS;IACzC,4BAA4B;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1B,mCAAmC;IACnC,UAAU,EAAE,UAAU,CAAC;IAEvB,4BAA4B;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1B,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhE,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IAExB,0BAA0B;IAC1B,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEhC,uDAAuD;IACvD,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE5B,oHAAoH;IACpH,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEpC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,QAAA,MAAM,WAAW,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CA2alE,CAAC;AACF,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useMemo } from 'react';\nimport type { FunctionComponent, ChangeEvent } from 'react';\n\nimport {\n DateInput,\n DateTimeInput,\n Flex,\n Input,\n hasProp,\n TimeInput,\n useI18n,\n DateRangeInput,\n TimeRangeInput\n} from '@pega/cosmos-react-core';\nimport type { BaseProps, ForwardProps } from '@pega/cosmos-react-core';\nimport type {\n DateTimeCallbackParameter,\n DateRangeCallbackParameter\n} from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\n\nimport type { FieldType, Comparator, RHSType } from '../core/types';\nimport type { LeafCondition, Field, DateFunctionsByType } from '../ConditionBuilder.types';\nimport { convertTimeValueToMs } from '../core/time-utils';\nimport { getItem } from '../core/utils';\n\nimport ValueSelector from './ValueSelector';\nimport FieldSelector from './FieldSelector';\nimport RhsModeSwitch from './RhsModeSwitch';\nimport TimePeriodInput from './TimePeriodInput';\nimport TimePeriodMenu from './TimePeriodMenu';\nimport NumericInput from './NumericInput';\nimport { NumericRangeInput } from './NumericRangeInput';\nimport { CSVInput } from './CSVInput';\n\nfunction isValidLiteralValue(\n value: string | number,\n fieldType?: FieldType,\n trimValues: boolean = false\n): boolean {\n // Identify any invalid numbers (e.g. when `-` is entered)\n if (typeof value === 'number') {\n return !Number.isNaN(value);\n }\n\n // NOTE: Not trimming the value in the change-handler so that users can freely type spaces between words\n if (trimValues) {\n value = value.trim();\n }\n\n // Can be empty on init and on clearing the value\n if (value.trim() === '') {\n return false;\n }\n\n // This check is needed to eliminate invalid dates like `Feb 31` (02/31/2020), which the input allows\n // eslint-disable-next-line sonarjs/prefer-single-boolean-return\n if (\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY') &&\n Number.isNaN(new Date(value).getTime())\n ) {\n return false;\n }\n return true;\n}\n/**\n * Verifies if the condition has all valid values.\n * NOTES:\n * - This is intended to be used only on conditions emitted by the components in this package.\n * - If a condition is manually constructed outside these components, this utility could miss some malformed conditions.\n * - Also, this does not try to validate if the given `rhs` matches the `lhs`/`comparator`/`validRhsTypes`. Instead, it assumes that the appropriate LHS/Comparator/validRhsTypes must have been already in place for this rhs to be generated.\n */\nexport function isValidRhs(\n rhs: LeafCondition['rhs'],\n lhs: LeafCondition['lhs'],\n fields: Field[],\n fieldType?: FieldType,\n trimValues: boolean = false\n): boolean {\n // Find the field corresponding to the LHS\n const matchingField = getItem(fields, lhs.field);\n\n if (matchingField === undefined || !hasProp(matchingField, 'type')) {\n // Check if the RHS has no defined values to select\n return false;\n }\n\n // A ValueSelector in single/multiple mode is possible when these criteria are met\n const isValueSelectorPossible =\n fieldType === 'TEXT' && matchingField.possibleValues !== undefined;\n\n // RHS would be `undefined` when no RHS is needed. Treat it as a valid value\n if (rhs === undefined) {\n return true;\n }\n\n // Field-selector on the RHS\n if (hasProp(rhs, 'field')) {\n // RHS is invalid if no field is selected\n return rhs.field !== '';\n }\n\n // rhs of Parameter type\n if (hasProp(rhs, 'parameterId')) {\n // RHS is invalid if no id is returned\n return !!rhs.parameterId;\n }\n\n // List-input cases\n if (hasProp(rhs, 'values')) {\n // RHS is invalid if the list is empty\n if (rhs.values.length === 0) {\n return false;\n }\n // For numeric fields, RHS is invalid if any NaN values are present in the list\n if (\n (fieldType === 'DECIMAL' || fieldType === 'INTEGER') &&\n (rhs.values as number[]).some(v => Number.isNaN(v))\n ) {\n return false;\n }\n }\n\n if (hasProp(rhs, 'value')) {\n // Identify any invalid numbers (e.g. when `-` is entered)\n if (typeof rhs.value === 'number') {\n return !Number.isNaN(rhs.value);\n }\n\n // NOTE: Not trimming the value in the change-handler so that users can freely type spaces between words\n if (trimValues && !isValueSelectorPossible) {\n rhs.value = rhs.value.trim();\n }\n\n // Can be empty on init and on clearing the value\n if (rhs.value.trim() === '') {\n return false;\n }\n\n // This check is needed to eliminate invalid dates like `Feb 31` (02/31/2020), which the input allows\n if (\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY') &&\n Number.isNaN(new Date(rhs.value).getTime())\n ) {\n return false;\n }\n }\n\n if (\n hasProp(rhs, 'relativeDate') &&\n ((rhs.relativeDate.timePeriod === 'CURRENT' && rhs.relativeDate.interval) ||\n (rhs.relativeDate.timePeriod !== 'CURRENT' &&\n (!rhs.relativeDate.interval || rhs.relativeDate.interval <= 0)))\n ) {\n return false;\n }\n\n if (hasProp(rhs, 'start')) {\n if (\n !isValidLiteralValue(rhs.start, fieldType, trimValues) ||\n !isValidLiteralValue(rhs.end, fieldType, trimValues)\n ) {\n return false;\n }\n if (fieldType === 'DECIMAL' || fieldType === 'INTEGER') {\n return (\n !Number.isNaN(Number(rhs.start)) &&\n !Number.isNaN(Number(rhs.end)) &&\n Number(rhs.start) < Number(rhs.end)\n );\n }\n if (fieldType === 'TIME_ONLY') {\n // Equal range endpoints are valid because the transformer expands them\n // to cover the unit implied by the input precision (HH:mm → whole minute,\n // HH:mm:ss → whole second).\n if (typeof rhs.start === 'number' && typeof rhs.end === 'number') return rhs.start <= rhs.end;\n if (typeof rhs.start === 'string' && typeof rhs.end === 'string')\n return convertTimeValueToMs(rhs.start) <= convertTimeValueToMs(rhs.end);\n }\n const startDate = new Date(rhs.start);\n const endDate = new Date(rhs.end);\n if (Number.isNaN(startDate.getTime()) || Number.isNaN(endDate.getTime())) return false;\n return startDate <= endDate;\n }\n\n return true;\n}\n\n/** For a condition with the given comparator and lhs-field-type, determines an appropriate default value for the Rhs */\nexport function getDefaultRhs(\n fieldType: FieldType,\n comparator: Comparator,\n validRhsTypes: Set<RHSType>,\n dateFunctions?: DateFunctionsByType\n): LeafCondition['rhs'] {\n switch (comparator) {\n case 'IS_TRUE':\n case 'IS_FALSE':\n case 'IS_NULL':\n case 'IS_NOT_NULL':\n return undefined; // These comparators do not have an Rhs\n\n case 'IN':\n case 'NOT_IN':\n return { values: [] };\n\n case 'BTW':\n case 'NOT_BTW':\n return { start: '', end: '' };\n\n default: {\n if (fieldType === 'BOOLEAN' && (comparator === 'EQ' || comparator === 'NEQ')) {\n // For booleans, these comparators can only be used for comparing with other fields\n return { field: '' };\n }\n\n if (validRhsTypes.has('LITERAL')) return { value: '' };\n\n if (validRhsTypes.has('PARAMETER')) return { parameterId: '' };\n\n if (\n validRhsTypes.has('DATE_FUNCTION') &&\n dateFunctions &&\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY')\n )\n return { value: '', dateFunction: dateFunctions[fieldType][0] };\n\n if (\n validRhsTypes.has('RELATIVE_DATE') &&\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY')\n ) {\n return {\n relativeDate: {\n timePeriod: 'CURRENT',\n datePart: 'DAYS'\n }\n };\n }\n\n return { field: '' };\n }\n }\n}\n\n// Truncates output values from DateInput/DateTimeInput to return a wall time on the RHS\n// NOTE: This assumes that the input date is set up on the UTC timezone\nexport function truncateISODateString(\n dateString: string,\n fieldType: FieldType,\n withSeconds = false\n): string {\n const date = new Date(dateString);\n const YYYY = date.getUTCFullYear().toString().padStart(4, '0');\n const MM = (date.getUTCMonth() + 1).toString().padStart(2, '0');\n const DD = date.getUTCDate().toString().padStart(2, '0');\n\n // For DATE_ONLY fields, returning a YYYY-MM-DD format as per spec\n if (fieldType === 'DATE_ONLY') return `${YYYY}-${MM}-${DD}`;\n\n const hh = date.getUTCHours().toString().padStart(2, '0');\n const mm = date.getUTCMinutes().toString().padStart(2, '0');\n const ss = date.getUTCSeconds().toString().padStart(2, '0');\n\n if (fieldType === 'TIME_ONLY') return withSeconds ? `${hh}:${mm}:${ss}` : `${hh}:${mm}`;\n\n // cspell:disable-next-line\n // For DATE_TIME fields, returning a YYYY-MM-DDTHH:mm format and discarding the time-zone etc. to be consistent with the previous spec which was returning a wall time\n return `${YYYY}-${MM}-${DD}T${hh}:${mm}`;\n}\n\n/** Type definition for the input props of RhsControls */\ninterface RhsControlProps extends BaseProps {\n /** Lhs for the condition */\n lhs: LeafCondition['lhs'];\n\n /** Comparator for the condition */\n comparator: Comparator;\n\n /** Rhs for the condition */\n rhs: LeafCondition['rhs'];\n\n /** Metadata (data-model) for the Fields to use in the RHS field-selector */\n fields: Field[];\n\n /** Callback for any modifications to the Rhs */\n onChange: (rhs: LeafCondition['rhs'], status?: 'error') => void;\n\n /** Used to enable inline error indicators on invalid inputs */\n indicateErrors: boolean;\n\n /** Item flow direction */\n itemDirection: 'row' | 'column';\n\n /** Restricts RHS values to only specified RHS types */\n validRhsTypes: Set<RHSType>;\n\n /** Passed to enable additional date controls on the RHS, when a DATE_TIME/DATE_ONLY field is selected on the LHS */\n dateFunctions?: DateFunctionsByType;\n\n /** IANA timezone string used to initialize date/time pickers with the operator's timezone */\n timeZone?: string;\n}\n\n/** A controlled component for controls on a Condition's RHS */\nconst RhsControls: FunctionComponent<RhsControlProps & ForwardProps> = (props: RhsControlProps) => {\n const {\n lhs,\n comparator,\n rhs,\n fields,\n onChange,\n indicateErrors,\n itemDirection,\n validRhsTypes,\n dateFunctions,\n timeZone\n } = props;\n\n const t = useI18n();\n\n const [apiError, setApiError] = useState<string | null>(null);\n\n // Find the field corresponding to the LHS\n const matchingField = getItem(fields, lhs.field);\n\n // Options for the Field-selector (if applicable)\n const fieldOptions = useMemo(() => {\n if (!matchingField || !hasProp(matchingField, 'type')) return [];\n // Show all other fields of the same data type as the LHS\n\n const findMatchingObjectType = (items: Field[], type: FieldType) => {\n return items.reduce((result: Field[], item) => {\n // Check if the current item matches the condition\n if (item.id !== lhs.field && hasProp(item, 'type') && item.type === type) {\n result.push({ ...item });\n } else if (hasProp(item, 'items') && item.items.length > 0) {\n // If the item has children, recursively search them\n const filteredChildren = findMatchingObjectType(item.items, type);\n if (filteredChildren.length > 0) {\n result.push({ ...item, items: filteredChildren });\n }\n }\n return result;\n }, []);\n };\n\n return findMatchingObjectType(fields, matchingField.type);\n }, [fields, lhs]);\n\n // If a field is not selected or if the comparator doesn't need any RHS, don't render anything\n if (rhs === undefined) {\n return <div />; // Rendering a placeholder div to keep the layout consistent\n }\n\n if (matchingField === undefined || !hasProp(matchingField, 'type')) {\n // For safety against any rare cases where the LHS from an input condition is not present in the input fields to the ConditionBuilder\n // In those cases, don't render an RHS and wait for a valid value to be picked on LHS\n return <div />; // Rendering a placeholder div to keep the layout consistent\n }\n\n const fieldType = matchingField.type;\n\n const fieldUnit = matchingField.unit;\n\n const parameters = matchingField.parameters !== undefined ? matchingField.parameters : [];\n\n // If errors should be indicated inline, validate the current rhs\n let showError = false;\n if (indicateErrors) {\n showError = !isValidRhs(rhs, lhs, fields, fieldType, false);\n }\n\n const isValueSelectorPossible =\n fieldType === 'TEXT' &&\n matchingField.possibleValues !== undefined &&\n ['EQ', 'NEQ', 'IN', 'NOT_IN'].includes(comparator); // A ValueSelector in single/multiple mode is possible when these criteria are met\n const useValueSelector = isValueSelectorPossible && !hasProp(rhs, 'field'); // Use the ValueSelector component if it is applicable and if not in ANOTHER_FIELD mode and if RHS is not PARAMETER type\n // Handle changes from the Value-selector\n\n const handleValueSelection = (selection: string | string[]) => {\n if (typeof selection === 'string') {\n if (hasProp(rhs, 'parameterId')) onChange({ parameterId: selection });\n else onChange({ value: selection }); // Submit a new RHS\n } else {\n onChange({ values: selection }); // Submit a new RHS\n }\n };\n\n // Handle changes from the Field-selector\n const handleFieldChange = (id: string) => {\n onChange({ field: id }); // Submit a new RHS\n };\n\n // Handle changes from a Value-input\n const handleValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n // NOTE: Not trimming the value here so that users can freely type spaces between words. Trimming is done on Submit, via the isValidRhs call\n onChange({ value: e.target.value }); // Submit a new RHS\n };\n\n // Handle changes from a DateInput\n const handleDateValueChange = ({\n valueAsISOString,\n valueAsTimestamp,\n state\n }: DateTimeCallbackParameter) => {\n // NOTE: Not relying fully on `state` since in some cases state and valueAsTimestamp as both undefined\n if (valueAsISOString === undefined) {\n onChange({ value: '' });\n return;\n }\n\n if (state) {\n // sending empty value marked as 'error' to allow clearing condition\n onChange({ value: valueAsTimestamp ?? '' }, 'error');\n return;\n }\n\n const truncatedValue = truncateISODateString(\n valueAsISOString,\n fieldType,\n fieldType === 'TIME_ONLY'\n );\n onChange({ value: truncatedValue });\n };\n\n const handleDateRangeValueChange = ({ start, end }: DateRangeCallbackParameter) => {\n if (start.valueAsTimestamp === undefined && end.valueAsTimestamp === undefined) {\n onChange({ start: '', end: '' });\n return;\n }\n\n if (\n start.valueAsISOString === undefined ||\n end.valueAsISOString === undefined ||\n start.state ||\n end.state\n ) {\n // sending empty value marked as 'error' to allow clearing condition\n onChange({ start: start.valueAsTimestamp ?? '', end: end.valueAsTimestamp ?? '' }, 'error');\n return;\n }\n\n const [truncatedStartValue, truncatedEndValue] = [\n truncateISODateString(start.valueAsISOString, fieldType, fieldType === 'TIME_ONLY'),\n truncateISODateString(end.valueAsISOString, fieldType, fieldType === 'TIME_ONLY')\n ];\n\n const onChangeParam = {\n start: truncatedStartValue ?? '',\n end: truncatedEndValue ?? ''\n };\n\n if (\n start.valueAsTimestamp &&\n end.valueAsTimestamp &&\n start.valueAsTimestamp > end.valueAsTimestamp\n ) {\n onChange(onChangeParam, 'error');\n return;\n }\n\n onChange(onChangeParam);\n };\n\n const handleNumberRangeValueChange = ({\n start,\n end\n }: {\n start: number | undefined;\n end: number | undefined;\n }) => {\n const startValue = start;\n const endValue = end;\n const hasStartValue = startValue !== undefined;\n const hasEndValue = endValue !== undefined;\n\n onChange(\n {\n start: hasStartValue ? Number(start) : '',\n end: hasEndValue ? Number(end) : ''\n },\n // checking one of values is empty, but not both\n ((!hasStartValue || !hasEndValue) && (hasStartValue || hasEndValue)) ||\n (hasStartValue && hasEndValue && startValue > endValue)\n ? 'error'\n : undefined\n );\n };\n\n // Render the menu directly if in a vertical layout\n const TimePeriodComp = itemDirection === 'column' ? TimePeriodMenu : TimePeriodInput;\n const alignItems = showError ? 'center' : 'end';\n return (\n <Flex\n container={{\n direction: itemDirection,\n alignItems: itemDirection === 'column' ? 'stretch' : alignItems,\n justify: 'between',\n gap: 0.5\n }}\n >\n {/* Gear MenuButton */}\n <RhsModeSwitch\n parameters={parameters}\n fieldType={fieldType}\n comparator={comparator}\n rhs={rhs}\n onChange={onChange}\n mode={itemDirection === 'column' ? 'combo-box' : 'menu-button'}\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n />\n {/* Field-selector */}\n {hasProp(rhs, 'field') && (\n <Flex item={{ grow: 1 }}>\n <FieldSelector\n value={rhs.field}\n onChange={handleFieldChange}\n fields={fieldOptions}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : undefined}\n label={t('condition_builder_compare_with_another_field')}\n />\n </Flex>\n )}\n\n {/* Parameter input */}\n {hasProp(rhs, 'parameterId') && (\n <Flex item={{ grow: 1 }}>\n {parameters.length === 1 && (\n <Input\n value={parameters[0].primary.toString()}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_empty_value_text') : undefined}\n name='rhs-text-parameter-input'\n label={t('condition_builder_value_label')}\n readOnly\n />\n )}\n\n {parameters.length > 1 && (\n <ValueSelector\n parameters={parameters}\n mode='single-select'\n values={rhs.parameterId.toString()}\n selectedField={matchingField}\n rhs={rhs}\n comparator={comparator}\n onChange={handleValueSelection}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_empty_selection_error_text') : undefined}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_single_selection_placeholder')}\n />\n )}\n </Flex>\n )}\n\n {/* Value input */}\n {hasProp(rhs, 'value') && !hasProp(rhs, 'dateFunction') && (\n <Flex item={{ grow: 1 }}>\n {fieldType === 'TEXT' && useValueSelector && (\n <ValueSelector\n parameters={parameters}\n mode='single-select'\n values={rhs.value.toString()}\n selectedField={matchingField}\n comparator={comparator}\n rhs={rhs}\n onChange={handleValueSelection}\n status={showError || apiError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : apiError}\n setApiError={setApiError}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_single_selection_placeholder')}\n />\n )}\n\n {fieldType === 'TEXT' && !useValueSelector && (\n <Input\n value={rhs.value.toString()}\n onChange={handleValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('empty_value') : undefined}\n name='rhs-text-literal-input'\n label={t('condition_builder_value_label')}\n />\n )}\n\n {(fieldType === 'DECIMAL' || fieldType === 'INTEGER') && (\n <NumericInput\n rhs={rhs}\n onChange={onChange}\n allowDecimal={fieldType !== 'INTEGER'}\n status={showError ? 'error' : undefined}\n unit={fieldUnit}\n />\n )}\n {fieldType === 'TIME_ONLY' && (\n <TimeInput\n value={rhs.value === '' ? undefined : rhs.value}\n withSeconds\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_time') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n label={t('condition_builder_value_label')}\n />\n )}\n {fieldType === 'DATE_ONLY' && (\n <DateInput\n value={rhs.value}\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date') : ''}\n label={t('condition_builder_value_label')}\n timeZone={timeZone}\n />\n )}\n {fieldType === 'DATE_TIME' && (\n <DateTimeInput\n value={rhs.value !== '' ? rhs.value : undefined}\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date') : ''}\n label={t('condition_builder_value_label')}\n timeZone={timeZone}\n />\n )}\n </Flex>\n )}\n\n {(fieldType === 'DATE_ONLY' || fieldType === 'DATE_TIME') &&\n (hasProp(rhs, 'relativeDate') || hasProp(rhs, 'dateFunction')) && (\n <Flex item={{ grow: 1 }}>\n <TimePeriodComp\n rhs={rhs}\n fieldType={fieldType}\n onChange={onChange}\n dateFunctionsList={dateFunctions ? dateFunctions[fieldType] : []}\n status={showError ? 'error' : undefined}\n />\n </Flex>\n )}\n\n {/* Multiple-values input */}\n {hasProp(rhs, 'values') && (\n <Flex item={{ grow: 1 }}>\n {useValueSelector && (\n <ValueSelector\n parameters={parameters}\n mode='multi-select'\n values={rhs.values.map(String)}\n selectedField={matchingField}\n comparator={comparator}\n rhs={rhs}\n onChange={handleValueSelection}\n status={showError || apiError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : apiError}\n setApiError={setApiError}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_multi_selection_placeholder')}\n />\n )}\n {!useValueSelector && (\n <CSVInput\n rhs={rhs}\n field={matchingField}\n onChange={onChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_values') : undefined}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_enter_csv_placeholder')}\n />\n )}\n </Flex>\n )}\n\n {hasProp(rhs, 'start') && (\n <Flex item={{ grow: 1 }}>\n {(fieldType === 'DECIMAL' || fieldType === 'INTEGER') && (\n <NumericRangeInput\n label={t('condition_builder_value_label')}\n rhs={{ start: rhs.start.toString(), end: rhs.end.toString() }}\n onChange={handleNumberRangeValueChange}\n status={showError ? 'error' : undefined}\n allowDecimal={fieldType !== 'INTEGER'}\n unit={fieldUnit}\n />\n )}\n\n {fieldType === 'DATE_ONLY' && (\n <DateRangeInput\n value={{ start: rhs.start, end: rhs.end }}\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n timeZone={timeZone}\n />\n )}\n\n {fieldType === 'TIME_ONLY' && (\n <TimeRangeInput\n mode='time'\n value={{\n start: rhs.start === '' ? undefined : rhs.start,\n end: rhs.end === '' ? undefined : rhs.end\n }}\n withSeconds\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_time_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n />\n )}\n\n {fieldType === 'DATE_TIME' && (\n <TimeRangeInput\n mode='datetime'\n value={{ start: rhs.start, end: rhs.end }}\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n timeZone={timeZone}\n />\n )}\n </Flex>\n )}\n </Flex>\n );\n};\nexport default RhsControls;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useMemo } from 'react';\nimport type { FunctionComponent, ChangeEvent } from 'react';\n\nimport {\n DateInput,\n DateTimeInput,\n Flex,\n Input,\n hasProp,\n TimeInput,\n useI18n,\n DateRangeInput,\n TimeRangeInput\n} from '@pega/cosmos-react-core';\nimport type { BaseProps, ForwardProps } from '@pega/cosmos-react-core';\nimport type {\n DateTimeCallbackParameter,\n DateRangeCallbackParameter\n} from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\n\nimport type { FieldType, Comparator, RHSType } from '../core/types';\nimport type { LeafCondition, Field, DateFunctionsByType } from '../ConditionBuilder.types';\nimport { convertTimeValueToMs } from '../core/time-utils';\nimport { getItem } from '../core/utils';\n\nimport ValueSelector from './ValueSelector';\nimport FieldSelector from './FieldSelector';\nimport RhsModeSwitch from './RhsModeSwitch';\nimport TimePeriodInput from './TimePeriodInput';\nimport TimePeriodMenu from './TimePeriodMenu';\nimport NumericInput from './NumericInput';\nimport { NumericRangeInput } from './NumericRangeInput';\nimport { CSVInput } from './CSVInput';\n\nfunction isValidLiteralValue(\n value: string | number,\n fieldType?: FieldType,\n trimValues: boolean = false\n): boolean {\n // Identify any invalid numbers (e.g. when `-` is entered)\n if (typeof value === 'number') {\n return !Number.isNaN(value);\n }\n\n // NOTE: Not trimming the value in the change-handler so that users can freely type spaces between words\n if (trimValues) {\n value = value.trim();\n }\n\n // Can be empty on init and on clearing the value\n if (value.trim() === '') {\n return false;\n }\n\n // This check is needed to eliminate invalid dates like `Feb 31` (02/31/2020), which the input allows\n // eslint-disable-next-line sonarjs/prefer-single-boolean-return\n if (\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY') &&\n Number.isNaN(new Date(value).getTime())\n ) {\n return false;\n }\n return true;\n}\n/**\n * Verifies if the condition has all valid values.\n * NOTES:\n * - This is intended to be used only on conditions emitted by the components in this package.\n * - If a condition is manually constructed outside these components, this utility could miss some malformed conditions.\n * - Also, this does not try to validate if the given `rhs` matches the `lhs`/`comparator`/`validRhsTypes`. Instead, it assumes that the appropriate LHS/Comparator/validRhsTypes must have been already in place for this rhs to be generated.\n */\nexport function isValidRhs(\n rhs: LeafCondition['rhs'],\n lhs: LeafCondition['lhs'],\n fields: Field[],\n fieldType?: FieldType,\n trimValues: boolean = false\n): boolean {\n // Find the field corresponding to the LHS\n const matchingField = getItem(fields, lhs.field);\n\n if (matchingField === undefined || !hasProp(matchingField, 'type')) {\n // Check if the RHS has no defined values to select\n return false;\n }\n\n // A ValueSelector in single/multiple mode is possible when these criteria are met\n const isValueSelectorPossible =\n fieldType === 'TEXT' && matchingField.possibleValues !== undefined;\n\n // RHS would be `undefined` when no RHS is needed. Treat it as a valid value\n if (rhs === undefined) {\n return true;\n }\n\n // Field-selector on the RHS\n if (hasProp(rhs, 'field')) {\n // RHS is invalid if no field is selected\n return rhs.field !== '';\n }\n\n // rhs of Parameter type\n if (hasProp(rhs, 'parameterId')) {\n // RHS is invalid if no id is returned\n return !!rhs.parameterId;\n }\n\n // List-input cases\n if (hasProp(rhs, 'values')) {\n // RHS is invalid if the list is empty\n if (rhs.values.length === 0) {\n return false;\n }\n // For numeric fields, RHS is invalid if any NaN values are present in the list\n if (\n (fieldType === 'DECIMAL' || fieldType === 'INTEGER') &&\n (rhs.values as number[]).some(v => Number.isNaN(v))\n ) {\n return false;\n }\n }\n\n if (hasProp(rhs, 'value')) {\n // Identify any invalid numbers (e.g. when `-` is entered)\n if (typeof rhs.value === 'number') {\n return !Number.isNaN(rhs.value);\n }\n\n // NOTE: Not trimming the value in the change-handler so that users can freely type spaces between words\n if (trimValues && !isValueSelectorPossible) {\n rhs.value = rhs.value.trim();\n }\n\n // Can be empty on init and on clearing the value\n if (rhs.value.trim() === '') {\n return false;\n }\n\n // This check is needed to eliminate invalid dates like `Feb 31` (02/31/2020), which the input allows\n if (\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY') &&\n Number.isNaN(new Date(rhs.value).getTime())\n ) {\n return false;\n }\n }\n\n if (\n hasProp(rhs, 'relativeDate') &&\n ((rhs.relativeDate.timePeriod === 'CURRENT' && rhs.relativeDate.interval) ||\n (rhs.relativeDate.timePeriod !== 'CURRENT' &&\n (!rhs.relativeDate.interval || rhs.relativeDate.interval <= 0)))\n ) {\n return false;\n }\n\n if (hasProp(rhs, 'start')) {\n if (\n !isValidLiteralValue(rhs.start, fieldType, trimValues) ||\n !isValidLiteralValue(rhs.end, fieldType, trimValues)\n ) {\n return false;\n }\n if (fieldType === 'DECIMAL' || fieldType === 'INTEGER') {\n return (\n !Number.isNaN(Number(rhs.start)) &&\n !Number.isNaN(Number(rhs.end)) &&\n Number(rhs.start) < Number(rhs.end)\n );\n }\n if (fieldType === 'TIME_ONLY') {\n // Equal range endpoints are valid because the transformer expands them\n // to cover the unit implied by the input precision (HH:mm → whole minute,\n // HH:mm:ss → whole second).\n if (typeof rhs.start === 'number' && typeof rhs.end === 'number') return rhs.start <= rhs.end;\n if (typeof rhs.start === 'string' && typeof rhs.end === 'string')\n return convertTimeValueToMs(rhs.start) <= convertTimeValueToMs(rhs.end);\n }\n const startDate = new Date(rhs.start);\n const endDate = new Date(rhs.end);\n if (Number.isNaN(startDate.getTime()) || Number.isNaN(endDate.getTime())) return false;\n return startDate <= endDate;\n }\n\n return true;\n}\n\n/** For a condition with the given comparator and lhs-field-type, determines an appropriate default value for the Rhs */\nexport function getDefaultRhs(\n fieldType: FieldType | undefined,\n comparator: Comparator,\n validRhsTypes: Set<RHSType>,\n dateFunctions?: DateFunctionsByType\n): LeafCondition['rhs'] {\n switch (comparator) {\n case 'IS_TRUE':\n case 'IS_FALSE':\n case 'IS_NULL':\n case 'IS_NOT_NULL':\n return undefined; // These comparators do not have an Rhs\n\n case 'IN':\n case 'NOT_IN':\n return { values: [] };\n\n case 'BTW':\n case 'NOT_BTW':\n return { start: '', end: '' };\n\n default: {\n if (fieldType === 'BOOLEAN' && (comparator === 'EQ' || comparator === 'NEQ')) {\n // For booleans, these comparators can only be used for comparing with other fields\n return { field: '' };\n }\n\n if (validRhsTypes.has('LITERAL')) return { value: '' };\n\n if (validRhsTypes.has('PARAMETER')) return { parameterId: '' };\n\n if (\n validRhsTypes.has('DATE_FUNCTION') &&\n dateFunctions &&\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY')\n )\n return { value: '', dateFunction: dateFunctions[fieldType][0] };\n\n if (\n validRhsTypes.has('RELATIVE_DATE') &&\n (fieldType === 'DATE_TIME' || fieldType === 'DATE_ONLY')\n ) {\n return {\n relativeDate: {\n timePeriod: 'CURRENT',\n datePart: 'DAYS'\n }\n };\n }\n\n return { field: '' };\n }\n }\n}\n\n// Truncates output values from DateInput/DateTimeInput to return a wall time on the RHS\n// NOTE: This assumes that the input date is set up on the UTC timezone\nexport function truncateISODateString(\n dateString: string,\n fieldType: FieldType,\n withSeconds = false\n): string {\n const date = new Date(dateString);\n const YYYY = date.getUTCFullYear().toString().padStart(4, '0');\n const MM = (date.getUTCMonth() + 1).toString().padStart(2, '0');\n const DD = date.getUTCDate().toString().padStart(2, '0');\n\n // For DATE_ONLY fields, returning a YYYY-MM-DD format as per spec\n if (fieldType === 'DATE_ONLY') return `${YYYY}-${MM}-${DD}`;\n\n const hh = date.getUTCHours().toString().padStart(2, '0');\n const mm = date.getUTCMinutes().toString().padStart(2, '0');\n const ss = date.getUTCSeconds().toString().padStart(2, '0');\n\n if (fieldType === 'TIME_ONLY') return withSeconds ? `${hh}:${mm}:${ss}` : `${hh}:${mm}`;\n\n // cspell:disable-next-line\n // For DATE_TIME fields, returning a YYYY-MM-DDTHH:mm format and discarding the time-zone etc. to be consistent with the previous spec which was returning a wall time\n return `${YYYY}-${MM}-${DD}T${hh}:${mm}`;\n}\n\n/** Type definition for the input props of RhsControls */\ninterface RhsControlProps extends BaseProps {\n /** Lhs for the condition */\n lhs: LeafCondition['lhs'];\n\n /** Comparator for the condition */\n comparator: Comparator;\n\n /** Rhs for the condition */\n rhs: LeafCondition['rhs'];\n\n /** Metadata (data-model) for the Fields to use in the RHS field-selector */\n fields: Field[];\n\n /** Callback for any modifications to the Rhs */\n onChange: (rhs: LeafCondition['rhs'], status?: 'error') => void;\n\n /** Used to enable inline error indicators on invalid inputs */\n indicateErrors: boolean;\n\n /** Item flow direction */\n itemDirection: 'row' | 'column';\n\n /** Restricts RHS values to only specified RHS types */\n validRhsTypes: Set<RHSType>;\n\n /** Passed to enable additional date controls on the RHS, when a DATE_TIME/DATE_ONLY field is selected on the LHS */\n dateFunctions?: DateFunctionsByType;\n\n /** IANA timezone string used to initialize date/time pickers with the operator's timezone */\n timeZone?: string;\n}\n\n/** A controlled component for controls on a Condition's RHS */\nconst RhsControls: FunctionComponent<RhsControlProps & ForwardProps> = (props: RhsControlProps) => {\n const {\n lhs,\n comparator,\n rhs,\n fields,\n onChange,\n indicateErrors,\n itemDirection,\n validRhsTypes,\n dateFunctions,\n timeZone\n } = props;\n\n const t = useI18n();\n\n const [apiError, setApiError] = useState<string | null>(null);\n\n // Find the field corresponding to the LHS\n const matchingField = getItem(fields, lhs.field);\n\n // Options for the Field-selector (if applicable)\n const fieldOptions = useMemo(() => {\n if (!matchingField || !hasProp(matchingField, 'type')) return [];\n // Show all other fields of the same data type as the LHS\n\n const findMatchingObjectType = (items: Field[], type: FieldType) => {\n return items.reduce((result: Field[], item) => {\n // Check if the current item matches the condition\n if (item.id !== lhs.field && hasProp(item, 'type') && item.type === type) {\n result.push({ ...item });\n } else if (hasProp(item, 'items') && item.items.length > 0) {\n // If the item has children, recursively search them\n const filteredChildren = findMatchingObjectType(item.items, type);\n if (filteredChildren.length > 0) {\n result.push({ ...item, items: filteredChildren });\n }\n }\n return result;\n }, []);\n };\n\n return findMatchingObjectType(fields, matchingField.type);\n }, [fields, lhs]);\n\n // If a field is not selected or if the comparator doesn't need any RHS, don't render anything\n if (rhs === undefined) {\n return <div />; // Rendering a placeholder div to keep the layout consistent\n }\n\n if (matchingField === undefined || !hasProp(matchingField, 'type')) {\n // For safety against any rare cases where the LHS from an input condition is not present in the input fields to the ConditionBuilder\n // In those cases, don't render an RHS and wait for a valid value to be picked on LHS\n return <div />; // Rendering a placeholder div to keep the layout consistent\n }\n\n const fieldType = matchingField.type;\n\n const fieldUnit = matchingField.unit;\n\n const parameters = matchingField.parameters !== undefined ? matchingField.parameters : [];\n\n // If errors should be indicated inline, validate the current rhs\n let showError = false;\n if (indicateErrors) {\n showError = !isValidRhs(rhs, lhs, fields, fieldType, false);\n }\n\n const isValueSelectorPossible =\n fieldType === 'TEXT' &&\n matchingField.possibleValues !== undefined &&\n ['EQ', 'NEQ', 'IN', 'NOT_IN'].includes(comparator); // A ValueSelector in single/multiple mode is possible when these criteria are met\n const useValueSelector = isValueSelectorPossible && !hasProp(rhs, 'field'); // Use the ValueSelector component if it is applicable and if not in ANOTHER_FIELD mode and if RHS is not PARAMETER type\n // Handle changes from the Value-selector\n\n const handleValueSelection = (selection: string | string[]) => {\n if (typeof selection === 'string') {\n if (hasProp(rhs, 'parameterId')) onChange({ parameterId: selection });\n else onChange({ value: selection }); // Submit a new RHS\n } else {\n onChange({ values: selection }); // Submit a new RHS\n }\n };\n\n // Handle changes from the Field-selector\n const handleFieldChange = (id: string) => {\n onChange({ field: id }); // Submit a new RHS\n };\n\n // Handle changes from a Value-input\n const handleValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n // NOTE: Not trimming the value here so that users can freely type spaces between words. Trimming is done on Submit, via the isValidRhs call\n onChange({ value: e.target.value }); // Submit a new RHS\n };\n\n // Handle changes from a DateInput\n const handleDateValueChange = ({\n valueAsISOString,\n valueAsTimestamp,\n state\n }: DateTimeCallbackParameter) => {\n // NOTE: Not relying fully on `state` since in some cases state and valueAsTimestamp as both undefined\n if (valueAsISOString === undefined) {\n onChange({ value: '' });\n return;\n }\n\n if (state) {\n // sending empty value marked as 'error' to allow clearing condition\n onChange({ value: valueAsTimestamp ?? '' }, 'error');\n return;\n }\n\n const truncatedValue = truncateISODateString(\n valueAsISOString,\n fieldType,\n fieldType === 'TIME_ONLY'\n );\n onChange({ value: truncatedValue });\n };\n\n const handleDateRangeValueChange = ({ start, end }: DateRangeCallbackParameter) => {\n if (start.valueAsTimestamp === undefined && end.valueAsTimestamp === undefined) {\n onChange({ start: '', end: '' });\n return;\n }\n\n if (\n start.valueAsISOString === undefined ||\n end.valueAsISOString === undefined ||\n start.state ||\n end.state\n ) {\n // sending empty value marked as 'error' to allow clearing condition\n onChange({ start: start.valueAsTimestamp ?? '', end: end.valueAsTimestamp ?? '' }, 'error');\n return;\n }\n\n const [truncatedStartValue, truncatedEndValue] = [\n truncateISODateString(start.valueAsISOString, fieldType, fieldType === 'TIME_ONLY'),\n truncateISODateString(end.valueAsISOString, fieldType, fieldType === 'TIME_ONLY')\n ];\n\n const onChangeParam = {\n start: truncatedStartValue ?? '',\n end: truncatedEndValue ?? ''\n };\n\n if (\n start.valueAsTimestamp &&\n end.valueAsTimestamp &&\n start.valueAsTimestamp > end.valueAsTimestamp\n ) {\n onChange(onChangeParam, 'error');\n return;\n }\n\n onChange(onChangeParam);\n };\n\n const handleNumberRangeValueChange = ({\n start,\n end\n }: {\n start: number | undefined;\n end: number | undefined;\n }) => {\n const startValue = start;\n const endValue = end;\n const hasStartValue = startValue !== undefined;\n const hasEndValue = endValue !== undefined;\n\n onChange(\n {\n start: hasStartValue ? Number(start) : '',\n end: hasEndValue ? Number(end) : ''\n },\n // checking one of values is empty, but not both\n ((!hasStartValue || !hasEndValue) && (hasStartValue || hasEndValue)) ||\n (hasStartValue && hasEndValue && startValue > endValue)\n ? 'error'\n : undefined\n );\n };\n\n // Render the menu directly if in a vertical layout\n const TimePeriodComp = itemDirection === 'column' ? TimePeriodMenu : TimePeriodInput;\n const alignItems = showError ? 'center' : 'end';\n return (\n <Flex\n container={{\n direction: itemDirection,\n alignItems: itemDirection === 'column' ? 'stretch' : alignItems,\n justify: 'between',\n gap: 0.5\n }}\n >\n {/* Gear MenuButton */}\n <RhsModeSwitch\n parameters={parameters}\n fieldType={fieldType}\n comparator={comparator}\n rhs={rhs}\n onChange={onChange}\n mode={itemDirection === 'column' ? 'combo-box' : 'menu-button'}\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n />\n {/* Field-selector */}\n {hasProp(rhs, 'field') && (\n <Flex item={{ grow: 1 }}>\n <FieldSelector\n value={rhs.field}\n onChange={handleFieldChange}\n fields={fieldOptions}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : undefined}\n label={t('condition_builder_compare_with_another_field')}\n />\n </Flex>\n )}\n\n {/* Parameter input */}\n {hasProp(rhs, 'parameterId') && (\n <Flex item={{ grow: 1 }}>\n {parameters.length === 1 && (\n <Input\n value={parameters[0].primary.toString()}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_empty_value_text') : undefined}\n name='rhs-text-parameter-input'\n label={t('condition_builder_value_label')}\n readOnly\n />\n )}\n\n {parameters.length > 1 && (\n <ValueSelector\n parameters={parameters}\n mode='single-select'\n values={rhs.parameterId.toString()}\n selectedField={matchingField}\n rhs={rhs}\n comparator={comparator}\n onChange={handleValueSelection}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_empty_selection_error_text') : undefined}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_single_selection_placeholder')}\n />\n )}\n </Flex>\n )}\n\n {/* Value input */}\n {hasProp(rhs, 'value') && !hasProp(rhs, 'dateFunction') && (\n <Flex item={{ grow: 1 }}>\n {fieldType === 'TEXT' && useValueSelector && (\n <ValueSelector\n parameters={parameters}\n mode='single-select'\n values={rhs.value.toString()}\n selectedField={matchingField}\n comparator={comparator}\n rhs={rhs}\n onChange={handleValueSelection}\n status={showError || apiError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : apiError}\n setApiError={setApiError}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_single_selection_placeholder')}\n />\n )}\n\n {fieldType === 'TEXT' && !useValueSelector && (\n <Input\n value={rhs.value.toString()}\n onChange={handleValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('empty_value') : undefined}\n name='rhs-text-literal-input'\n label={t('condition_builder_value_label')}\n />\n )}\n\n {(fieldType === 'DECIMAL' || fieldType === 'INTEGER') && (\n <NumericInput\n rhs={rhs}\n onChange={onChange}\n allowDecimal={fieldType !== 'INTEGER'}\n status={showError ? 'error' : undefined}\n unit={fieldUnit}\n />\n )}\n {fieldType === 'TIME_ONLY' && (\n <TimeInput\n value={rhs.value === '' ? undefined : rhs.value}\n withSeconds\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_time') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n label={t('condition_builder_value_label')}\n />\n )}\n {fieldType === 'DATE_ONLY' && (\n <DateInput\n value={rhs.value}\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date') : ''}\n label={t('condition_builder_value_label')}\n timeZone={timeZone}\n />\n )}\n {fieldType === 'DATE_TIME' && (\n <DateTimeInput\n value={rhs.value !== '' ? rhs.value : undefined}\n onChange={handleDateValueChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date') : ''}\n label={t('condition_builder_value_label')}\n timeZone={timeZone}\n />\n )}\n </Flex>\n )}\n\n {(fieldType === 'DATE_ONLY' || fieldType === 'DATE_TIME') &&\n (hasProp(rhs, 'relativeDate') || hasProp(rhs, 'dateFunction')) && (\n <Flex item={{ grow: 1 }}>\n <TimePeriodComp\n rhs={rhs}\n fieldType={fieldType}\n onChange={onChange}\n dateFunctionsList={dateFunctions ? dateFunctions[fieldType] : []}\n status={showError ? 'error' : undefined}\n />\n </Flex>\n )}\n\n {/* Multiple-values input */}\n {hasProp(rhs, 'values') && (\n <Flex item={{ grow: 1 }}>\n {useValueSelector && (\n <ValueSelector\n parameters={parameters}\n mode='multi-select'\n values={rhs.values.map(String)}\n selectedField={matchingField}\n comparator={comparator}\n rhs={rhs}\n onChange={handleValueSelection}\n status={showError || apiError ? 'error' : undefined}\n info={showError ? t('condition_builder_no_selection') : apiError}\n setApiError={setApiError}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_multi_selection_placeholder')}\n />\n )}\n {!useValueSelector && (\n <CSVInput\n rhs={rhs}\n field={matchingField}\n onChange={onChange}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_values') : undefined}\n label={t('condition_builder_value_label')}\n placeholder={t('condition_builder_enter_csv_placeholder')}\n />\n )}\n </Flex>\n )}\n\n {hasProp(rhs, 'start') && (\n <Flex item={{ grow: 1 }}>\n {(fieldType === 'DECIMAL' || fieldType === 'INTEGER') && (\n <NumericRangeInput\n label={t('condition_builder_value_label')}\n rhs={{ start: rhs.start.toString(), end: rhs.end.toString() }}\n onChange={handleNumberRangeValueChange}\n status={showError ? 'error' : undefined}\n allowDecimal={fieldType !== 'INTEGER'}\n unit={fieldUnit}\n />\n )}\n\n {fieldType === 'DATE_ONLY' && (\n <DateRangeInput\n value={{ start: rhs.start, end: rhs.end }}\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n timeZone={timeZone}\n />\n )}\n\n {fieldType === 'TIME_ONLY' && (\n <TimeRangeInput\n mode='time'\n value={{\n start: rhs.start === '' ? undefined : rhs.start,\n end: rhs.end === '' ? undefined : rhs.end\n }}\n withSeconds\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_time_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n />\n )}\n\n {fieldType === 'DATE_TIME' && (\n <TimeRangeInput\n mode='datetime'\n value={{ start: rhs.start, end: rhs.end }}\n onChange={handleDateRangeValueChange}\n label={t('condition_builder_value_label')}\n status={showError ? 'error' : undefined}\n info={showError ? t('condition_builder_invalid_date_range') : ''} // NOTE: Using empty quotes to disable the default info which indicates the format\n timeZone={timeZone}\n />\n )}\n </Flex>\n )}\n </Flex>\n );\n};\nexport default RhsControls;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionInput.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,+BAA+B,EAIhC,MAAM,yBAAyB,CAAC;AAuBjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA2ClE,QAAA,MAAM,cAAc,EAAE,+BAA+B,CAAC,mBAAmB,CAslBxE,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ConditionInput.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAEV,+BAA+B,EAIhC,MAAM,yBAAyB,CAAC;AAuBjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA2ClE,QAAA,MAAM,cAAc,EAAE,+BAA+B,CAAC,mBAAmB,CAsnBxE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useState, useEffect, useMemo, useRef, useCallback } from 'react';
3
3
  import { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';
4
- import { CompositeInput, hasProp, Input, useI18n, useConfiguration, DateRangeInput, TimeRangeInput, useUID, useAfterInitialEffect, ComboBox, Icon } from '@pega/cosmos-react-core';
4
+ import { CompositeInput, hasProp, isInstance, Input, useI18n, useConfiguration, DateRangeInput, TimeRangeInput, useUID, useAfterInitialEffect, ComboBox, Icon } from '@pega/cosmos-react-core';
5
5
  import { getItem } from '../ConditionBuilder/core/utils';
6
6
  import AtomicCondition, { getInitConditionForLhs, isValidCondition } from '../ConditionBuilder/AtomicCondition';
7
7
  import formatCondition from '../ConditionBuilder/core/formatter';
@@ -41,6 +41,7 @@ const dateFunctions = {
41
41
  };
42
42
  const ConditionInput = forwardRef(function ConditionInput({ field: fieldProp, condition: conditionProp, label, mode, onChange, flat = false, fields: fieldsProp, timeZone }, ref) {
43
43
  const booleanHandle = useRef(null);
44
+ const dateRangeHandle = useRef(null);
44
45
  const id = useUID();
45
46
  const t = useI18n();
46
47
  const { locale } = useConfiguration();
@@ -135,7 +136,7 @@ const ConditionInput = forwardRef(function ConditionInput({ field: fieldProp, co
135
136
  setInputValue(rhsValue);
136
137
  setRangeInputValue(rhsRangeValue);
137
138
  }, [conditionProp]);
138
- const handleBlur = () => {
139
+ const handleValueCommit = () => {
139
140
  const newValue = typeof inputValue === 'string' ? inputValue.trim() : inputValue;
140
141
  // trigger onChange only when value has changed
141
142
  if (!valuesEqual(rhsValue, newValue)) {
@@ -267,6 +268,13 @@ const ConditionInput = forwardRef(function ConditionInput({ field: fieldProp, co
267
268
  let defaultControl = null;
268
269
  const valueToSet = typeof inputValue === 'string' ? inputValue : undefined;
269
270
  const picklistSelectedField = useMemo(() => ({ id: fieldName, ...fieldProp }), [fieldName, fieldProp]);
271
+ const handleDateRangeInputKeyDown = (e) => {
272
+ if (e.key === 'Enter' && isInstance(e.target, HTMLElement) && !e.target.closest('button')) {
273
+ const value = dateRangeHandle.current?.getCurrentValue();
274
+ if (value)
275
+ handleDateRangeBlur(value);
276
+ }
277
+ };
270
278
  if (!showAdvanced) {
271
279
  switch (fieldType) {
272
280
  case 'INTEGER':
@@ -310,25 +318,36 @@ const ConditionInput = forwardRef(function ConditionInput({ field: fieldProp, co
310
318
  }, children: _jsx(Icon, { name: 'times' }) })) : undefined, handle: booleanHandle }));
311
319
  break;
312
320
  case 'DATE_ONLY':
313
- defaultControl = (_jsx(DateRangeInput, { id: id, ref: ref, label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, fromLabel: '', toLabel: '', status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, timeZone: timeZone }));
321
+ defaultControl = (_jsx(DateRangeInput, { id: id, ref: ref, label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, onFromInputKeyDown: handleDateRangeInputKeyDown, onToInputKeyDown: handleDateRangeInputKeyDown, fromLabel: '', toLabel: '', status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, timeZone: timeZone, handle: dateRangeHandle }));
314
322
  break;
315
323
  case 'TIME_ONLY':
316
- defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'time', label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, status: status, info: status === 'error' ? t('condition_builder_invalid_time_range') : undefined }));
324
+ defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'time', label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, onFromInputKeyDown: handleDateRangeInputKeyDown, onToInputKeyDown: handleDateRangeInputKeyDown, status: status, info: status === 'error' ? t('condition_builder_invalid_time_range') : undefined, handle: dateRangeHandle }));
317
325
  break;
318
326
  case 'DATE_TIME':
319
- defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'datetime', label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, timeZone: timeZone }));
327
+ defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'datetime', label: label, labelHidden: flat, value: rangeInputValue, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, onFromInputKeyDown: handleDateRangeInputKeyDown, onToInputKeyDown: handleDateRangeInputKeyDown, status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, timeZone: timeZone, handle: dateRangeHandle }));
320
328
  break;
321
329
  case 'PICKLIST':
322
330
  defaultControl = (_jsx(ValueSelector, { label: flat ? undefined : label, mode: 'multi-select', placeholder: t('any'), values: inputValue ?? [], selectedField: picklistSelectedField, comparator: condition?.comparator ?? defaultComparators[fieldType], onChange: value => {
323
331
  setInputValue(value.length > 0 ? value : undefined);
324
- }, onBlur: handleBlur, parameters: [], rhs: { values: [] }, ...(!flat && { onClear: clear }) }));
332
+ }, onBlur: handleValueCommit, parameters: [], rhs: { values: [] }, onKeyDown: e => {
333
+ if (e.key === 'Enter' &&
334
+ isInstance(e.target, HTMLElement) &&
335
+ e.target.getAttribute('aria-expanded') === 'false' &&
336
+ !e.target.closest('button')) {
337
+ handleValueCommit();
338
+ }
339
+ }, ...(!flat && { onClear: clear }) }));
325
340
  break;
326
341
  case 'TEXT':
327
342
  case 'EMAIL':
328
343
  case 'URL':
329
344
  case 'PHONE':
330
345
  default:
331
- defaultControl = (_jsx(Input, { id: id, ref: ref, label: label, labelHidden: flat, placeholder: t('any'), value: valueToSet, onChange: (e) => setInputValue(e.target.value), onBlur: handleBlur }));
346
+ defaultControl = (_jsx(Input, { id: id, ref: ref, label: label, labelHidden: flat, placeholder: t('any'), value: valueToSet, onChange: (e) => setInputValue(e.target.value), onBlur: handleValueCommit, onKeyDown: e => {
347
+ if (e.key === 'Enter') {
348
+ handleValueCommit();
349
+ }
350
+ } }));
332
351
  break;
333
352
  }
334
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionInput.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState, useEffect, useMemo, useRef, useCallback } from 'react';\nimport type { Ref, PropsWithoutRef, ChangeEvent, ComponentProps } from 'react';\n\nimport type { ComboBoxHandleValue } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\nimport {\n CompositeInput,\n hasProp,\n Input,\n useI18n,\n useConfiguration,\n DateRangeInput,\n TimeRangeInput,\n useUID,\n useAfterInitialEffect,\n ComboBox,\n Icon\n} from '@pega/cosmos-react-core';\nimport type {\n CompositeInputProps,\n ForwardRefForwardPropsComponent,\n FormControlProps,\n HandleValue,\n MenuItemProps\n} from '@pega/cosmos-react-core';\nimport type {\n DateRangeCallbackParameter,\n DateTimeCallbackParameter\n} from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\n\nimport type { ComparatorsByType, RHSType } from '../ConditionBuilder/core/types';\nimport { getItem } from '../ConditionBuilder/core/utils';\nimport AtomicCondition, {\n getInitConditionForLhs,\n isValidCondition\n} from '../ConditionBuilder/AtomicCondition';\nimport formatCondition from '../ConditionBuilder/core/formatter';\nimport type {\n DateFunctionsByType,\n Field,\n LeafCondition,\n ReferenceValue\n} from '../ConditionBuilder/ConditionBuilder.types';\nimport ValueSelector from '../ConditionBuilder/RhsControls/ValueSelector';\nimport { truncateISODateString } from '../ConditionBuilder/RhsControls';\nimport { NumericRangeInput } from '../ConditionBuilder/RhsControls/NumericRangeInput';\n\nimport type { ConditionInputProps } from './ConditionInput.types';\nimport { StyledVerticalAtomicCondition, StyledVerticalFieldGroup } from './ConditionInput.styles';\nimport {\n basicFieldMap,\n defaultComparators,\n valuesEqual,\n rangeValuesEqual,\n conditionsEqual,\n possibleFieldValuesToConditionFieldValues\n} from './utils';\n\nconst isDateValid = (dateTimeParam: DateTimeCallbackParameter) => {\n return dateTimeParam.valueAsISOString && !dateTimeParam.state;\n};\n\nconst validRhsTypes = new Set<RHSType>(['LITERAL', 'RELATIVE_DATE', 'DATE_FUNCTION']);\n\nconst dateFunctions: DateFunctionsByType = {\n DATE_TIME: [\n 'YEARS',\n 'QUARTERS',\n 'MONTHS',\n 'WEEKS',\n 'DAYS',\n 'HOURS',\n 'MINUTES',\n 'SECONDS',\n 'MONTHS_OF_YEAR',\n 'DAYS_OF_MONTH',\n 'DAYS_OF_WEEK',\n 'HOURS_OF_DAY'\n ],\n DATE_ONLY: [\n 'YEARS',\n 'QUARTERS',\n 'MONTHS',\n 'WEEKS',\n 'MONTHS_OF_YEAR',\n 'DAYS_OF_MONTH',\n 'DAYS_OF_WEEK'\n ]\n};\n\nconst ConditionInput: ForwardRefForwardPropsComponent<ConditionInputProps> = forwardRef(\n function ConditionInput(\n {\n field: fieldProp,\n condition: conditionProp,\n label,\n mode,\n onChange,\n flat = false,\n fields: fieldsProp,\n timeZone\n }: PropsWithoutRef<ConditionInputProps>,\n ref: ConditionInputProps['ref']\n ) {\n const booleanHandle = useRef<ComboBoxHandleValue>(null);\n const id = useUID();\n const t = useI18n();\n const { locale } = useConfiguration();\n const [collapsed, setCollapsed] = useState(false);\n\n const { name: fieldName, type: fieldType, unit: fieldUnit } = fieldProp;\n const basicType = basicFieldMap[fieldType] ?? fieldType;\n if (Array.isArray(fieldsProp)) validRhsTypes.add('FIELD');\n\n const field: Field = useMemo(\n () => ({\n id: fieldName,\n type: basicType,\n unit: fieldUnit,\n primary: label ?? fieldName,\n possibleValues: possibleFieldValuesToConditionFieldValues(fieldProp.possibleValues)\n }),\n [fieldName, basicType, fieldUnit, label, fieldProp.possibleValues]\n );\n\n const fields = useMemo(() => [field, ...(fieldsProp ?? [])], [field, fieldsProp]);\n\n const createConditionForDefaultMode = (value: string | string[]): LeafCondition => {\n let valueObj: LeafCondition['rhs'];\n if (Array.isArray(value)) valueObj = { values: value };\n else valueObj = { value };\n\n return {\n lhs: { field: fieldName },\n comparator: defaultComparators[fieldType],\n rhs: valueObj\n };\n };\n\n const convertDateTimeValue = (range: DateRangeCallbackParameter) => {\n let start;\n let end;\n if (!range.start && !range.end) return undefined;\n\n const truncatedStartValue = truncateISODateString(\n range.start.valueAsISOString ?? '',\n basicType\n );\n const truncatedEndValue = truncateISODateString(range.end.valueAsISOString ?? '', basicType);\n\n if (isDateValid(range.start)) {\n start = truncatedStartValue;\n } else {\n start = Number.isNaN(range.start.valueAsTimestamp) ? NaN : undefined;\n }\n\n if (isDateValid(range.end)) {\n end = truncatedEndValue;\n } else {\n end = Number.isNaN(range.end.valueAsTimestamp) ? NaN : undefined;\n }\n\n return { start, end };\n };\n\n const createConditionForRange = (\n value:\n | {\n start: string | number | undefined;\n end: string | number | undefined;\n }\n | undefined\n ): LeafCondition | undefined => {\n if (!value || (value.start === undefined && value.end === undefined)) return;\n\n return {\n lhs: { field: fieldName },\n comparator: defaultComparators[fieldType],\n // undefined checked before, type added to satisfy typescript\n rhs: { ...value } as { start: string | number; end: string | number }\n };\n };\n\n const validComparators: ComparatorsByType[] | undefined =\n fieldType === 'PICKLIST' ? [{ type: 'TEXT', comparators: ['IN'] }] : undefined;\n\n const condition =\n conditionProp ??\n (fieldType === 'BOOLEAN'\n ? undefined\n : getInitConditionForLhs(\n { field: fieldName },\n fields,\n new Set(['LITERAL']),\n validComparators\n ));\n\n const [newCondition, setNewCondition] = useState<LeafCondition | undefined>(condition);\n\n // holds current status of condition to control if invalid values are kept in forms and errors are displaying\n const newConditionStatus = useRef<'error' | undefined>(undefined);\n\n // status of the form control\n const [status, setStatus] = useState<FormControlProps['status']>(undefined);\n\n let rhsValue: string | string[] | undefined = fieldType === 'PICKLIST' ? [] : undefined;\n let rhsRangeValue:\n | { start: string | number | undefined; end: string | number | undefined }\n | undefined;\n\n if (condition?.rhs) {\n if (hasProp(condition.rhs, 'value')) {\n rhsValue = condition.rhs.value.toString();\n } else if (hasProp(condition.rhs, 'values')) {\n rhsValue = condition.rhs.values.map(String);\n } else if (hasProp(condition.rhs, 'start')) {\n rhsRangeValue = { start: condition.rhs.start, end: condition.rhs.end };\n }\n }\n\n const [inputValue, setInputValue] = useState(rhsValue);\n const [rangeInputValue, setRangeInputValue] = useState(rhsRangeValue);\n\n useEffect(() => {\n // condition state is updated only when condition status is valid\n // allows to keep invalid values in inputs\n if (!conditionProp) setStatus(undefined);\n if (!newConditionStatus.current) setNewCondition(condition);\n setInputValue(rhsValue);\n setRangeInputValue(rhsRangeValue);\n }, [conditionProp]);\n\n const handleBlur = () => {\n const newValue = typeof inputValue === 'string' ? inputValue.trim() : inputValue;\n // trigger onChange only when value has changed\n if (!valuesEqual(rhsValue, newValue)) {\n onChange(newValue ? createConditionForDefaultMode(newValue) : undefined);\n }\n };\n\n const handleRangeUpdate = (newRangeValue?: {\n start: string | number | undefined;\n end: string | number | undefined;\n }) => {\n // trigger onChange only when value has changed\n if (!rangeValuesEqual(rhsRangeValue, newRangeValue)) {\n onChange(createConditionForRange(newRangeValue));\n }\n };\n\n const handleRangeBlur = (newRangeValue?: {\n start: number | undefined;\n end: number | undefined;\n }) => {\n // if both values are undefined, condition is treated as undefined\n // if only one value is undefined, condition is treated as invalid\n const start = newRangeValue?.start;\n const end = newRangeValue?.end;\n\n const bothUndefined = start === undefined && end === undefined;\n const oneDefined =\n (start !== undefined && end === undefined) || (start === undefined && end !== undefined);\n const bothDefinedAndInverted =\n typeof start === 'number' && typeof end === 'number' && start > end;\n\n if (!bothUndefined && (oneDefined || bothDefinedAndInverted)) {\n setStatus('error');\n } else {\n setStatus(undefined);\n }\n handleRangeUpdate(newRangeValue);\n };\n\n const handleDateRangeBlur = (newRangeValue: DateRangeCallbackParameter) => {\n // if both timestamps are undefined, condition is treated as undefined\n // if only one value is undefined, or any of them is invalid, then condition is treated as invalid\n const bothUndefined =\n newRangeValue.start.valueAsTimestamp === undefined &&\n newRangeValue.end.valueAsTimestamp === undefined;\n if (\n (!bothUndefined &&\n (newRangeValue.start.valueAsTimestamp !== undefined ||\n newRangeValue.end.valueAsTimestamp !== undefined) &&\n (!isDateValid(newRangeValue.start) || !isDateValid(newRangeValue.end))) ||\n (newRangeValue.start.valueAsTimestamp !== undefined &&\n newRangeValue.end.valueAsTimestamp !== undefined &&\n newRangeValue.start.valueAsTimestamp > newRangeValue.end.valueAsTimestamp)\n ) {\n setStatus('error');\n } else {\n setStatus(undefined);\n }\n\n handleRangeUpdate(convertDateTimeValue(newRangeValue));\n };\n\n const onBooleanChange = useCallback(\n (value?: boolean) => {\n const updatedCondition: LeafCondition | undefined =\n value === undefined\n ? undefined\n : {\n lhs: { field: fieldName },\n comparator: value ? 'IS_TRUE' : 'IS_FALSE'\n };\n onChange(updatedCondition);\n },\n [fieldName, onChange]\n );\n\n const clearHandle = useRef<HandleValue>(null);\n\n const clear = () => {\n onChange(undefined);\n setNewCondition(undefined);\n setRangeInputValue(undefined);\n setInputValue(undefined);\n newConditionStatus.current = undefined;\n setStatus(undefined);\n if (clearHandle.current) clearHandle.current.clear();\n };\n\n useAfterInitialEffect(clear, [mode, fieldType]);\n\n const handleDateRangeValueChange = (value: DateRangeCallbackParameter) => {\n setRangeInputValue({\n start: value.start.valueAsTimestamp,\n end: value.end.valueAsTimestamp\n });\n };\n\n const showAdvanced = mode === 'advanced' && fieldType !== 'BOOLEAN';\n const [formattedCondition, setFormattedCondition] = useState<string | undefined>();\n\n useEffect(() => {\n if (!conditionProp || !showAdvanced || flat) {\n setFormattedCondition(undefined);\n return;\n }\n\n let cancelled = false;\n\n const format = (resolvedCondition: LeafCondition) =>\n formatCondition({ condition: resolvedCondition }, fields, t, { locale, omitLhs: true });\n\n const lhsField = getItem(fields, fieldName);\n const { rhs } = conditionProp;\n\n if (rhs && !hasProp(rhs, 'dateFunction') && lhsField && 'possibleValues' in lhsField) {\n const { possibleValues } = lhsField;\n const isMulti = hasProp(rhs, 'values');\n const isSingle = hasProp(rhs, 'value');\n\n if (isMulti || isSingle) {\n const ids = isMulti ? rhs.values.map(String) : [String(rhs.value)];\n\n const applyLabels = (labels: string[]) => {\n if (cancelled) return;\n const updatedRhs = isMulti ? { ...rhs, values: labels } : { ...rhs, value: labels[0] };\n setFormattedCondition(format({ ...conditionProp, rhs: updatedRhs }));\n };\n\n if (typeof possibleValues === 'function') {\n possibleValues({ lhs: lhsField, ids })\n .then(response => {\n applyLabels(\n ids.map(reqId => {\n const match = response.find(\n (opt): opt is ReferenceValue =>\n typeof opt === 'object' && opt.id === reqId && 'primary' in opt\n );\n return match?.primary ?? reqId;\n })\n );\n })\n .catch(() => {\n if (!cancelled) setFormattedCondition(format(conditionProp));\n });\n return () => {\n cancelled = true;\n };\n }\n\n if (Array.isArray(possibleValues)) {\n const labels = ids.map(valueId => {\n const match = possibleValues.find(\n (opt): opt is ReferenceValue =>\n typeof opt === 'object' && opt.id === valueId && 'primary' in opt\n );\n return match?.primary ?? valueId;\n });\n applyLabels(labels);\n return;\n }\n }\n }\n\n setFormattedCondition(format(conditionProp));\n return () => {\n cancelled = true;\n };\n }, [conditionProp, showAdvanced, flat, fields, fieldName]);\n\n let defaultControl: JSX.Element | null = null;\n\n const valueToSet = typeof inputValue === 'string' ? inputValue : undefined;\n\n const picklistSelectedField = useMemo(\n () => ({ id: fieldName, ...fieldProp }),\n [fieldName, fieldProp]\n );\n\n if (!showAdvanced) {\n switch (fieldType) {\n case 'INTEGER':\n case 'DECIMAL':\n case 'PERCENTAGE':\n case 'CURRENCY':\n defaultControl = (\n <NumericRangeInput\n label={label}\n labelHidden={flat}\n ref={ref as Ref<HTMLFieldSetElement>}\n rhs={{\n start: rangeInputValue?.start?.toString() ?? '',\n end: rangeInputValue?.end?.toString() ?? ''\n }}\n onChange={handleRangeBlur}\n allowDecimal={fieldType !== 'INTEGER'}\n status={status === 'error' ? 'error' : undefined}\n unit={fieldUnit}\n />\n );\n break;\n case 'BOOLEAN':\n defaultControl = (\n <ComboBox\n id={id}\n ref={ref as Ref<HTMLDivElement>}\n mode='single-select'\n label={label}\n labelHidden={flat}\n selected={{\n items:\n condition === undefined\n ? {\n id: 'any',\n text: t('any')\n }\n : {\n ...(condition?.comparator === 'IS_TRUE'\n ? { id: 'yes', text: t('yes') }\n : { id: 'no', text: t('no') })\n }\n }}\n menu={{\n items: [\n { id: 'any', primary: t('any') },\n { id: 'yes', primary: t('yes') },\n { id: 'no', primary: t('no') }\n ],\n onItemClick: (booleanId: MenuItemProps['id']) => {\n if (booleanId === 'any') {\n onBooleanChange();\n } else {\n onBooleanChange(booleanId === 'yes');\n }\n }\n }}\n status={status}\n actions={\n !flat ? (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n clear();\n booleanHandle.current?.focusInput();\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n ) : undefined\n }\n handle={booleanHandle}\n />\n );\n break;\n case 'DATE_ONLY':\n defaultControl = (\n <DateRangeInput\n id={id}\n ref={ref}\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n fromLabel=''\n toLabel=''\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_date_range') : undefined}\n timeZone={timeZone}\n />\n );\n break;\n case 'TIME_ONLY':\n defaultControl = (\n <TimeRangeInput\n id={id}\n ref={ref}\n mode='time'\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_time_range') : undefined}\n />\n );\n break;\n case 'DATE_TIME':\n defaultControl = (\n <TimeRangeInput\n id={id}\n ref={ref}\n mode='datetime'\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_date_range') : undefined}\n timeZone={timeZone}\n />\n );\n break;\n case 'PICKLIST':\n defaultControl = (\n <ValueSelector\n label={flat ? undefined : label}\n mode='multi-select'\n placeholder={t('any')}\n values={inputValue ?? []}\n selectedField={picklistSelectedField}\n comparator={condition?.comparator ?? defaultComparators[fieldType]}\n onChange={value => {\n setInputValue(value.length > 0 ? value : undefined);\n }}\n onBlur={handleBlur}\n parameters={[]}\n rhs={{ values: [] }}\n {...(!flat && { onClear: clear })}\n />\n );\n break;\n case 'TEXT':\n case 'EMAIL':\n case 'URL':\n case 'PHONE':\n default:\n defaultControl = (\n <Input\n id={id}\n ref={ref as Ref<HTMLInputElement>}\n label={label}\n labelHidden={flat}\n placeholder={t('any')}\n value={valueToSet}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e.target.value)}\n onBlur={handleBlur}\n />\n );\n break;\n }\n }\n\n const dialog: CompositeInputProps<ComponentProps<typeof AtomicCondition>>['dialog'] = {\n renderer: AtomicCondition,\n rendererProps: {\n condition:\n newCondition ??\n getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL'])),\n fields,\n onChange: setNewCondition,\n itemDirection: 'column',\n lhsMode: 'hidden',\n validRhsTypes,\n dateFunctions,\n indicateErrors: !!status,\n timeZone\n },\n onCancel: ({ close }) => {\n setNewCondition(condition);\n setStatus(undefined);\n close();\n },\n onApply: ({ close }) => {\n setStatus(undefined);\n const rhs = newCondition?.rhs;\n\n const isEmpty =\n rhs &&\n ((Object.hasOwn(rhs, 'start') &&\n Object.hasOwn(rhs, 'end') &&\n 'start' in rhs &&\n rhs.start === '' &&\n rhs.end === '') ||\n (hasProp(rhs, 'value') && rhs.value === '') ||\n (hasProp(rhs, 'values') && Array.isArray(rhs.values) && rhs.values.length === 0));\n\n if (!newCondition || isEmpty) {\n setNewCondition(undefined);\n onChange(undefined);\n close();\n return;\n }\n // Avoid trimming values if they did not change.\n if (isValidCondition(newCondition, fields, !conditionsEqual(condition, newCondition))) {\n onChange(newCondition);\n close();\n } else {\n setStatus('error');\n }\n }\n };\n\n if (flat) {\n return showAdvanced ? (\n <StyledVerticalAtomicCondition\n collapsed={collapsed}\n onToggleCollapsed={() => setCollapsed(cur => !cur)}\n condition={\n newCondition ??\n getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL']))\n }\n onBlur={(value: LeafCondition) => {\n // comparing with conditionProp as it is not initialized as default condition\n if (!conditionsEqual(value, conditionProp)) {\n onChange(value);\n }\n\n setStatus(newConditionStatus.current);\n }}\n onChange={(value: LeafCondition, conditionStatus?: 'error') => {\n newConditionStatus.current = conditionStatus;\n setNewCondition(value);\n }}\n fields={fields}\n itemDirection='column'\n lhsMode='label'\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n indicateErrors={status === 'error'}\n ref={ref as Ref<HTMLDivElement>}\n timeZone={timeZone}\n actions={[{ id: 'clear', text: t('clear'), onClick: clear }]}\n />\n ) : (\n <StyledVerticalFieldGroup\n name={label}\n collapsed={collapsed}\n onToggleCollapsed={() => setCollapsed(cur => !cur)}\n actions={[{ id: 'clear', text: t('clear'), onClick: clear }]}\n >\n {defaultControl}\n </StyledVerticalFieldGroup>\n );\n }\n\n if (showAdvanced) {\n return (\n <CompositeInput\n dialog={dialog}\n label={label}\n placeholder={t('any')}\n value={formattedCondition}\n ref={ref as Ref<HTMLInputElement>}\n onClear={clear}\n />\n );\n }\n\n return defaultControl;\n }\n);\n\nexport default ConditionInput;\n"]}
1
+ {"version":3,"file":"ConditionInput.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useState, useEffect, useMemo, useRef, useCallback } from 'react';\nimport type { Ref, PropsWithoutRef, ChangeEvent, ComponentProps, KeyboardEvent } from 'react';\n\nimport type { TimeRangeInputHandleValue } from '@pega/cosmos-react-core/lib/components/DateTime/Input/TimeRangeInput';\nimport type { DateRangeInputHandleValue } from '@pega/cosmos-react-core/lib/components/DateTime/Input/DateRangeInput';\nimport type { ComboBoxHandleValue } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\nimport { StyledClearButton } from '@pega/cosmos-react-core/lib/components/CompositeInput/CompositeInput.styles';\nimport {\n CompositeInput,\n hasProp,\n isInstance,\n Input,\n useI18n,\n useConfiguration,\n DateRangeInput,\n TimeRangeInput,\n useUID,\n useAfterInitialEffect,\n ComboBox,\n Icon\n} from '@pega/cosmos-react-core';\nimport type {\n CompositeInputProps,\n ForwardRefForwardPropsComponent,\n FormControlProps,\n HandleValue,\n MenuItemProps\n} from '@pega/cosmos-react-core';\nimport type {\n DateRangeCallbackParameter,\n DateTimeCallbackParameter\n} from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\n\nimport type { ComparatorsByType, RHSType } from '../ConditionBuilder/core/types';\nimport { getItem } from '../ConditionBuilder/core/utils';\nimport AtomicCondition, {\n getInitConditionForLhs,\n isValidCondition\n} from '../ConditionBuilder/AtomicCondition';\nimport formatCondition from '../ConditionBuilder/core/formatter';\nimport type {\n DateFunctionsByType,\n Field,\n LeafCondition,\n ReferenceValue\n} from '../ConditionBuilder/ConditionBuilder.types';\nimport ValueSelector from '../ConditionBuilder/RhsControls/ValueSelector';\nimport { truncateISODateString } from '../ConditionBuilder/RhsControls';\nimport { NumericRangeInput } from '../ConditionBuilder/RhsControls/NumericRangeInput';\n\nimport type { ConditionInputProps } from './ConditionInput.types';\nimport { StyledVerticalAtomicCondition, StyledVerticalFieldGroup } from './ConditionInput.styles';\nimport {\n basicFieldMap,\n defaultComparators,\n valuesEqual,\n rangeValuesEqual,\n conditionsEqual,\n possibleFieldValuesToConditionFieldValues\n} from './utils';\n\nconst isDateValid = (dateTimeParam: DateTimeCallbackParameter) => {\n return dateTimeParam.valueAsISOString && !dateTimeParam.state;\n};\n\nconst validRhsTypes = new Set<RHSType>(['LITERAL', 'RELATIVE_DATE', 'DATE_FUNCTION']);\n\nconst dateFunctions: DateFunctionsByType = {\n DATE_TIME: [\n 'YEARS',\n 'QUARTERS',\n 'MONTHS',\n 'WEEKS',\n 'DAYS',\n 'HOURS',\n 'MINUTES',\n 'SECONDS',\n 'MONTHS_OF_YEAR',\n 'DAYS_OF_MONTH',\n 'DAYS_OF_WEEK',\n 'HOURS_OF_DAY'\n ],\n DATE_ONLY: [\n 'YEARS',\n 'QUARTERS',\n 'MONTHS',\n 'WEEKS',\n 'MONTHS_OF_YEAR',\n 'DAYS_OF_MONTH',\n 'DAYS_OF_WEEK'\n ]\n};\n\nconst ConditionInput: ForwardRefForwardPropsComponent<ConditionInputProps> = forwardRef(\n function ConditionInput(\n {\n field: fieldProp,\n condition: conditionProp,\n label,\n mode,\n onChange,\n flat = false,\n fields: fieldsProp,\n timeZone\n }: PropsWithoutRef<ConditionInputProps>,\n ref: ConditionInputProps['ref']\n ) {\n const booleanHandle = useRef<ComboBoxHandleValue>(null);\n const dateRangeHandle = useRef<DateRangeInputHandleValue | TimeRangeInputHandleValue>(null);\n const id = useUID();\n const t = useI18n();\n const { locale } = useConfiguration();\n const [collapsed, setCollapsed] = useState(false);\n\n const { name: fieldName, type: fieldType, unit: fieldUnit } = fieldProp;\n const basicType = basicFieldMap[fieldType] ?? fieldType;\n if (Array.isArray(fieldsProp)) validRhsTypes.add('FIELD');\n\n const field: Field = useMemo(\n () => ({\n id: fieldName,\n type: basicType,\n unit: fieldUnit,\n primary: label ?? fieldName,\n possibleValues: possibleFieldValuesToConditionFieldValues(fieldProp.possibleValues)\n }),\n [fieldName, basicType, fieldUnit, label, fieldProp.possibleValues]\n );\n\n const fields = useMemo(() => [field, ...(fieldsProp ?? [])], [field, fieldsProp]);\n\n const createConditionForDefaultMode = (value: string | string[]): LeafCondition => {\n let valueObj: LeafCondition['rhs'];\n if (Array.isArray(value)) valueObj = { values: value };\n else valueObj = { value };\n\n return {\n lhs: { field: fieldName },\n comparator: defaultComparators[fieldType],\n rhs: valueObj\n };\n };\n\n const convertDateTimeValue = (range: DateRangeCallbackParameter) => {\n let start;\n let end;\n if (!range.start && !range.end) return undefined;\n\n const truncatedStartValue = truncateISODateString(\n range.start.valueAsISOString ?? '',\n basicType\n );\n const truncatedEndValue = truncateISODateString(range.end.valueAsISOString ?? '', basicType);\n\n if (isDateValid(range.start)) {\n start = truncatedStartValue;\n } else {\n start = Number.isNaN(range.start.valueAsTimestamp) ? NaN : undefined;\n }\n\n if (isDateValid(range.end)) {\n end = truncatedEndValue;\n } else {\n end = Number.isNaN(range.end.valueAsTimestamp) ? NaN : undefined;\n }\n\n return { start, end };\n };\n\n const createConditionForRange = (\n value:\n | {\n start: string | number | undefined;\n end: string | number | undefined;\n }\n | undefined\n ): LeafCondition | undefined => {\n if (!value || (value.start === undefined && value.end === undefined)) return;\n\n return {\n lhs: { field: fieldName },\n comparator: defaultComparators[fieldType],\n // undefined checked before, type added to satisfy typescript\n rhs: { ...value } as { start: string | number; end: string | number }\n };\n };\n\n const validComparators: ComparatorsByType[] | undefined =\n fieldType === 'PICKLIST' ? [{ type: 'TEXT', comparators: ['IN'] }] : undefined;\n\n const condition =\n conditionProp ??\n (fieldType === 'BOOLEAN'\n ? undefined\n : getInitConditionForLhs(\n { field: fieldName },\n fields,\n new Set(['LITERAL']),\n validComparators\n ));\n\n const [newCondition, setNewCondition] = useState<LeafCondition | undefined>(condition);\n\n // holds current status of condition to control if invalid values are kept in forms and errors are displaying\n const newConditionStatus = useRef<'error' | undefined>(undefined);\n\n // status of the form control\n const [status, setStatus] = useState<FormControlProps['status']>(undefined);\n\n let rhsValue: string | string[] | undefined = fieldType === 'PICKLIST' ? [] : undefined;\n let rhsRangeValue:\n | { start: string | number | undefined; end: string | number | undefined }\n | undefined;\n\n if (condition?.rhs) {\n if (hasProp(condition.rhs, 'value')) {\n rhsValue = condition.rhs.value.toString();\n } else if (hasProp(condition.rhs, 'values')) {\n rhsValue = condition.rhs.values.map(String);\n } else if (hasProp(condition.rhs, 'start')) {\n rhsRangeValue = { start: condition.rhs.start, end: condition.rhs.end };\n }\n }\n\n const [inputValue, setInputValue] = useState(rhsValue);\n const [rangeInputValue, setRangeInputValue] = useState(rhsRangeValue);\n\n useEffect(() => {\n // condition state is updated only when condition status is valid\n // allows to keep invalid values in inputs\n if (!conditionProp) setStatus(undefined);\n if (!newConditionStatus.current) setNewCondition(condition);\n setInputValue(rhsValue);\n setRangeInputValue(rhsRangeValue);\n }, [conditionProp]);\n\n const handleValueCommit = () => {\n const newValue = typeof inputValue === 'string' ? inputValue.trim() : inputValue;\n // trigger onChange only when value has changed\n if (!valuesEqual(rhsValue, newValue)) {\n onChange(newValue ? createConditionForDefaultMode(newValue) : undefined);\n }\n };\n\n const handleRangeUpdate = (newRangeValue?: {\n start: string | number | undefined;\n end: string | number | undefined;\n }) => {\n // trigger onChange only when value has changed\n if (!rangeValuesEqual(rhsRangeValue, newRangeValue)) {\n onChange(createConditionForRange(newRangeValue));\n }\n };\n\n const handleRangeBlur = (newRangeValue?: {\n start: number | undefined;\n end: number | undefined;\n }) => {\n // if both values are undefined, condition is treated as undefined\n // if only one value is undefined, condition is treated as invalid\n const start = newRangeValue?.start;\n const end = newRangeValue?.end;\n\n const bothUndefined = start === undefined && end === undefined;\n const oneDefined =\n (start !== undefined && end === undefined) || (start === undefined && end !== undefined);\n const bothDefinedAndInverted =\n typeof start === 'number' && typeof end === 'number' && start > end;\n\n if (!bothUndefined && (oneDefined || bothDefinedAndInverted)) {\n setStatus('error');\n } else {\n setStatus(undefined);\n }\n handleRangeUpdate(newRangeValue);\n };\n\n const handleDateRangeBlur = (newRangeValue: DateRangeCallbackParameter) => {\n // if both timestamps are undefined, condition is treated as undefined\n // if only one value is undefined, or any of them is invalid, then condition is treated as invalid\n const bothUndefined =\n newRangeValue.start.valueAsTimestamp === undefined &&\n newRangeValue.end.valueAsTimestamp === undefined;\n if (\n (!bothUndefined &&\n (newRangeValue.start.valueAsTimestamp !== undefined ||\n newRangeValue.end.valueAsTimestamp !== undefined) &&\n (!isDateValid(newRangeValue.start) || !isDateValid(newRangeValue.end))) ||\n (newRangeValue.start.valueAsTimestamp !== undefined &&\n newRangeValue.end.valueAsTimestamp !== undefined &&\n newRangeValue.start.valueAsTimestamp > newRangeValue.end.valueAsTimestamp)\n ) {\n setStatus('error');\n } else {\n setStatus(undefined);\n }\n\n handleRangeUpdate(convertDateTimeValue(newRangeValue));\n };\n\n const onBooleanChange = useCallback(\n (value?: boolean) => {\n const updatedCondition: LeafCondition | undefined =\n value === undefined\n ? undefined\n : {\n lhs: { field: fieldName },\n comparator: value ? 'IS_TRUE' : 'IS_FALSE'\n };\n onChange(updatedCondition);\n },\n [fieldName, onChange]\n );\n\n const clearHandle = useRef<HandleValue>(null);\n\n const clear = () => {\n onChange(undefined);\n setNewCondition(undefined);\n setRangeInputValue(undefined);\n setInputValue(undefined);\n newConditionStatus.current = undefined;\n setStatus(undefined);\n if (clearHandle.current) clearHandle.current.clear();\n };\n\n useAfterInitialEffect(clear, [mode, fieldType]);\n\n const handleDateRangeValueChange = (value: DateRangeCallbackParameter) => {\n setRangeInputValue({\n start: value.start.valueAsTimestamp,\n end: value.end.valueAsTimestamp\n });\n };\n\n const showAdvanced = mode === 'advanced' && fieldType !== 'BOOLEAN';\n const [formattedCondition, setFormattedCondition] = useState<string | undefined>();\n\n useEffect(() => {\n if (!conditionProp || !showAdvanced || flat) {\n setFormattedCondition(undefined);\n return;\n }\n\n let cancelled = false;\n\n const format = (resolvedCondition: LeafCondition) =>\n formatCondition({ condition: resolvedCondition }, fields, t, { locale, omitLhs: true });\n\n const lhsField = getItem(fields, fieldName);\n const { rhs } = conditionProp;\n\n if (rhs && !hasProp(rhs, 'dateFunction') && lhsField && 'possibleValues' in lhsField) {\n const { possibleValues } = lhsField;\n const isMulti = hasProp(rhs, 'values');\n const isSingle = hasProp(rhs, 'value');\n\n if (isMulti || isSingle) {\n const ids = isMulti ? rhs.values.map(String) : [String(rhs.value)];\n\n const applyLabels = (labels: string[]) => {\n if (cancelled) return;\n const updatedRhs = isMulti ? { ...rhs, values: labels } : { ...rhs, value: labels[0] };\n setFormattedCondition(format({ ...conditionProp, rhs: updatedRhs }));\n };\n\n if (typeof possibleValues === 'function') {\n possibleValues({ lhs: lhsField, ids })\n .then(response => {\n applyLabels(\n ids.map(reqId => {\n const match = response.find(\n (opt): opt is ReferenceValue =>\n typeof opt === 'object' && opt.id === reqId && 'primary' in opt\n );\n return match?.primary ?? reqId;\n })\n );\n })\n .catch(() => {\n if (!cancelled) setFormattedCondition(format(conditionProp));\n });\n return () => {\n cancelled = true;\n };\n }\n\n if (Array.isArray(possibleValues)) {\n const labels = ids.map(valueId => {\n const match = possibleValues.find(\n (opt): opt is ReferenceValue =>\n typeof opt === 'object' && opt.id === valueId && 'primary' in opt\n );\n return match?.primary ?? valueId;\n });\n applyLabels(labels);\n return;\n }\n }\n }\n\n setFormattedCondition(format(conditionProp));\n return () => {\n cancelled = true;\n };\n }, [conditionProp, showAdvanced, flat, fields, fieldName]);\n\n let defaultControl: JSX.Element | null = null;\n\n const valueToSet = typeof inputValue === 'string' ? inputValue : undefined;\n\n const picklistSelectedField = useMemo(\n () => ({ id: fieldName, ...fieldProp }),\n [fieldName, fieldProp]\n );\n\n const handleDateRangeInputKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && isInstance(e.target, HTMLElement) && !e.target.closest('button')) {\n const value = dateRangeHandle.current?.getCurrentValue();\n if (value) handleDateRangeBlur(value);\n }\n };\n\n if (!showAdvanced) {\n switch (fieldType) {\n case 'INTEGER':\n case 'DECIMAL':\n case 'PERCENTAGE':\n case 'CURRENCY':\n defaultControl = (\n <NumericRangeInput\n label={label}\n labelHidden={flat}\n ref={ref as Ref<HTMLFieldSetElement>}\n rhs={{\n start: rangeInputValue?.start?.toString() ?? '',\n end: rangeInputValue?.end?.toString() ?? ''\n }}\n onChange={handleRangeBlur}\n allowDecimal={fieldType !== 'INTEGER'}\n status={status === 'error' ? 'error' : undefined}\n unit={fieldUnit}\n />\n );\n break;\n case 'BOOLEAN':\n defaultControl = (\n <ComboBox\n id={id}\n ref={ref as Ref<HTMLDivElement>}\n mode='single-select'\n label={label}\n labelHidden={flat}\n selected={{\n items:\n condition === undefined\n ? {\n id: 'any',\n text: t('any')\n }\n : {\n ...(condition?.comparator === 'IS_TRUE'\n ? { id: 'yes', text: t('yes') }\n : { id: 'no', text: t('no') })\n }\n }}\n menu={{\n items: [\n { id: 'any', primary: t('any') },\n { id: 'yes', primary: t('yes') },\n { id: 'no', primary: t('no') }\n ],\n onItemClick: (booleanId: MenuItemProps['id']) => {\n if (booleanId === 'any') {\n onBooleanChange();\n } else {\n onBooleanChange(booleanId === 'yes');\n }\n }\n }}\n status={status}\n actions={\n !flat ? (\n <StyledClearButton\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n clear();\n booleanHandle.current?.focusInput();\n }}\n >\n <Icon name='times' />\n </StyledClearButton>\n ) : undefined\n }\n handle={booleanHandle}\n />\n );\n break;\n case 'DATE_ONLY':\n defaultControl = (\n <DateRangeInput\n id={id}\n ref={ref as Ref<HTMLDivElement>}\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n onFromInputKeyDown={handleDateRangeInputKeyDown}\n onToInputKeyDown={handleDateRangeInputKeyDown}\n fromLabel=''\n toLabel=''\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_date_range') : undefined}\n timeZone={timeZone}\n handle={dateRangeHandle}\n />\n );\n break;\n case 'TIME_ONLY':\n defaultControl = (\n <TimeRangeInput\n id={id}\n ref={ref as Ref<HTMLDivElement>}\n mode='time'\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n onFromInputKeyDown={handleDateRangeInputKeyDown}\n onToInputKeyDown={handleDateRangeInputKeyDown}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_time_range') : undefined}\n handle={dateRangeHandle}\n />\n );\n break;\n case 'DATE_TIME':\n defaultControl = (\n <TimeRangeInput\n id={id}\n ref={ref as Ref<HTMLDivElement>}\n mode='datetime'\n label={label}\n labelHidden={flat}\n value={rangeInputValue}\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n onFromInputKeyDown={handleDateRangeInputKeyDown}\n onToInputKeyDown={handleDateRangeInputKeyDown}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_date_range') : undefined}\n timeZone={timeZone}\n handle={dateRangeHandle}\n />\n );\n break;\n case 'PICKLIST':\n defaultControl = (\n <ValueSelector\n label={flat ? undefined : label}\n mode='multi-select'\n placeholder={t('any')}\n values={inputValue ?? []}\n selectedField={picklistSelectedField}\n comparator={condition?.comparator ?? defaultComparators[fieldType]}\n onChange={value => {\n setInputValue(value.length > 0 ? value : undefined);\n }}\n onBlur={handleValueCommit}\n parameters={[]}\n rhs={{ values: [] }}\n onKeyDown={e => {\n if (\n e.key === 'Enter' &&\n isInstance(e.target, HTMLElement) &&\n e.target.getAttribute('aria-expanded') === 'false' &&\n !e.target.closest('button')\n ) {\n handleValueCommit();\n }\n }}\n {...(!flat && { onClear: clear })}\n />\n );\n break;\n case 'TEXT':\n case 'EMAIL':\n case 'URL':\n case 'PHONE':\n default:\n defaultControl = (\n <Input\n id={id}\n ref={ref as Ref<HTMLInputElement>}\n label={label}\n labelHidden={flat}\n placeholder={t('any')}\n value={valueToSet}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setInputValue(e.target.value)}\n onBlur={handleValueCommit}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n handleValueCommit();\n }\n }}\n />\n );\n break;\n }\n }\n\n const dialog: CompositeInputProps<ComponentProps<typeof AtomicCondition>>['dialog'] = {\n renderer: AtomicCondition,\n rendererProps: {\n condition:\n newCondition ??\n getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL'])),\n fields,\n onChange: setNewCondition,\n itemDirection: 'column',\n lhsMode: 'hidden',\n validRhsTypes,\n dateFunctions,\n indicateErrors: !!status,\n timeZone\n },\n onCancel: ({ close }) => {\n setNewCondition(condition);\n setStatus(undefined);\n close();\n },\n onApply: ({ close }) => {\n setStatus(undefined);\n const rhs = newCondition?.rhs;\n\n const isEmpty =\n rhs &&\n ((Object.hasOwn(rhs, 'start') &&\n Object.hasOwn(rhs, 'end') &&\n 'start' in rhs &&\n rhs.start === '' &&\n rhs.end === '') ||\n (hasProp(rhs, 'value') && rhs.value === '') ||\n (hasProp(rhs, 'values') && Array.isArray(rhs.values) && rhs.values.length === 0));\n\n if (!newCondition || isEmpty) {\n setNewCondition(undefined);\n onChange(undefined);\n close();\n return;\n }\n // Avoid trimming values if they did not change.\n if (isValidCondition(newCondition, fields, !conditionsEqual(condition, newCondition))) {\n onChange(newCondition);\n close();\n } else {\n setStatus('error');\n }\n }\n };\n\n if (flat) {\n return showAdvanced ? (\n <StyledVerticalAtomicCondition\n collapsed={collapsed}\n onToggleCollapsed={() => setCollapsed(cur => !cur)}\n condition={\n newCondition ??\n getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL']))\n }\n onBlur={(value: LeafCondition) => {\n // comparing with conditionProp as it is not initialized as default condition\n if (!conditionsEqual(value, conditionProp)) {\n onChange(value);\n }\n\n setStatus(newConditionStatus.current);\n }}\n onChange={(value: LeafCondition, conditionStatus?: 'error') => {\n newConditionStatus.current = conditionStatus;\n setNewCondition(value);\n }}\n fields={fields}\n itemDirection='column'\n lhsMode='label'\n validRhsTypes={validRhsTypes}\n dateFunctions={dateFunctions}\n indicateErrors={status === 'error'}\n ref={ref as Ref<HTMLDivElement>}\n timeZone={timeZone}\n actions={[{ id: 'clear', text: t('clear'), onClick: clear }]}\n />\n ) : (\n <StyledVerticalFieldGroup\n name={label}\n collapsed={collapsed}\n onToggleCollapsed={() => setCollapsed(cur => !cur)}\n actions={[{ id: 'clear', text: t('clear'), onClick: clear }]}\n >\n {defaultControl}\n </StyledVerticalFieldGroup>\n );\n }\n\n if (showAdvanced) {\n return (\n <CompositeInput\n dialog={dialog}\n label={label}\n placeholder={t('any')}\n value={formattedCondition}\n ref={ref as Ref<HTMLInputElement>}\n onClear={clear}\n />\n );\n }\n\n return defaultControl;\n }\n);\n\nexport default ConditionInput;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-condition-builder",
3
- "version": "10.0.0-build.1.9",
3
+ "version": "10.0.0-build.2.1",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": [
@@ -17,7 +17,7 @@
17
17
  "build": "tsc -b tsconfig.build.json"
18
18
  },
19
19
  "dependencies": {
20
- "@pega/cosmos-react-core": "10.0.0-build.1.9",
20
+ "@pega/cosmos-react-core": "10.0.0-build.2.1",
21
21
  "@types/react": "^17.0.62 || ^18.3.3",
22
22
  "@types/react-dom": "^17.0.20 || ^18.3.0",
23
23
  "dayjs": "^1.11.13",