@k-int/stripes-kint-components 5.16.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +1 -1
  3. package/es/index.js +24 -12
  4. package/es/lib/EditableSettingsList/EditableSettingsList.js +4 -3
  5. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js +110 -0
  6. package/es/lib/EditableSettingsList/{EditableSettingsListFieldArray.test.js → EditableSettingsListFieldArray/EditableSettingsListFieldArray.test.js} +3 -4
  7. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray/index.js +13 -0
  8. package/es/lib/EditableSettingsList/SettingField/{EditSettingValue.js → EditSettingValue/EditSettingValue.js} +2 -2
  9. package/es/lib/EditableSettingsList/SettingField/{EditSettingValue.test.js → EditSettingValue/EditSettingValue.test.js} +2 -3
  10. package/es/lib/EditableSettingsList/SettingField/EditSettingValue/index.js +13 -0
  11. package/es/lib/EditableSettingsList/SettingField/{RenderSettingValue.js → RenderSettingValue/RenderSettingValue.js} +1 -1
  12. package/es/lib/EditableSettingsList/SettingField/{RenderSettingValue.test.js → RenderSettingValue/RenderSettingValue.test.js} +2 -2
  13. package/es/lib/EditableSettingsList/SettingField/RenderSettingValue/index.js +13 -0
  14. package/es/lib/EditableSettingsList/SettingField/SettingField.js +5 -5
  15. package/es/lib/EditableSettingsList/SettingField/SettingField.test.js +54 -44
  16. package/es/lib/EditableSettingsList/index.js +12 -0
  17. package/es/lib/SASQLookupComponent/SASQLookupComponent.js +26 -9
  18. package/es/lib/SASQViewComponent/SASQViewComponent.js +21 -7
  19. package/es/lib/SettingPage/SettingPage.js +3 -1
  20. package/es/lib/SettingPage/{SettingPagePane.js → SettingPagePane/SettingPagePane.js} +2 -2
  21. package/es/lib/SettingPage/SettingPagePane/index.js +13 -0
  22. package/es/lib/settingsHooks/useAppSettings/index.js +13 -0
  23. package/es/lib/settingsHooks/{useAppSettings.js → useAppSettings/useAppSettings.js} +1 -1
  24. package/es/lib/settingsHooks/useSettingSection/index.js +13 -0
  25. package/es/lib/settingsHooks/{useSettingSection.js → useSettingSection/useSettingSection.js} +1 -1
  26. package/es/lib/settingsHooks/useSettings/index.js +13 -0
  27. package/es/lib/settingsHooks/{useSettings.js → useSettings/useSettings.js} +10 -9
  28. package/package.json +1 -1
  29. package/src/index.js +4 -3
  30. package/src/lib/ActionList/README.md +18 -18
  31. package/src/lib/EditableSettingsList/EditableSettingsList.js +3 -2
  32. package/src/lib/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js +118 -0
  33. package/src/lib/EditableSettingsList/{EditableSettingsListFieldArray.test.js → EditableSettingsListFieldArray/EditableSettingsListFieldArray.test.js} +3 -5
  34. package/src/lib/EditableSettingsList/EditableSettingsListFieldArray/README.md +68 -0
  35. package/src/lib/EditableSettingsList/EditableSettingsListFieldArray/index.js +1 -0
  36. package/src/lib/EditableSettingsList/README.md +74 -0
  37. package/src/lib/EditableSettingsList/SettingField/{EditSettingValue.js → EditSettingValue/EditSettingValue.js} +2 -2
  38. package/src/lib/EditableSettingsList/SettingField/{EditSettingValue.test.js → EditSettingValue/EditSettingValue.test.js} +2 -5
  39. package/src/lib/EditableSettingsList/SettingField/EditSettingValue/README.md +63 -0
  40. package/src/lib/EditableSettingsList/SettingField/EditSettingValue/index.js +1 -0
  41. package/src/lib/EditableSettingsList/SettingField/README.md +61 -0
  42. package/src/lib/EditableSettingsList/SettingField/{RenderSettingValue.js → RenderSettingValue/RenderSettingValue.js} +1 -1
  43. package/src/lib/EditableSettingsList/SettingField/{RenderSettingValue.test.js → RenderSettingValue/RenderSettingValue.test.js} +2 -2
  44. package/src/lib/EditableSettingsList/SettingField/RenderSettingValue/index.js +1 -0
  45. package/src/lib/EditableSettingsList/SettingField/SettingField.js +5 -3
  46. package/src/lib/EditableSettingsList/SettingField/SettingField.test.js +65 -44
  47. package/src/lib/EditableSettingsList/index.js +1 -1
  48. package/src/lib/SASQLookupComponent/SASQLookupComponent.js +21 -10
  49. package/src/lib/SASQViewComponent/SASQViewComponent.js +17 -8
  50. package/src/lib/SettingPage/README.md +66 -0
  51. package/src/lib/SettingPage/SettingPage.js +3 -1
  52. package/src/lib/SettingPage/SettingPagePane/README.md +31 -0
  53. package/src/lib/SettingPage/{SettingPagePane.js → SettingPagePane/SettingPagePane.js} +2 -2
  54. package/src/lib/SettingPage/SettingPagePane/index.js +1 -0
  55. package/src/lib/settingsHooks/useAppSettings/index.js +1 -0
  56. package/src/lib/settingsHooks/{useAppSettings.js → useAppSettings/useAppSettings.js} +1 -1
  57. package/src/lib/settingsHooks/useSettingSection/README.md +54 -0
  58. package/src/lib/settingsHooks/useSettingSection/index.js +1 -0
  59. package/src/lib/settingsHooks/{useSettingSection.js → useSettingSection/useSettingSection.js} +1 -1
  60. package/src/lib/settingsHooks/useSettings/README.md +84 -0
  61. package/src/lib/settingsHooks/useSettings/index.js +1 -0
  62. package/src/lib/settingsHooks/{useSettings.js → useSettings/useSettings.js} +10 -7
  63. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.js +0 -57
  64. package/src/lib/EditableSettingsList/EditableSettingsListFieldArray.js +0 -58
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ # [5.18.0](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/compare/v5.17.0...v5.18.0) (2025-04-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Change README table formatting (actually a doc change, but here to try and force through a patch update pipeline on gitlab) ([d0452d1](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/d0452d128297d962f39f9095f157da95faa5f061))
7
+ * Fixed tests and running issues ([699ebcb](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/699ebcbdf66244ed6f3f816bb21f3d5d16a9a215))
8
+
9
+
10
+ ### Features
11
+
12
+ * Added "render" prop which allows for specialised rendering on a setting-by-setting case in EditableSettingsList. ([9d1eaa3](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/9d1eaa316f1f1e84347f643369fa7126dd6f104b))
13
+
14
+ # [5.17.0](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/compare/v5.16.0...v5.17.0) (2025-03-14)
15
+
16
+
17
+ ### Features
18
+
19
+ * Added the ability to generate a custom queryNamespace on SASQLookup and SASQView components ([df68645](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/commit/df686452ed854fffc7724bad40a6b4de2d651a42))
20
+
1
21
  # [5.16.0](https://gitlab.com/knowledge-integration/folio/stripes-kint-components/compare/v5.15.0...v5.16.0) (2025-03-14)
2
22
 
3
23
 
package/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright [yyyy] [name of copyright owner]
189
+ Copyright 2018-2025 Knowledge Integration Ltd
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
package/es/index.js CHANGED
@@ -335,18 +335,6 @@ Object.keys(_hooks).forEach(function (key) {
335
335
  }
336
336
  });
337
337
  });
338
- var _settingsHooks = require("./lib/settingsHooks");
339
- Object.keys(_settingsHooks).forEach(function (key) {
340
- if (key === "default" || key === "__esModule") return;
341
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
342
- if (key in exports && exports[key] === _settingsHooks[key]) return;
343
- Object.defineProperty(exports, key, {
344
- enumerable: true,
345
- get: function () {
346
- return _settingsHooks[key];
347
- }
348
- });
349
- });
350
338
  var _utils = require("./lib/utils");
351
339
  Object.keys(_utils).forEach(function (key) {
352
340
  if (key === "default" || key === "__esModule") return;
@@ -373,6 +361,30 @@ Object.keys(_validators).forEach(function (key) {
373
361
  });
374
362
  var _contexts = require("./lib/contexts");
375
363
  var _SettingPage = require("./lib/SettingPage");
364
+ var _EditableSettingsList = require("./lib/EditableSettingsList");
365
+ Object.keys(_EditableSettingsList).forEach(function (key) {
366
+ if (key === "default" || key === "__esModule") return;
367
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
368
+ if (key in exports && exports[key] === _EditableSettingsList[key]) return;
369
+ Object.defineProperty(exports, key, {
370
+ enumerable: true,
371
+ get: function () {
372
+ return _EditableSettingsList[key];
373
+ }
374
+ });
375
+ });
376
+ var _settingsHooks = require("./lib/settingsHooks");
377
+ Object.keys(_settingsHooks).forEach(function (key) {
378
+ if (key === "default" || key === "__esModule") return;
379
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
380
+ if (key in exports && exports[key] === _settingsHooks[key]) return;
381
+ Object.defineProperty(exports, key, {
382
+ enumerable: true,
383
+ get: function () {
384
+ return _settingsHooks[key];
385
+ }
386
+ });
387
+ });
376
388
  var _ActionList = _interopRequireDefault(require("./lib/ActionList"));
377
389
  var _EditableRefdataList = _interopRequireDefault(require("./lib/EditableRefdataList"));
378
390
  var _EditableRefdataCategoryList = _interopRequireDefault(require("./lib/EditableRefdataCategoryList"));
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
8
  var _reactFinalFormArrays = require("react-final-form-arrays");
10
9
  var _reactFinalForm = require("react-final-form");
@@ -22,7 +21,8 @@ const EditableSettingsList = _ref => {
22
21
  intlNS: passedIntlNS,
23
22
  label,
24
23
  labelOverrides = {},
25
- onSave
24
+ onSave,
25
+ render // Experimental idea, allow unique rendering per setting?
26
26
  } = _ref;
27
27
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Form, {
28
28
  enableReinitialize: true,
@@ -49,7 +49,8 @@ const EditableSettingsList = _ref => {
49
49
  label: label,
50
50
  labelOverrides: labelOverrides,
51
51
  name: "settings",
52
- onSave: onSave
52
+ onSave: onSave,
53
+ render: render
53
54
  })
54
55
  });
55
56
  }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactFinalForm = require("react-final-form");
10
+ var _SettingField = require("../SettingField");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const EditableSettingsListField = _ref => {
14
+ let {
15
+ allowEdit,
16
+ data,
17
+ fields,
18
+ handleSave,
19
+ index,
20
+ intlKey,
21
+ intlNS,
22
+ labelOverrides,
23
+ render,
24
+ setting
25
+ } = _ref;
26
+ // Handle editing or not at this level
27
+ const [editing, setEditing] = (0, _react.useState)(false);
28
+ const settingData = (0, _react.useMemo)(() => ({
29
+ currentSetting: fields.value[index],
30
+ ...fields
31
+ }), [fields, index]);
32
+ const DefaultField = (0, _react.useCallback)(() => {
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
34
+ allowEdit: allowEdit,
35
+ component: _SettingField.SettingField,
36
+ "data-testid": `editableSettingsListFieldArray[${index}]`,
37
+ editing: editing,
38
+ intlKey: intlKey,
39
+ intlNS: intlNS,
40
+ labelOverrides: labelOverrides,
41
+ name: setting,
42
+ onSave: () => handleSave(index),
43
+ setEditing: setEditing,
44
+ settingData: settingData
45
+ }, setting);
46
+ }, [allowEdit, editing, handleSave, index, intlKey, intlNS, labelOverrides, setting, settingData]);
47
+ return render({
48
+ allowEdit,
49
+ data,
50
+ DefaultField,
51
+ editing,
52
+ fields,
53
+ handleSave,
54
+ index,
55
+ intlKey,
56
+ intlNS,
57
+ setEditing,
58
+ setting,
59
+ settingData,
60
+ SettingFieldComponent: _SettingField.SettingField
61
+ });
62
+ };
63
+ const EditableSettingsListFieldArray = _ref2 => {
64
+ let {
65
+ allowEdit: passedAllowEdit = true,
66
+ data: passedData,
67
+ fields: passedFields,
68
+ intlKey: passedIntlKey,
69
+ intlNS: passedIntlNS,
70
+ labelOverrides = {},
71
+ onSave,
72
+ render = _ref3 => {
73
+ let {
74
+ DefaultField
75
+ } = _ref3;
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultField, {});
77
+ }
78
+ } = _ref2;
79
+ const handleSave = index => {
80
+ const setting = passedFields.value[index];
81
+ return onSave(setting);
82
+ };
83
+ return passedFields.map((setting, i) => {
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(EditableSettingsListField, {
85
+ allowEdit: passedAllowEdit,
86
+ data: passedData,
87
+ fields: passedFields,
88
+ handleSave: handleSave,
89
+ index: i,
90
+ intlKey: passedIntlKey,
91
+ intlNS: passedIntlNS,
92
+ labelOverrides: labelOverrides,
93
+ render: render,
94
+ setting: setting
95
+ });
96
+ });
97
+ };
98
+ EditableSettingsListFieldArray.propTypes = {
99
+ allowEdit: _propTypes.default.bool,
100
+ fields: _propTypes.default.object,
101
+ intlKey: _propTypes.default.string,
102
+ intlNS: _propTypes.default.string,
103
+ labelOverrides: _propTypes.default.object,
104
+ onSave: _propTypes.default.func,
105
+ data: _propTypes.default.shape({
106
+ refdatavalues: _propTypes.default.arrayOf(_propTypes.default.object)
107
+ }),
108
+ initialValues: _propTypes.default.object
109
+ };
110
+ var _default = exports.default = EditableSettingsListFieldArray;
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _react = _interopRequireDefault(require("react"));
4
3
  var _stripesErmTesting = require("@folio/stripes-erm-testing");
5
4
  var _reactFinalFormArrays = require("react-final-form-arrays");
6
5
  var _EditableSettingsListFieldArray = _interopRequireDefault(require("./EditableSettingsListFieldArray"));
7
- var _helpers = require("../../../test/jest/helpers");
6
+ var _helpers = require("../../../../test/jest/helpers");
8
7
  var _jsxRuntime = require("react/jsx-runtime");
9
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
9
  const onSubmit = jest.fn();
11
- jest.mock('./SettingField', () => ({
10
+ jest.mock('../SettingField', () => ({
12
11
  SettingField: () => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
13
12
  children: "SettingField"
14
13
  })
@@ -57,7 +56,7 @@ describe('EditableSettingsListFieldArray', () => {
57
56
  const {
58
57
  queryAllByTestId
59
58
  } = renderComponent;
60
- expect(queryAllByTestId(/editableSettingsListFieldArray\[.*\]/).length).toEqual(0);
59
+ expect(queryAllByTestId(/editableSettingsListFieldArray\[.*]/).length).toEqual(0);
61
60
  });
62
61
  });
63
62
  describe('with initial value set', () => {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _EditableSettingsListFieldArray.default;
10
+ }
11
+ });
12
+ var _EditableSettingsListFieldArray = _interopRequireDefault(require("./EditableSettingsListFieldArray"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -8,8 +8,8 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactFinalForm = require("react-final-form");
10
10
  var _components = require("@folio/stripes/components");
11
- var _RefdataButtons = _interopRequireDefault(require("../../RefdataButtons"));
12
- var _hooks = require("../../hooks");
11
+ var _RefdataButtons = _interopRequireDefault(require("../../../RefdataButtons"));
12
+ var _hooks = require("../../../hooks");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  const EditSettingValue = props => {
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _react = _interopRequireDefault(require("react"));
4
3
  var _stripesErmTesting = require("@folio/stripes-erm-testing");
5
4
  var _EditSettingValue = _interopRequireDefault(require("./EditSettingValue"));
6
- var _helpers = require("../../../../test/jest/helpers");
5
+ var _helpers = require("../../../../../test/jest/helpers");
7
6
  var _jsxRuntime = require("react/jsx-runtime");
8
7
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
8
  const onSubmit = jest.fn();
10
- jest.mock('../../hooks');
9
+ jest.mock('../../../hooks');
11
10
  const stringSetting = {
12
11
  id: '12345',
13
12
  key: 'testSettingKey',
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _EditSettingValue.default;
10
+ }
11
+ });
12
+ var _EditSettingValue = _interopRequireDefault(require("./EditSettingValue"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
8
- var _hooks = require("../../hooks");
8
+ var _hooks = require("../../../hooks");
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  const RenderSettingValue = props => {
11
11
  const {
@@ -2,10 +2,10 @@
2
2
 
3
3
  var _react = _interopRequireDefault(require("react"));
4
4
  var _RenderSettingValue = _interopRequireDefault(require("./RenderSettingValue"));
5
- var _helpers = require("../../../../test/jest/helpers");
5
+ var _helpers = require("../../../../../test/jest/helpers");
6
6
  var _jsxRuntime = require("react/jsx-runtime");
7
7
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
- jest.mock('../../hooks');
8
+ jest.mock('../../../hooks');
9
9
  const stringSetting = {
10
10
  id: '12345',
11
11
  key: 'testSettingKey',
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _RenderSettingValue.default;
10
+ }
11
+ });
12
+ var _RenderSettingValue = _interopRequireDefault(require("./RenderSettingValue"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
7
+ var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _components = require("@folio/stripes/components");
10
10
  var _EditSettingValue = _interopRequireDefault(require("./EditSettingValue"));
@@ -15,20 +15,19 @@ var _utils = require("../../utils");
15
15
  var _renderHelpText = _interopRequireDefault(require("../../../../styles/renderHelpText.css"));
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
18
  const SettingField = settingFieldProps => {
21
19
  const {
22
20
  allowEdit = true,
21
+ editing,
23
22
  intlKey: passedIntlKey,
24
23
  intlNS: passedIntlNS,
25
24
  labelOverrides = {},
26
25
  onSave,
26
+ setEditing,
27
27
  settingData: {
28
28
  currentSetting
29
29
  } = {}
30
30
  } = settingFieldProps;
31
- const [editing, setEditing] = (0, _react.useState)(false);
32
31
  const kintIntl = (0, _hooks.useKintIntl)(passedIntlKey, passedIntlNS);
33
32
  const {
34
33
  refdataEndpoint,
@@ -42,7 +41,8 @@ const SettingField = settingFieldProps => {
42
41
  endpoint: refdataEndpoint,
43
42
  desc: currentSetting.vocab,
44
43
  queryParams: {
45
- enabled: !!currentSetting?.vocab && currentSetting.settingType === 'Refdata'
44
+ enabled: !!currentSetting?.vocab && currentSetting.settingType === 'Refdata',
45
+ staleTime: 1000 * 60 * 2 // 2 minutes staletime for refdata in settings?
46
46
  }
47
47
  });
48
48
  const templates = (0, _hooks.useTemplates)({
@@ -24,52 +24,62 @@ const setting = {
24
24
  settingType: 'String',
25
25
  value: 'diku-shared'
26
26
  };
27
+ const setEditing = jest.fn();
28
+ let renderComponent;
27
29
  describe('SettingField', () => {
28
- let renderComponent;
29
- beforeEach(async () => {
30
- renderComponent = (0, _helpers.renderWithKintHarness)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_stripesErmTesting.TestForm, {
31
- initialValues: {},
32
- onSubmit: onSubmit,
33
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
34
- component: _SettingField.default,
35
- name: "test",
36
- onSave: onSave,
37
- settingData: {
38
- currentSetting: setting
39
- }
40
- })
41
- }));
42
- });
43
- it('renders RenderSettingValue', async () => {
44
- const {
45
- getByText
46
- } = renderComponent;
47
- await (0, _react2.waitFor)(async () => expect(await getByText('RenderSettingValue')).toBeInTheDocument());
48
- });
49
- test('renders the edit button', () => {
50
- (0, _stripesErmTesting.Button)('Edit').exists();
51
- });
52
- it('clicking edit/save works as expected', async () => {
53
- const {
54
- findByText
55
- } = renderComponent;
56
- // before clicking on edit button, we should be rendering setting value
57
- await (0, _react2.waitFor)(async () => expect(await findByText('RenderSettingValue')).toBeInTheDocument());
58
-
59
- // Clicking edit button
60
- await (0, _react2.waitFor)(async () => {
61
- await (0, _stripesErmTesting.Button)('Edit').click();
30
+ describe.each([{
31
+ editing: false,
32
+ expectedRender: 'RenderSettingValue',
33
+ expectedButton: 'Edit',
34
+ expectedCallback: setEditing
35
+ }, {
36
+ editing: true,
37
+ expectedRender: 'EditSettingValue',
38
+ expectedButton: 'Save',
39
+ expectedCallback: onSave
40
+ }])('render SettingField with editing: editing', _ref => {
41
+ let {
42
+ editing,
43
+ expectedButton,
44
+ expectedCallback,
45
+ expectedRender
46
+ } = _ref;
47
+ beforeEach(async () => {
48
+ setEditing.mockClear();
49
+ onSave.mockClear();
50
+ renderComponent = (0, _helpers.renderWithKintHarness)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_stripesErmTesting.TestForm, {
51
+ initialValues: {},
52
+ onSubmit: onSubmit,
53
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
54
+ component: _SettingField.default,
55
+ editing: editing,
56
+ name: "test",
57
+ onSave: onSave,
58
+ setEditing: setEditing,
59
+ settingData: {
60
+ currentSetting: setting
61
+ }
62
+ })
63
+ }));
62
64
  });
63
-
64
- // Should be rendering the "edit" for a setting value
65
- await (0, _react2.waitFor)(async () => expect(await findByText('EditSettingValue')).toBeInTheDocument());
66
-
67
- // Clicking save button
68
- await (0, _react2.waitFor)(async () => {
69
- await (0, _stripesErmTesting.Button)('Save').click();
65
+ it(`renders ${expectedRender}`, () => {
66
+ const {
67
+ getByText
68
+ } = renderComponent;
69
+ expect(getByText(expectedRender)).toBeInTheDocument();
70
+ });
71
+ test(`renders the ${expectedButton} button`, () => {
72
+ (0, _stripesErmTesting.Button)('Edit').exists();
73
+ });
74
+ describe(`clicking the ${expectedButton} button`, () => {
75
+ beforeEach(async () => {
76
+ await (0, _react2.waitFor)(async () => {
77
+ await (0, _stripesErmTesting.Button)(expectedButton).click();
78
+ });
79
+ });
80
+ it('fired expected callback', () => {
81
+ expect(expectedCallback).toHaveBeenCalled();
82
+ });
70
83
  });
71
-
72
- // Should be rendering the setting value again
73
- await (0, _react2.waitFor)(async () => expect(await findByText('RenderSettingValue')).toBeInTheDocument());
74
84
  });
75
85
  });
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "EditSettingValue", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _SettingField.EditSettingValue;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "EditableSettingsList", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -15,6 +21,12 @@ Object.defineProperty(exports, "EditableSettingsListFieldArray", {
15
21
  return _EditableSettingsListFieldArray.default;
16
22
  }
17
23
  });
24
+ Object.defineProperty(exports, "RenderSettingValue", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _SettingField.RenderSettingValue;
28
+ }
29
+ });
18
30
  Object.defineProperty(exports, "SettingField", {
19
31
  enumerable: true,
20
32
  get: function () {
@@ -27,6 +27,22 @@ const SASQLookupComponent = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
27
27
  intlKey: passedIntlKey,
28
28
  intlNS: passedIntlNS,
29
29
  labelOverrides = {},
30
+ lookupQueryNamespaceGenerator = _ref => {
31
+ let {
32
+ currentPage,
33
+ namespace,
34
+ id: passedId,
35
+ query
36
+ } = _ref;
37
+ const queryNamespace = [namespace, 'SASQ'];
38
+ if (passedId) {
39
+ queryNamespace.push(passedId);
40
+ }
41
+ queryNamespace.push('viewAll');
42
+ queryNamespace.push(query);
43
+ queryNamespace.push(currentPage);
44
+ return queryNamespace;
45
+ },
30
46
  mainPaneProps = {},
31
47
  mclProps = {},
32
48
  noSearchField,
@@ -79,20 +95,21 @@ const SASQLookupComponent = /*#__PURE__*/(0, _react.forwardRef)((props, ref) =>
79
95
  }, query ?? {}), [currentPage, fetchParameters.SASQ_MAP, query, queryParameterGenerator]);
80
96
  const [filterPaneVisible, setFilterPaneVisible] = (0, _hooks.useLocalStorageState)(filterPaneVisibileKey, true);
81
97
  const toggleFilterPane = () => setFilterPaneVisible(!filterPaneVisible);
82
- const queryNamespace = [namespace, 'SASQ'];
83
- if (id) {
84
- queryNamespace.push(id);
85
- }
86
- queryNamespace.push('viewAll');
87
- queryNamespace.push(query);
88
- queryNamespace.push(currentPage);
89
98
  const {
90
99
  data = {},
91
100
  ...restOfQueryProps
92
- } = (0, _reactQuery.useQuery)(queryNamespace, () => {
101
+ } = (0, _reactQuery.useQuery)(lookupQueryNamespaceGenerator({
102
+ currentPage,
103
+ endpoint: fetchParameters.endpoint,
104
+ namespace,
105
+ id,
106
+ query,
107
+ queryParams
108
+ }), () => {
93
109
  return ky.get(`${fetchParameters.endpoint}${queryParams}`).json();
94
110
  }, {
95
- enabled: (!!query?.filters || !!query?.query) && !!currentPage
111
+ enabled: (!!query?.filters || !!query?.query) && !!currentPage,
112
+ ...(fetchParameters.queryOptions ?? {})
96
113
  });
97
114
  (0, _react.useEffect)(() => {
98
115
  if (count !== data?.totalRecords) {
@@ -19,6 +19,20 @@ const SASQViewComponent = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
19
19
  match,
20
20
  path,
21
21
  ViewComponent,
22
+ viewQueryNamespaceGenerator = _ref2 => {
23
+ let {
24
+ namespace,
25
+ componentId,
26
+ id: passedId
27
+ } = _ref2;
28
+ const queryNamespace = [namespace, 'SASQ'];
29
+ if (componentId) {
30
+ queryNamespace.push(componentId);
31
+ }
32
+ queryNamespace.push('view');
33
+ queryNamespace.push(passedId);
34
+ return queryNamespace;
35
+ },
22
36
  ...props
23
37
  } = _ref;
24
38
  const {
@@ -27,17 +41,17 @@ const SASQViewComponent = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
27
41
 
28
42
  // If itemEndpoint is available, use that, otherwise use standard endpoint
29
43
  const endpoint = fetchParameters?.itemEndpoint ?? fetchParameters?.endpoint;
30
- const queryNamespace = [namespace, 'SASQ'];
31
- if (id) {
32
- queryNamespace.push(id);
33
- }
34
- queryNamespace.push('view');
35
- queryNamespace.push(match?.params?.id);
36
44
  const ky = (0, _core.useOkapiKy)();
37
45
  const {
38
46
  data = {},
39
47
  ...rest
40
- } = (0, _reactQuery.useQuery)(queryNamespace, () => ky(`${endpoint}/${match?.params?.id}`).json(), {
48
+ } = (0, _reactQuery.useQuery)(viewQueryNamespaceGenerator({
49
+ componentId: id,
50
+ namespace,
51
+ endpoint,
52
+ id: match?.params?.id,
53
+ match
54
+ }), () => ky(`${endpoint}/${match?.params?.id}`).json(), {
41
55
  enabled: !!match?.params?.id
42
56
  });
43
57
  (0, _react.useImperativeHandle)(ref, () => ({
@@ -21,7 +21,8 @@ const SettingPage = _ref => {
21
21
  intlKey: passedIntlKey,
22
22
  intlNS: passedIntlNS,
23
23
  labelOverrides = {},
24
- sectionName
24
+ sectionName,
25
+ render
25
26
  } = _ref;
26
27
  const {
27
28
  settingEndpoint
@@ -43,6 +44,7 @@ const SettingPage = _ref => {
43
44
  labelOverrides: labelOverrides,
44
45
  onSave: handleSubmit,
45
46
  onSubmit: handleSubmit,
47
+ render: render,
46
48
  settingSection: sectionName
47
49
  });
48
50
  };
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
8
8
  var _components = require("@folio/stripes/components");
9
- var _utils = require("../utils");
10
- var _hooks = require("../hooks");
9
+ var _utils = require("../../utils");
10
+ var _hooks = require("../../hooks");
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  const SettingPagePane = _ref => {