@k-int/stripes-kint-components 5.6.1 → 5.7.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.
- package/CHANGELOG.md +7 -0
- package/es/lib/ActionList/ActionListFieldArray.js +32 -37
- package/es/lib/ComboButton/ComboButton.js +5 -6
- package/es/lib/CustomProperties/Config/CustomPropertiesLookup.js +4 -7
- package/es/lib/CustomProperties/Config/CustomPropertiesSettings.js +29 -32
- package/es/lib/CustomProperties/Config/CustomPropertyForm.js +58 -58
- package/es/lib/CustomProperties/Config/CustomPropertyForm.test.js +2 -2
- package/es/lib/CustomProperties/Config/CustomPropertyView.js +32 -33
- package/es/lib/CustomProperties/Config/CustomPropertyView.test.js +1 -1
- package/es/lib/CustomProperties/Edit/CustomPropertiesEdit.js +1 -1
- package/es/lib/CustomProperties/Edit/CustomPropertiesEditCtx.js +3 -3
- package/es/lib/CustomProperties/Edit/CustomPropertiesListField.js +5 -10
- package/es/lib/CustomProperties/Edit/CustomPropertyField.js +18 -25
- package/es/lib/CustomProperties/Edit/CustomPropertyField.test.js +5 -5
- package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.js +2 -2
- package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.test.js +1 -1
- package/es/lib/CustomProperties/Edit/testResources.js +11 -12
- package/es/lib/CustomProperties/Filter/CustomPropertiesFilter.js +6 -11
- package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.js +20 -28
- package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.test.js +1 -1
- package/es/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js +6 -6
- package/es/lib/CustomProperties/Filter/CustomPropertiesRule.js +8 -8
- package/es/lib/CustomProperties/Filter/testResources.js +1 -2
- package/es/lib/CustomProperties/Filter/useParseActiveFilterStrings.js +1 -2
- package/es/lib/CustomProperties/View/CustomPropertiesView.js +1 -1
- package/es/lib/CustomProperties/View/CustomPropertiesViewCtx.js +18 -26
- package/es/lib/CustomProperties/View/CustomPropertyCard.js +7 -11
- package/es/lib/CycleButton/CycleButton.js +1 -1
- package/es/lib/EditableRefdataCategoryList/EditableRefdataCategoryList.js +26 -38
- package/es/lib/EditableRefdataList/EditableRefdataList.js +26 -33
- package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.js +1 -1
- package/es/lib/EditableSettingsList/SettingField/EditSettingValue.js +5 -5
- package/es/lib/EditableSettingsList/SettingField/RenderSettingValue.js +10 -12
- package/es/lib/EditableSettingsList/SettingField/SettingField.js +4 -4
- package/es/lib/FormattedKintMessage/FormattedKintMessage.js +4 -7
- package/es/lib/IconSelect/IconSelect.js +5 -9
- package/es/lib/NoResultsMessage/NoResultsMessage.js +4 -4
- package/es/lib/RefdataButtons/RefdataButtons.js +3 -3
- package/es/lib/RefdataCategoriesSettings/RefdataCategoriesSettings.js +13 -17
- package/es/lib/ResponsiveButtonGroup/ResponsiveButtonGroup.js +21 -28
- package/es/lib/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js +5 -6
- package/es/lib/RichSelect/RichSelect.js +14 -19
- package/es/lib/RichSelect/useSelectedOption.js +1 -2
- package/es/lib/SASQLookupComponent/SASQLookupComponent.js +14 -17
- package/es/lib/SASQLookupComponent/TableBody/TableBody.js +6 -8
- package/es/lib/SASQRoute/SASQRoute.js +2 -2
- package/es/lib/SASQViewComponent/SASQViewComponent.js +5 -9
- package/es/lib/SettingPage/SettingPagePane.js +2 -2
- package/es/lib/SettingsFormContainer/SettingsFormContainer.js +2 -2
- package/es/lib/Typedown/Typedown.js +34 -32
- package/es/lib/hooks/typedownHooks/useTypedown.js +2 -2
- package/es/lib/hooks/typedownHooks/useTypedownToggle.js +2 -2
- package/es/lib/hooks/useActionListRef.js +1 -1
- package/es/lib/hooks/useActiveElement.js +1 -1
- package/es/lib/hooks/useCustomProperties.js +2 -2
- package/es/lib/hooks/useHelperApp.js +6 -6
- package/es/lib/hooks/useIntlKeyStore.js +4 -7
- package/es/lib/hooks/useKintIntl.js +5 -11
- package/es/lib/hooks/useKiwtSASQuery.js +1 -1
- package/es/lib/hooks/useModConfigEntries.js +2 -2
- package/es/lib/hooks/useMutateCustomProperties.js +8 -8
- package/es/lib/hooks/useMutateModConfigEntry.js +2 -2
- package/es/lib/hooks/useMutateRefdataCategory.js +4 -4
- package/es/lib/hooks/useMutateRefdataValue.js +6 -6
- package/es/lib/hooks/useQIndex.js +5 -5
- package/es/lib/hooks/useRefdata.js +3 -3
- package/es/lib/hooks/useTemplates.js +4 -4
- package/es/lib/settingsHooks/useAppSettings.js +7 -11
- package/es/lib/settingsHooks/useSettingSection.js +2 -2
- package/es/lib/settingsHooks/useSettings.js +3 -3
- package/es/lib/utils/buildUrl.js +2 -3
- package/es/lib/utils/filterParsers/deparseKiwtQueryFilters.js +5 -5
- package/es/lib/utils/filterParsers/parseKiwtQueryFilters.js +2 -2
- package/es/lib/utils/filterParsers/parseKiwtQueryGroups.js +4 -5
- package/es/lib/utils/filterParsers/parseKiwtQueryString.js +1 -1
- package/es/lib/utils/generateKiwtQueryParams.js +28 -37
- package/es/lib/utils/groupCustomPropertiesByCtx.js +2 -3
- package/es/lib/utils/matchString.js +5 -7
- package/es/lib/utils/parseErrorResponse.js +2 -3
- package/es/lib/utils/selectorSafe.js +2 -3
- package/es/lib/utils/sortByLabel.js +2 -3
- package/es/lib/validators/validators.js +3 -3
- package/package.json +2 -4
- package/src/lib/Typedown/Typedown.js +12 -5
- package/styles/TypeDown.css +6 -1
|
@@ -32,12 +32,11 @@ const CustomPropertyField = _ref => {
|
|
|
32
32
|
const kintIntl = (0, _hooks.useKintIntl)(passedIntlKey, passedIntlNS);
|
|
33
33
|
// Set up the validator for the customProperty
|
|
34
34
|
const customPropertyValidator = (fieldValue, allValues) => {
|
|
35
|
-
var _allValues$customProp, _allValues$customProp2;
|
|
36
35
|
const {
|
|
37
36
|
note,
|
|
38
37
|
publicNote,
|
|
39
38
|
value: currentValue
|
|
40
|
-
} =
|
|
39
|
+
} = allValues?.customProperties?.[customProperty?.value]?.[0] ?? {};
|
|
41
40
|
if (note && !currentValue || publicNote && !currentValue) {
|
|
42
41
|
if (customProperty.type === CUSTOM_PROPERTY_TYPES.DECIMAL_CLASS_NAME || customProperty.type === CUSTOM_PROPERTY_TYPES.INTEGER_CLASS_NAME) {
|
|
43
42
|
return kintIntl.formatKintMessage({
|
|
@@ -80,9 +79,7 @@ const CustomPropertyField = _ref => {
|
|
|
80
79
|
return availableCustomProperties.find(cp => cp.value === customPropertyValue);
|
|
81
80
|
};
|
|
82
81
|
const renderCustomPropertyName = () => {
|
|
83
|
-
var _customPropertyValue$;
|
|
84
82
|
const unsetCustomProperties = availableCustomProperties.filter(t => {
|
|
85
|
-
var _custPropValue$;
|
|
86
83
|
// Only optional properties can be set
|
|
87
84
|
if (t.primary) return false;
|
|
88
85
|
const custPropValue = value[t.value];
|
|
@@ -91,16 +88,16 @@ const CustomPropertyField = _ref => {
|
|
|
91
88
|
if (custPropValue === undefined) return true;
|
|
92
89
|
|
|
93
90
|
// The customProperty is set but is marked for deletion. Allow reuse.
|
|
94
|
-
if (
|
|
91
|
+
if (custPropValue[0]?._delete) return true;
|
|
95
92
|
return false;
|
|
96
93
|
});
|
|
97
94
|
const customPropertyValue = value[customProperty.value];
|
|
98
|
-
const id = customPropertyValue
|
|
95
|
+
const id = customPropertyValue?.[0]?.id;
|
|
99
96
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select, {
|
|
100
97
|
autoFocus: !id,
|
|
101
98
|
dataOptions: [customProperty, ...unsetCustomProperties] // The selected customProperty, and the available unset customProperties
|
|
102
99
|
,
|
|
103
|
-
id:
|
|
100
|
+
id: `edit-customproperty-${index}-name`,
|
|
104
101
|
label: kintIntl.formatKintMessage({
|
|
105
102
|
id: 'customProperties.name',
|
|
106
103
|
overrideValue: labelOverrides.name
|
|
@@ -132,7 +129,6 @@ const CustomPropertyField = _ref => {
|
|
|
132
129
|
});
|
|
133
130
|
};
|
|
134
131
|
const renderCustomPropertyValue = () => {
|
|
135
|
-
var _customProperty$optio;
|
|
136
132
|
const currentValue = value[customProperty.value] ? value[customProperty.value][0] : {};
|
|
137
133
|
const min = Number.MIN_SAFE_INTEGER;
|
|
138
134
|
const max = Number.MAX_SAFE_INTEGER;
|
|
@@ -157,14 +153,14 @@ const CustomPropertyField = _ref => {
|
|
|
157
153
|
component: _components.Select,
|
|
158
154
|
// don't order dataOptions here, notSet should always be first in list
|
|
159
155
|
dataOptions: customProperty.options,
|
|
160
|
-
format: v => v
|
|
156
|
+
format: v => v?.value
|
|
161
157
|
};
|
|
162
158
|
break;
|
|
163
159
|
case CUSTOM_PROPERTY_TYPES.MULTI_REFDATA_CLASS_NAME:
|
|
164
160
|
fieldProps = {
|
|
165
161
|
component: _components.MultiSelection,
|
|
166
162
|
// The "not set" value is not relevant for a multi select
|
|
167
|
-
dataOptions: (0, _orderBy.default)(
|
|
163
|
+
dataOptions: (0, _orderBy.default)(customProperty.options?.filter(opt => !!opt?.value), 'label'),
|
|
168
164
|
renderToOverlay: true
|
|
169
165
|
};
|
|
170
166
|
// MultiSelection passes the changed array as a value not an event
|
|
@@ -173,7 +169,7 @@ const CustomPropertyField = _ref => {
|
|
|
173
169
|
...value,
|
|
174
170
|
[customProperty.value]: [{
|
|
175
171
|
...currentValue,
|
|
176
|
-
_delete:
|
|
172
|
+
_delete: refdataArray?.length === 0 ? true : undefined,
|
|
177
173
|
// Delete customProperty if removing all values.
|
|
178
174
|
value: refdataArray
|
|
179
175
|
}]
|
|
@@ -223,12 +219,12 @@ const CustomPropertyField = _ref => {
|
|
|
223
219
|
}
|
|
224
220
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
225
221
|
"data-test-customproperty-value": true,
|
|
226
|
-
id:
|
|
222
|
+
id: `edit-customproperty-${index}-value`,
|
|
227
223
|
label: kintIntl.formatKintMessage({
|
|
228
224
|
id: 'customProperties.value',
|
|
229
225
|
overrideValue: labelOverrides.value
|
|
230
226
|
}),
|
|
231
|
-
name:
|
|
227
|
+
name: `${name}.${customProperty.value}[0].value`,
|
|
232
228
|
onChange: handleChange,
|
|
233
229
|
required: !customProperty.primary,
|
|
234
230
|
validate: (fieldValue, allValues) => customPropertyValidator(fieldValue, allValues),
|
|
@@ -236,8 +232,7 @@ const CustomPropertyField = _ref => {
|
|
|
236
232
|
});
|
|
237
233
|
};
|
|
238
234
|
const renderCustomPropertyVisibility = () => {
|
|
239
|
-
|
|
240
|
-
const customPropertyObject = (_value$customProperty = (_value$customProperty2 = value[customProperty.value]) === null || _value$customProperty2 === void 0 ? void 0 : _value$customProperty2[0]) !== null && _value$customProperty !== void 0 ? _value$customProperty : {};
|
|
235
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
241
236
|
const handleChange = e => {
|
|
242
237
|
onChange({
|
|
243
238
|
...value,
|
|
@@ -262,18 +257,17 @@ const CustomPropertyField = _ref => {
|
|
|
262
257
|
overrideValue: labelOverrides.internalFalse
|
|
263
258
|
})
|
|
264
259
|
}],
|
|
265
|
-
id:
|
|
260
|
+
id: `edit-customproperty-${index}-visibility`,
|
|
266
261
|
label: kintIntl.formatKintMessage({
|
|
267
262
|
id: 'customProperties.visibility',
|
|
268
263
|
overrideValue: labelOverrides.visibility
|
|
269
264
|
}),
|
|
270
265
|
onChange: handleChange,
|
|
271
|
-
value:
|
|
266
|
+
value: customPropertyObject?.internal ?? customProperty.defaultInternal
|
|
272
267
|
});
|
|
273
268
|
};
|
|
274
269
|
const renderCustomPropertyNoteInternal = () => {
|
|
275
|
-
|
|
276
|
-
const customPropertyObject = (_value$customProperty3 = (_value$customProperty4 = value[customProperty.value]) === null || _value$customProperty4 === void 0 ? void 0 : _value$customProperty4[0]) !== null && _value$customProperty3 !== void 0 ? _value$customProperty3 : {};
|
|
270
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
277
271
|
const handleChange = e => {
|
|
278
272
|
onChange({
|
|
279
273
|
...value,
|
|
@@ -285,18 +279,17 @@ const CustomPropertyField = _ref => {
|
|
|
285
279
|
};
|
|
286
280
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextArea, {
|
|
287
281
|
"data-test-customproperty-note": true,
|
|
288
|
-
id:
|
|
282
|
+
id: `edit-customproperty-${index}-internal-note`,
|
|
289
283
|
label: kintIntl.formatKintMessage({
|
|
290
284
|
id: 'customProperties.internalNote',
|
|
291
285
|
overrideValue: labelOverrides.internalNote
|
|
292
286
|
}),
|
|
293
287
|
onChange: handleChange,
|
|
294
|
-
value: customPropertyObject
|
|
288
|
+
value: customPropertyObject?.note
|
|
295
289
|
});
|
|
296
290
|
};
|
|
297
291
|
const renderCustomPropertyNotePublic = () => {
|
|
298
|
-
|
|
299
|
-
const customPropertyObject = (_value$customProperty5 = (_value$customProperty6 = value[customProperty.value]) === null || _value$customProperty6 === void 0 ? void 0 : _value$customProperty6[0]) !== null && _value$customProperty5 !== void 0 ? _value$customProperty5 : {};
|
|
292
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
300
293
|
const handleChange = e => {
|
|
301
294
|
onChange({
|
|
302
295
|
...value,
|
|
@@ -308,13 +301,13 @@ const CustomPropertyField = _ref => {
|
|
|
308
301
|
};
|
|
309
302
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextArea, {
|
|
310
303
|
"data-test-customproperty-public-note": true,
|
|
311
|
-
id:
|
|
304
|
+
id: `edit-customproperty-${index}-public-note`,
|
|
312
305
|
label: kintIntl.formatKintMessage({
|
|
313
306
|
id: 'customProperties.publicNote',
|
|
314
307
|
overrideValue: labelOverrides.publicNote
|
|
315
308
|
}),
|
|
316
309
|
onChange: handleChange,
|
|
317
|
-
value: customPropertyObject
|
|
310
|
+
value: customPropertyObject?.publicNote
|
|
318
311
|
});
|
|
319
312
|
};
|
|
320
313
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
@@ -11,11 +11,11 @@ const onSubmit = jest.fn();
|
|
|
11
11
|
jest.mock('../../hooks');
|
|
12
12
|
const onChange = () => {};
|
|
13
13
|
const setCustomProperties = () => {};
|
|
14
|
-
const authIdentCustom = _jest.availableCustomProperties
|
|
15
|
-
const decimalCustProp = _jest.availableCustomProperties
|
|
16
|
-
const integerCustProp = _jest.availableCustomProperties
|
|
17
|
-
const dateCustProp = _jest.availableCustomProperties
|
|
18
|
-
const multiRefdataCustProp = _jest.availableCustomProperties
|
|
14
|
+
const authIdentCustom = _jest.availableCustomProperties?.find(cp => cp.value === 'AuthorIdentification');
|
|
15
|
+
const decimalCustProp = _jest.availableCustomProperties?.find(cp => cp.value === 'decimal');
|
|
16
|
+
const integerCustProp = _jest.availableCustomProperties?.find(cp => cp.value === 'integer');
|
|
17
|
+
const dateCustProp = _jest.availableCustomProperties?.find(cp => cp.value === 'date');
|
|
18
|
+
const multiRefdataCustProp = _jest.availableCustomProperties?.find(cp => cp.value === 'MultiRefdata');
|
|
19
19
|
const defaultProps = {
|
|
20
20
|
availableCustomProperties: _jest.availableCustomProperties,
|
|
21
21
|
customProperties: _jest.customProperties,
|
|
@@ -57,7 +57,7 @@ const CustomPropertyFormCard = _ref => {
|
|
|
57
57
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Card, {
|
|
58
58
|
"data-testid": "custom-property-form-card",
|
|
59
59
|
headerEnd: customPropertyType === 'optional' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Tooltip, {
|
|
60
|
-
id:
|
|
60
|
+
id: `customProperty-${customProperty.value}-${index}`,
|
|
61
61
|
text: getTooltipText(),
|
|
62
62
|
children: _ref2 => {
|
|
63
63
|
let {
|
|
@@ -68,7 +68,7 @@ const CustomPropertyFormCard = _ref => {
|
|
|
68
68
|
ref: ref,
|
|
69
69
|
"aria-labelledby": ariaIds.text,
|
|
70
70
|
icon: "trash",
|
|
71
|
-
id:
|
|
71
|
+
id: `edit-customproperty-${index}-delete`,
|
|
72
72
|
onClick: () => handleDeleteCustomProperty(customProperty, index)
|
|
73
73
|
});
|
|
74
74
|
}
|
|
@@ -12,7 +12,7 @@ jest.mock('../../hooks');
|
|
|
12
12
|
jest.mock('./CustomPropertyField', () => () => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
13
13
|
children: "CustomPropertyField"
|
|
14
14
|
}));
|
|
15
|
-
const customProperty = _customProperties.availableCustomProperties
|
|
15
|
+
const customProperty = _customProperties.availableCustomProperties?.find(cp => cp.value === 'AuthorIdentification');
|
|
16
16
|
const onChange = jest.fn();
|
|
17
17
|
const setCustomProperties = jest.fn();
|
|
18
18
|
describe('CustomPropertyFormCard', () => {
|
|
@@ -5,23 +5,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.value = exports.initialValues = void 0;
|
|
7
7
|
var _jest = require("../../../../test/jest");
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const licenseAmendmentStatusRefdata = _jest.refdata === null || _jest.refdata === void 0 ? void 0 : _jest.refdata.find(rdc => rdc.desc === 'LicenseAmendmentStatus.Status');
|
|
8
|
+
const agreementStatusRefdata = _jest.refdata?.find(rdc => rdc.desc === 'SubscriptionAgreement.AgreementStatus');
|
|
9
|
+
const licenseAmendmentStatusRefdata = _jest.refdata?.find(rdc => rdc.desc === 'LicenseAmendmentStatus.Status');
|
|
11
10
|
const value = exports.value = {
|
|
12
11
|
AuthorIdentification: [{
|
|
13
12
|
id: 2,
|
|
14
13
|
internal: true,
|
|
15
14
|
publicNote: 'this is a public note',
|
|
16
15
|
note: 'this is an internal note',
|
|
17
|
-
value: agreementStatusRefdata
|
|
18
|
-
type: _jest.customProperties
|
|
16
|
+
value: agreementStatusRefdata?.values?.find(rdv => rdv.value === 'active'),
|
|
17
|
+
type: _jest.customProperties?.find(cp => cp.name === 'AuthorIdentification')
|
|
19
18
|
}],
|
|
20
19
|
Test: [{
|
|
21
20
|
id: 4,
|
|
22
21
|
internal: true,
|
|
23
|
-
value: agreementStatusRefdata
|
|
24
|
-
type: _jest.customProperties
|
|
22
|
+
value: agreementStatusRefdata?.values?.find(rdv => rdv.value === 'active'),
|
|
23
|
+
type: _jest.customProperties?.find(cp => cp.name === 'Test')
|
|
25
24
|
}],
|
|
26
25
|
decimal: [{
|
|
27
26
|
id: 8,
|
|
@@ -29,7 +28,7 @@ const value = exports.value = {
|
|
|
29
28
|
note: 'decimal',
|
|
30
29
|
internal: true,
|
|
31
30
|
value: 1,
|
|
32
|
-
type: _jest.customProperties
|
|
31
|
+
type: _jest.customProperties?.find(cp => cp.name === 'decimal')
|
|
33
32
|
}],
|
|
34
33
|
integer: [{
|
|
35
34
|
id: 6,
|
|
@@ -37,7 +36,7 @@ const value = exports.value = {
|
|
|
37
36
|
note: 'Integer',
|
|
38
37
|
internal: true,
|
|
39
38
|
value: 1,
|
|
40
|
-
type: _jest.customProperties
|
|
39
|
+
type: _jest.customProperties?.find(cp => cp.name === 'integer')
|
|
41
40
|
}],
|
|
42
41
|
text: [{
|
|
43
42
|
id: 7,
|
|
@@ -45,15 +44,15 @@ const value = exports.value = {
|
|
|
45
44
|
note: 'text',
|
|
46
45
|
internal: true,
|
|
47
46
|
value: 'text',
|
|
48
|
-
type: _jest.customProperties
|
|
47
|
+
type: _jest.customProperties?.find(cp => cp.name === 'text')
|
|
49
48
|
}],
|
|
50
49
|
Refdata: [{
|
|
51
50
|
id: 5,
|
|
52
51
|
publicNote: 'refdata',
|
|
53
52
|
note: 'refdata',
|
|
54
53
|
internal: true,
|
|
55
|
-
value: licenseAmendmentStatusRefdata
|
|
56
|
-
type: _jest.customProperties
|
|
54
|
+
value: licenseAmendmentStatusRefdata?.values?.find(rdv => rdv.value === 'current'),
|
|
55
|
+
type: _jest.customProperties?.find(cp => cp.name === 'Refdata')
|
|
57
56
|
}]
|
|
58
57
|
};
|
|
59
58
|
const initialValues = exports.initialValues = {
|
|
@@ -14,7 +14,6 @@ var _customProperties = require("../../constants/customProperties");
|
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
16
|
const CustomPropertiesFilter = _ref => {
|
|
17
|
-
var _parsedFilterData$num, _parsedFilterData$num2;
|
|
18
17
|
let {
|
|
19
18
|
activeFilters: {
|
|
20
19
|
customProperties: custPropFilters,
|
|
@@ -74,13 +73,9 @@ const CustomPropertiesFilter = _ref => {
|
|
|
74
73
|
filters = []
|
|
75
74
|
} = values;
|
|
76
75
|
const filterStrings = filters.filter(filter => filter.rules).map(filter => {
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
return filter.rules.map(rule => {
|
|
81
|
-
var _rule$value;
|
|
82
|
-
return "customProperties.".concat(filter.customProperty, ".value").concat(filterByValueId ? '.id' : '').concat(rule.operator).concat((_rule$value = rule.value) !== null && _rule$value !== void 0 ? _rule$value : '');
|
|
83
|
-
}).join('||');
|
|
76
|
+
const relevantCustomProperty = custprops?.filter(cp => cp.name === filter.customProperty)?.[0] ?? {};
|
|
77
|
+
const filterByValueId = relevantCustomProperty?.type === _customProperties.MULTI_REFDATA_CLASS_NAME || relevantCustomProperty?.type === _customProperties.REFDATA_CLASS_NAME;
|
|
78
|
+
return filter.rules.map(rule => `customProperties.${filter.customProperty}.value${filterByValueId ? '.id' : ''}${rule.operator}${rule.value ?? ''}`).join('||');
|
|
84
79
|
});
|
|
85
80
|
filterHandlers.state({
|
|
86
81
|
...restOfFilters,
|
|
@@ -91,7 +86,7 @@ const CustomPropertiesFilter = _ref => {
|
|
|
91
86
|
};
|
|
92
87
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Accordion, {
|
|
93
88
|
closedByDefault: true,
|
|
94
|
-
displayClearButton: (
|
|
89
|
+
displayClearButton: (parsedFilterData?.numberOfFilters ?? 0) > 0,
|
|
95
90
|
header: _components.FilterAccordionHeader,
|
|
96
91
|
id: "clickable-custprop-filter",
|
|
97
92
|
label: kintIntl.formatKintMessage({
|
|
@@ -109,12 +104,12 @@ const CustomPropertiesFilter = _ref => {
|
|
|
109
104
|
id: 'customProperty.filtersApplied',
|
|
110
105
|
overrideValue: labelOverrides.filtersApplied
|
|
111
106
|
}, {
|
|
112
|
-
count:
|
|
107
|
+
count: parsedFilterData?.numberOfFilters ?? 0
|
|
113
108
|
})
|
|
114
109
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CustomPropertiesFilterForm.default, {
|
|
115
110
|
customProperties: custprops,
|
|
116
111
|
editingFilters: editingFilters,
|
|
117
|
-
filters: parsedFilterData
|
|
112
|
+
filters: parsedFilterData?.filters,
|
|
118
113
|
handlers: {
|
|
119
114
|
closeEditModal,
|
|
120
115
|
openEditModal
|
|
@@ -15,7 +15,6 @@ var _hooks = require("../../hooks");
|
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
const CustomPropertiesFilterField = _ref => {
|
|
18
|
-
var _customProperties$fin, _customProperties$fin2, _fields$value$index2;
|
|
19
18
|
let {
|
|
20
19
|
customProperties = [],
|
|
21
20
|
fields,
|
|
@@ -38,16 +37,15 @@ const CustomPropertiesFilterField = _ref => {
|
|
|
38
37
|
const kintIntl = (0, _hooks.useKintIntl)(passedIntlKey, passedIntlNS);
|
|
39
38
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
40
39
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
41
|
-
id:
|
|
40
|
+
id: `input-custprop-${index}`,
|
|
42
41
|
label: kintIntl.formatKintMessage({
|
|
43
42
|
id: 'customProperty',
|
|
44
43
|
overrideValue: labelOverrides.customProperty
|
|
45
44
|
}),
|
|
46
|
-
name:
|
|
45
|
+
name: `${name}.customProperty`,
|
|
47
46
|
placeholder: " ",
|
|
48
47
|
render: fieldProps => {
|
|
49
|
-
|
|
50
|
-
const sortedGroupedCustProps = (_Object$entries = Object.entries(groupedCustomProperties)) === null || _Object$entries === void 0 ? void 0 : _Object$entries.sort((a, b) => {
|
|
48
|
+
const sortedGroupedCustProps = Object.entries(groupedCustomProperties)?.sort((a, b) => {
|
|
51
49
|
if (a[0] === 'isNull') return -1; // Make sure noContext is at top
|
|
52
50
|
|
|
53
51
|
if (a[0].toLowerCase() < b[0].toLowerCase()) return -1;
|
|
@@ -76,22 +74,19 @@ const CustomPropertiesFilterField = _ref => {
|
|
|
76
74
|
}) : v.label
|
|
77
75
|
}, v.id);
|
|
78
76
|
})
|
|
79
|
-
},
|
|
77
|
+
}, `custom-property-optgroup-${key}`);
|
|
80
78
|
})]
|
|
81
79
|
});
|
|
82
80
|
},
|
|
83
81
|
required: true,
|
|
84
82
|
validate: _validators.required
|
|
85
83
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
86
|
-
"data-testid":
|
|
87
|
-
id:
|
|
84
|
+
"data-testid": `selected-custprop-name-${index}`,
|
|
85
|
+
id: `selected-custprop-name-${index}`,
|
|
88
86
|
style: {
|
|
89
87
|
display: 'none'
|
|
90
88
|
},
|
|
91
|
-
children:
|
|
92
|
-
var _fields$value$index;
|
|
93
|
-
return t.name === ((_fields$value$index = fields.value[index]) === null || _fields$value$index === void 0 ? void 0 : _fields$value$index.customProperty);
|
|
94
|
-
})) === null || _customProperties$fin2 === void 0 ? void 0 : _customProperties$fin2.label) !== null && _customProperties$fin !== void 0 ? _customProperties$fin : ''
|
|
89
|
+
children: customProperties.find(t => t.name === fields.value[index]?.customProperty)?.label ?? ''
|
|
95
90
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Row, {
|
|
96
91
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Col, {
|
|
97
92
|
xs: 2
|
|
@@ -119,29 +114,26 @@ const CustomPropertiesFilterField = _ref => {
|
|
|
119
114
|
xs: 2
|
|
120
115
|
})]
|
|
121
116
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalFormArrays.FieldArray, {
|
|
122
|
-
name:
|
|
117
|
+
name: `${name}.rules`,
|
|
123
118
|
children: _ref3 => {
|
|
124
119
|
let {
|
|
125
120
|
fields: ruleFields
|
|
126
121
|
} = _ref3;
|
|
127
|
-
return ruleFields.map((ruleFieldName, ruleFieldIndex) => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
value: (_values$filters$index = values.filters[index]) === null || _values$filters$index === void 0 ? void 0 : _values$filters$index.rules[ruleFieldIndex]
|
|
138
|
-
}, ruleFieldName);
|
|
139
|
-
});
|
|
122
|
+
return ruleFields.map((ruleFieldName, ruleFieldIndex) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_CustomPropertiesRule.default, {
|
|
123
|
+
ariaLabelledby: `selected-custprop-name-${index}`,
|
|
124
|
+
clearRuleValue: () => change(`filters[${index}].rules[${ruleFieldIndex}].value`, ''),
|
|
125
|
+
custPropDefinition: customProperties.find(t => t.name === fields.value[index].customProperty),
|
|
126
|
+
index: ruleFieldIndex,
|
|
127
|
+
labelOverrides: labelOverrides,
|
|
128
|
+
name: ruleFieldName,
|
|
129
|
+
onDelete: () => ruleFields.remove(ruleFieldIndex),
|
|
130
|
+
value: values.filters[index]?.rules[ruleFieldIndex]
|
|
131
|
+
}, ruleFieldName));
|
|
140
132
|
}
|
|
141
133
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
142
134
|
"data-test-add-rule-btn": true,
|
|
143
|
-
disabled: !
|
|
144
|
-
onClick: () => push(
|
|
135
|
+
disabled: !fields.value[index]?.customProperty,
|
|
136
|
+
onClick: () => push(`${name}.rules`),
|
|
145
137
|
children: kintIntl.formatKintMessage({
|
|
146
138
|
id: 'addRule',
|
|
147
139
|
overrideValue: labelOverrides.addRule
|
|
@@ -36,7 +36,7 @@ const CustomPropertiesFilterFieldArray = _ref => {
|
|
|
36
36
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
37
37
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Card, {
|
|
38
38
|
headerEnd: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Tooltip, {
|
|
39
|
-
id:
|
|
39
|
+
id: `custom-property-filter-card-delete-[${index}]-tooltip`,
|
|
40
40
|
text: kintIntl.formatKintMessage({
|
|
41
41
|
id: 'customProperty.removeFilter',
|
|
42
42
|
overrideValue: labelOverrides.removeFilter
|
|
@@ -52,7 +52,7 @@ const CustomPropertiesFilterFieldArray = _ref => {
|
|
|
52
52
|
ref: ref,
|
|
53
53
|
"aria-labelledby": ariaIds.text,
|
|
54
54
|
icon: "trash",
|
|
55
|
-
id:
|
|
55
|
+
id: `custom-property-filter-card-delete-[${index}]`,
|
|
56
56
|
onClick: () => fields.remove(index)
|
|
57
57
|
});
|
|
58
58
|
}
|
|
@@ -72,15 +72,15 @@ const CustomPropertiesFilterFieldArray = _ref => {
|
|
|
72
72
|
index: index,
|
|
73
73
|
labelOverrides: labelOverrides,
|
|
74
74
|
name: name
|
|
75
|
-
},
|
|
76
|
-
},
|
|
75
|
+
}, `custom-property-filter-field-${name}[${index}]`)
|
|
76
|
+
}, `custom-property-filter-card[${index}]`), index < fields.value.length - 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Layout, {
|
|
77
77
|
className: "textCentered",
|
|
78
78
|
children: kintIntl.formatKintMessage({
|
|
79
79
|
id: 'AND',
|
|
80
80
|
overrideValue: labelOverrides.AND
|
|
81
81
|
})
|
|
82
|
-
},
|
|
83
|
-
},
|
|
82
|
+
}, `custom-property-filter[${index}]-AND`)]
|
|
83
|
+
}, `custom-property-filter-card[${index}]-container`);
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
@@ -51,7 +51,7 @@ const CustomPropertiesRule = _ref => {
|
|
|
51
51
|
const operators = (0, _useOperators.default)(custPropDefinition.type, passedIntlKey, passedIntlNS, labelOverrides);
|
|
52
52
|
const valueProps = (0, _useValueProps.default)(custPropDefinition, passedIntlKey, passedIntlNS, labelOverrides);
|
|
53
53
|
const kintIntl = (0, _hooks.useKintIntl)(passedIntlKey, passedIntlNS);
|
|
54
|
-
const selectedOperator = operators.find(o => o.value ===
|
|
54
|
+
const selectedOperator = operators.find(o => o.value === value?.operator);
|
|
55
55
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Row, {
|
|
56
56
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Col, {
|
|
57
57
|
xs: 2,
|
|
@@ -65,7 +65,7 @@ const CustomPropertiesRule = _ref => {
|
|
|
65
65
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Col, {
|
|
66
66
|
xs: 4,
|
|
67
67
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
68
|
-
name:
|
|
68
|
+
name: `${name}.operator`,
|
|
69
69
|
validate: _validators.required,
|
|
70
70
|
children: _ref2 => {
|
|
71
71
|
let {
|
|
@@ -74,13 +74,13 @@ const CustomPropertiesRule = _ref => {
|
|
|
74
74
|
} = _ref2;
|
|
75
75
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select, {
|
|
76
76
|
...input,
|
|
77
|
-
"aria-labelledby":
|
|
77
|
+
"aria-labelledby": `${ariaLabelledby}-rule-column-header-comparator`,
|
|
78
78
|
dataOptions: operators,
|
|
79
|
-
error:
|
|
79
|
+
error: meta?.touched && meta?.error,
|
|
80
80
|
onChange: e => {
|
|
81
81
|
input.onChange(e);
|
|
82
82
|
const newlySelectedOperator = operators.find(o => o.value === e.target.value);
|
|
83
|
-
if (newlySelectedOperator
|
|
83
|
+
if (newlySelectedOperator?.noValueAllowed) {
|
|
84
84
|
clearRuleValue();
|
|
85
85
|
}
|
|
86
86
|
},
|
|
@@ -91,9 +91,9 @@ const CustomPropertiesRule = _ref => {
|
|
|
91
91
|
})
|
|
92
92
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Col, {
|
|
93
93
|
xs: 4,
|
|
94
|
-
children: selectedOperator
|
|
95
|
-
"aria-labelledby":
|
|
96
|
-
name:
|
|
94
|
+
children: selectedOperator?.noValueAllowed ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
95
|
+
"aria-labelledby": `${ariaLabelledby}-rule-column-header-value`,
|
|
96
|
+
name: `${name}.value`,
|
|
97
97
|
required: true,
|
|
98
98
|
validate: _validators.required,
|
|
99
99
|
...valueProps
|
|
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.filterHandlers = exports.data = exports.activeFilters = void 0;
|
|
7
7
|
var _jest = require("../../../../test/jest");
|
|
8
|
-
var _refdata$find;
|
|
9
8
|
const activeFilters = exports.activeFilters = {
|
|
10
|
-
'customProperties': [
|
|
9
|
+
'customProperties': [`customProperties.AuthorIdentification.value==${_jest.refdata?.find(rdc => rdc.desc === 'AuthIdent')?.values?.find(rdv => rdv.value === 'email_domain')?.id}`]
|
|
11
10
|
};
|
|
12
11
|
const filterHandlers = exports.filterHandlers = {
|
|
13
12
|
'state': () => ({}),
|
|
@@ -13,14 +13,13 @@ const useParseActiveFilterStrings = function (filterStrings, passedIntlKey, pass
|
|
|
13
13
|
const filters = filterStrings.map(filter => {
|
|
14
14
|
let customProperty;
|
|
15
15
|
const rules = filter.split('||').map(ruleString => {
|
|
16
|
-
var _operators$find;
|
|
17
16
|
// ruleString is constructed in this.handleSubmit passed to CustomPropertyFiltersForm
|
|
18
17
|
// and has shape "customProperties.foo.value!=42"
|
|
19
18
|
// OR customProperties.foo.value.id==1234, so make sure to disregard the .id
|
|
20
19
|
const [customPropertyPath, rule] = ruleString.split('.value');
|
|
21
20
|
const idSafeRule = rule.replace('.id', '');
|
|
22
21
|
customProperty = customPropertyPath.replace('customProperties.', '');
|
|
23
|
-
const operator =
|
|
22
|
+
const operator = operators.find(o => idSafeRule.startsWith(o)) ?? '';
|
|
24
23
|
const value = idSafeRule.substring(operator.length);
|
|
25
24
|
numberOfFilters += 1;
|
|
26
25
|
return {
|
|
@@ -26,7 +26,7 @@ const CustomPropertiesView = _ref => {
|
|
|
26
26
|
intlKey: passedIntlKey,
|
|
27
27
|
intlNS: passedIntlNS,
|
|
28
28
|
labelOverrides
|
|
29
|
-
},
|
|
29
|
+
}, `customPropertiesView-${ctx}`));
|
|
30
30
|
};
|
|
31
31
|
CustomPropertiesView.propTypes = {
|
|
32
32
|
contexts: _propTypes.default.arrayOf(_propTypes.default.string),
|