@pega/cosmos-react-condition-builder 3.0.0-dev.27.1 → 3.0.0-dev.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/components/ConditionBuilder/AtomicCondition.d.ts +3 -1
  2. package/lib/components/ConditionBuilder/AtomicCondition.d.ts.map +1 -1
  3. package/lib/components/ConditionBuilder/AtomicCondition.js +6 -3
  4. package/lib/components/ConditionBuilder/AtomicCondition.js.map +1 -1
  5. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +3 -0
  6. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +1 -1
  7. package/lib/components/ConditionBuilder/ConditionBuilder.types.js.map +1 -1
  8. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.d.ts.map +1 -1
  9. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js +15 -6
  10. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js.map +1 -1
  11. package/lib/components/ConditionBuilder/RhsControls/index.d.ts +5 -2
  12. package/lib/components/ConditionBuilder/RhsControls/index.d.ts.map +1 -1
  13. package/lib/components/ConditionBuilder/RhsControls/index.js +61 -7
  14. package/lib/components/ConditionBuilder/RhsControls/index.js.map +1 -1
  15. package/lib/components/ConditionBuilder/core/comparators.d.ts.map +1 -1
  16. package/lib/components/ConditionBuilder/core/comparators.js +4 -0
  17. package/lib/components/ConditionBuilder/core/comparators.js.map +1 -1
  18. package/lib/components/ConditionBuilder/core/evaluator.d.ts.map +1 -1
  19. package/lib/components/ConditionBuilder/core/evaluator.js +4 -1
  20. package/lib/components/ConditionBuilder/core/evaluator.js.map +1 -1
  21. package/lib/components/ConditionBuilder/core/formatter.d.ts.map +1 -1
  22. package/lib/components/ConditionBuilder/core/formatter.js +53 -47
  23. package/lib/components/ConditionBuilder/core/formatter.js.map +1 -1
  24. package/lib/components/ConditionBuilder/core/transformer.d.ts.map +1 -1
  25. package/lib/components/ConditionBuilder/core/transformer.js +34 -0
  26. package/lib/components/ConditionBuilder/core/transformer.js.map +1 -1
  27. package/lib/components/ConditionBuilder/core/types.d.ts +1 -1
  28. package/lib/components/ConditionBuilder/core/types.d.ts.map +1 -1
  29. package/lib/components/ConditionBuilder/core/types.js.map +1 -1
  30. package/lib/components/ConditionInput/ConditionInput.d.ts.map +1 -1
  31. package/lib/components/ConditionInput/ConditionInput.js +75 -19
  32. package/lib/components/ConditionInput/ConditionInput.js.map +1 -1
  33. package/lib/components/ConditionInput/ConditionInput.styles.d.ts +1 -1
  34. package/lib/components/ConditionInput/ConditionInput.styles.d.ts.map +1 -1
  35. package/lib/components/ConditionInput/ConditionInput.styles.js +2 -2
  36. package/lib/components/ConditionInput/ConditionInput.styles.js.map +1 -1
  37. package/lib/components/ConditionInput/utils.d.ts +7 -0
  38. package/lib/components/ConditionInput/utils.d.ts.map +1 -1
  39. package/lib/components/ConditionInput/utils.js +16 -7
  40. package/lib/components/ConditionInput/utils.js.map +1 -1
  41. package/lib/components/PromotedFilters/ConditionSelector.js +1 -1
  42. package/lib/components/PromotedFilters/ConditionSelector.js.map +1 -1
  43. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionSelector.js","sourceRoot":"","sources":["../../../src/components/PromotedFilters/ConditionSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useRef, FunctionComponent } from 'react';\n\nimport {\n useI18n,\n BaseProps,\n ComboBox,\n NoChildrenProp,\n ComboBoxProps,\n Button,\n Icon,\n useConfiguration,\n MenuItemProps,\n ForwardProps,\n menuHelpers,\n hasProp\n} from '@pega/cosmos-react-core';\n\nimport { AtomicConditionProps } from '../ConditionBuilder/AtomicCondition';\nimport formatCondition from '../ConditionBuilder/core/formatter';\nimport { LeafCondition } from '../ConditionBuilder';\n\ninterface ConditionSelectorProps extends BaseProps, NoChildrenProp {\n /** Callback for onChange */\n onChange: (condition?: LeafCondition) => void;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Visually hides the label region. */\n labelHidden?: ComboBoxProps['labelHidden'];\n /** Guidance text that apppears below the input. */\n info?: ComboBoxProps['info'];\n /** Definition of the field the condition is created for. */\n fields: AtomicConditionProps['fields'];\n /** List of possible predefined Conditions */\n conditions: { id: string; value: LeafCondition; label?: string }[];\n /** Currently selected condition. */\n condition?: LeafCondition;\n}\n\nconst equal = (c1: LeafCondition, c2: LeafCondition) => {\n if (c1.comparator !== c2.comparator) return false;\n\n if (c1.rhs && c2.rhs) {\n if (hasProp(c1.rhs, 'field') && hasProp(c2.rhs, 'field')) return c1.rhs.field === c2.rhs.field;\n if (hasProp(c1.rhs, 'dateFunction') && hasProp(c2.rhs, 'dateFunction')) {\n return c1.rhs.dateFunction === c2.rhs.dateFunction && c1.rhs.value === c2.rhs.value;\n }\n if (hasProp(c1.rhs, 'value') && hasProp(c2.rhs, 'value')) return c1.rhs === c2.rhs;\n if (hasProp(c1.rhs, 'values') && hasProp(c2.rhs, 'values')) {\n const rhs1 = c1.rhs;\n const rhs2 = c2.rhs;\n // due to https://github.com/microsoft/TypeScript/issues/44373\n return (\n rhs1.values.length === rhs2.values.length &&\n (rhs1.values as unknown[]).every((v, i) => v === rhs2.values[i])\n );\n }\n if (hasProp(c1.rhs, 'parameterId') && hasProp(c2.rhs, 'parameterId')) {\n return c1.rhs.parameterId === c2.rhs.parameterId;\n }\n if (hasProp(c1.rhs, 'relativeDate') && hasProp(c2.rhs, 'relativeDate')) {\n return (\n c1.rhs.relativeDate.datePart === c2.rhs.relativeDate.datePart &&\n c1.rhs.relativeDate.interval === c2.rhs.relativeDate.interval &&\n c1.rhs.relativeDate.timePeriod === c2.rhs.relativeDate.timePeriod\n );\n }\n }\n\n return c1.rhs === c2.rhs;\n};\n\nconst ConditionSelector: FunctionComponent<ConditionSelectorProps & ForwardProps> = ({\n onChange,\n onClear,\n status,\n label,\n info,\n fields,\n labelHidden,\n conditions,\n condition,\n ...restProps\n}: ConditionSelectorProps) => {\n const t = useI18n();\n const { locale } = useConfiguration();\n\n const inputRef = useRef<HTMLDivElement>(null);\n const itemsToRender = useMemo(() => {\n return conditions.map(({ id, label: conditionLabel, value }) => {\n return {\n id,\n primary:\n conditionLabel ??\n formatCondition({ condition: value }, fields, t, {\n locale,\n omitLhs: true\n }),\n selected: !!value && !!condition && equal(value, condition)\n };\n });\n }, [conditions, condition]);\n\n const selected = useMemo<MenuItemProps | undefined>(\n () => menuHelpers.getSelected(itemsToRender)[0],\n [itemsToRender]\n );\n\n return (\n <ComboBox\n {...restProps}\n ref={inputRef}\n mode='single-select'\n label={label ?? t('condition_builder_possible_values_label')}\n labelHidden={labelHidden}\n placeholder={t('all')}\n selected={\n selected\n ? {\n items: {\n id: selected.id,\n text: selected.primary\n }\n }\n : undefined\n }\n menu={{\n items: itemsToRender,\n onItemClick: (id: MenuItemProps['id']) =>\n onChange(conditions.find(cnd => cnd.id === id)?.value)\n }}\n status={status}\n info={status === 'error' ? t('condition_builder_empty_selection_error_text') : info}\n actions={\n onClear &&\n condition !== undefined && (\n <Button\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </Button>\n )\n }\n />\n );\n};\n\nexport default ConditionSelector;\n"]}
1
+ {"version":3,"file":"ConditionSelector.js","sourceRoot":"","sources":["../../../src/components/PromotedFilters/ConditionSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useRef, FunctionComponent } from 'react';\n\nimport {\n useI18n,\n BaseProps,\n ComboBox,\n NoChildrenProp,\n ComboBoxProps,\n Button,\n Icon,\n useConfiguration,\n MenuItemProps,\n ForwardProps,\n menuHelpers,\n hasProp\n} from '@pega/cosmos-react-core';\n\nimport { AtomicConditionProps } from '../ConditionBuilder/AtomicCondition';\nimport formatCondition from '../ConditionBuilder/core/formatter';\nimport { LeafCondition } from '../ConditionBuilder';\n\ninterface ConditionSelectorProps extends BaseProps, NoChildrenProp {\n /** Callback for onChange */\n onChange: (condition?: LeafCondition) => void;\n /** Callback for clear */\n onClear?: () => void;\n /** Used to indicate any errors on the control */\n status?: 'error';\n /** Custom label for input. Makes label visible if provided. */\n label?: ComboBoxProps['label'];\n /** Visually hides the label region. */\n labelHidden?: ComboBoxProps['labelHidden'];\n /** Guidance text that apppears below the input. */\n info?: ComboBoxProps['info'];\n /** Definition of the field the condition is created for. */\n fields: AtomicConditionProps['fields'];\n /** List of possible predefined Conditions */\n conditions: { id: string; value: LeafCondition; label?: string }[];\n /** Currently selected condition. */\n condition?: LeafCondition;\n}\n\nconst equal = (c1: LeafCondition, c2: LeafCondition) => {\n if (c1.comparator !== c2.comparator) return false;\n\n if (c1.rhs && c2.rhs) {\n if (hasProp(c1.rhs, 'field') && hasProp(c2.rhs, 'field')) return c1.rhs.field === c2.rhs.field;\n if (hasProp(c1.rhs, 'dateFunction') && hasProp(c2.rhs, 'dateFunction')) {\n return c1.rhs.dateFunction === c2.rhs.dateFunction && c1.rhs.value === c2.rhs.value;\n }\n if (hasProp(c1.rhs, 'value') && hasProp(c2.rhs, 'value')) return c1.rhs.value === c2.rhs.value;\n if (hasProp(c1.rhs, 'values') && hasProp(c2.rhs, 'values')) {\n const rhs1 = c1.rhs;\n const rhs2 = c2.rhs;\n // due to https://github.com/microsoft/TypeScript/issues/44373\n return (\n rhs1.values.length === rhs2.values.length &&\n (rhs1.values as unknown[]).every((v, i) => v === rhs2.values[i])\n );\n }\n if (hasProp(c1.rhs, 'parameterId') && hasProp(c2.rhs, 'parameterId')) {\n return c1.rhs.parameterId === c2.rhs.parameterId;\n }\n if (hasProp(c1.rhs, 'relativeDate') && hasProp(c2.rhs, 'relativeDate')) {\n return (\n c1.rhs.relativeDate.datePart === c2.rhs.relativeDate.datePart &&\n c1.rhs.relativeDate.interval === c2.rhs.relativeDate.interval &&\n c1.rhs.relativeDate.timePeriod === c2.rhs.relativeDate.timePeriod\n );\n }\n }\n\n return c1.rhs === c2.rhs;\n};\n\nconst ConditionSelector: FunctionComponent<ConditionSelectorProps & ForwardProps> = ({\n onChange,\n onClear,\n status,\n label,\n info,\n fields,\n labelHidden,\n conditions,\n condition,\n ...restProps\n}: ConditionSelectorProps) => {\n const t = useI18n();\n const { locale } = useConfiguration();\n\n const inputRef = useRef<HTMLDivElement>(null);\n const itemsToRender = useMemo(() => {\n return conditions.map(({ id, label: conditionLabel, value }) => {\n return {\n id,\n primary:\n conditionLabel ??\n formatCondition({ condition: value }, fields, t, {\n locale,\n omitLhs: true\n }),\n selected: !!value && !!condition && equal(value, condition)\n };\n });\n }, [conditions, condition]);\n\n const selected = useMemo<MenuItemProps | undefined>(\n () => menuHelpers.getSelected(itemsToRender)[0],\n [itemsToRender]\n );\n\n return (\n <ComboBox\n {...restProps}\n ref={inputRef}\n mode='single-select'\n label={label ?? t('condition_builder_possible_values_label')}\n labelHidden={labelHidden}\n placeholder={t('all')}\n selected={\n selected\n ? {\n items: {\n id: selected.id,\n text: selected.primary\n }\n }\n : undefined\n }\n menu={{\n items: itemsToRender,\n onItemClick: (id: MenuItemProps['id']) =>\n onChange(conditions.find(cnd => cnd.id === id)?.value)\n }}\n status={status}\n info={status === 'error' ? t('condition_builder_empty_selection_error_text') : info}\n actions={\n onClear &&\n condition !== undefined && (\n <Button\n icon\n variant='simple'\n label={t('clear')}\n onClick={() => {\n onClear();\n if (inputRef.current) {\n const inputEl = inputRef.current.querySelector('input');\n inputEl?.focus();\n }\n }}\n >\n <Icon name='times' />\n </Button>\n )\n }\n />\n );\n};\n\nexport default ConditionSelector;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-condition-builder",
3
- "version": "3.0.0-dev.27.1",
3
+ "version": "3.0.0-dev.29.0",
4
4
  "author": "Pegasystems",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "build": "tsc -b"
24
24
  },
25
25
  "dependencies": {
26
- "@pega/cosmos-react-core": "3.0.0-dev.27.1",
26
+ "@pega/cosmos-react-core": "3.0.0-dev.29.0",
27
27
  "@types/react": "^16.14.24 || ^17.0.38",
28
28
  "@types/react-dom": "^16.9.14 || ^17.0.11",
29
29
  "@types/styled-components": "^5.1.7",