@k-int/stripes-kint-components 5.1.0 → 5.1.2
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 +29 -32
- 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 +20 -26
- 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 +21 -32
- 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/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 +4 -6
- 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 +19 -26
- package/es/lib/constants/comparators.js +1 -1
- package/es/lib/hooks/typedownHooks/useTypedown.js +2 -2
- package/es/lib/hooks/typedownHooks/useTypedownToggle.js +2 -2
- 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 +6 -6
- 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 +1 -1
- 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 +1 -1
- package/src/lib/CustomProperties/Edit/CustomPropertyField.js +4 -2
- package/src/lib/constants/comparators.js +1 -0
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
8
|
var _reactFinalForm = require("react-final-form");
|
|
9
|
+
var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
|
|
9
10
|
var _components = require("@folio/stripes/components");
|
|
10
11
|
var CUSTOM_PROPERTY_TYPES = _interopRequireWildcard(require("../../constants/customProperties"));
|
|
11
12
|
var _hooks = require("../../hooks");
|
|
@@ -32,12 +33,11 @@ const CustomPropertyField = _ref => {
|
|
|
32
33
|
|
|
33
34
|
// Set up the validator for the customProperty
|
|
34
35
|
const customPropertyValidator = (fieldValue, allValues) => {
|
|
35
|
-
var _allValues$customProp, _allValues$customProp2;
|
|
36
36
|
const {
|
|
37
37
|
note,
|
|
38
38
|
publicNote,
|
|
39
39
|
value: currentValue
|
|
40
|
-
} =
|
|
40
|
+
} = allValues?.customProperties?.[customProperty?.value]?.[0] ?? {};
|
|
41
41
|
if (note && !currentValue || publicNote && !currentValue) {
|
|
42
42
|
if (customProperty.type === CUSTOM_PROPERTY_TYPES.DECIMAL_CLASS_NAME || customProperty.type === CUSTOM_PROPERTY_TYPES.INTEGER_CLASS_NAME) {
|
|
43
43
|
return kintIntl.formatKintMessage({
|
|
@@ -80,9 +80,7 @@ const CustomPropertyField = _ref => {
|
|
|
80
80
|
return availableCustomProperties.find(cp => cp.value === customPropertyValue);
|
|
81
81
|
};
|
|
82
82
|
const renderCustomPropertyName = () => {
|
|
83
|
-
var _customPropertyValue$;
|
|
84
83
|
const unsetCustomProperties = availableCustomProperties.filter(t => {
|
|
85
|
-
var _custPropValue$;
|
|
86
84
|
// Only optional properties can be set
|
|
87
85
|
if (t.primary) return false;
|
|
88
86
|
const custPropValue = value[t.value];
|
|
@@ -91,16 +89,16 @@ const CustomPropertyField = _ref => {
|
|
|
91
89
|
if (custPropValue === undefined) return true;
|
|
92
90
|
|
|
93
91
|
// The customProperty is set but is marked for deletion. Allow reuse.
|
|
94
|
-
if (
|
|
92
|
+
if (custPropValue[0]?._delete) return true;
|
|
95
93
|
return false;
|
|
96
94
|
});
|
|
97
95
|
const customPropertyValue = value[customProperty.value];
|
|
98
|
-
const id = customPropertyValue
|
|
96
|
+
const id = customPropertyValue?.[0]?.id;
|
|
99
97
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Select, {
|
|
100
98
|
autoFocus: !id,
|
|
101
99
|
dataOptions: [customProperty, ...unsetCustomProperties] // The selected customProperty, and the available unset customProperties
|
|
102
100
|
,
|
|
103
|
-
id:
|
|
101
|
+
id: `edit-customproperty-${index}-name`,
|
|
104
102
|
label: kintIntl.formatKintMessage({
|
|
105
103
|
id: 'customProperties.name',
|
|
106
104
|
overrideValue: labelOverrides.name
|
|
@@ -132,7 +130,6 @@ const CustomPropertyField = _ref => {
|
|
|
132
130
|
});
|
|
133
131
|
};
|
|
134
132
|
const renderCustomPropertyValue = () => {
|
|
135
|
-
var _customProperty$optio;
|
|
136
133
|
const currentValue = value[customProperty.value] ? value[customProperty.value][0] : {};
|
|
137
134
|
const min = Number.MIN_SAFE_INTEGER;
|
|
138
135
|
const max = Number.MAX_SAFE_INTEGER;
|
|
@@ -155,15 +152,15 @@ const CustomPropertyField = _ref => {
|
|
|
155
152
|
case CUSTOM_PROPERTY_TYPES.REFDATA_CLASS_NAME:
|
|
156
153
|
fieldProps = {
|
|
157
154
|
component: _components.Select,
|
|
158
|
-
dataOptions: customProperty.options,
|
|
159
|
-
format: v => v
|
|
155
|
+
dataOptions: (0, _orderBy.default)(customProperty.options, 'label'),
|
|
156
|
+
format: v => v?.value
|
|
160
157
|
};
|
|
161
158
|
break;
|
|
162
159
|
case CUSTOM_PROPERTY_TYPES.MULTI_REFDATA_CLASS_NAME:
|
|
163
160
|
fieldProps = {
|
|
164
161
|
component: _components.MultiSelection,
|
|
165
162
|
// The "not set" value is not relevant for a multi select
|
|
166
|
-
dataOptions: (
|
|
163
|
+
dataOptions: (0, _orderBy.default)(customProperty.options?.filter(opt => !!opt?.value), 'label'),
|
|
167
164
|
renderToOverlay: true
|
|
168
165
|
};
|
|
169
166
|
// MultiSelection passes the changed array as a value not an event
|
|
@@ -172,7 +169,7 @@ const CustomPropertyField = _ref => {
|
|
|
172
169
|
...value,
|
|
173
170
|
[customProperty.value]: [{
|
|
174
171
|
...currentValue,
|
|
175
|
-
_delete:
|
|
172
|
+
_delete: refdataArray?.length === 0 ? true : undefined,
|
|
176
173
|
// Delete customProperty if removing all values.
|
|
177
174
|
value: refdataArray
|
|
178
175
|
}]
|
|
@@ -223,12 +220,12 @@ const CustomPropertyField = _ref => {
|
|
|
223
220
|
}
|
|
224
221
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
225
222
|
"data-test-customproperty-value": true,
|
|
226
|
-
id:
|
|
223
|
+
id: `edit-customproperty-${index}-value`,
|
|
227
224
|
label: kintIntl.formatKintMessage({
|
|
228
225
|
id: 'customProperties.value',
|
|
229
226
|
overrideValue: labelOverrides.value
|
|
230
227
|
}),
|
|
231
|
-
name:
|
|
228
|
+
name: `${name}.${customProperty.value}[0].value`,
|
|
232
229
|
onChange: handleChange,
|
|
233
230
|
required: !customProperty.primary,
|
|
234
231
|
validate: (fieldValue, allValues) => customPropertyValidator(fieldValue, allValues),
|
|
@@ -236,8 +233,7 @@ const CustomPropertyField = _ref => {
|
|
|
236
233
|
});
|
|
237
234
|
};
|
|
238
235
|
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 : {};
|
|
236
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
241
237
|
const handleChange = e => {
|
|
242
238
|
onChange({
|
|
243
239
|
...value,
|
|
@@ -262,18 +258,17 @@ const CustomPropertyField = _ref => {
|
|
|
262
258
|
overrideValue: labelOverrides.internalFalse
|
|
263
259
|
})
|
|
264
260
|
}],
|
|
265
|
-
id:
|
|
261
|
+
id: `edit-customproperty-${index}-visibility`,
|
|
266
262
|
label: kintIntl.formatKintMessage({
|
|
267
263
|
id: 'customProperties.visibility',
|
|
268
264
|
overrideValue: labelOverrides.visibility
|
|
269
265
|
}),
|
|
270
266
|
onChange: handleChange,
|
|
271
|
-
value:
|
|
267
|
+
value: customPropertyObject?.internal ?? customProperty.defaultInternal
|
|
272
268
|
});
|
|
273
269
|
};
|
|
274
270
|
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 : {};
|
|
271
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
277
272
|
const handleChange = e => {
|
|
278
273
|
onChange({
|
|
279
274
|
...value,
|
|
@@ -285,18 +280,17 @@ const CustomPropertyField = _ref => {
|
|
|
285
280
|
};
|
|
286
281
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextArea, {
|
|
287
282
|
"data-test-customproperty-note": true,
|
|
288
|
-
id:
|
|
283
|
+
id: `edit-customproperty-${index}-internal-note`,
|
|
289
284
|
label: kintIntl.formatKintMessage({
|
|
290
285
|
id: 'customProperties.internalNote',
|
|
291
286
|
overrideValue: labelOverrides.internalNote
|
|
292
287
|
}),
|
|
293
288
|
onChange: handleChange,
|
|
294
|
-
value: customPropertyObject
|
|
289
|
+
value: customPropertyObject?.note
|
|
295
290
|
});
|
|
296
291
|
};
|
|
297
292
|
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 : {};
|
|
293
|
+
const customPropertyObject = value[customProperty.value]?.[0] ?? {};
|
|
300
294
|
const handleChange = e => {
|
|
301
295
|
onChange({
|
|
302
296
|
...value,
|
|
@@ -308,13 +302,13 @@ const CustomPropertyField = _ref => {
|
|
|
308
302
|
};
|
|
309
303
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextArea, {
|
|
310
304
|
"data-test-customproperty-public-note": true,
|
|
311
|
-
id:
|
|
305
|
+
id: `edit-customproperty-${index}-public-note`,
|
|
312
306
|
label: kintIntl.formatKintMessage({
|
|
313
307
|
id: 'customProperties.publicNote',
|
|
314
308
|
overrideValue: labelOverrides.publicNote
|
|
315
309
|
}),
|
|
316
310
|
onChange: handleChange,
|
|
317
|
-
value: customPropertyObject
|
|
311
|
+
value: customPropertyObject?.publicNote
|
|
318
312
|
});
|
|
319
313
|
};
|
|
320
314
|
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,
|
|
@@ -75,13 +74,9 @@ const CustomPropertiesFilter = _ref => {
|
|
|
75
74
|
filters = []
|
|
76
75
|
} = values;
|
|
77
76
|
const filterStrings = filters.filter(filter => filter.rules).map(filter => {
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
return filter.rules.map(rule => {
|
|
82
|
-
var _rule$value;
|
|
83
|
-
return "customProperties.".concat(filter.customProperty, ".value").concat(filterByValueId ? '.id' : '').concat(rule.operator).concat((_rule$value = rule.value) !== null && _rule$value !== void 0 ? _rule$value : '');
|
|
84
|
-
}).join('||');
|
|
77
|
+
const relevantCustomProperty = custprops?.filter(cp => cp.name === filter.customProperty)?.[0] ?? {};
|
|
78
|
+
const filterByValueId = relevantCustomProperty?.type === _customProperties.MULTI_REFDATA_CLASS_NAME || relevantCustomProperty?.type === _customProperties.REFDATA_CLASS_NAME;
|
|
79
|
+
return filter.rules.map(rule => `customProperties.${filter.customProperty}.value${filterByValueId ? '.id' : ''}${rule.operator}${rule.value ?? ''}`).join('||');
|
|
85
80
|
});
|
|
86
81
|
filterHandlers.state({
|
|
87
82
|
...restOfFilters,
|
|
@@ -92,7 +87,7 @@ const CustomPropertiesFilter = _ref => {
|
|
|
92
87
|
};
|
|
93
88
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Accordion, {
|
|
94
89
|
closedByDefault: true,
|
|
95
|
-
displayClearButton: (
|
|
90
|
+
displayClearButton: (parsedFilterData?.numberOfFilters ?? 0) > 0,
|
|
96
91
|
header: _components.FilterAccordionHeader,
|
|
97
92
|
id: "clickable-custprop-filter",
|
|
98
93
|
label: kintIntl.formatKintMessage({
|
|
@@ -110,12 +105,12 @@ const CustomPropertiesFilter = _ref => {
|
|
|
110
105
|
id: 'customProperty.filtersApplied',
|
|
111
106
|
overrideValue: labelOverrides.filtersApplied
|
|
112
107
|
}, {
|
|
113
|
-
count:
|
|
108
|
+
count: parsedFilterData?.numberOfFilters ?? 0
|
|
114
109
|
})
|
|
115
110
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CustomPropertiesFilterForm.default, {
|
|
116
111
|
customProperties: custprops,
|
|
117
112
|
editingFilters: editingFilters,
|
|
118
|
-
filters: parsedFilterData
|
|
113
|
+
filters: parsedFilterData?.filters,
|
|
119
114
|
handlers: {
|
|
120
115
|
closeEditModal,
|
|
121
116
|
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),
|