@pega/cosmos-react-condition-builder 2.0.0-dev.2.1 → 2.0.0-dev.20.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 (89) hide show
  1. package/lib/components/ConditionBuilder/AtomicCondition.d.ts +11 -4
  2. package/lib/components/ConditionBuilder/AtomicCondition.d.ts.map +1 -1
  3. package/lib/components/ConditionBuilder/AtomicCondition.js +22 -24
  4. package/lib/components/ConditionBuilder/AtomicCondition.js.map +1 -1
  5. package/lib/components/ConditionBuilder/ConditionBuilder.d.ts.map +1 -1
  6. package/lib/components/ConditionBuilder/ConditionBuilder.js +23 -44
  7. package/lib/components/ConditionBuilder/ConditionBuilder.js.map +1 -1
  8. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +42 -2
  9. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +1 -1
  10. package/lib/components/ConditionBuilder/ConditionBuilder.types.js.map +1 -1
  11. package/lib/components/ConditionBuilder/FieldCondition.d.ts.map +1 -1
  12. package/lib/components/ConditionBuilder/FieldCondition.js +6 -9
  13. package/lib/components/ConditionBuilder/FieldCondition.js.map +1 -1
  14. package/lib/components/ConditionBuilder/FieldCondition.types.d.ts +10 -2
  15. package/lib/components/ConditionBuilder/FieldCondition.types.d.ts.map +1 -1
  16. package/lib/components/ConditionBuilder/FieldCondition.types.js.map +1 -1
  17. package/lib/components/ConditionBuilder/HelpButton.d.ts.map +1 -1
  18. package/lib/components/ConditionBuilder/HelpButton.js +2 -4
  19. package/lib/components/ConditionBuilder/HelpButton.js.map +1 -1
  20. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.d.ts +18 -0
  21. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.d.ts.map +1 -0
  22. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.js +115 -0
  23. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.js.map +1 -0
  24. package/lib/components/ConditionBuilder/{FieldSelector.d.ts → RhsControls/FieldSelector.d.ts} +1 -1
  25. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.d.ts.map +1 -0
  26. package/lib/components/ConditionBuilder/{FieldSelector.js → RhsControls/FieldSelector.js} +5 -5
  27. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.js.map +1 -0
  28. package/lib/components/ConditionBuilder/{MultiValueSelector.d.ts → RhsControls/MultiValueSelector.d.ts} +1 -1
  29. package/lib/components/ConditionBuilder/RhsControls/MultiValueSelector.d.ts.map +1 -0
  30. package/lib/components/ConditionBuilder/RhsControls/MultiValueSelector.js +43 -0
  31. package/lib/components/ConditionBuilder/RhsControls/MultiValueSelector.js.map +1 -0
  32. package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts +18 -0
  33. package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts.map +1 -0
  34. package/lib/components/ConditionBuilder/RhsControls/NumericInput.js +19 -0
  35. package/lib/components/ConditionBuilder/RhsControls/NumericInput.js.map +1 -0
  36. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.d.ts +18 -0
  37. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.d.ts.map +1 -0
  38. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.js +109 -0
  39. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.js.map +1 -0
  40. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.d.ts +24 -0
  41. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.d.ts.map +1 -0
  42. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js +122 -0
  43. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js.map +1 -0
  44. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.d.ts +8 -0
  45. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.d.ts.map +1 -0
  46. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.js +89 -0
  47. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.js.map +1 -0
  48. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.d.ts +20 -0
  49. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.d.ts.map +1 -0
  50. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.js +11 -0
  51. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.js.map +1 -0
  52. package/lib/components/ConditionBuilder/{RhsControls.d.ts → RhsControls/index.d.ts} +16 -6
  53. package/lib/components/ConditionBuilder/RhsControls/index.d.ts.map +1 -0
  54. package/lib/components/ConditionBuilder/RhsControls/index.js +219 -0
  55. package/lib/components/ConditionBuilder/RhsControls/index.js.map +1 -0
  56. package/lib/components/ConditionBuilder/core/evaluator.d.ts.map +1 -1
  57. package/lib/components/ConditionBuilder/core/evaluator.js +110 -9
  58. package/lib/components/ConditionBuilder/core/evaluator.js.map +1 -1
  59. package/lib/components/ConditionBuilder/core/extendDayJs.d.ts +2 -0
  60. package/lib/components/ConditionBuilder/core/extendDayJs.d.ts.map +1 -0
  61. package/lib/components/ConditionBuilder/core/extendDayJs.js +4 -0
  62. package/lib/components/ConditionBuilder/core/extendDayJs.js.map +1 -0
  63. package/lib/components/ConditionBuilder/core/formatter.d.ts +10 -1
  64. package/lib/components/ConditionBuilder/core/formatter.d.ts.map +1 -1
  65. package/lib/components/ConditionBuilder/core/formatter.js +95 -13
  66. package/lib/components/ConditionBuilder/core/formatter.js.map +1 -1
  67. package/lib/components/ConditionBuilder/core/transformer.d.ts +7 -0
  68. package/lib/components/ConditionBuilder/core/transformer.d.ts.map +1 -0
  69. package/lib/components/ConditionBuilder/core/transformer.js +164 -0
  70. package/lib/components/ConditionBuilder/core/transformer.js.map +1 -0
  71. package/lib/components/ConditionBuilder/core/types.d.ts +7 -1
  72. package/lib/components/ConditionBuilder/core/types.d.ts.map +1 -1
  73. package/lib/components/ConditionBuilder/core/types.js.map +1 -1
  74. package/lib/components/ConditionBuilder/core/utils.d.ts.map +1 -1
  75. package/lib/components/ConditionBuilder/core/utils.js +4 -8
  76. package/lib/components/ConditionBuilder/core/utils.js.map +1 -1
  77. package/lib/components/ConditionBuilder/index.d.ts +2 -1
  78. package/lib/components/ConditionBuilder/index.d.ts.map +1 -1
  79. package/lib/components/ConditionBuilder/index.js +2 -1
  80. package/lib/components/ConditionBuilder/index.js.map +1 -1
  81. package/package.json +17 -15
  82. package/lib/components/ConditionBuilder/FieldSelector.d.ts.map +0 -1
  83. package/lib/components/ConditionBuilder/FieldSelector.js.map +0 -1
  84. package/lib/components/ConditionBuilder/MultiValueSelector.d.ts.map +0 -1
  85. package/lib/components/ConditionBuilder/MultiValueSelector.js +0 -77
  86. package/lib/components/ConditionBuilder/MultiValueSelector.js.map +0 -1
  87. package/lib/components/ConditionBuilder/RhsControls.d.ts.map +0 -1
  88. package/lib/components/ConditionBuilder/RhsControls.js +0 -277
  89. package/lib/components/ConditionBuilder/RhsControls.js.map +0 -1
@@ -1,29 +1,26 @@
1
- import React, { useState } from 'react';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
2
3
  import { Flex, Button, useI18n } from '@pega/cosmos-react-core';
3
4
  import AtomicCondition, { getInitConditionForLhs, isValidCondition } from './AtomicCondition';
4
5
  /** Component for building an atomic condition on a given field */
5
6
  const FieldCondition = (props) => {
6
- const { targetField, fields, onSubmit, condition: seedCondition, validComparators } = props;
7
- const validRhsTypes = new Set(['LITERAL', 'FIELD']);
7
+ const { targetField, fields, onSubmit, condition: seedCondition, validComparators, validRhsTypes = new Set(['LITERAL', 'FIELD']), dateFunctions } = props;
8
8
  const [condition, setCondition] = useState(
9
9
  // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField
10
10
  () => seedCondition ||
11
- getInitConditionForLhs({ field: targetField }, fields, validRhsTypes, validComparators));
11
+ getInitConditionForLhs({ field: targetField }, fields, validRhsTypes, validComparators, dateFunctions));
12
12
  const [showErrorIndicators, setErrorIndicators] = useState(false); // Used to enable inline error indicators on the controls
13
13
  const t = useI18n();
14
14
  const handleSubmission = () => {
15
15
  setErrorIndicators(false); // Reset any previous flag
16
- if (isValidCondition(condition, fields, validRhsTypes, true)) {
16
+ if (isValidCondition(condition, fields, true)) {
17
17
  onSubmit(condition); // If it's a valid condition, submit it
18
18
  }
19
19
  else {
20
20
  setErrorIndicators(true); // Otherwise, indicate errors
21
21
  }
22
22
  };
23
- return (React.createElement(Flex, { container: { direction: 'column', itemGap: 2 } },
24
- React.createElement(AtomicCondition, { condition: condition, fields: fields, indicateErrors: showErrorIndicators, validComparators: validComparators, onChange: c => setCondition(c), itemDirection: 'column', validRhsTypes: validRhsTypes, showLhsAsLabel: true }),
25
- React.createElement(Flex, { container: { justify: 'end' } },
26
- React.createElement(Button, { type: 'submit', variant: 'primary', onClick: handleSubmission }, t('condition_builder_submit_button_label')))));
23
+ return (_jsxs(Flex, { container: { direction: 'column', gap: 2 }, children: [_jsx(AtomicCondition, { condition: condition, fields: fields, indicateErrors: showErrorIndicators, validComparators: validComparators, dateFunctions: dateFunctions, onChange: c => setCondition(c), itemDirection: 'column', validRhsTypes: validRhsTypes, showLhsAsLabel: true }, void 0), _jsx(Flex, { container: { justify: 'end' }, children: _jsx(Button, { name: 'field-condition-submit', variant: 'primary', onClick: handleSubmission, children: t('condition_builder_submit_button_label') }, void 0) }, void 0)] }, void 0));
27
24
  };
28
25
  export default FieldCondition;
29
26
  //# sourceMappingURL=FieldCondition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldCondition.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAqB,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAG9E,OAAO,eAAe,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG9F,kEAAkE;AAClE,MAAM,cAAc,GAA0D,CAC5E,KAA0B,EAC1B,EAAE;IACF,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAC5F,MAAM,aAAa,GAAG,IAAI,GAAG,CAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ;IACxC,uGAAuG;IACvG,GAAG,EAAE,CACH,aAAa;QACb,sBAAsB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAC1F,CAAC;IACF,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,yDAAyD;IAC5H,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B;QAErD,IAAI,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE;YAC5D,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,uCAAuC;SAC7D;aAAM;YACL,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B;SACxD;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QAClD,oBAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAC9B,aAAa,EAAC,QAAQ,EACtB,aAAa,EAAE,aAAa,EAC5B,cAAc,SACd;QAGF,oBAAC,IAAI,IAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACjC,oBAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,gBAAgB,IAC9D,CAAC,CAAC,uCAAuC,CAAC,CACpC,CACJ,CACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import React, { FunctionComponent, useState } from 'react';\n\nimport { Flex, Button, useI18n, ForwardProps } from '@pega/cosmos-react-core';\n\nimport FieldConditionProps from './FieldCondition.types';\nimport AtomicCondition, { getInitConditionForLhs, isValidCondition } from './AtomicCondition';\nimport { RHSType } from './core/types';\n\n/** Component for building an atomic condition on a given field */\nconst FieldCondition: FunctionComponent<FieldConditionProps & ForwardProps> = (\n props: FieldConditionProps\n) => {\n const { targetField, fields, onSubmit, condition: seedCondition, validComparators } = props;\n const validRhsTypes = new Set<RHSType>(['LITERAL', 'FIELD']);\n const [condition, setCondition] = useState(\n // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField\n () =>\n seedCondition ||\n getInitConditionForLhs({ field: targetField }, fields, validRhsTypes, validComparators)\n );\n const [showErrorIndicators, setErrorIndicators] = useState(false); // Used to enable inline error indicators on the controls\n const t = useI18n();\n\n const handleSubmission = () => {\n setErrorIndicators(false); // Reset any previous flag\n\n if (isValidCondition(condition, fields, validRhsTypes, true)) {\n onSubmit(condition); // If it's a valid condition, submit it\n } else {\n setErrorIndicators(true); // Otherwise, indicate errors\n }\n };\n\n return (\n <Flex container={{ direction: 'column', itemGap: 2 }}>\n <AtomicCondition\n condition={condition}\n fields={fields}\n indicateErrors={showErrorIndicators}\n validComparators={validComparators}\n onChange={c => setCondition(c)}\n itemDirection='column'\n validRhsTypes={validRhsTypes}\n showLhsAsLabel\n />\n\n {/* Submit block */}\n <Flex container={{ justify: 'end' }}>\n <Button type='submit' variant='primary' onClick={handleSubmission}>\n {t('condition_builder_submit_button_label')}\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nexport default FieldCondition;\n"]}
1
+ {"version":3,"file":"FieldCondition.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAG9E,OAAO,eAAe,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG9F,kEAAkE;AAClE,MAAM,cAAc,GAA0D,CAC5E,KAA0B,EAC1B,EAAE;IACF,MAAM,EACJ,WAAW,EACX,MAAM,EACN,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,gBAAgB,EAChB,aAAa,GAAG,IAAI,GAAG,CAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EACtD,aAAa,EACd,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ;IACxC,uGAAuG;IACvG,GAAG,EAAE,CACH,aAAa;QACb,sBAAsB,CACpB,EAAE,KAAK,EAAE,WAAW,EAAE,EACtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,aAAa,CACd,CACJ,CAAC;IACF,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,yDAAyD;IAC5H,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B;QAErD,IAAI,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAC7C,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,uCAAuC;SAC7D;aAAM;YACL,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B;SACxD;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC9C,KAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAC9B,aAAa,EAAC,QAAQ,EACtB,aAAa,EAAE,aAAa,EAC5B,cAAc,iBACd,EAGF,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YACjC,KAAC,MAAM,IAAC,IAAI,EAAC,wBAAwB,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,gBAAgB,YAC9E,CAAC,CAAC,uCAAuC,CAAC,WACpC,WACJ,YACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import { FunctionComponent, useState } from 'react';\n\nimport { Flex, Button, useI18n, ForwardProps } from '@pega/cosmos-react-core';\n\nimport FieldConditionProps from './FieldCondition.types';\nimport AtomicCondition, { getInitConditionForLhs, isValidCondition } from './AtomicCondition';\nimport { RHSType } from './core/types';\n\n/** Component for building an atomic condition on a given field */\nconst FieldCondition: FunctionComponent<FieldConditionProps & ForwardProps> = (\n props: FieldConditionProps\n) => {\n const {\n targetField,\n fields,\n onSubmit,\n condition: seedCondition,\n validComparators,\n validRhsTypes = new Set<RHSType>(['LITERAL', 'FIELD']),\n dateFunctions\n } = props;\n const [condition, setCondition] = useState(\n // If editing use the seedCondition, otherwise, determine an initial condition based on the targetField\n () =>\n seedCondition ||\n getInitConditionForLhs(\n { field: targetField },\n fields,\n validRhsTypes,\n validComparators,\n dateFunctions\n )\n );\n const [showErrorIndicators, setErrorIndicators] = useState(false); // Used to enable inline error indicators on the controls\n const t = useI18n();\n\n const handleSubmission = () => {\n setErrorIndicators(false); // Reset any previous flag\n\n if (isValidCondition(condition, fields, true)) {\n onSubmit(condition); // If it's a valid condition, submit it\n } else {\n setErrorIndicators(true); // Otherwise, indicate errors\n }\n };\n\n return (\n <Flex container={{ direction: 'column', gap: 2 }}>\n <AtomicCondition\n condition={condition}\n fields={fields}\n indicateErrors={showErrorIndicators}\n validComparators={validComparators}\n dateFunctions={dateFunctions}\n onChange={c => setCondition(c)}\n itemDirection='column'\n validRhsTypes={validRhsTypes}\n showLhsAsLabel\n />\n\n {/* Submit block */}\n <Flex container={{ justify: 'end' }}>\n <Button name='field-condition-submit' variant='primary' onClick={handleSubmission}>\n {t('condition_builder_submit_button_label')}\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nexport default FieldCondition;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { BaseProps } from '@pega/cosmos-react-core';
2
- import { ComparatorsByType } from './core/types';
3
- import { Field, LeafCondition } from './ConditionBuilder.types';
2
+ import { ComparatorsByType, RHSType } from './core/types';
3
+ import { Field, LeafCondition, DateFunctionsByType } from './ConditionBuilder.types';
4
4
  /** Type definition for the input props of FieldCondition */
5
5
  export default interface FieldConditionProps extends BaseProps {
6
6
  /** Name of the field on which the condition should be constructed */
@@ -13,5 +13,13 @@ export default interface FieldConditionProps extends BaseProps {
13
13
  condition?: LeafCondition;
14
14
  /** (Optional) Used to limit the Comparators allowed in the component. */
15
15
  validComparators?: ComparatorsByType[];
16
+ /**
17
+ * (Optional) Pass this to control which all types of RHS are enabled in the component
18
+ * DEFAULT: Set(['LITERAL', 'FIELD'])
19
+ * NOTE: If enabling `DATE_FUNCTION`s, additionally pass a `dateFunctions` prop to specify which functions are enabled
20
+ */
21
+ validRhsTypes?: Set<RHSType>;
22
+ /** (Optional) When enabling 'DATE_FUNCTION's via `validRhsTypes`, pass this to specify which all date functions are applicable per field type */
23
+ dateFunctions?: DateFunctionsByType;
16
24
  }
17
25
  //# sourceMappingURL=FieldCondition.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldCondition.types.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhE,4DAA4D;AAC5D,MAAM,CAAC,OAAO,WAAW,mBAAoB,SAAQ,SAAS;IAC5D,qEAAqE;IACrE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,iFAAiF;IACjF,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C,2DAA2D;IAC3D,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACxC"}
1
+ {"version":3,"file":"FieldCondition.types.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAErF,4DAA4D;AAC5D,MAAM,CAAC,OAAO,WAAW,mBAAoB,SAAQ,SAAS;IAC5D,qEAAqE;IACrE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,iFAAiF;IACjF,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,yDAAyD;IACzD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C,2DAA2D;IAC3D,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldCondition.types.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.types.ts"],"names":[],"mappings":"","sourcesContent":["import { BaseProps } from '@pega/cosmos-react-core';\n\nimport { ComparatorsByType } from './core/types';\nimport { Field, LeafCondition } from './ConditionBuilder.types';\n\n/** Type definition for the input props of FieldCondition */\nexport default interface FieldConditionProps extends BaseProps {\n /** Name of the field on which the condition should be constructed */\n targetField: Field['name'];\n\n /** Metadata (data-model) for the Fields to use in the RHS field-selector etc. */\n fields: Field[];\n\n /** Callback used from the component's `Submit` button */\n onSubmit: (condition: LeafCondition) => void;\n\n /** (Optional) Passed when editing an existing condition */\n condition?: LeafCondition;\n\n /** (Optional) Used to limit the Comparators allowed in the component. */\n validComparators?: ComparatorsByType[];\n}\n"]}
1
+ {"version":3,"file":"FieldCondition.types.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/FieldCondition.types.ts"],"names":[],"mappings":"","sourcesContent":["import { BaseProps } from '@pega/cosmos-react-core';\n\nimport { ComparatorsByType, RHSType } from './core/types';\nimport { Field, LeafCondition, DateFunctionsByType } from './ConditionBuilder.types';\n\n/** Type definition for the input props of FieldCondition */\nexport default interface FieldConditionProps extends BaseProps {\n /** Name of the field on which the condition should be constructed */\n targetField: Field['name'];\n\n /** Metadata (data-model) for the Fields to use in the RHS field-selector etc. */\n fields: Field[];\n\n /** Callback used from the component's `Submit` button */\n onSubmit: (condition: LeafCondition) => void;\n\n /** (Optional) Passed when editing an existing condition */\n condition?: LeafCondition;\n\n /** (Optional) Used to limit the Comparators allowed in the component. */\n validComparators?: ComparatorsByType[];\n\n /**\n * (Optional) Pass this to control which all types of RHS are enabled in the component\n * DEFAULT: Set(['LITERAL', 'FIELD'])\n * NOTE: If enabling `DATE_FUNCTION`s, additionally pass a `dateFunctions` prop to specify which functions are enabled\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HelpButton.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/HelpButton.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAGL,SAAS,EACT,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAEjC,UAAU,eAAgB,SAAQ,SAAS;IACzC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAejE,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"HelpButton.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/HelpButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAGL,SAAS,EACT,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAEjC,UAAU,eAAgB,SAAQ,SAAS;IACzC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,QAAA,MAAM,UAAU,EAAE,iBAAiB,CAAC,eAAe,GAAG,YAAY,CAejE,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,13 +1,11 @@
1
- import React from 'react';
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Icon, Tooltip, useElement, useUID } from '@pega/cosmos-react-core';
3
3
  /** Renders an inline Help icon that shows help content on hover */
4
4
  const HelpButton = (props) => {
5
5
  const { children } = props;
6
6
  const [iconEl, setIconEl] = useElement();
7
7
  const id = useUID();
8
- return (React.createElement(React.Fragment, null,
9
- React.createElement(Icon, { name: 'information', ref: setIconEl, "aria-describedby": id }),
10
- iconEl && (React.createElement(Tooltip, { target: iconEl, id: id }, children))));
8
+ return (_jsxs(_Fragment, { children: [_jsx(Icon, { name: 'information', ref: setIconEl, "aria-describedby": id }, void 0), iconEl && (_jsx(Tooltip, { target: iconEl, id: id, children: children }, void 0))] }, void 0));
11
9
  };
12
10
  export default HelpButton;
13
11
  //# sourceMappingURL=HelpButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HelpButton.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/HelpButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EACL,IAAI,EACJ,OAAO,EAGP,UAAU,EACV,MAAM,EACP,MAAM,yBAAyB,CAAC;AAOjC,mEAAmE;AACnE,MAAM,UAAU,GAAsD,CAAC,KAAsB,EAAE,EAAE;IAC/F,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,OAAO,CACL;QACE,oBAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,GAAG,EAAE,SAAS,sBAAoB,EAAE,GAAI;QAChE,MAAM,IAAI,CACT,oBAAC,OAAO,IAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAC5B,QAAQ,CACD,CACX,CACA,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import React, { FunctionComponent } from 'react';\n\nimport {\n Icon,\n Tooltip,\n BaseProps,\n ForwardProps,\n useElement,\n useUID\n} from '@pega/cosmos-react-core';\n\ninterface HelpButtonProps extends BaseProps {\n /** Content to show on hover of the button */\n children: string;\n}\n\n/** Renders an inline Help icon that shows help content on hover */\nconst HelpButton: FunctionComponent<HelpButtonProps & ForwardProps> = (props: HelpButtonProps) => {\n const { children } = props;\n const [iconEl, setIconEl] = useElement();\n const id = useUID();\n\n return (\n <>\n <Icon name='information' ref={setIconEl} aria-describedby={id} />\n {iconEl && (\n <Tooltip target={iconEl} id={id}>\n {children}\n </Tooltip>\n )}\n </>\n );\n};\n\nexport default HelpButton;\n"]}
1
+ {"version":3,"file":"HelpButton.js","sourceRoot":"","sources":["../../../src/components/ConditionBuilder/HelpButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,IAAI,EACJ,OAAO,EAGP,UAAU,EACV,MAAM,EACP,MAAM,yBAAyB,CAAC;AAOjC,mEAAmE;AACnE,MAAM,UAAU,GAAsD,CAAC,KAAsB,EAAE,EAAE;IAC/F,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,OAAO,CACL,8BACE,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,GAAG,EAAE,SAAS,sBAAoB,EAAE,WAAI,EAChE,MAAM,IAAI,CACT,KAAC,OAAO,IAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAC5B,QAAQ,WACD,CACX,YACA,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import { FunctionComponent } from 'react';\n\nimport {\n Icon,\n Tooltip,\n BaseProps,\n ForwardProps,\n useElement,\n useUID\n} from '@pega/cosmos-react-core';\n\ninterface HelpButtonProps extends BaseProps {\n /** Content to show on hover of the button */\n children: string;\n}\n\n/** Renders an inline Help icon that shows help content on hover */\nconst HelpButton: FunctionComponent<HelpButtonProps & ForwardProps> = (props: HelpButtonProps) => {\n const { children } = props;\n const [iconEl, setIconEl] = useElement();\n const id = useUID();\n\n return (\n <>\n <Icon name='information' ref={setIconEl} aria-describedby={id} />\n {iconEl && (\n <Tooltip target={iconEl} id={id}>\n {children}\n </Tooltip>\n )}\n </>\n );\n};\n\nexport default HelpButton;\n"]}
@@ -0,0 +1,18 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { BaseProps, ForwardProps } from '@pega/cosmos-react-core';
3
+ import { RhsWithDateFunction } from '../ConditionBuilder.types';
4
+ import { DateFunction } from '../core/types';
5
+ export interface DateFunctionMenuProps extends BaseProps {
6
+ /** Rhs for the condition */
7
+ rhs: RhsWithDateFunction;
8
+ /** Callback for any modifications to the Rhs */
9
+ onChange: (rhs: RhsWithDateFunction) => void;
10
+ /** List of date functions enabled for the current LHS field type */
11
+ dateFunctionsList: DateFunction[];
12
+ /** Used to indicate any errors on the control */
13
+ status?: 'error';
14
+ }
15
+ /** A menu with controls to select a Time period value on RHS */
16
+ declare const DateFunctionMenu: FunctionComponent<DateFunctionMenuProps & ForwardProps>;
17
+ export default DateFunctionMenu;
18
+ //# sourceMappingURL=DateFunctionMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFunctionMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/DateFunctionMenu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAW,MAAM,OAAO,CAAC;AAEhE,OAAO,EACL,SAAS,EACT,YAAY,EAcb,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA+B7C,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,4BAA4B;IAC5B,GAAG,EAAE,mBAAmB,CAAC;IAEzB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAE7C,oEAAoE;IACpE,iBAAiB,EAAE,YAAY,EAAE,CAAC;IAElC,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,gEAAgE;AAChE,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CA+J7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // cspell:ignore words DDTHH
3
+ import { useMemo } from 'react';
4
+ import { Select, Option, MonthInput, WeekInput, DateInput, DateTimeInput, NumberInput, DayOfWeekInput, useI18n, useConfiguration, QuarterInput, range } from '@pega/cosmos-react-core';
5
+ /**
6
+ * Formats the input date string to match the spec expected for the given date function
7
+ * NOTE: This assumes that the input date is set up on the UTC timezone
8
+ * SPEC:
9
+ * - QUARTERS: First day of quarter as YYYY-MM-DD
10
+ * - MONTHS: First day of month as YYYY-MM-DD
11
+ * - WEEKS: First day of week as YYYY-MM-DD
12
+ * - DAYS: Date as YYYY-MM-DD
13
+ * - HOURS: YYYY-MM-DDTHH:mm:ss
14
+ */
15
+ function formatDateFunctionValue(isoDateString, dateFunction) {
16
+ const date = new Date(isoDateString);
17
+ const YYYY = date.getUTCFullYear().toString().padStart(4, '0');
18
+ const MM = (date.getUTCMonth() + 1).toString().padStart(2, '0');
19
+ const DD = date.getUTCDate().toString().padStart(2, '0');
20
+ const HH = date.getUTCHours().toString().padStart(2, '0');
21
+ switch (dateFunction) {
22
+ case 'QUARTERS':
23
+ case 'MONTHS':
24
+ return `${YYYY}-${MM}-01`;
25
+ case 'WEEKS':
26
+ case 'DAYS':
27
+ return `${YYYY}-${MM}-${DD}`;
28
+ default:
29
+ return `${YYYY}-${MM}-${DD}T${HH}:00:00`; // HOURS
30
+ }
31
+ }
32
+ /** A menu with controls to select a Time period value on RHS */
33
+ const DateFunctionMenu = (props) => {
34
+ const { rhs, onChange, dateFunctionsList, status } = props;
35
+ const { locale } = useConfiguration();
36
+ const t = useI18n();
37
+ // Options for the Date-function selector
38
+ const dateFunctionOptions = useMemo(() => {
39
+ const dateFunctionLabels = {
40
+ YEARS: t('condition_builder_date_function_year'),
41
+ QUARTERS: t('condition_builder_date_function_quarter'),
42
+ MONTHS: t('condition_builder_date_function_month'),
43
+ WEEKS: t('condition_builder_date_function_week'),
44
+ DAYS: t('condition_builder_date_function_day'),
45
+ HOURS: t('condition_builder_date_function_hour'),
46
+ MONTHS_OF_YEAR: t('condition_builder_date_function_month_of_year'),
47
+ DAYS_OF_MONTH: t('condition_builder_date_function_day_of_month'),
48
+ DAYS_OF_WEEK: t('condition_builder_date_function_day_of_week')
49
+ };
50
+ return dateFunctionsList.map(func => ({ id: func, label: dateFunctionLabels[func] }));
51
+ }, [dateFunctionsList, t]);
52
+ // Handle changes to the Date-function selector
53
+ const handleDatePartChange = (e) => {
54
+ const selection = e.target.value;
55
+ onChange({ dateFunction: selection, value: '' });
56
+ };
57
+ // Common props for all value controls
58
+ const valueComponentProps = {
59
+ value: rhs.value === '' ? undefined : rhs.value.toString(),
60
+ label: t('condition_builder_value_label'),
61
+ status,
62
+ info: status ? t('condition_builder_invalid_value') : undefined
63
+ };
64
+ // Props for all functions that use a component from the DateTime package
65
+ const dateComponentProps = {
66
+ ...valueComponentProps,
67
+ onChange: ({ valueAsISOString, valueAsTimestamp, state }) => {
68
+ // NOTE: Not relying fully on `state` since in some cases state and valueAsTimestamp are both undefined
69
+ if (valueAsTimestamp === undefined || state === 'incomplete' || state === 'invalid')
70
+ return;
71
+ // Format the value as per spec and return
72
+ onChange({ ...rhs, value: formatDateFunctionValue(valueAsISOString, rhs.dateFunction) });
73
+ }
74
+ };
75
+ // YEARS
76
+ const yearOptions = useMemo(() => {
77
+ const currentYear = new Date().getFullYear();
78
+ const years = range(currentYear - 10, currentYear + 10);
79
+ return years.map(year => ({
80
+ id: `${year}-01-01`,
81
+ label: new Date(year, 0, 1).toLocaleString(locale, { year: 'numeric' })
82
+ }));
83
+ }, [locale]);
84
+ const onYearChange = (e) => {
85
+ onChange({ ...rhs, value: e.target.value });
86
+ };
87
+ // MONTHS_OF_YEAR
88
+ const monthOfYearOptions = useMemo(() => range(1, 12).map(n => ({
89
+ id: `${n}`,
90
+ label: new Date(2021, n - 1, 1).toLocaleString(locale, { month: 'long' })
91
+ })), [locale]);
92
+ const onMonthOfYearChange = (e) => {
93
+ const value = e.target.value ? Number(e.target.value) : '';
94
+ onChange({ ...rhs, value });
95
+ };
96
+ // DAYS_OF_MONTH
97
+ const onDayOfMonthChange = (value) => {
98
+ let newValue = value;
99
+ if (newValue !== '') {
100
+ newValue = Number(newValue);
101
+ if (newValue > 31)
102
+ newValue = 31;
103
+ if (newValue < 1)
104
+ newValue = 1;
105
+ }
106
+ onChange({ ...rhs, value: newValue });
107
+ };
108
+ // DAYS_OF_WEEK
109
+ const onDayOfWeekChange = (value) => {
110
+ onChange({ ...rhs, value });
111
+ };
112
+ return (_jsxs(_Fragment, { children: [_jsx(Select, { label: t('condition_builder_date_part'), value: rhs.dateFunction, onChange: handleDatePartChange, children: dateFunctionOptions.map(o => (_jsx(Option, { value: o.id, children: o.label }, o.id))) }, void 0), rhs.dateFunction === 'YEARS' && (_jsxs(Select, { ...valueComponentProps, onChange: onYearChange, name: 'year-selector', children: [_jsx(Option, { children: " " }, void 0), yearOptions.map(o => (_jsx(Option, { value: o.id, children: o.label }, o.id)))] }, void 0)), rhs.dateFunction === 'QUARTERS' && _jsx(QuarterInput, { ...dateComponentProps }, void 0), rhs.dateFunction === 'MONTHS' && _jsx(MonthInput, { ...dateComponentProps }, void 0), rhs.dateFunction === 'WEEKS' && _jsx(WeekInput, { ...dateComponentProps }, void 0), rhs.dateFunction === 'DAYS' && _jsx(DateInput, { ...dateComponentProps }, void 0), rhs.dateFunction === 'HOURS' && (_jsx(DateTimeInput, { ...dateComponentProps, pickerInterval: 60 }, void 0)), rhs.dateFunction === 'MONTHS_OF_YEAR' && (_jsxs(Select, { ...valueComponentProps, onChange: onMonthOfYearChange, name: 'month-of-year-selector', children: [_jsx(Option, { children: " " }, void 0), monthOfYearOptions.map(o => (_jsx(Option, { value: o.id, children: o.label }, o.id)))] }, void 0)), rhs.dateFunction === 'DAYS_OF_MONTH' && (_jsx(NumberInput, { ...valueComponentProps, placeholder: '1 - 31', min: 1, max: 31, step: 1, showDecimal: false, onChange: onDayOfMonthChange }, void 0)), rhs.dateFunction === 'DAYS_OF_WEEK' && (_jsx(DayOfWeekInput, { ...valueComponentProps, value: rhs.value, onChange: onDayOfWeekChange }, void 0))] }, void 0));
113
+ };
114
+ export default DateFunctionMenu;
115
+ //# sourceMappingURL=DateFunctionMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFunctionMenu.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/DateFunctionMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["// cspell:ignore words DDTHH\nimport { ChangeEvent, FunctionComponent, useMemo } from 'react';\n\nimport {\n BaseProps,\n ForwardProps,\n Select,\n Option,\n MonthInput,\n WeekInput,\n DateInput,\n DateTimeInput,\n NumberInput,\n FormControlProps,\n DayOfWeekInput,\n useI18n,\n useConfiguration,\n QuarterInput,\n range\n} from '@pega/cosmos-react-core';\nimport DateTimeProps, {\n DateTimeCallbackParameter\n} from '@pega/cosmos-react-core/lib/components/DateTime/DateTime.types';\nimport { DayOfWeek } from '@pega/cosmos-react-core/lib/components/DateTime/Input/DayOfWeekInput';\n\nimport { RhsWithDateFunction } from '../ConditionBuilder.types';\nimport { DateFunction } from '../core/types';\n\n/**\n * Formats the input date string to match the spec expected for the given date function\n * NOTE: This assumes that the input date is set up on the UTC timezone\n * SPEC:\n * - QUARTERS: First day of quarter as YYYY-MM-DD\n * - MONTHS: First day of month as YYYY-MM-DD\n * - WEEKS: First day of week as YYYY-MM-DD\n * - DAYS: Date as YYYY-MM-DD\n * - HOURS: YYYY-MM-DDTHH:mm:ss\n */\nfunction formatDateFunctionValue(isoDateString: string, dateFunction: DateFunction): string {\n const date = new Date(isoDateString);\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 const HH = date.getUTCHours().toString().padStart(2, '0');\n\n switch (dateFunction) {\n case 'QUARTERS':\n case 'MONTHS':\n return `${YYYY}-${MM}-01`;\n case 'WEEKS':\n case 'DAYS':\n return `${YYYY}-${MM}-${DD}`;\n default:\n return `${YYYY}-${MM}-${DD}T${HH}:00:00`; // HOURS\n }\n}\n\nexport interface DateFunctionMenuProps extends BaseProps {\n /** Rhs for the condition */\n rhs: RhsWithDateFunction;\n\n /** Callback for any modifications to the Rhs */\n onChange: (rhs: RhsWithDateFunction) => void;\n\n /** List of date functions enabled for the current LHS field type */\n dateFunctionsList: DateFunction[];\n\n /** Used to indicate any errors on the control */\n status?: 'error';\n}\n\n/** A menu with controls to select a Time period value on RHS */\nconst DateFunctionMenu: FunctionComponent<DateFunctionMenuProps & ForwardProps> = (\n props: DateFunctionMenuProps\n) => {\n const { rhs, onChange, dateFunctionsList, status } = props;\n const { locale } = useConfiguration();\n const t = useI18n();\n\n // Options for the Date-function selector\n const dateFunctionOptions = useMemo(() => {\n const dateFunctionLabels: Record<DateFunction, string> = {\n YEARS: t('condition_builder_date_function_year'),\n QUARTERS: t('condition_builder_date_function_quarter'),\n MONTHS: t('condition_builder_date_function_month'),\n WEEKS: t('condition_builder_date_function_week'),\n DAYS: t('condition_builder_date_function_day'),\n HOURS: t('condition_builder_date_function_hour'),\n MONTHS_OF_YEAR: t('condition_builder_date_function_month_of_year'),\n DAYS_OF_MONTH: t('condition_builder_date_function_day_of_month'),\n DAYS_OF_WEEK: t('condition_builder_date_function_day_of_week')\n };\n\n return dateFunctionsList.map(func => ({ id: func, label: dateFunctionLabels[func] }));\n }, [dateFunctionsList, t]);\n\n // Handle changes to the Date-function selector\n const handleDatePartChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const selection = e.target.value as DateFunction;\n onChange({ dateFunction: selection, value: '' });\n };\n\n // Common props for all value controls\n const valueComponentProps: FormControlProps = {\n value: rhs.value === '' ? undefined : rhs.value.toString(),\n label: t('condition_builder_value_label'),\n status,\n info: status ? t('condition_builder_invalid_value') : undefined\n };\n\n // Props for all functions that use a component from the DateTime package\n const dateComponentProps: DateTimeProps = {\n ...valueComponentProps,\n onChange: ({ valueAsISOString, valueAsTimestamp, state }: DateTimeCallbackParameter) => {\n // NOTE: Not relying fully on `state` since in some cases state and valueAsTimestamp are both undefined\n if (valueAsTimestamp === undefined || state === 'incomplete' || state === 'invalid') return;\n\n // Format the value as per spec and return\n onChange({ ...rhs, value: formatDateFunctionValue(valueAsISOString, rhs.dateFunction) });\n }\n };\n\n // YEARS\n const yearOptions = useMemo(() => {\n const currentYear = new Date().getFullYear();\n const years = range(currentYear - 10, currentYear + 10);\n return years.map(year => ({\n id: `${year}-01-01`,\n label: new Date(year, 0, 1).toLocaleString(locale, { year: 'numeric' })\n }));\n }, [locale]);\n const onYearChange = (e: ChangeEvent<HTMLSelectElement>) => {\n onChange({ ...rhs, value: e.target.value });\n };\n\n // MONTHS_OF_YEAR\n const monthOfYearOptions = useMemo(\n () =>\n range(1, 12).map(n => ({\n id: `${n}`,\n label: new Date(2021, n - 1, 1).toLocaleString(locale, { month: 'long' })\n })),\n [locale]\n );\n const onMonthOfYearChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const value = e.target.value ? Number(e.target.value) : '';\n onChange({ ...rhs, value });\n };\n\n // DAYS_OF_MONTH\n const onDayOfMonthChange = (value: string) => {\n let newValue: string | number = value;\n if (newValue !== '') {\n newValue = Number(newValue);\n if (newValue > 31) newValue = 31;\n if (newValue < 1) newValue = 1;\n }\n onChange({ ...rhs, value: newValue });\n };\n\n // DAYS_OF_WEEK\n const onDayOfWeekChange = (value: DayOfWeek) => {\n onChange({ ...rhs, value });\n };\n\n return (\n <>\n {/* Date function selector */}\n <Select\n label={t('condition_builder_date_part')}\n value={rhs.dateFunction}\n onChange={handleDatePartChange}\n >\n {dateFunctionOptions.map(o => (\n <Option key={o.id} value={o.id}>\n {o.label}\n </Option>\n ))}\n </Select>\n\n {rhs.dateFunction === 'YEARS' && (\n <Select {...valueComponentProps} onChange={onYearChange} name='year-selector'>\n <Option> </Option>\n {yearOptions.map(o => (\n <Option key={o.id} value={o.id}>\n {o.label}\n </Option>\n ))}\n </Select>\n )}\n {rhs.dateFunction === 'QUARTERS' && <QuarterInput {...dateComponentProps} />}\n {rhs.dateFunction === 'MONTHS' && <MonthInput {...dateComponentProps} />}\n {rhs.dateFunction === 'WEEKS' && <WeekInput {...dateComponentProps} />}\n {rhs.dateFunction === 'DAYS' && <DateInput {...dateComponentProps} />}\n {rhs.dateFunction === 'HOURS' && (\n <DateTimeInput {...dateComponentProps} pickerInterval={60} />\n )}\n {rhs.dateFunction === 'MONTHS_OF_YEAR' && (\n <Select\n {...valueComponentProps}\n onChange={onMonthOfYearChange}\n name='month-of-year-selector'\n >\n <Option> </Option>\n {monthOfYearOptions.map(o => (\n <Option key={o.id} value={o.id}>\n {o.label}\n </Option>\n ))}\n </Select>\n )}\n {rhs.dateFunction === 'DAYS_OF_MONTH' && (\n <NumberInput\n {...valueComponentProps}\n placeholder='1 - 31'\n min={1}\n max={31}\n step={1}\n showDecimal={false}\n onChange={onDayOfMonthChange}\n />\n )}\n {rhs.dateFunction === 'DAYS_OF_WEEK' && (\n <DayOfWeekInput\n {...valueComponentProps}\n value={rhs.value as DayOfWeek}\n onChange={onDayOfWeekChange}\n />\n )}\n </>\n );\n};\n\nexport default DateFunctionMenu;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { BaseProps, ForwardProps, FormControlProps } from '@pega/cosmos-react-core';
3
- import { Field } from './ConditionBuilder.types';
3
+ import { Field } from '../ConditionBuilder.types';
4
4
  interface FieldSelectorProps extends BaseProps {
5
5
  /** Current selection */
6
6
  value: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/FieldSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAE1E,OAAO,EAIL,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AA4BlD,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,kEAAkE;IAClE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,+EAA+E;AAC/E,QAAA,MAAM,aAAa,EAAE,iBAAiB,CAAC,kBAAkB,GAAG,YAAY,CAwDvE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,14 +1,14 @@
1
- import React, { useMemo, useState } from 'react';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
2
3
  import { ComboBox, menuHelpers } from '@pega/cosmos-react-core';
3
4
  /** Convert input Fields to use as ComboBox options */
4
5
  function getMenuItemsFromFields(fields, selection) {
5
6
  const items = [];
6
7
  const itemsByGroupLabel = {};
7
8
  fields.forEach(field => {
8
- var _a;
9
9
  const item = {
10
10
  id: field.name,
11
- primary: (_a = field.label) !== null && _a !== void 0 ? _a : field.name,
11
+ primary: field.label ?? field.name,
12
12
  selected: field.name === selection // set Selected field to selection
13
13
  };
14
14
  if (field.groupLabel) {
@@ -47,7 +47,7 @@ const FieldSelector = (props) => {
47
47
  ? menuHelpers.flatten(items).filter(({ primary }) => filterRegex.test(primary))
48
48
  : items;
49
49
  }, [filterRegex, items]);
50
- return (React.createElement(ComboBox, { label: 'field', labelHidden: true, status: status, info: info, placeholder: 'Select...', mode: 'single-select', value: filterValue, onChange: (ev) => {
50
+ return (_jsx(ComboBox, { label: 'field', labelHidden: true, status: status, info: info, placeholder: 'Select\u2026', mode: 'single-select', value: filterValue, onChange: (ev) => {
51
51
  setFilterValue(ev.target.value);
52
52
  if (!ev.target.value)
53
53
  onChange('');
@@ -61,7 +61,7 @@ const FieldSelector = (props) => {
61
61
  onChange(id);
62
62
  setFilterValue(''); // To show the selected value in the input
63
63
  }
64
- } }));
64
+ } }, void 0));
65
65
  };
66
66
  export default FieldSelector;
67
67
  //# sourceMappingURL=FieldSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/FieldSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ChangeEvent, FunctionComponent, useMemo, useState } from 'react';\n\nimport {\n ComboBox,\n MenuProps,\n menuHelpers,\n BaseProps,\n ForwardProps,\n FormControlProps\n} from '@pega/cosmos-react-core';\nimport { Selected } from '@pega/cosmos-react-core/lib/components/ComboBox/ComboBox.types';\n\nimport { Field } from '../ConditionBuilder.types';\n\n/** Convert input Fields to use as ComboBox options */\nfunction getMenuItemsFromFields(fields: Field[], selection: string): MenuProps['items'] {\n const items: MenuProps['items'] = [];\n const itemsByGroupLabel: { [label: string]: MenuProps['items'] } = {};\n\n fields.forEach(field => {\n const item = {\n id: field.name,\n primary: field.label ?? field.name, // field.label is optional\n selected: field.name === selection // set Selected field to selection\n };\n if (field.groupLabel) {\n itemsByGroupLabel[field.groupLabel] = itemsByGroupLabel[field.groupLabel] || [];\n itemsByGroupLabel[field.groupLabel].push(item);\n } else {\n items.push(item);\n }\n });\n\n Object.entries(itemsByGroupLabel).forEach(([label, childItems]) => {\n items.push({ id: label, primary: label, items: childItems });\n });\n\n return items;\n}\n\ninterface FieldSelectorProps extends BaseProps {\n /** Current selection */\n value: string;\n\n /** Change handler */\n onChange: (selection: string) => void;\n\n /** Metadata (data-model) for the Fields to use in the selector */\n fields: Field[];\n\n /** Status for the ComboBox */\n status?: FormControlProps['status'];\n\n /** Info for the ComboBox */\n info?: FormControlProps['info'];\n}\n\n/** Sets up a ComboBox to select a Field. Handles grouping and autocomplete. */\nconst FieldSelector: FunctionComponent<FieldSelectorProps & ForwardProps> = (\n props: FieldSelectorProps\n) => {\n const { value, onChange, fields, status, info } = props;\n\n // Determine ComboBox menu items from the fields\n const items = useMemo(() => getMenuItemsFromFields(fields, value), [fields, value]);\n const selected: Selected | undefined = useMemo(() => {\n const selectedItem = menuHelpers.getItem(items, value);\n return selectedItem ? { id: selectedItem.id, text: selectedItem.primary } : undefined;\n }, [items]);\n\n // Set up autocomplete input\n const [filterValue, setFilterValue] = useState<string>(''); // NOTE: `''` is needed to show the current selection\n const filterRegex = useMemo(() => {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\n // Literal string match from input, not user regex input.\n return filterValue\n ? new RegExp(filterValue.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i')\n : undefined;\n }, [filterValue]);\n\n const filteredItems = useMemo(() => {\n return filterRegex\n ? menuHelpers.flatten(items).filter(({ primary }) => filterRegex.test(primary))\n : items;\n }, [filterRegex, items]);\n\n return (\n <ComboBox\n label='field'\n labelHidden\n status={status}\n info={info}\n placeholder='Select…'\n mode='single-select'\n value={filterValue}\n onChange={(ev: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(ev.target.value);\n if (!ev.target.value) onChange('');\n }}\n onBlur={() => {\n setFilterValue('');\n }}\n selected={{ items: selected }}\n menu={{\n items: filteredItems,\n mode: 'single-select',\n accent: filterRegex,\n onItemClick: id => {\n onChange(id);\n setFilterValue(''); // To show the selected value in the input\n }\n }}\n />\n );\n};\n\nexport default FieldSelector;\n"]}
@@ -8,7 +8,7 @@ interface MultiSelectorProps extends BaseProps {
8
8
  /** Callback for changes */
9
9
  onChange: (selection: string[]) => void;
10
10
  /** Used to indicate any errors on the control */
11
- status: 'error' | undefined;
11
+ status?: 'error';
12
12
  }
13
13
  /** A control for selecting multiple values using checkboxes in an overlay */
14
14
  declare const MultiValueSelector: FunctionComponent<MultiSelectorProps & ForwardProps>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiValueSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/MultiValueSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAE7D,OAAO,EAEL,SAAS,EACT,YAAY,EAIb,MAAM,yBAAyB,CAAC;AAEjC,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAExC,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,6EAA6E;AAC7E,QAAA,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,kBAAkB,GAAG,YAAY,CAgE5E,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useMemo } from 'react';
3
+ import { useI18n, ComboBox, createStringMatcher, useAfterInitialEffect } from '@pega/cosmos-react-core';
4
+ /** A control for selecting multiple values using checkboxes in an overlay */
5
+ const MultiValueSelector = ({ values, options, onChange, status }) => {
6
+ const t = useI18n();
7
+ const [selections, setSelections] = useState(values);
8
+ const [filterValue, setFilterValue] = useState('');
9
+ const itemsToRender = useMemo(() => {
10
+ let opts = options;
11
+ if (filterValue) {
12
+ const matcher = createStringMatcher(filterValue, 'boundary');
13
+ opts = opts.filter(opt => matcher.test(opt));
14
+ }
15
+ return opts.map(option => {
16
+ return {
17
+ id: option,
18
+ primary: option,
19
+ selected: selections.includes(option)
20
+ };
21
+ });
22
+ }, [options, filterValue, selections]);
23
+ useAfterInitialEffect(() => {
24
+ onChange(selections);
25
+ }, [selections]);
26
+ return (_jsx(ComboBox, { mode: 'multi-select', label: t('condition_builder_possible_values_label'), labelHidden: true, placeholder: t('condition_builder_selection_text_default'), value: filterValue, onChange: e => {
27
+ setFilterValue(e.target.value);
28
+ }, menu: {
29
+ items: itemsToRender,
30
+ onItemClick: option => {
31
+ setSelections(cur => cur.includes(option) ? cur.filter(selection => selection !== option) : [...cur, option]);
32
+ }
33
+ }, selected: selections.length > 0
34
+ ? {
35
+ items: selections.map(s => ({ id: s, text: s })),
36
+ onRemove: value => {
37
+ setSelections(cur => cur.filter(selection => selection !== value));
38
+ }
39
+ }
40
+ : undefined, status: status, info: status === 'error' ? t('condition_builder_empty_selection_error_text') : undefined }, void 0));
41
+ };
42
+ export default MultiValueSelector;
43
+ //# sourceMappingURL=MultiValueSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiValueSelector.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/MultiValueSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EACL,OAAO,EAGP,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAgBjC,6EAA6E;AAC7E,MAAM,kBAAkB,GAAyD,CAAC,EAChF,MAAM,EACN,OAAO,EACP,QAAQ,EACR,MAAM,EACa,EAAE,EAAE;IACvB,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,IAAI,GAAG,OAAO,CAAC;QAEnB,IAAI,WAAW,EAAE;YACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC7D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO;gBACL,EAAE,EAAE,MAAM;gBACV,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,qBAAqB,CAAC,GAAG,EAAE;QACzB,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,KAAC,QAAQ,IACP,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE,CAAC,CAAC,yCAAyC,CAAC,EACnD,WAAW,QACX,WAAW,EAAE,CAAC,CAAC,0CAA0C,CAAC,EAC1D,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE;YACZ,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,EACD,IAAI,EAAE;YACJ,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,MAAM,CAAC,EAAE;gBACpB,aAAa,CAAC,GAAG,CAAC,EAAE,CAClB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CACxF,CAAC;YACJ,CAAC;SACF,EACD,QAAQ,EACN,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC;gBACE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChD,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAChB,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC;gBACrE,CAAC;aACF;YACH,CAAC,CAAC,SAAS,EAEf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC,SAAS,WACxF,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { FunctionComponent, useState, useMemo } from 'react';\n\nimport {\n useI18n,\n BaseProps,\n ForwardProps,\n ComboBox,\n createStringMatcher,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\n\ninterface MultiSelectorProps extends BaseProps {\n /** Previous selection */\n values: string[];\n\n /** Options for the selector */\n options: string[];\n\n /** Callback for changes */\n onChange: (selection: string[]) => void;\n\n /** Used to indicate any errors on the control */\n status?: 'error';\n}\n\n/** A control for selecting multiple values using checkboxes in an overlay */\nconst MultiValueSelector: FunctionComponent<MultiSelectorProps & ForwardProps> = ({\n values,\n options,\n onChange,\n status\n}: MultiSelectorProps) => {\n const t = useI18n();\n\n const [selections, setSelections] = useState(values);\n const [filterValue, setFilterValue] = useState('');\n\n const itemsToRender = useMemo(() => {\n let opts = options;\n\n if (filterValue) {\n const matcher = createStringMatcher(filterValue, 'boundary');\n opts = opts.filter(opt => matcher.test(opt));\n }\n\n return opts.map(option => {\n return {\n id: option,\n primary: option,\n selected: selections.includes(option)\n };\n });\n }, [options, filterValue, selections]);\n\n useAfterInitialEffect(() => {\n onChange(selections);\n }, [selections]);\n\n return (\n <ComboBox\n mode='multi-select'\n label={t('condition_builder_possible_values_label')}\n labelHidden\n placeholder={t('condition_builder_selection_text_default')}\n value={filterValue}\n onChange={e => {\n setFilterValue(e.target.value);\n }}\n menu={{\n items: itemsToRender,\n onItemClick: option => {\n setSelections(cur =>\n cur.includes(option) ? cur.filter(selection => selection !== option) : [...cur, option]\n );\n }\n }}\n selected={\n selections.length > 0\n ? {\n items: selections.map(s => ({ id: s, text: s })),\n onRemove: value => {\n setSelections(cur => cur.filter(selection => selection !== value));\n }\n }\n : undefined\n }\n status={status}\n info={status === 'error' ? t('condition_builder_empty_selection_error_text') : undefined}\n />\n );\n};\n\nexport default MultiValueSelector;\n"]}
@@ -0,0 +1,18 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { BaseProps } from '@pega/cosmos-react-core';
3
+ interface NumericInputProps extends BaseProps {
4
+ /** Rhs for the condition */
5
+ rhs: {
6
+ value: string | number;
7
+ };
8
+ /** Callback for any modifications to the Rhs */
9
+ onChange: (rhs: {
10
+ value: string | number;
11
+ }) => void;
12
+ /** Used to indicate any errors on the control */
13
+ status?: 'error';
14
+ }
15
+ /** Wrapper over the NumberInput to parse values as Numbers, while still allowing the user to type partial values like `12.`, `12.0`, ... */
16
+ declare const NumericInput: FunctionComponent<NumericInputProps>;
17
+ export default NumericInput;
18
+ //# sourceMappingURL=NumericInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumericInput.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAwB,MAAM,yBAAyB,CAAC;AAE1E,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,4BAA4B;IAC5B,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEhC,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpD,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,4IAA4I;AAC5I,QAAA,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CAwBtD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { NumberInput, useI18n } from '@pega/cosmos-react-core';
4
+ /** Wrapper over the NumberInput to parse values as Numbers, while still allowing the user to type partial values like `12.`, `12.0`, ... */
5
+ const NumericInput = (props) => {
6
+ const { rhs, onChange, status } = props;
7
+ const t = useI18n();
8
+ // Since we want to always call onChange with parsed Numbers,
9
+ // if we parse values like `12.`, `12.0`, etc., the decimals will be lost leading to bad UX
10
+ // Using a local state to avoid that
11
+ const [localValue, setLocalValue] = useState(rhs.value.toString());
12
+ const handleInputChange = (newValue) => {
13
+ setLocalValue(newValue);
14
+ onChange({ value: newValue.trim() ? Number(newValue) : '' }); // Save as a number unless the input is empty
15
+ };
16
+ return (_jsx(NumberInput, { value: localValue, onChange: handleInputChange, status: status, info: status === 'error' ? t('condition_builder_invalid_number') : undefined, label: t('condition_builder_compare_with_numeric_value'), labelHidden: true }, void 0));
17
+ };
18
+ export default NumericInput;
19
+ //# sourceMappingURL=NumericInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumericInput.js","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/NumericInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAa1E,4IAA4I;AAC5I,MAAM,YAAY,GAAyC,CAAC,KAAwB,EAAE,EAAE;IACtF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,6DAA6D;IAC7D,2FAA2F;IAC3F,oCAAoC;IACpC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnE,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC7C,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,6CAA6C;IAC7G,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,WAAW,IACV,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC5E,KAAK,EAAE,CAAC,CAAC,8CAA8C,CAAC,EACxD,WAAW,iBACX,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { FunctionComponent, useState } from 'react';\n\nimport { BaseProps, NumberInput, useI18n } from '@pega/cosmos-react-core';\n\ninterface NumericInputProps extends BaseProps {\n /** Rhs for the condition */\n rhs: { value: string | number };\n\n /** Callback for any modifications to the Rhs */\n onChange: (rhs: { value: string | number }) => void;\n\n /** Used to indicate any errors on the control */\n status?: 'error';\n}\n\n/** Wrapper over the NumberInput to parse values as Numbers, while still allowing the user to type partial values like `12.`, `12.0`, ... */\nconst NumericInput: FunctionComponent<NumericInputProps> = (props: NumericInputProps) => {\n const { rhs, onChange, status } = props;\n const t = useI18n();\n\n // Since we want to always call onChange with parsed Numbers,\n // if we parse values like `12.`, `12.0`, etc., the decimals will be lost leading to bad UX\n // Using a local state to avoid that\n const [localValue, setLocalValue] = useState(rhs.value.toString());\n\n const handleInputChange = (newValue: string) => {\n setLocalValue(newValue);\n onChange({ value: newValue.trim() ? Number(newValue) : '' }); // Save as a number unless the input is empty\n };\n\n return (\n <NumberInput\n value={localValue}\n onChange={handleInputChange}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_number') : undefined}\n label={t('condition_builder_compare_with_numeric_value')}\n labelHidden\n />\n );\n};\n\nexport default NumericInput;\n"]}
@@ -0,0 +1,18 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { BaseProps, ForwardProps } from '@pega/cosmos-react-core';
3
+ import { RhsWithRelativeDate } from '../ConditionBuilder.types';
4
+ import { FieldType } from '../core/types';
5
+ export interface RelativeDateMenuProps extends BaseProps {
6
+ /** Rhs for the condition */
7
+ rhs: RhsWithRelativeDate;
8
+ /** Callback for any modifications to the Rhs */
9
+ onChange: (rhs: RhsWithRelativeDate) => void;
10
+ /** FieldType of the LHS Field. Will only be DATE_TIME or DATE_ONLY */
11
+ fieldType: FieldType;
12
+ /** Used to indicate any errors on the control */
13
+ status?: 'error';
14
+ }
15
+ /** A menu with controls to select a Time period value on RHS */
16
+ declare const RelativeDateMenu: FunctionComponent<RelativeDateMenuProps & ForwardProps>;
17
+ export default RelativeDateMenu;
18
+ //# sourceMappingURL=RelativeDateMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelativeDateMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/ConditionBuilder/RhsControls/RelativeDateMenu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAW,MAAM,OAAO,CAAC;AAEhE,OAAO,EACL,SAAS,EACT,YAAY,EAOb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAsC,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,4BAA4B;IAC5B,GAAG,EAAE,mBAAmB,CAAC;IAEzB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAE7C,sEAAsE;IACtE,SAAS,EAAE,SAAS,CAAC;IAErB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,gEAAgE;AAChE,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAqJ7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}