@pega/cosmos-react-condition-builder 5.0.0-dev.4.7 → 5.0.0-dev.4.8

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 (145) hide show
  1. package/package.json +2 -2
  2. package/lib/components/ConditionBuilder/AtomicCondition.d.ts +0 -57
  3. package/lib/components/ConditionBuilder/AtomicCondition.d.ts.map +0 -1
  4. package/lib/components/ConditionBuilder/AtomicCondition.js +0 -164
  5. package/lib/components/ConditionBuilder/AtomicCondition.js.map +0 -1
  6. package/lib/components/ConditionBuilder/ConditionBuilder.d.ts +0 -6
  7. package/lib/components/ConditionBuilder/ConditionBuilder.d.ts.map +0 -1
  8. package/lib/components/ConditionBuilder/ConditionBuilder.js +0 -271
  9. package/lib/components/ConditionBuilder/ConditionBuilder.js.map +0 -1
  10. package/lib/components/ConditionBuilder/ConditionBuilder.styles.d.ts +0 -7
  11. package/lib/components/ConditionBuilder/ConditionBuilder.styles.d.ts.map +0 -1
  12. package/lib/components/ConditionBuilder/ConditionBuilder.styles.js +0 -59
  13. package/lib/components/ConditionBuilder/ConditionBuilder.styles.js.map +0 -1
  14. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +0 -136
  15. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +0 -1
  16. package/lib/components/ConditionBuilder/ConditionBuilder.types.js +0 -2
  17. package/lib/components/ConditionBuilder/ConditionBuilder.types.js.map +0 -1
  18. package/lib/components/ConditionBuilder/FieldCondition.d.ts +0 -7
  19. package/lib/components/ConditionBuilder/FieldCondition.d.ts.map +0 -1
  20. package/lib/components/ConditionBuilder/FieldCondition.js +0 -26
  21. package/lib/components/ConditionBuilder/FieldCondition.js.map +0 -1
  22. package/lib/components/ConditionBuilder/FieldCondition.types.d.ts +0 -30
  23. package/lib/components/ConditionBuilder/FieldCondition.types.d.ts.map +0 -1
  24. package/lib/components/ConditionBuilder/FieldCondition.types.js +0 -2
  25. package/lib/components/ConditionBuilder/FieldCondition.types.js.map +0 -1
  26. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.d.ts +0 -18
  27. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.d.ts.map +0 -1
  28. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.js +0 -155
  29. package/lib/components/ConditionBuilder/RhsControls/DateFunctionMenu.js.map +0 -1
  30. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.d.ts +0 -21
  31. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.d.ts.map +0 -1
  32. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.js +0 -60
  33. package/lib/components/ConditionBuilder/RhsControls/FieldSelector.js.map +0 -1
  34. package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts +0 -18
  35. package/lib/components/ConditionBuilder/RhsControls/NumericInput.d.ts.map +0 -1
  36. package/lib/components/ConditionBuilder/RhsControls/NumericInput.js +0 -22
  37. package/lib/components/ConditionBuilder/RhsControls/NumericInput.js.map +0 -1
  38. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.d.ts +0 -18
  39. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.d.ts.map +0 -1
  40. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.js +0 -119
  41. package/lib/components/ConditionBuilder/RhsControls/RelativeDateMenu.js.map +0 -1
  42. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.d.ts +0 -26
  43. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.d.ts.map +0 -1
  44. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js +0 -156
  45. package/lib/components/ConditionBuilder/RhsControls/RhsModeSwitch.js.map +0 -1
  46. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.d.ts +0 -6
  47. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.d.ts.map +0 -1
  48. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.js +0 -112
  49. package/lib/components/ConditionBuilder/RhsControls/TimePeriodInput.js.map +0 -1
  50. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.d.ts +0 -20
  51. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.d.ts.map +0 -1
  52. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.js +0 -12
  53. package/lib/components/ConditionBuilder/RhsControls/TimePeriodMenu.js.map +0 -1
  54. package/lib/components/ConditionBuilder/RhsControls/ValueSelector.d.ts +0 -45
  55. package/lib/components/ConditionBuilder/RhsControls/ValueSelector.d.ts.map +0 -1
  56. package/lib/components/ConditionBuilder/RhsControls/ValueSelector.js +0 -196
  57. package/lib/components/ConditionBuilder/RhsControls/ValueSelector.js.map +0 -1
  58. package/lib/components/ConditionBuilder/RhsControls/index.d.ts +0 -42
  59. package/lib/components/ConditionBuilder/RhsControls/index.d.ts.map +0 -1
  60. package/lib/components/ConditionBuilder/RhsControls/index.js +0 -321
  61. package/lib/components/ConditionBuilder/RhsControls/index.js.map +0 -1
  62. package/lib/components/ConditionBuilder/core/comparators.d.ts +0 -12
  63. package/lib/components/ConditionBuilder/core/comparators.d.ts.map +0 -1
  64. package/lib/components/ConditionBuilder/core/comparators.js +0 -78
  65. package/lib/components/ConditionBuilder/core/comparators.js.map +0 -1
  66. package/lib/components/ConditionBuilder/core/evaluator.d.ts +0 -17
  67. package/lib/components/ConditionBuilder/core/evaluator.d.ts.map +0 -1
  68. package/lib/components/ConditionBuilder/core/evaluator.js +0 -314
  69. package/lib/components/ConditionBuilder/core/evaluator.js.map +0 -1
  70. package/lib/components/ConditionBuilder/core/extendDayJs.d.ts +0 -2
  71. package/lib/components/ConditionBuilder/core/extendDayJs.d.ts.map +0 -1
  72. package/lib/components/ConditionBuilder/core/extendDayJs.js +0 -4
  73. package/lib/components/ConditionBuilder/core/extendDayJs.js.map +0 -1
  74. package/lib/components/ConditionBuilder/core/formatter.d.ts +0 -17
  75. package/lib/components/ConditionBuilder/core/formatter.d.ts.map +0 -1
  76. package/lib/components/ConditionBuilder/core/formatter.js +0 -262
  77. package/lib/components/ConditionBuilder/core/formatter.js.map +0 -1
  78. package/lib/components/ConditionBuilder/core/rows-reducer.d.ts +0 -27
  79. package/lib/components/ConditionBuilder/core/rows-reducer.d.ts.map +0 -1
  80. package/lib/components/ConditionBuilder/core/rows-reducer.js +0 -50
  81. package/lib/components/ConditionBuilder/core/rows-reducer.js.map +0 -1
  82. package/lib/components/ConditionBuilder/core/time-utils.d.ts +0 -5
  83. package/lib/components/ConditionBuilder/core/time-utils.d.ts.map +0 -1
  84. package/lib/components/ConditionBuilder/core/time-utils.js +0 -23
  85. package/lib/components/ConditionBuilder/core/time-utils.js.map +0 -1
  86. package/lib/components/ConditionBuilder/core/transformer.d.ts +0 -7
  87. package/lib/components/ConditionBuilder/core/transformer.d.ts.map +0 -1
  88. package/lib/components/ConditionBuilder/core/transformer.js +0 -210
  89. package/lib/components/ConditionBuilder/core/transformer.js.map +0 -1
  90. package/lib/components/ConditionBuilder/core/types.d.ts +0 -47
  91. package/lib/components/ConditionBuilder/core/types.d.ts.map +0 -1
  92. package/lib/components/ConditionBuilder/core/types.js +0 -2
  93. package/lib/components/ConditionBuilder/core/types.js.map +0 -1
  94. package/lib/components/ConditionBuilder/core/utils.d.ts +0 -37
  95. package/lib/components/ConditionBuilder/core/utils.d.ts.map +0 -1
  96. package/lib/components/ConditionBuilder/core/utils.js +0 -454
  97. package/lib/components/ConditionBuilder/core/utils.js.map +0 -1
  98. package/lib/components/ConditionBuilder/index.d.ts +0 -11
  99. package/lib/components/ConditionBuilder/index.d.ts.map +0 -1
  100. package/lib/components/ConditionBuilder/index.js +0 -8
  101. package/lib/components/ConditionBuilder/index.js.map +0 -1
  102. package/lib/components/ConditionInput/ConditionInput.d.ts +0 -6
  103. package/lib/components/ConditionInput/ConditionInput.d.ts.map +0 -1
  104. package/lib/components/ConditionInput/ConditionInput.js +0 -302
  105. package/lib/components/ConditionInput/ConditionInput.js.map +0 -1
  106. package/lib/components/ConditionInput/ConditionInput.styles.d.ts +0 -5
  107. package/lib/components/ConditionInput/ConditionInput.styles.d.ts.map +0 -1
  108. package/lib/components/ConditionInput/ConditionInput.styles.js +0 -27
  109. package/lib/components/ConditionInput/ConditionInput.styles.js.map +0 -1
  110. package/lib/components/ConditionInput/ConditionInput.types.d.ts +0 -32
  111. package/lib/components/ConditionInput/ConditionInput.types.d.ts.map +0 -1
  112. package/lib/components/ConditionInput/ConditionInput.types.js +0 -2
  113. package/lib/components/ConditionInput/ConditionInput.types.js.map +0 -1
  114. package/lib/components/ConditionInput/index.d.ts +0 -3
  115. package/lib/components/ConditionInput/index.d.ts.map +0 -1
  116. package/lib/components/ConditionInput/index.js +0 -2
  117. package/lib/components/ConditionInput/index.js.map +0 -1
  118. package/lib/components/ConditionInput/utils.d.ts +0 -17
  119. package/lib/components/ConditionInput/utils.d.ts.map +0 -1
  120. package/lib/components/ConditionInput/utils.js +0 -121
  121. package/lib/components/ConditionInput/utils.js.map +0 -1
  122. package/lib/components/PromotedFilters/ConditionSelector.d.ts +0 -31
  123. package/lib/components/PromotedFilters/ConditionSelector.d.ts.map +0 -1
  124. package/lib/components/PromotedFilters/ConditionSelector.js +0 -44
  125. package/lib/components/PromotedFilters/ConditionSelector.js.map +0 -1
  126. package/lib/components/PromotedFilters/PromotedFilters.d.ts +0 -11
  127. package/lib/components/PromotedFilters/PromotedFilters.d.ts.map +0 -1
  128. package/lib/components/PromotedFilters/PromotedFilters.js +0 -153
  129. package/lib/components/PromotedFilters/PromotedFilters.js.map +0 -1
  130. package/lib/components/PromotedFilters/PromotedFilters.styles.d.ts +0 -4
  131. package/lib/components/PromotedFilters/PromotedFilters.styles.d.ts.map +0 -1
  132. package/lib/components/PromotedFilters/PromotedFilters.styles.js +0 -38
  133. package/lib/components/PromotedFilters/PromotedFilters.styles.js.map +0 -1
  134. package/lib/components/PromotedFilters/PromotedFilters.types.d.ts +0 -33
  135. package/lib/components/PromotedFilters/PromotedFilters.types.d.ts.map +0 -1
  136. package/lib/components/PromotedFilters/PromotedFilters.types.js +0 -2
  137. package/lib/components/PromotedFilters/PromotedFilters.types.js.map +0 -1
  138. package/lib/components/PromotedFilters/index.d.ts +0 -3
  139. package/lib/components/PromotedFilters/index.d.ts.map +0 -1
  140. package/lib/components/PromotedFilters/index.js +0 -2
  141. package/lib/components/PromotedFilters/index.js.map +0 -1
  142. package/lib/index.d.ts +0 -7
  143. package/lib/index.d.ts.map +0 -1
  144. package/lib/index.js +0 -8
  145. package/lib/index.js.map +0 -1
@@ -1,302 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { forwardRef, useState, useEffect, useImperativeHandle, useRef } from 'react';
3
- import { CompositeInput, hasProp, Input, RadioButton, useI18n, useConfiguration, DateRangeInput, TimeRangeInput, useUID, NumberRangeInput, RadioButtonGroup } from '@pega/cosmos-react-core';
4
- import AtomicCondition, { getInitConditionForLhs, isValidCondition } from '../ConditionBuilder/AtomicCondition';
5
- import formatCondition from '../ConditionBuilder/core/formatter';
6
- import ValueSelector from '../ConditionBuilder/RhsControls/ValueSelector';
7
- import { truncateISODateString } from '../ConditionBuilder/RhsControls';
8
- import { convertTimeValueToMs } from '../ConditionBuilder/core/time-utils';
9
- import { StyledVerticalAtomicCondition, StyledConditionRadioGroup, StyledVerticalFieldGroup } from './ConditionInput.styles';
10
- import { basicFieldMap, defaultComparators, valuesEqual, rangeValuesEqual, conditionsEqual, possibleFieldValuesToConditionFieldValues } from './utils';
11
- const isDateValid = (dateTimeParam) => {
12
- return dateTimeParam.valueAsISOString && !dateTimeParam.state;
13
- };
14
- const validRhsTypes = new Set(['LITERAL', 'RELATIVE_DATE', 'DATE_FUNCTION']);
15
- const dateFunctions = {
16
- DATE_TIME: [
17
- 'YEARS',
18
- 'QUARTERS',
19
- 'MONTHS',
20
- 'WEEKS',
21
- 'DAYS',
22
- 'HOURS',
23
- 'MINUTES',
24
- 'SECONDS',
25
- 'MONTHS_OF_YEAR',
26
- 'DAYS_OF_MONTH',
27
- 'DAYS_OF_WEEK',
28
- 'HOURS_OF_DAY'
29
- ],
30
- DATE_ONLY: [
31
- 'YEARS',
32
- 'QUARTERS',
33
- 'MONTHS',
34
- 'WEEKS',
35
- 'MONTHS_OF_YEAR',
36
- 'DAYS_OF_MONTH',
37
- 'DAYS_OF_WEEK'
38
- ]
39
- };
40
- const ConditionInput = forwardRef(function ConditionInput({ field: fieldProp, condition: conditionProp, label, mode, onChange, flat = false, handle }, ref) {
41
- const id = useUID();
42
- const t = useI18n();
43
- const { locale } = useConfiguration();
44
- const [collapsed, setCollapsed] = useState(false);
45
- const { name: fieldName, type: fieldType } = fieldProp;
46
- const basicType = basicFieldMap[fieldType] ?? fieldType;
47
- const field = {
48
- id: fieldName,
49
- type: basicType,
50
- primary: label ?? fieldName,
51
- possibleValues: possibleFieldValuesToConditionFieldValues(fieldProp.possibleValues)
52
- };
53
- const fields = [field];
54
- const createConditionForDefaultMode = (value) => {
55
- let valueObj;
56
- if (Array.isArray(value))
57
- valueObj = { values: value };
58
- else
59
- valueObj = { value };
60
- return {
61
- lhs: { field: fieldName },
62
- comparator: defaultComparators[fieldType],
63
- rhs: valueObj
64
- };
65
- };
66
- const convertDateTimeValue = (range) => {
67
- if (!isDateValid(range.start) || !isDateValid(range.end))
68
- return undefined;
69
- const truncatedStartValue = truncateISODateString(range.start.valueAsISOString ?? '', basicType);
70
- const truncatedEndValue = truncateISODateString(range.end.valueAsISOString ?? '', basicType);
71
- return {
72
- start: fieldType === 'TIME_ONLY'
73
- ? convertTimeValueToMs(truncatedStartValue)
74
- : truncatedStartValue,
75
- end: fieldType === 'TIME_ONLY' ? convertTimeValueToMs(truncatedEndValue) : truncatedEndValue
76
- };
77
- };
78
- const createConditionForRange = (value) => {
79
- if (!value || value.start === undefined || value.end === undefined)
80
- return;
81
- return {
82
- lhs: { field: fieldName },
83
- comparator: defaultComparators[fieldType],
84
- // undefined checked before, type added to satisfy typescript
85
- rhs: { ...value }
86
- };
87
- };
88
- const validComparators = fieldType === 'PICKLIST' ? [{ type: 'TEXT', comparators: ['IN'] }] : undefined;
89
- const condition = conditionProp ??
90
- (fieldType === 'BOOLEAN'
91
- ? undefined
92
- : getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL']), validComparators));
93
- const [newCondition, setNewCondition] = useState(condition);
94
- // holds current status of condition to control if invalid values are kept in forms and errors are displaying
95
- const newConditionStatus = useRef(undefined);
96
- // status of the form control
97
- const [status, setStatus] = useState(undefined);
98
- let rhsValue = fieldType === 'PICKLIST' ? [] : undefined;
99
- let rhsRangeValue;
100
- if (condition?.rhs) {
101
- if (hasProp(condition.rhs, 'value')) {
102
- rhsValue = condition.rhs.value.toString();
103
- }
104
- else if (hasProp(condition.rhs, 'values')) {
105
- rhsValue = condition.rhs.values.map(String);
106
- }
107
- else if (hasProp(condition.rhs, 'start')) {
108
- rhsRangeValue = { start: condition.rhs.start, end: condition.rhs.end };
109
- }
110
- }
111
- const [inputValue, setInputValue] = useState(rhsValue);
112
- const [rangeInputValue, setRangeInputValue] = useState(rhsRangeValue);
113
- useEffect(() => {
114
- // condition state is updated only when condition status is valid
115
- // allows to keep invalid values in inputs
116
- if (!newConditionStatus.current)
117
- setNewCondition(condition);
118
- setInputValue(rhsValue);
119
- setRangeInputValue(rhsRangeValue);
120
- }, [conditionProp]);
121
- const handleBlur = () => {
122
- const newValue = typeof inputValue === 'string' ? inputValue.trim() : inputValue;
123
- // trigger onChange only when value has changed
124
- if (!valuesEqual(rhsValue, newValue)) {
125
- onChange(newValue ? createConditionForDefaultMode(newValue) : undefined);
126
- }
127
- };
128
- const handleRangeUpdate = (newRangeValue) => {
129
- // trigger onChange only when value has changed
130
- if (!rangeValuesEqual(rhsRangeValue, newRangeValue)) {
131
- onChange(createConditionForRange(newRangeValue));
132
- }
133
- };
134
- const handleRangeBlur = (newRangeValue) => {
135
- // if both values are undefined, condition is treated as undefined
136
- // if only one value is undefined, condition is treated as invalid
137
- if (newRangeValue &&
138
- ((newRangeValue.start === undefined && newRangeValue.end !== undefined) ||
139
- (newRangeValue.end === undefined && newRangeValue.start !== undefined) ||
140
- (typeof newRangeValue.start === 'number' &&
141
- typeof newRangeValue.end === 'number' &&
142
- newRangeValue.start &&
143
- newRangeValue.end &&
144
- newRangeValue.start > newRangeValue.end))) {
145
- setStatus('error');
146
- }
147
- else {
148
- setStatus(undefined);
149
- }
150
- handleRangeUpdate(newRangeValue);
151
- };
152
- const handleDateRangeBlur = (newRangeValue) => {
153
- // if both timestamps are undefined, condition is treated as undefined
154
- // if only one value is undefined, or any of them is invalid, then condition is treated as invalid
155
- if (((newRangeValue.start.valueAsTimestamp !== undefined ||
156
- newRangeValue.end.valueAsTimestamp !== undefined) &&
157
- (!isDateValid(newRangeValue.start) || !isDateValid(newRangeValue.end))) ||
158
- (newRangeValue.start.valueAsTimestamp &&
159
- newRangeValue.end.valueAsTimestamp &&
160
- newRangeValue.start.valueAsTimestamp > newRangeValue.end.valueAsTimestamp)) {
161
- setStatus('error');
162
- }
163
- else {
164
- setStatus(undefined);
165
- }
166
- handleRangeUpdate(convertDateTimeValue(newRangeValue));
167
- };
168
- const onRadioButtonChange = (value) => {
169
- const updatedCondition = value === undefined
170
- ? undefined
171
- : {
172
- lhs: { field: fieldName },
173
- comparator: value ? 'IS_TRUE' : 'IS_FALSE'
174
- };
175
- onChange(updatedCondition);
176
- };
177
- const clearHandle = useRef(null);
178
- const clear = () => {
179
- onChange(undefined);
180
- setNewCondition(undefined);
181
- setRangeInputValue(undefined);
182
- newConditionStatus.current = undefined;
183
- setStatus(undefined);
184
- if (clearHandle.current)
185
- clearHandle.current.clear();
186
- };
187
- useImperativeHandle(handle, () => ({
188
- clear
189
- }), [clear]);
190
- const handleDateRangeValueChange = (value) => {
191
- setRangeInputValue({
192
- start: value.start.valueAsISOString || undefined,
193
- end: value.end.valueAsISOString || undefined
194
- });
195
- };
196
- const showAdvanced = mode === 'advanced' && fieldType !== 'BOOLEAN';
197
- let defaultControl = null;
198
- const valueToSet = typeof inputValue === 'string' ? inputValue : undefined;
199
- if (!showAdvanced) {
200
- switch (fieldType) {
201
- case 'INTEGER':
202
- case 'DECIMAL':
203
- case 'PERCENTAGE':
204
- case 'CURRENCY':
205
- defaultControl = (_jsx(NumberRangeInput, { id: id, label: label, labelHidden: flat, ref: ref, value: {
206
- start: rangeInputValue?.start?.toString() ?? '',
207
- end: rangeInputValue?.end?.toString() ?? ''
208
- }, onChange: setRangeInputValue, onBlur: newRangeValue => {
209
- handleRangeBlur({
210
- start: newRangeValue.start ? Number(newRangeValue.start) : undefined,
211
- end: newRangeValue.end ? Number(newRangeValue.end) : undefined
212
- });
213
- }, numberOfDecimals: fieldType === 'INTEGER' ? 0 : undefined, status: status, info: status === 'error' ? t('condition_builder_invalid_number_range') : undefined, handle: clearHandle }));
214
- break;
215
- case 'BOOLEAN':
216
- defaultControl = (_jsxs(RadioButtonGroup, { as: StyledConditionRadioGroup, id: id, ref: ref, label: label, labelHidden: flat, name: fieldName, inline: true, children: [_jsx(RadioButton, { label: t('show_all'), checked: condition === undefined, onChange: () => onRadioButtonChange() }), _jsx(RadioButton, { label: t('boolean_display_true_label'), checked: condition?.comparator === 'IS_TRUE', onChange: () => onRadioButtonChange(true) }), _jsx(RadioButton, { label: t('boolean_display_false_label'), checked: condition?.comparator === 'IS_FALSE', onChange: () => onRadioButtonChange(false) })] }));
217
- break;
218
- case 'DATE_ONLY':
219
- defaultControl = (_jsx(DateRangeInput, { id: id, ref: ref, label: label, labelHidden: flat, value: rangeInputValue
220
- ? { start: rangeInputValue.start, end: rangeInputValue.end }
221
- : undefined, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, fromLabel: '', toLabel: '', status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, handle: clearHandle }));
222
- break;
223
- case 'TIME_ONLY':
224
- defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'time', label: label, labelHidden: flat, value: rangeInputValue
225
- ? { start: rangeInputValue.start, end: rangeInputValue.end }
226
- : undefined, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, status: status, info: status === 'error' ? t('condition_builder_invalid_time_range') : undefined, handle: clearHandle }));
227
- break;
228
- case 'DATE_TIME':
229
- defaultControl = (_jsx(TimeRangeInput, { id: id, ref: ref, mode: 'datetime', label: label, labelHidden: flat, value: rangeInputValue
230
- ? { start: rangeInputValue.start, end: rangeInputValue.end }
231
- : undefined, onChange: handleDateRangeValueChange, onBlur: handleDateRangeBlur, status: status, info: status === 'error' ? t('condition_builder_invalid_date_range') : undefined, handle: clearHandle }));
232
- break;
233
- case 'PICKLIST':
234
- defaultControl = (_jsx(ValueSelector, { label: flat ? undefined : label, mode: 'multi-select', values: inputValue ?? [], selectedField: { id: fieldName, ...fieldProp }, comparator: condition?.comparator ?? defaultComparators[fieldType], onChange: value => {
235
- setInputValue(value.length > 0 ? value : undefined);
236
- }, onBlur: handleBlur, onClear: clear, placeholder: t('all'), parameters: [], rhs: { values: [] }, handle: clearHandle }));
237
- break;
238
- case 'TEXT':
239
- case 'EMAIL':
240
- case 'URL':
241
- case 'PHONE':
242
- default:
243
- defaultControl = (_jsx(Input, { id: id, ref: ref, label: label, labelHidden: flat, value: valueToSet, onChange: (e) => setInputValue(e.target.value), onBlur: handleBlur }));
244
- break;
245
- }
246
- }
247
- const dialog = {
248
- renderer: AtomicCondition,
249
- rendererProps: {
250
- condition: newCondition ??
251
- getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL'])),
252
- fields,
253
- onChange: setNewCondition,
254
- itemDirection: 'column',
255
- lhsMode: 'hidden',
256
- validRhsTypes,
257
- dateFunctions,
258
- indicateErrors: !!status
259
- },
260
- onCancel: ({ close }) => {
261
- setNewCondition(condition);
262
- setStatus(undefined);
263
- close();
264
- },
265
- onApply: ({ close }) => {
266
- setStatus(undefined);
267
- if (newCondition === undefined ||
268
- // Avoid trimming values if they did not change.
269
- isValidCondition(newCondition, fields, !conditionsEqual(condition, newCondition))) {
270
- onChange(newCondition);
271
- close();
272
- }
273
- else {
274
- setStatus('error');
275
- }
276
- }
277
- };
278
- if (flat) {
279
- return showAdvanced ? (_jsx(StyledVerticalAtomicCondition, { collapsed: collapsed, onToggleCollapsed: () => setCollapsed(cur => !cur), actions: [{ id: 'clear', text: t('clear'), onClick: clear }], condition: newCondition ??
280
- getInitConditionForLhs({ field: fieldName }, fields, new Set(['LITERAL'])), onBlur: (value) => {
281
- // comparing with conditionProp as it is not initialized as default condition
282
- if (!conditionsEqual(value, conditionProp)) {
283
- onChange(value);
284
- }
285
- setStatus(newConditionStatus.current);
286
- }, onChange: (value, conditionStatus) => {
287
- newConditionStatus.current = conditionStatus;
288
- setNewCondition(value);
289
- }, fields: fields, itemDirection: 'column', lhsMode: 'label', validRhsTypes: validRhsTypes, dateFunctions: dateFunctions, indicateErrors: status === 'error', ref: ref, handle: clearHandle })) : (_jsx(StyledVerticalFieldGroup, { name: label, collapsed: collapsed, onToggleCollapsed: () => setCollapsed(cur => !cur), actions: [{ id: 'clear', text: t('clear'), onClick: clear }], children: defaultControl }));
290
- }
291
- if (showAdvanced) {
292
- return (_jsx(CompositeInput, { dialog: dialog, label: label, onClear: clear, value: conditionProp
293
- ? formatCondition({ condition: conditionProp }, fields, t, {
294
- locale,
295
- omitLhs: true
296
- })
297
- : undefined, placeholder: t('all'), ref: ref }));
298
- }
299
- return defaultControl;
300
- });
301
- export default ConditionInput;
302
- //# sourceMappingURL=ConditionInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionInput.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n FunctionComponent,\n PropsWithoutRef,\n useState,\n ChangeEvent,\n useEffect,\n useImperativeHandle,\n useRef\n} from 'react';\n\nimport {\n CompositeInput,\n CompositeInputProps,\n ForwardProps,\n hasProp,\n Input,\n RadioButton,\n useI18n,\n useConfiguration,\n DateRangeInput,\n TimeRangeInput,\n useUID,\n NumberRangeInput,\n RadioButtonGroup,\n FormControlProps,\n HandleValue\n} from '@pega/cosmos-react-core';\nimport {\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 AtomicCondition, {\n AtomicConditionProps,\n getInitConditionForLhs,\n isValidCondition\n} from '../ConditionBuilder/AtomicCondition';\nimport formatCondition from '../ConditionBuilder/core/formatter';\nimport type {\n DateFunctionsByType,\n Field,\n LeafCondition\n} from '../ConditionBuilder/ConditionBuilder.types';\nimport ValueSelector from '../ConditionBuilder/RhsControls/ValueSelector';\nimport { truncateISODateString } from '../ConditionBuilder/RhsControls';\nimport { convertTimeValueToMs } from '../ConditionBuilder/core/time-utils';\n\nimport type { ConditionInputProps } from './ConditionInput.types';\nimport {\n StyledVerticalAtomicCondition,\n StyledConditionRadioGroup,\n StyledVerticalFieldGroup\n} 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: FunctionComponent<ConditionInputProps & ForwardProps> = forwardRef(\n function ConditionInput(\n {\n field: fieldProp,\n condition: conditionProp,\n label,\n mode,\n onChange,\n flat = false,\n handle\n }: PropsWithoutRef<ConditionInputProps>,\n ref: ConditionInputProps['ref']\n ) {\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 } = fieldProp;\n const basicType = basicFieldMap[fieldType] ?? fieldType;\n\n const field: Field = {\n id: fieldName,\n type: basicType,\n primary: label ?? fieldName,\n possibleValues: possibleFieldValuesToConditionFieldValues(fieldProp.possibleValues)\n };\n\n const fields: AtomicConditionProps['fields'] = [field];\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 if (!isDateValid(range.start) || !isDateValid(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 return {\n start:\n fieldType === 'TIME_ONLY'\n ? convertTimeValueToMs(truncatedStartValue)\n : truncatedStartValue,\n end: fieldType === 'TIME_ONLY' ? convertTimeValueToMs(truncatedEndValue) : truncatedEndValue\n };\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 (!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\n if (\n newRangeValue &&\n ((newRangeValue.start === undefined && newRangeValue.end !== undefined) ||\n (newRangeValue.end === undefined && newRangeValue.start !== undefined) ||\n (typeof newRangeValue.start === 'number' &&\n typeof newRangeValue.end === 'number' &&\n newRangeValue.start &&\n newRangeValue.end &&\n newRangeValue.start > newRangeValue.end))\n ) {\n setStatus('error');\n } else {\n setStatus(undefined);\n }\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 if (\n ((newRangeValue.start.valueAsTimestamp !== undefined ||\n newRangeValue.end.valueAsTimestamp !== undefined) &&\n (!isDateValid(newRangeValue.start) || !isDateValid(newRangeValue.end))) ||\n (newRangeValue.start.valueAsTimestamp &&\n newRangeValue.end.valueAsTimestamp &&\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 onRadioButtonChange = (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\n const clearHandle = useRef<HandleValue>(null);\n\n const clear = () => {\n onChange(undefined);\n setNewCondition(undefined);\n setRangeInputValue(undefined);\n newConditionStatus.current = undefined;\n setStatus(undefined);\n if (clearHandle.current) clearHandle.current.clear();\n };\n\n useImperativeHandle(\n handle,\n () => ({\n clear\n }),\n [clear]\n );\n\n const handleDateRangeValueChange = (value: DateRangeCallbackParameter) => {\n setRangeInputValue({\n start: value.start.valueAsISOString || undefined,\n end: value.end.valueAsISOString || undefined\n });\n };\n\n const showAdvanced = mode === 'advanced' && fieldType !== 'BOOLEAN';\n\n let defaultControl: JSX.Element | null = null;\n\n const valueToSet = typeof inputValue === 'string' ? inputValue : undefined;\n\n if (!showAdvanced) {\n switch (fieldType) {\n case 'INTEGER':\n case 'DECIMAL':\n case 'PERCENTAGE':\n case 'CURRENCY':\n defaultControl = (\n <NumberRangeInput\n id={id}\n label={label}\n labelHidden={flat}\n ref={ref}\n value={{\n start: rangeInputValue?.start?.toString() ?? '',\n end: rangeInputValue?.end?.toString() ?? ''\n }}\n onChange={setRangeInputValue}\n onBlur={newRangeValue => {\n handleRangeBlur({\n start: newRangeValue.start ? Number(newRangeValue.start) : undefined,\n end: newRangeValue.end ? Number(newRangeValue.end) : undefined\n });\n }}\n numberOfDecimals={fieldType === 'INTEGER' ? 0 : undefined}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_number_range') : undefined}\n handle={clearHandle}\n />\n );\n break;\n case 'BOOLEAN':\n defaultControl = (\n <RadioButtonGroup\n as={StyledConditionRadioGroup}\n id={id}\n ref={ref}\n label={label}\n labelHidden={flat}\n name={fieldName}\n inline\n >\n <RadioButton\n label={t('show_all')}\n checked={condition === undefined}\n onChange={() => onRadioButtonChange()}\n />\n <RadioButton\n label={t('boolean_display_true_label')}\n checked={condition?.comparator === 'IS_TRUE'}\n onChange={() => onRadioButtonChange(true)}\n />\n <RadioButton\n label={t('boolean_display_false_label')}\n checked={condition?.comparator === 'IS_FALSE'}\n onChange={() => onRadioButtonChange(false)}\n />\n </RadioButtonGroup>\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={\n rangeInputValue\n ? { start: rangeInputValue.start, end: rangeInputValue.end }\n : undefined\n }\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 handle={clearHandle}\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={\n rangeInputValue\n ? { start: rangeInputValue.start, end: rangeInputValue.end }\n : undefined\n }\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_time_range') : undefined}\n handle={clearHandle}\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={\n rangeInputValue\n ? { start: rangeInputValue.start, end: rangeInputValue.end }\n : undefined\n }\n onChange={handleDateRangeValueChange}\n onBlur={handleDateRangeBlur}\n status={status}\n info={status === 'error' ? t('condition_builder_invalid_date_range') : undefined}\n handle={clearHandle}\n />\n );\n break;\n case 'PICKLIST':\n defaultControl = (\n <ValueSelector\n label={flat ? undefined : label}\n mode='multi-select'\n values={inputValue ?? []}\n selectedField={{ id: fieldName, ...fieldProp }}\n comparator={condition?.comparator ?? defaultComparators[fieldType]}\n onChange={value => {\n setInputValue(value.length > 0 ? value : undefined);\n }}\n onBlur={handleBlur}\n onClear={clear}\n placeholder={t('all')}\n parameters={[]}\n rhs={{ values: [] }}\n handle={clearHandle}\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}\n label={label}\n labelHidden={flat}\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<AtomicConditionProps & ForwardProps>['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 },\n onCancel: ({ close }) => {\n setNewCondition(condition);\n setStatus(undefined);\n close();\n },\n onApply: ({ close }) => {\n setStatus(undefined);\n if (\n newCondition === undefined ||\n // Avoid trimming values if they did not change.\n isValidCondition(newCondition, fields, !conditionsEqual(condition, newCondition))\n ) {\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 actions={[{ id: 'clear', text: t('clear'), onClick: clear }]}\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}\n handle={clearHandle}\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 onClear={clear}\n value={\n conditionProp\n ? formatCondition({ condition: conditionProp }, fields, t, {\n locale,\n omitLhs: true\n })\n : undefined\n }\n placeholder={t('all')}\n ref={ref}\n />\n );\n }\n\n return defaultControl;\n }\n);\n\nexport default ConditionInput;\n"]}
@@ -1,5 +0,0 @@
1
- import { DefaultTheme } from 'styled-components';
2
- export declare const StyledConditionRadioGroup: import("styled-components").StyledComponent<"fieldset", DefaultTheme, {}, never>;
3
- export declare const StyledVerticalFieldGroup: import("styled-components").StyledComponent<import("react").FunctionComponent<import("@pega/cosmos-react-core").FieldGroupProps & import("@pega/cosmos-react-core").ForwardProps>, DefaultTheme, {}, never>;
4
- export declare const StyledVerticalAtomicCondition: import("styled-components").StyledComponent<import("react").FunctionComponent<import("../ConditionBuilder/AtomicCondition").AtomicConditionProps & import("@pega/cosmos-react-core").ForwardProps>, DefaultTheme, {}, never>;
5
- //# sourceMappingURL=ConditionInput.styles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionInput.styles.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.styles.ts"],"names":[],"mappings":"AAAA,OAAe,EAAc,YAAY,EAAO,MAAM,mBAAmB,CAAC;AAa1E,eAAO,MAAM,yBAAyB,kFAIrC,CAAC;AAsBF,eAAO,MAAM,wBAAwB,6MAA+C,CAAC;AAIrF,eAAO,MAAM,6BAA6B,8NAAoD,CAAC"}
@@ -1,27 +0,0 @@
1
- import styled, { css } from 'styled-components';
2
- import { StyledGrid, defaultThemeProp, StyledFieldGroupLegend, StyledButton, FieldGroup, StyledRadioCheckGroup } from '@pega/cosmos-react-core';
3
- import { AtomicCondition } from '../ConditionBuilder';
4
- export const StyledConditionRadioGroup = styled(StyledRadioCheckGroup) `
5
- ${StyledGrid} {
6
- display: inline-flex;
7
- }
8
- `;
9
- StyledConditionRadioGroup.defaultProps = defaultThemeProp;
10
- const StyledFieldGroupLegendFn = ({ theme: { base: { palette } } }) => {
11
- return css `
12
- ${StyledFieldGroupLegend} {
13
- border-block-start: 0.0625rem solid ${palette['border-line']};
14
- padding-block-start: 0.625rem;
15
-
16
- ${StyledButton} {
17
- border-color: transparent;
18
- font-weight: initial;
19
- }
20
- }
21
- `;
22
- };
23
- export const StyledVerticalFieldGroup = styled(FieldGroup)(StyledFieldGroupLegendFn);
24
- StyledVerticalFieldGroup.defaultProps = defaultThemeProp;
25
- export const StyledVerticalAtomicCondition = styled(AtomicCondition)(StyledFieldGroupLegendFn);
26
- StyledVerticalAtomicCondition.defaultProps = defaultThemeProp;
27
- //# sourceMappingURL=ConditionInput.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionInput.styles.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.styles.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAA4B,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAClE,UAAU;;;CAGb,CAAC;AAEF,yBAAyB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE1D,MAAM,wBAAwB,GAAG,CAAC,EAChC,KAAK,EAAE,EACL,IAAI,EAAE,EAAE,OAAO,EAAE,EAClB,EACwB,EAAE,EAAE;IAC7B,OAAO,GAAG,CAAA;MACN,sBAAsB;4CACgB,OAAO,CAAC,aAAa,CAAC;;;QAG1D,YAAY;;;;;GAKjB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAErF,wBAAwB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAE/F,6BAA6B,CAAC,YAAY,GAAG,gBAAgB,CAAC","sourcesContent":["import styled, { ThemeProps, DefaultTheme, css } from 'styled-components';\n\nimport {\n StyledGrid,\n defaultThemeProp,\n StyledFieldGroupLegend,\n StyledButton,\n FieldGroup,\n StyledRadioCheckGroup\n} from '@pega/cosmos-react-core';\n\nimport { AtomicCondition } from '../ConditionBuilder';\n\nexport const StyledConditionRadioGroup = styled(StyledRadioCheckGroup)`\n ${StyledGrid} {\n display: inline-flex;\n }\n`;\n\nStyledConditionRadioGroup.defaultProps = defaultThemeProp;\n\nconst StyledFieldGroupLegendFn = ({\n theme: {\n base: { palette }\n }\n}: ThemeProps<DefaultTheme>) => {\n return css`\n ${StyledFieldGroupLegend} {\n border-block-start: 0.0625rem solid ${palette['border-line']};\n padding-block-start: 0.625rem;\n\n ${StyledButton} {\n border-color: transparent;\n font-weight: initial;\n }\n }\n `;\n};\n\nexport const StyledVerticalFieldGroup = styled(FieldGroup)(StyledFieldGroupLegendFn);\n\nStyledVerticalFieldGroup.defaultProps = defaultThemeProp;\n\nexport const StyledVerticalAtomicCondition = styled(AtomicCondition)(StyledFieldGroupLegendFn);\n\nStyledVerticalAtomicCondition.defaultProps = defaultThemeProp;\n"]}
@@ -1,32 +0,0 @@
1
- import { Ref } from 'react';
2
- import { HandleValue } from '@pega/cosmos-react-core';
3
- import type { LeafCondition, ValueSelection } from '../ConditionBuilder';
4
- export type ConditionFieldType = 'TEXT' | 'EMAIL' | 'URL' | 'PHONE' | 'INTEGER' | 'DECIMAL' | 'PERCENTAGE' | 'BOOLEAN' | 'CURRENCY' | 'DATE_ONLY' | 'TIME_ONLY' | 'DATE_TIME' | 'PICKLIST';
5
- export interface ConditionField {
6
- /** Unique field identifier. */
7
- name: string;
8
- /** Type of the field. */
9
- type: ConditionFieldType;
10
- /** List of possible field values */
11
- possibleValues?: ValueSelection<ConditionField>;
12
- }
13
- export type ConditionInputMode = 'default' | 'advanced' | 'predefined';
14
- export interface ConditionInputProps {
15
- /** Definition of the field the condition is created for. */
16
- field: ConditionField;
17
- /** Display mode. Either with default comparator or the full-fledged */
18
- mode: ConditionInputMode;
19
- /** Label for the input. */
20
- label?: string;
21
- /** Condition value. */
22
- condition?: LeafCondition;
23
- /** Callback invoked when user changes the condition. */
24
- onChange: (condition?: LeafCondition) => void;
25
- /** Reference to the input element. */
26
- ref?: Ref<HTMLInputElement>;
27
- /** Whether advanced view should be wrapped in popup or just flat. */
28
- flat?: boolean;
29
- /** Imperative handle */
30
- handle?: Ref<HandleValue>;
31
- }
32
- //# sourceMappingURL=ConditionInput.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionInput.types.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,OAAO,GACP,KAAK,GACL,OAAO,GACP,SAAS,GACT,SAAS,GACT,YAAY,GACZ,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,oCAAoC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,KAAK,EAAE,cAAc,CAAC;IACtB,uEAAuE;IACvE,IAAI,EAAE,kBAAkB,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,sCAAsC;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5B,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ConditionInput.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionInput.types.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/ConditionInput.types.ts"],"names":[],"mappings":"","sourcesContent":["import { Ref } from 'react';\n\nimport { HandleValue } from '@pega/cosmos-react-core';\n\nimport type { LeafCondition, ValueSelection } from '../ConditionBuilder';\n\nexport type ConditionFieldType =\n | 'TEXT'\n | 'EMAIL'\n | 'URL'\n | 'PHONE'\n | 'INTEGER'\n | 'DECIMAL'\n | 'PERCENTAGE'\n | 'BOOLEAN'\n | 'CURRENCY'\n | 'DATE_ONLY'\n | 'TIME_ONLY'\n | 'DATE_TIME'\n | 'PICKLIST';\n\nexport interface ConditionField {\n /** Unique field identifier. */\n name: string;\n /** Type of the field. */\n type: ConditionFieldType;\n /** List of possible field values */\n possibleValues?: ValueSelection<ConditionField>;\n}\n\nexport type ConditionInputMode = 'default' | 'advanced' | 'predefined';\n\nexport interface ConditionInputProps {\n /** Definition of the field the condition is created for. */\n field: ConditionField;\n /** Display mode. Either with default comparator or the full-fledged */\n mode: ConditionInputMode;\n /** Label for the input. */\n label?: string;\n /** Condition value. */\n condition?: LeafCondition;\n /** Callback invoked when user changes the condition. */\n onChange: (condition?: LeafCondition) => void;\n /** Reference to the input element. */\n ref?: Ref<HTMLInputElement>;\n /** Whether advanced view should be wrapped in popup or just flat. */\n flat?: boolean;\n /** Imperative handle */\n handle?: Ref<HandleValue>;\n}\n"]}
@@ -1,3 +0,0 @@
1
- export { default } from './ConditionInput';
2
- export type { ConditionInputProps, ConditionInputMode, ConditionFieldType, ConditionField } from './ConditionInput.types';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACf,MAAM,wBAAwB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { default } from './ConditionInput';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ConditionInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { default } from './ConditionInput';\nexport type {\n ConditionInputProps,\n ConditionInputMode,\n ConditionFieldType,\n ConditionField\n} from './ConditionInput.types';\n"]}
@@ -1,17 +0,0 @@
1
- import { Field, LeafCondition, ValueSelection } from '../ConditionBuilder';
2
- import type { Comparator, FieldType } from '../ConditionBuilder/core/types';
3
- import type { ConditionField, ConditionFieldType } from './ConditionInput.types';
4
- export declare const defaultComparators: Record<ConditionFieldType, Comparator>;
5
- export declare const basicFieldMap: Record<ConditionFieldType, FieldType>;
6
- export declare const valuesEqual: (value1: string | string[] | undefined, value2: string | string[] | undefined) => boolean;
7
- export declare const rangeValuesEqual: (value1: {
8
- start: string | number | undefined;
9
- end: string | number | undefined;
10
- } | undefined, value2: {
11
- start: string | number | undefined;
12
- end: string | number | undefined;
13
- } | undefined) => boolean;
14
- export declare const conditionsEqual: (condition1: LeafCondition | undefined, condition2: LeafCondition | undefined) => boolean;
15
- export declare const convertFieldToConditionField: (lhs?: Field) => ConditionField | undefined;
16
- export declare const possibleFieldValuesToConditionFieldValues: (possibleValues: ConditionField['possibleValues']) => ValueSelection<Field> | undefined;
17
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/ConditionInput/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAc5D,CAAC;AAEX,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,kBAAkB,EAAE,SAAS,CActD,CAAC;AAEX,eAAO,MAAM,WAAW,WACd,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,UAC7B,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,YAiBtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,WACnB;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,UACpF;IAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,YAS7F,CAAC;AAEF,eAAO,MAAM,eAAe,eACd,aAAa,GAAG,SAAS,cACzB,aAAa,GAAG,SAAS,YAuDtC,CAAC;AAEF,eAAO,MAAM,4BAA4B,SAAU,KAAK,+BAOvD,CAAC;AAEF,eAAO,MAAM,yCAAyC,mBACpC,cAAc,CAAC,gBAAgB,CAAC,KAC/C,eAAe,KAAK,CAAC,GAAG,SAc1B,CAAC"}
@@ -1,121 +0,0 @@
1
- import { hasProp } from '@pega/cosmos-react-core';
2
- export const defaultComparators = {
3
- TEXT: 'CONTAINS',
4
- EMAIL: 'CONTAINS',
5
- URL: 'CONTAINS',
6
- PHONE: 'CONTAINS',
7
- INTEGER: 'BTW',
8
- DECIMAL: 'BTW',
9
- PERCENTAGE: 'BTW',
10
- CURRENCY: 'BTW',
11
- BOOLEAN: 'IS_TRUE',
12
- DATE_ONLY: 'BTW',
13
- TIME_ONLY: 'BTW',
14
- DATE_TIME: 'BTW',
15
- PICKLIST: 'IN'
16
- };
17
- export const basicFieldMap = {
18
- EMAIL: 'TEXT',
19
- URL: 'TEXT',
20
- PHONE: 'TEXT',
21
- INTEGER: 'NUMBER',
22
- DECIMAL: 'NUMBER',
23
- PERCENTAGE: 'NUMBER',
24
- CURRENCY: 'NUMBER',
25
- TEXT: 'TEXT',
26
- BOOLEAN: 'BOOLEAN',
27
- DATE_ONLY: 'DATE_ONLY',
28
- TIME_ONLY: 'TIME_ONLY',
29
- DATE_TIME: 'DATE_TIME',
30
- PICKLIST: 'TEXT'
31
- };
32
- export const valuesEqual = (value1, value2) => {
33
- // both values are undefined
34
- if (!value1 && !value2)
35
- return true;
36
- // only one value is undefined
37
- if (!value1 || !value2)
38
- return false;
39
- // for strings compare only value
40
- if (typeof value1 === 'string') {
41
- return value1 === value2;
42
- }
43
- // for arrays compare length and every value
44
- if (value1.length !== value2.length)
45
- return false;
46
- return value1.every((value, index) => value === value2[index]);
47
- };
48
- export const rangeValuesEqual = (value1, value2) => {
49
- // both values are undefined
50
- if (!value1 && !value2)
51
- return true;
52
- // only one value is undefined
53
- if (!value1 || !value2)
54
- return false;
55
- return value1.start === value2.start && value1.end === value2.end;
56
- };
57
- export const conditionsEqual = (condition1, condition2) => {
58
- // both values are undefined
59
- if (!condition1 && !condition2)
60
- return true;
61
- // only one value is undefined
62
- if (!condition1 || !condition2)
63
- return false;
64
- // conditions are for different fields
65
- if (condition1.lhs?.field !== condition2.lhs?.field)
66
- return false;
67
- // comparators are different
68
- if (condition1.comparator !== condition2.comparator)
69
- return false;
70
- // comparators are unary
71
- if (!condition1.rhs && !condition2.rhs)
72
- return true;
73
- if (condition1.rhs && condition2.rhs) {
74
- // datefunction is first, cause it contains also 'value' prop, so it would fall into next condition block
75
- if (hasProp(condition1.rhs, 'dateFunction') && hasProp(condition2.rhs, 'dateFunction')) {
76
- return (condition1.rhs.dateFunction === condition2.rhs.dateFunction &&
77
- valuesEqual(condition1.rhs.value.toString(), condition2.rhs.value.toString()));
78
- }
79
- if (hasProp(condition1.rhs, 'value') && hasProp(condition2.rhs, 'value')) {
80
- if (typeof condition1.rhs.value !== typeof condition2.rhs.value)
81
- return false;
82
- return valuesEqual(condition1.rhs.value.toString(), condition2.rhs.value.toString());
83
- }
84
- if (hasProp(condition1.rhs, 'values') && hasProp(condition2.rhs, 'values')) {
85
- if (typeof condition1.rhs.values[0] !== typeof condition2.rhs.values[0])
86
- return false;
87
- return valuesEqual(condition1.rhs.values.map(p => p.toString()), condition2.rhs.values.map(p => p.toString()));
88
- }
89
- if (hasProp(condition1.rhs, 'start') && hasProp(condition2.rhs, 'start')) {
90
- return rangeValuesEqual(condition1.rhs, condition2.rhs);
91
- }
92
- if (hasProp(condition1.rhs, 'relativeDate') && hasProp(condition2.rhs, 'relativeDate')) {
93
- return (condition1.rhs.relativeDate.datePart === condition2.rhs.relativeDate.datePart &&
94
- condition1.rhs.relativeDate.interval === condition2.rhs.relativeDate.interval &&
95
- condition1.rhs.relativeDate.timePeriod === condition2.rhs.relativeDate.timePeriod);
96
- }
97
- if (hasProp(condition1.rhs, 'field') && hasProp(condition2.rhs, 'field')) {
98
- return condition1.rhs.field === condition2.rhs.field;
99
- }
100
- if (hasProp(condition1.rhs, 'parameterId') && hasProp(condition2.rhs, 'parameterId')) {
101
- return condition1.rhs.parameterId === condition2.rhs.parameterId;
102
- }
103
- }
104
- return false;
105
- };
106
- export const convertFieldToConditionField = (lhs) => {
107
- return lhs && hasProp(lhs, 'type')
108
- ? {
109
- name: lhs.id,
110
- type: lhs.type === 'NUMBER' ? 'INTEGER' : lhs.type
111
- }
112
- : undefined;
113
- };
114
- export const possibleFieldValuesToConditionFieldValues = (possibleValues) => {
115
- if (possibleValues === undefined || typeof possibleValues !== 'function')
116
- return possibleValues;
117
- return ({ searchString, comparator, lhs }) => {
118
- return possibleValues({ searchString, comparator, lhs: convertFieldToConditionField(lhs) });
119
- };
120
- };
121
- //# sourceMappingURL=utils.js.map