@beinformed/ui 1.60.5 → 1.61.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 (139) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/esm/hooks/__tests__/useForm.spec.js.flow +1 -1
  3. package/esm/hooks/useForm.js +15 -20
  4. package/esm/hooks/useForm.js.flow +5 -14
  5. package/esm/hooks/useForm.js.map +1 -1
  6. package/esm/hooks/useModularUI.d.ts +0 -1
  7. package/esm/hooks/useModularUI.js +3 -11
  8. package/esm/hooks/useModularUI.js.flow +4 -23
  9. package/esm/hooks/useModularUI.js.map +1 -1
  10. package/esm/models/attributes/AttributeCollection.js +2 -2
  11. package/esm/models/attributes/AttributeCollection.js.map +1 -1
  12. package/esm/models/attributes/AttributeContent.js +1 -1
  13. package/esm/models/attributes/AttributeContent.js.flow +1 -1
  14. package/esm/models/attributes/AttributeContent.js.map +1 -1
  15. package/esm/models/attributes/CompositeAttributeChildCollection.js +4 -4
  16. package/esm/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
  17. package/esm/models/concepts/ConceptDetailModel.js +9 -9
  18. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  19. package/esm/models/content/ContentTOCModel.d.ts +7 -0
  20. package/esm/models/content/ContentTOCModel.js +35 -8
  21. package/esm/models/content/ContentTOCModel.js.flow +36 -9
  22. package/esm/models/content/ContentTOCModel.js.map +1 -1
  23. package/esm/models/content/SectionModel.d.ts +3 -0
  24. package/esm/models/content/SectionModel.js +11 -2
  25. package/esm/models/content/SectionModel.js.flow +11 -0
  26. package/esm/models/content/SectionModel.js.map +1 -1
  27. package/esm/models/content/SubSectionModel.d.ts +1 -1
  28. package/esm/models/content/SubSectionModel.js.flow +1 -1
  29. package/esm/models/content/SubSectionModel.js.map +1 -1
  30. package/esm/models/content/__tests__/Formalsource.spec.js.flow +91 -0
  31. package/esm/models/form/FormModel.js +33 -33
  32. package/esm/models/form/FormModel.js.map +1 -1
  33. package/esm/models/form/FormObjectModel.d.ts +13 -12
  34. package/esm/models/form/FormObjectModel.js +10 -9
  35. package/esm/models/form/FormObjectModel.js.flow +41 -27
  36. package/esm/models/form/FormObjectModel.js.map +1 -1
  37. package/esm/models/form/__tests__/FormValidation.spec.js.flow +79 -0
  38. package/esm/models/href/Href.js +6 -6
  39. package/esm/models/href/Href.js.map +1 -1
  40. package/esm/models/links/LinkCollection.js +4 -4
  41. package/esm/models/links/LinkCollection.js.map +1 -1
  42. package/esm/redux/_modularui/ModularUIActions.d.ts +2 -2
  43. package/esm/redux/_modularui/ModularUIActions.js +27 -10
  44. package/esm/redux/_modularui/ModularUIActions.js.flow +24 -5
  45. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  46. package/esm/redux/_modularui/ModularUIMiddleware.js +1 -1
  47. package/esm/redux/_modularui/ModularUIMiddleware.js.flow +1 -1
  48. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  49. package/esm/redux/_modularui/ModularUIReducer.js +4 -2
  50. package/esm/redux/_modularui/ModularUIReducer.js.flow +10 -1
  51. package/esm/redux/_modularui/ModularUIReducer.js.map +1 -1
  52. package/esm/redux/_modularui/ModularUISelectors.js +2 -2
  53. package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
  54. package/esm/redux/_modularui/__tests__/actions.spec.js.flow +5 -1
  55. package/esm/redux/_modularui/types.d.ts +1 -0
  56. package/esm/redux/_modularui/types.js.flow +2 -0
  57. package/esm/redux/_modularui/types.js.map +1 -1
  58. package/esm/utils/helpers/text.d.ts +1 -1
  59. package/esm/utils/helpers/text.js +1 -1
  60. package/esm/utils/helpers/text.js.flow +2 -2
  61. package/esm/utils/helpers/text.js.map +1 -1
  62. package/lib/hooks/useDeepCompareEffect.js +1 -2
  63. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  64. package/lib/hooks/useForm.js +14 -19
  65. package/lib/hooks/useForm.js.map +1 -1
  66. package/lib/hooks/useModularUI.d.ts +0 -1
  67. package/lib/hooks/useModularUI.js +4 -13
  68. package/lib/hooks/useModularUI.js.map +1 -1
  69. package/lib/i18n/index.js +1 -2
  70. package/lib/i18n/index.js.map +1 -1
  71. package/lib/models/attributes/AttributeCollection.js +2 -2
  72. package/lib/models/attributes/AttributeCollection.js.map +1 -1
  73. package/lib/models/attributes/AttributeContent.js +1 -1
  74. package/lib/models/attributes/AttributeContent.js.map +1 -1
  75. package/lib/models/attributes/CompositeAttributeChildCollection.js +4 -4
  76. package/lib/models/attributes/CompositeAttributeChildCollection.js.map +1 -1
  77. package/lib/models/concepts/ConceptDetailModel.js +9 -9
  78. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  79. package/lib/models/content/ContentTOCModel.d.ts +7 -0
  80. package/lib/models/content/ContentTOCModel.js +35 -8
  81. package/lib/models/content/ContentTOCModel.js.map +1 -1
  82. package/lib/models/content/SectionModel.d.ts +3 -0
  83. package/lib/models/content/SectionModel.js +11 -2
  84. package/lib/models/content/SectionModel.js.map +1 -1
  85. package/lib/models/content/SubSectionModel.d.ts +1 -1
  86. package/lib/models/content/SubSectionModel.js.map +1 -1
  87. package/lib/models/form/FormModel.js +33 -33
  88. package/lib/models/form/FormModel.js.map +1 -1
  89. package/lib/models/form/FormObjectModel.d.ts +13 -12
  90. package/lib/models/form/FormObjectModel.js +10 -9
  91. package/lib/models/form/FormObjectModel.js.map +1 -1
  92. package/lib/models/href/Href.js +6 -6
  93. package/lib/models/href/Href.js.map +1 -1
  94. package/lib/models/index.js +1 -2
  95. package/lib/models/index.js.map +1 -1
  96. package/lib/models/links/LinkCollection.js +4 -4
  97. package/lib/models/links/LinkCollection.js.map +1 -1
  98. package/lib/react-server/serverUtil.js +1 -2
  99. package/lib/react-server/serverUtil.js.map +1 -1
  100. package/lib/redux/_modularui/ModularUIActions.d.ts +2 -2
  101. package/lib/redux/_modularui/ModularUIActions.js +27 -10
  102. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  103. package/lib/redux/_modularui/ModularUIMiddleware.js +1 -1
  104. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  105. package/lib/redux/_modularui/ModularUIReducer.js +4 -2
  106. package/lib/redux/_modularui/ModularUIReducer.js.map +1 -1
  107. package/lib/redux/_modularui/ModularUISelectors.js +2 -2
  108. package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
  109. package/lib/redux/_modularui/types.d.ts +1 -0
  110. package/lib/redux/_modularui/types.js.map +1 -1
  111. package/lib/utils/helpers/text.d.ts +1 -1
  112. package/lib/utils/helpers/text.js +1 -1
  113. package/lib/utils/helpers/text.js.map +1 -1
  114. package/package.json +17 -17
  115. package/src/hooks/__tests__/useForm.spec.js +1 -1
  116. package/src/hooks/useForm.js +5 -14
  117. package/src/hooks/useModularUI.js +4 -23
  118. package/src/models/attributes/AttributeContent.js +1 -1
  119. package/src/models/content/ContentTOCModel.js +36 -9
  120. package/src/models/content/SectionModel.js +11 -0
  121. package/src/models/content/SubSectionModel.js +1 -1
  122. package/src/models/content/__tests__/Formalsource.spec.js +91 -0
  123. package/src/models/content/__tests__/formalsource-complete.json +234 -0
  124. package/src/models/content/__tests__/formalsource-contributions.json +110 -0
  125. package/src/models/content/__tests__/formalsource-section-contributions.json +84 -0
  126. package/src/models/content/__tests__/formalsource-section.json +60 -0
  127. package/src/models/content/__tests__/formalsource-toc.json +119 -0
  128. package/src/models/form/FormObjectModel.js +41 -27
  129. package/src/models/form/__tests__/FormValidation.spec.js +79 -0
  130. package/src/models/form/__tests__/FormValidationContributions.json +45 -0
  131. package/src/models/form/__tests__/FormValidationDataInitial.json +33 -0
  132. package/src/models/form/__tests__/FormValidationDataUpdate1.json +25 -0
  133. package/src/models/form/__tests__/FormValidationDataUpdate2.json +33 -0
  134. package/src/redux/_modularui/ModularUIActions.js +24 -5
  135. package/src/redux/_modularui/ModularUIMiddleware.js +1 -1
  136. package/src/redux/_modularui/ModularUIReducer.js +10 -1
  137. package/src/redux/_modularui/__tests__/actions.spec.js +5 -1
  138. package/src/redux/_modularui/types.js +2 -0
  139. package/src/utils/helpers/text.js +2 -2
@@ -0,0 +1,91 @@
1
+ import { ModularUIResponse } from "../../../modularui";
2
+
3
+ import toc from "./formalsource-toc.json";
4
+ import complete from "./formalsource-complete.json";
5
+ import contributions from "./formalsource-contributions.json";
6
+
7
+ import section from "./formalsource-section.json";
8
+ import sectionContributions from "./formalsource-section-contributions.json";
9
+
10
+ import ContentTOCModel from "../ContentTOCModel";
11
+ import ContentModel from "../ContentModel";
12
+
13
+ describe("formalsource", () => {
14
+ it("TOC model", () => {
15
+ const response = ModularUIResponse.create({
16
+ key: "contentmodel",
17
+ data: toc,
18
+ contributions,
19
+ });
20
+
21
+ const tocModel = new ContentTOCModel(response);
22
+
23
+ expect(tocModel).toBeInstanceOf(ContentTOCModel);
24
+
25
+ expect(tocModel.label).toBe(
26
+ "Grant Funding Agreement - Terms and Conditions",
27
+ );
28
+
29
+ expect(tocModel.items).toHaveLength(6);
30
+ expect(tocModel.items[0].items).toBeUndefined();
31
+ expect(tocModel.items[1].items).toHaveLength(2);
32
+
33
+ expect(tocModel.isCompleteSource).toBe(false);
34
+
35
+ const firstSection = tocModel.items[0];
36
+ expect(firstSection.label).toBe("1. Introduction");
37
+ });
38
+
39
+ it("Complete model", () => {
40
+ const response = ModularUIResponse.create({
41
+ key: "contentmodel",
42
+ data: complete,
43
+ contributions,
44
+ });
45
+
46
+ const completeModel = new ContentTOCModel(response);
47
+
48
+ expect(completeModel).toBeInstanceOf(ContentTOCModel);
49
+
50
+ expect(completeModel.items).toHaveLength(6);
51
+ expect(completeModel.items[0].items).toBeUndefined();
52
+ expect(completeModel.items[1].items).toHaveLength(2);
53
+
54
+ expect(completeModel.sections).toHaveLength(6);
55
+ expect(completeModel.sections[0].sections).toHaveLength(0);
56
+ expect(completeModel.sections[1].sections).toHaveLength(2);
57
+
58
+ expect(completeModel.isCompleteSource).toBe(true);
59
+
60
+ const firstSection = completeModel.sections[0];
61
+ expect(firstSection.label).toBe("Introduction");
62
+ expect(firstSection.number).toBe("1.");
63
+ expect(firstSection.body).toBe(null);
64
+ expect(firstSection.subSections).toHaveLength(3);
65
+ expect(firstSection.subSections[0].body).toHaveLength(169);
66
+
67
+ const secondSection = completeModel.sections[1];
68
+ expect(secondSection.label).toBe("Grant Offer");
69
+ expect(secondSection.number).toBe("2.");
70
+ expect(secondSection.body).toBe(null);
71
+ expect(secondSection.sections[0].label).toBe("Payment of Grant");
72
+ expect(secondSection.sections[0].number).toBe("2.1");
73
+ expect(secondSection.sections[0].body).toHaveLength(222);
74
+ });
75
+
76
+ it("Section model", () => {
77
+ const response = ModularUIResponse.create({
78
+ key: "contentmodel",
79
+ data: section,
80
+ contributions: sectionContributions,
81
+ });
82
+ const sectionModel = new ContentModel(response);
83
+
84
+ expect(sectionModel.label).toBe("Grant Offer");
85
+ expect(sectionModel.number).toBe("2.");
86
+ expect(sectionModel.body).toBe(null);
87
+ expect(sectionModel.subSections).toHaveLength(0);
88
+
89
+ expect(sectionModel.childSectionLinks).toHaveLength(2);
90
+ });
91
+ });
@@ -0,0 +1,234 @@
1
+ {
2
+ "content": {
3
+ "filter": {
4
+ "complete": {
5
+ "param": "complete",
6
+ "name": "complete",
7
+ "value": "true"
8
+ },
9
+ "searchTerm": {
10
+ "param": "searchTerm",
11
+ "name": "searchTerm"
12
+ },
13
+ "entryDate": {
14
+ "param": "entryDate",
15
+ "name": "entryDate",
16
+ "value": "2025-05-28"
17
+ }
18
+ },
19
+ "_links": {
20
+ "self": {
21
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource"
22
+ },
23
+ "api_doc": {
24
+ "href": "/api-docs/v3/content/(content-identifier)"
25
+ },
26
+ "contributions": {
27
+ "href": "/contributions/content/(content-identifier)"
28
+ },
29
+ "relatedConcepts": {
30
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/relatedConcepts"
31
+ }
32
+ },
33
+ "label": "Grant Funding Agreement - Terms and Conditions",
34
+ "sections": [
35
+ {
36
+ "_links": {
37
+ "self": {
38
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1"
39
+ }
40
+ },
41
+ "label": "Introduction",
42
+ "number": "1.",
43
+ "subSections": [
44
+ {
45
+ "_links": {
46
+ "self": {
47
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_1"
48
+ }
49
+ },
50
+ "body": "<p>This document sets the Terms and Conditions of the Grant Funding Agreement and should be read in conjunction with the Grant Offer Letter and all relevant annexes.<\/p>"
51
+ },
52
+ {
53
+ "_links": {
54
+ "self": {
55
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_2"
56
+ }
57
+ },
58
+ "body": "<p>This agreement does not give rise to contractual relations.<\/p>"
59
+ },
60
+ {
61
+ "_links": {
62
+ "self": {
63
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter1#Chapter1_3"
64
+ }
65
+ },
66
+ "body": "<p>This agreement has been revised following wide consultation with Departmental strategic partners and is intended to replace any previous versions.<\/p>"
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "_links": {
72
+ "self": {
73
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2"
74
+ }
75
+ },
76
+ "label": "Grant Offer",
77
+ "number": "2.",
78
+ "sections": [
79
+ {
80
+ "_links": {
81
+ "self": {
82
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_1"
83
+ }
84
+ },
85
+ "label": "Payment of Grant",
86
+ "number": "2.1",
87
+ "body": "<p>Payment of the grant is subject to you complying with these Terms and Conditions together with Annex F of the Grant Offer Letter and to such further conditions and requirements that we may from time to time specify.<\/p>"
88
+ },
89
+ {
90
+ "_links": {
91
+ "self": {
92
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_2"
93
+ }
94
+ },
95
+ "label": "Purpose of Funding",
96
+ "number": "2.2",
97
+ "body": "<p>The grant will be paid only in respect of Eligible Expenditure incurred by you to deliver the funded activities. The grant must not be used to fund activities that may be partly-political in intention, use or presentation, or to propagate a religion or belief.<\/p>"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "_links": {
103
+ "self": {
104
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter3"
105
+ }
106
+ },
107
+ "label": "Amount of Grant",
108
+ "number": "3.",
109
+ "body": "<p>The maximum amount of the grant will be stipulated in the Grant Offer Letter; if subsequent years are to be funded, we will send you a formal statement of the amount of grant funding approved for the subsequent years. The amount of grant to be paid in any financial year will be decided by us after considering your estimates of income and expenditure in respect of the grant funded activities as set out in Annex F. The grant reimburses 100% of the agreed actions and activities eligible costs.<\/p>"
110
+ },
111
+ {
112
+ "_links": {
113
+ "self": {
114
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter4"
115
+ }
116
+ },
117
+ "label": "Purpose of Grant",
118
+ "number": "4.",
119
+ "body": "<p>The purpose of the Research Grant is to support research activity in a topic area relevant to research practices. The research supported is to increase the evidence base for research and can cover a breadth of topics not limited to the following examples: relevant clinical areas (e.g. brain injury), research practices, sectors and settings, health economics.<\/p>"
120
+ },
121
+ {
122
+ "_links": {
123
+ "self": {
124
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5"
125
+ }
126
+ },
127
+ "label": "Eligibility of Grant",
128
+ "number": "5.",
129
+ "sections": [
130
+ {
131
+ "_links": {
132
+ "self": {
133
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1"
134
+ }
135
+ },
136
+ "label": "Eligibility Criteria",
137
+ "number": "5.1",
138
+ "body": "<p>Applications will need to meet the following eligibility criteria:<\/p>",
139
+ "subSections": [
140
+ {
141
+ "_links": {
142
+ "self": {
143
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1a"
144
+ }
145
+ },
146
+ "number": "a.",
147
+ "body": "<p>The research project can be classified as innovative. This includes innovation levels 2 and 3 as described in Annex A.<\/p>"
148
+ },
149
+ {
150
+ "_links": {
151
+ "self": {
152
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b"
153
+ }
154
+ },
155
+ "number": "b.",
156
+ "body": "<p>The research project contributes to open source, which includes the following projects:<\/p>",
157
+ "subSections": [
158
+ {
159
+ "_links": {
160
+ "self": {
161
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b1"
162
+ }
163
+ },
164
+ "body": "<p>The product within the research project leads to new open source software artifacts.<\/p>"
165
+ },
166
+ {
167
+ "_links": {
168
+ "self": {
169
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b2"
170
+ }
171
+ },
172
+ "body": "<p>The product creates software artifacts which will advance the discussion on open source contribution.<\/p>"
173
+ },
174
+ {
175
+ "_links": {
176
+ "self": {
177
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter5_1#Chapter5_1b3"
178
+ }
179
+ },
180
+ "body": "<p>The product within the research project leads to patches for existing open source software artifacts.<\/p>"
181
+ }
182
+ ]
183
+ }
184
+ ]
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "_links": {
190
+ "self": {
191
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA"
192
+ }
193
+ },
194
+ "label": "Innovation levels research grant projects",
195
+ "number": "Annex A.",
196
+ "body": "<p>The following criteria are applied for innovation levels used for research grant applications.<\/p>",
197
+ "subSections": [
198
+ {
199
+ "_links": {
200
+ "self": {
201
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_1"
202
+ }
203
+ },
204
+ "body": "<p>Level 3 innovation is the highest level. It implies that the product radically reinvents the future of certain human activities.<\/p>"
205
+ },
206
+ {
207
+ "_links": {
208
+ "self": {
209
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_2"
210
+ }
211
+ },
212
+ "body": "<p>Level 2 innovation is the second highest level. It implies that the product substantially improves products, insights or methods.<\/p>"
213
+ },
214
+ {
215
+ "_links": {
216
+ "self": {
217
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_3"
218
+ }
219
+ },
220
+ "body": "<p>Both level 2 and level 3 innovations are excluded by products which are likely to end up collecting dust on a shelf.<\/p>"
221
+ },
222
+ {
223
+ "_links": {
224
+ "self": {
225
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/AnnexA#AnnexA_4"
226
+ }
227
+ },
228
+ "body": "<p>Level 1 innovations only require the product to incrementally improves products, insights or methods.<\/p>"
229
+ }
230
+ ]
231
+ }
232
+ ]
233
+ }
234
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "source": {
3
+ "label": "content",
4
+ "resourcetype": "Content",
5
+ "filter": [
6
+ {
7
+ "complete": {
8
+ "type": "choicefilter",
9
+ "label": "complete",
10
+ "layouthint": ["radiobutton"],
11
+ "multiplechoice": false,
12
+ "optionMode": "static",
13
+ "options": [
14
+ {
15
+ "key": "true",
16
+ "label": "Yes"
17
+ },
18
+ {
19
+ "key": "false",
20
+ "label": "No"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "searchTerm": {
27
+ "type": "stringfilter",
28
+ "label": "searchTerm",
29
+ "multiplechoice": false
30
+ }
31
+ },
32
+ {
33
+ "entryDate": {
34
+ "type": "datefilter",
35
+ "label": "Entry date",
36
+ "format": "dd-MM-yyyy",
37
+ "formatlabel": "dd-mm-yyyy",
38
+ "operator": "greater-than-or-equal"
39
+ }
40
+ }
41
+ ],
42
+ "metadata": {
43
+ "contentIdentifier": {
44
+ "type": "string",
45
+ "label": "content identifier"
46
+ }
47
+ },
48
+ "attributes": [
49
+ {
50
+ "label": {
51
+ "type": "string",
52
+ "label": "source label"
53
+ }
54
+ },
55
+ {
56
+ "_links": {
57
+ "attributes": []
58
+ }
59
+ },
60
+ {
61
+ "sections": {
62
+ "attributes": [
63
+ {
64
+ "_id": {
65
+ "type": "string",
66
+ "label": "section identifier"
67
+ }
68
+ },
69
+ {
70
+ "label": {
71
+ "type": "string",
72
+ "label": "section label"
73
+ }
74
+ },
75
+ {
76
+ "number": {
77
+ "type": "string",
78
+ "label": "section number"
79
+ }
80
+ },
81
+ {
82
+ "body": {
83
+ "type": "string",
84
+ "label": "section body"
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ "categories": {
92
+ "attributes": [
93
+ {
94
+ "_id": {
95
+ "type": "string",
96
+ "label": "category identifier"
97
+ }
98
+ },
99
+ {
100
+ "label": {
101
+ "type": "string",
102
+ "label": "section label"
103
+ }
104
+ }
105
+ ]
106
+ }
107
+ }
108
+ ]
109
+ }
110
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "section": {
3
+ "label": "content",
4
+ "resourcetype": "ContentDetail",
5
+ "filter": [
6
+ {
7
+ "entryDate": {
8
+ "type": "datefilter",
9
+ "label": "Entry date",
10
+ "format": "dd-MM-yyyy",
11
+ "formatlabel": "dd-mm-yyyy",
12
+ "operator": "greater-than-or-equal"
13
+ }
14
+ }
15
+ ],
16
+ "metadata": {
17
+ "_id": {
18
+ "type": "string",
19
+ "label": "Id"
20
+ }
21
+ },
22
+ "attributes": [
23
+ {
24
+ "label": {
25
+ "type": "string",
26
+ "label": "section label"
27
+ }
28
+ },
29
+ {
30
+ "body": {
31
+ "type": "string",
32
+ "label": "section body"
33
+ }
34
+ },
35
+ {
36
+ "childSections": {
37
+ "attributes": [
38
+ {
39
+ "label": {
40
+ "type": "string",
41
+ "label": "section label"
42
+ }
43
+ },
44
+ {
45
+ "_id": {
46
+ "type": "string",
47
+ "label": "section identifier"
48
+ }
49
+ }
50
+ ]
51
+ }
52
+ },
53
+ {
54
+ "relatedConcepts": {
55
+ "attributes": [
56
+ {
57
+ "label": {
58
+ "type": "string",
59
+ "label": "concept label"
60
+ }
61
+ },
62
+ {
63
+ "conceptIdentifier": {
64
+ "type": "string",
65
+ "label": "concept identifier"
66
+ }
67
+ },
68
+ {
69
+ "conceptType": {
70
+ "type": "string",
71
+ "label": "concept type"
72
+ }
73
+ }
74
+ ]
75
+ }
76
+ },
77
+ {
78
+ "_links": {
79
+ "attributes": []
80
+ }
81
+ }
82
+ ]
83
+ }
84
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "section": {
3
+ "_links": {
4
+ "self": {
5
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2"
6
+ },
7
+ "api_doc": {
8
+ "href": "/api-docs/v3/content/(content-identifier)/(section-identifier)"
9
+ },
10
+ "contributions": {
11
+ "href": "/contributions/content/(content-identifier)/(section-identifier)"
12
+ },
13
+ "content": {
14
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource"
15
+ }
16
+ },
17
+ "_id": "Chapter2",
18
+ "label": "Grant Offer",
19
+ "number": "2.",
20
+ "childSections": [
21
+ {
22
+ "_links": {
23
+ "self": {
24
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_1"
25
+ },
26
+ "api_doc": {
27
+ "href": "/api-docs/v3/content/(content-identifier)/(section-identifier)"
28
+ },
29
+ "contributions": {
30
+ "href": "/contributions/content/(content-identifier)/(section-identifier)"
31
+ }
32
+ },
33
+ "_id": "Chapter2_1",
34
+ "label": "2.1 Payment of Grant"
35
+ },
36
+ {
37
+ "_links": {
38
+ "self": {
39
+ "href": "/content/bundle-com.beinformed.source.GrantFundingAgreementTermsandConditions/Grant%20Funding%20Agreement.formalsource/Chapter2_2"
40
+ },
41
+ "api_doc": {
42
+ "href": "/api-docs/v3/content/(content-identifier)/(section-identifier)"
43
+ },
44
+ "contributions": {
45
+ "href": "/contributions/content/(content-identifier)/(section-identifier)"
46
+ }
47
+ },
48
+ "_id": "Chapter2_2",
49
+ "label": "2.2 Purpose of Funding"
50
+ }
51
+ ],
52
+ "filter": {
53
+ "entryDate": {
54
+ "param": "entryDate",
55
+ "name": "entryDate",
56
+ "value": "2025-05-28"
57
+ }
58
+ }
59
+ }
60
+ }