@beinformed/ui 1.25.2 → 1.25.5
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 +18 -0
- package/esm/constants/Constants.js +5 -0
- package/esm/constants/Constants.js.map +1 -1
- package/esm/hooks/useAuthentication.js +5 -5
- package/esm/hooks/useAuthentication.js.map +1 -1
- package/esm/hooks/useModularUI.js.map +1 -1
- package/esm/hooks/useModularUIBasic.js +7 -1
- package/esm/hooks/useModularUIBasic.js.map +1 -1
- package/esm/hooks/useModularUIModel.js +9 -1
- package/esm/hooks/useModularUIModel.js.map +1 -1
- package/esm/hooks/useModularUIRequest.js +5 -7
- package/esm/hooks/useModularUIRequest.js.map +1 -1
- package/esm/models/application/ApplicationModel.js +9 -1
- package/esm/models/application/ApplicationModel.js.map +1 -1
- package/esm/models/base/ResourceModel.js +7 -0
- package/esm/models/base/ResourceModel.js.map +1 -1
- package/esm/models/caseview/CaseViewModel.js +6 -0
- package/esm/models/caseview/CaseViewModel.js.map +1 -1
- package/esm/models/concepts/BusinessScenarioModel.js +6 -0
- package/esm/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/esm/models/concepts/ConceptDetailModel.js +6 -0
- package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
- package/esm/models/concepts/ConceptIndexModel.js +6 -0
- package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
- package/esm/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/esm/models/concepts/ConceptTypeDetailModel.js.map +1 -1
- package/esm/models/content/ContentIndexModel.js +6 -0
- package/esm/models/content/ContentIndexModel.js.map +1 -1
- package/esm/models/content/ContentModel.js +6 -0
- package/esm/models/content/ContentModel.js.map +1 -1
- package/esm/models/content/ContentTOCModel.js +6 -0
- package/esm/models/content/ContentTOCModel.js.map +1 -1
- package/esm/models/content/ContentTypeModel.js +6 -0
- package/esm/models/content/ContentTypeModel.js.map +1 -1
- package/esm/models/detail/DetailModel.js +6 -0
- package/esm/models/detail/DetailModel.js.map +1 -1
- package/esm/models/form/FormModel.js +6 -0
- package/esm/models/form/FormModel.js.map +1 -1
- package/esm/models/list/ListDetailModel.js +6 -0
- package/esm/models/list/ListDetailModel.js.map +1 -1
- package/esm/models/list/ListModel.js +6 -0
- package/esm/models/list/ListModel.js.map +1 -1
- package/esm/models/lookup/LookupOptionsModel.js +6 -0
- package/esm/models/lookup/LookupOptionsModel.js.map +1 -1
- package/esm/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/esm/models/modelcatalog/ModelCatalogModel.js.map +1 -1
- package/esm/models/panels/GroupingPanelModel.js +6 -0
- package/esm/models/panels/GroupingPanelModel.js.map +1 -1
- package/esm/models/resolveModel.js +4 -4
- package/esm/models/resolveModel.js.map +1 -1
- package/esm/models/search/CaseSearchModel.js +6 -0
- package/esm/models/search/CaseSearchModel.js.map +1 -1
- package/esm/models/tab/TabModel.js +6 -0
- package/esm/models/tab/TabModel.js.map +1 -1
- package/esm/models/taskgroup/TaskGroupModel.js +6 -0
- package/esm/models/taskgroup/TaskGroupModel.js.map +1 -1
- package/esm/models/types.js.map +1 -1
- package/esm/models/user/UserModel.js +6 -0
- package/esm/models/user/UserModel.js.map +1 -1
- package/esm/models/user/UserProfileModel.js +6 -0
- package/esm/models/user/UserProfileModel.js.map +1 -1
- package/esm/models/user/UserServicesModel.js +6 -0
- package/esm/models/user/UserServicesModel.js.map +1 -1
- package/esm/modularui/ModularUIRequest.js +54 -10
- package/esm/modularui/ModularUIRequest.js.map +1 -1
- package/esm/modularui/types.js +2 -0
- package/esm/modularui/types.js.map +1 -0
- package/esm/redux/_modularui/ModularUIActions.js +2 -0
- package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
- package/esm/redux/_modularui/ModularUIMiddleware.js +1 -0
- package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/esm/redux/_modularui/types.js.map +1 -1
- package/esm/redux/_modularui/withModularUI.js.map +1 -1
- package/esm/utils/fetch/types.js.map +1 -1
- package/lib/constants/Constants.js +7 -1
- package/lib/constants/Constants.js.flow +6 -0
- package/lib/constants/Constants.js.map +1 -1
- package/lib/hooks/__tests__/UseModularUIModel.spec.js.flow +1 -1
- package/lib/hooks/__tests__/useModelCatalog.spec.js.flow +1 -1
- package/lib/hooks/__tests__/useModularUIBasic.spec.js.flow +2 -2
- package/lib/hooks/useAuthentication.js +4 -4
- package/lib/hooks/useAuthentication.js.flow +17 -5
- package/lib/hooks/useAuthentication.js.map +1 -1
- package/lib/hooks/useModularUI.js.flow +2 -2
- package/lib/hooks/useModularUI.js.map +1 -1
- package/lib/hooks/useModularUIBasic.js +7 -1
- package/lib/hooks/useModularUIBasic.js.flow +14 -4
- package/lib/hooks/useModularUIBasic.js.map +1 -1
- package/lib/hooks/useModularUIModel.js +11 -2
- package/lib/hooks/useModularUIModel.js.flow +19 -10
- package/lib/hooks/useModularUIModel.js.map +1 -1
- package/lib/hooks/useModularUIRequest.js +5 -7
- package/lib/hooks/useModularUIRequest.js.flow +12 -11
- package/lib/hooks/useModularUIRequest.js.map +1 -1
- package/lib/models/application/ApplicationModel.js +8 -1
- package/lib/models/application/ApplicationModel.js.flow +10 -1
- package/lib/models/application/ApplicationModel.js.map +1 -1
- package/lib/models/base/ResourceModel.js +7 -0
- package/lib/models/base/ResourceModel.js.flow +7 -0
- package/lib/models/base/ResourceModel.js.map +1 -1
- package/lib/models/caseview/CaseViewModel.js +6 -0
- package/lib/models/caseview/CaseViewModel.js.flow +6 -0
- package/lib/models/caseview/CaseViewModel.js.map +1 -1
- package/lib/models/concepts/BusinessScenarioModel.js +6 -0
- package/lib/models/concepts/BusinessScenarioModel.js.flow +6 -0
- package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/lib/models/concepts/ConceptDetailModel.js +6 -0
- package/lib/models/concepts/ConceptDetailModel.js.flow +6 -0
- package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
- package/lib/models/concepts/ConceptIndexModel.js +6 -0
- package/lib/models/concepts/ConceptIndexModel.js.flow +6 -0
- package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
- package/lib/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/lib/models/concepts/ConceptTypeDetailModel.js.flow +6 -0
- package/lib/models/concepts/ConceptTypeDetailModel.js.map +1 -1
- package/lib/models/content/ContentIndexModel.js +6 -0
- package/lib/models/content/ContentIndexModel.js.flow +6 -0
- package/lib/models/content/ContentIndexModel.js.map +1 -1
- package/lib/models/content/ContentModel.js +6 -0
- package/lib/models/content/ContentModel.js.flow +6 -0
- package/lib/models/content/ContentModel.js.map +1 -1
- package/lib/models/content/ContentTOCModel.js +6 -0
- package/lib/models/content/ContentTOCModel.js.flow +6 -0
- package/lib/models/content/ContentTOCModel.js.map +1 -1
- package/lib/models/content/ContentTypeModel.js +6 -0
- package/lib/models/content/ContentTypeModel.js.flow +6 -0
- package/lib/models/content/ContentTypeModel.js.map +1 -1
- package/lib/models/detail/DetailModel.js +6 -0
- package/lib/models/detail/DetailModel.js.flow +6 -0
- package/lib/models/detail/DetailModel.js.map +1 -1
- package/lib/models/form/FormModel.js +6 -0
- package/lib/models/form/FormModel.js.flow +6 -0
- package/lib/models/form/FormModel.js.map +1 -1
- package/lib/models/list/ListDetailModel.js +6 -0
- package/lib/models/list/ListDetailModel.js.flow +6 -0
- package/lib/models/list/ListDetailModel.js.map +1 -1
- package/lib/models/list/ListModel.js +6 -0
- package/lib/models/list/ListModel.js.flow +6 -0
- package/lib/models/list/ListModel.js.map +1 -1
- package/lib/models/lookup/LookupOptionsModel.js +6 -0
- package/lib/models/lookup/LookupOptionsModel.js.flow +6 -0
- package/lib/models/lookup/LookupOptionsModel.js.map +1 -1
- package/lib/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/lib/models/modelcatalog/ModelCatalogModel.js.flow +6 -0
- package/lib/models/modelcatalog/ModelCatalogModel.js.map +1 -1
- package/lib/models/panels/GroupingPanelModel.js +6 -0
- package/lib/models/panels/GroupingPanelModel.js.flow +6 -0
- package/lib/models/panels/GroupingPanelModel.js.map +1 -1
- package/lib/models/resolveModel.js +4 -3
- package/lib/models/resolveModel.js.flow +6 -4
- package/lib/models/resolveModel.js.map +1 -1
- package/lib/models/search/CaseSearchModel.js +6 -0
- package/lib/models/search/CaseSearchModel.js.flow +6 -0
- package/lib/models/search/CaseSearchModel.js.map +1 -1
- package/lib/models/tab/TabModel.js +6 -0
- package/lib/models/tab/TabModel.js.flow +6 -0
- package/lib/models/tab/TabModel.js.map +1 -1
- package/lib/models/taskgroup/TaskGroupModel.js +6 -0
- package/lib/models/taskgroup/TaskGroupModel.js.flow +6 -0
- package/lib/models/taskgroup/TaskGroupModel.js.map +1 -1
- package/lib/models/types.js.flow +1 -1
- package/lib/models/types.js.map +1 -1
- package/lib/models/user/UserModel.js +6 -0
- package/lib/models/user/UserModel.js.flow +6 -0
- package/lib/models/user/UserModel.js.map +1 -1
- package/lib/models/user/UserProfileModel.js +6 -0
- package/lib/models/user/UserProfileModel.js.flow +6 -0
- package/lib/models/user/UserProfileModel.js.map +1 -1
- package/lib/models/user/UserServicesModel.js +6 -0
- package/lib/models/user/UserServicesModel.js.flow +6 -0
- package/lib/models/user/UserServicesModel.js.map +1 -1
- package/lib/modularui/ModularUIRequest.js +54 -10
- package/lib/modularui/ModularUIRequest.js.flow +83 -17
- package/lib/modularui/ModularUIRequest.js.map +1 -1
- package/lib/modularui/__tests__/ModularUIRequest.spec.js.flow +4 -9
- package/lib/modularui/types.js +2 -0
- package/lib/modularui/types.js.flow +4 -0
- package/lib/modularui/types.js.map +1 -0
- package/lib/redux/_modularui/ModularUIActions.js +2 -0
- package/lib/redux/_modularui/ModularUIActions.js.flow +6 -4
- package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
- package/lib/redux/_modularui/ModularUIMiddleware.js +1 -0
- package/lib/redux/_modularui/ModularUIMiddleware.js.flow +5 -2
- package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/lib/redux/_modularui/types.js.flow +5 -3
- package/lib/redux/_modularui/types.js.map +1 -1
- package/lib/redux/_modularui/withModularUI.js.flow +2 -2
- package/lib/redux/_modularui/withModularUI.js.map +1 -1
- package/lib/utils/fetch/types.js.flow +12 -4
- package/lib/utils/fetch/types.js.map +1 -1
- package/package.json +7 -7
- package/src/constants/Constants.js +6 -0
- package/src/hooks/__tests__/UseModularUIModel.spec.js +1 -1
- package/src/hooks/__tests__/useModelCatalog.spec.js +1 -1
- package/src/hooks/__tests__/useModularUIBasic.spec.js +2 -2
- package/src/hooks/useAuthentication.js +17 -5
- package/src/hooks/useModularUI.js +2 -2
- package/src/hooks/useModularUIBasic.js +14 -4
- package/src/hooks/useModularUIModel.js +19 -10
- package/src/hooks/useModularUIRequest.js +12 -11
- package/src/models/application/ApplicationModel.js +10 -1
- package/src/models/base/ResourceModel.js +7 -0
- package/src/models/caseview/CaseViewModel.js +6 -0
- package/src/models/concepts/BusinessScenarioModel.js +6 -0
- package/src/models/concepts/ConceptDetailModel.js +6 -0
- package/src/models/concepts/ConceptIndexModel.js +6 -0
- package/src/models/concepts/ConceptTypeDetailModel.js +6 -0
- package/src/models/content/ContentIndexModel.js +6 -0
- package/src/models/content/ContentModel.js +6 -0
- package/src/models/content/ContentTOCModel.js +6 -0
- package/src/models/content/ContentTypeModel.js +6 -0
- package/src/models/detail/DetailModel.js +6 -0
- package/src/models/form/FormModel.js +6 -0
- package/src/models/list/ListDetailModel.js +6 -0
- package/src/models/list/ListModel.js +6 -0
- package/src/models/lookup/LookupOptionsModel.js +6 -0
- package/src/models/modelcatalog/ModelCatalogModel.js +6 -0
- package/src/models/panels/GroupingPanelModel.js +6 -0
- package/src/models/resolveModel.js +6 -4
- package/src/models/search/CaseSearchModel.js +6 -0
- package/src/models/tab/TabModel.js +6 -0
- package/src/models/taskgroup/TaskGroupModel.js +6 -0
- package/src/models/types.js +1 -1
- package/src/models/user/UserModel.js +6 -0
- package/src/models/user/UserProfileModel.js +6 -0
- package/src/models/user/UserServicesModel.js +6 -0
- package/src/modularui/ModularUIRequest.js +83 -17
- package/src/modularui/__tests__/ModularUIRequest.spec.js +4 -9
- package/src/modularui/types.js +4 -0
- package/src/redux/_modularui/ModularUIActions.js +6 -4
- package/src/redux/_modularui/ModularUIMiddleware.js +5 -2
- package/src/redux/_modularui/types.js +5 -3
- package/src/redux/_modularui/withModularUI.js +2 -2
- package/src/utils/fetch/types.js +12 -4
- package/types/constants/Constants.d.ts +5 -0
- package/types/models/base/ResourceModel.d.ts +4 -0
- package/types/models/form/FormObjectModel.d.ts +28 -2
- package/types/models/resolveModel.d.ts +1 -1
- package/types/models/types.d.ts +1 -1
- package/types/modularui/ModularUIRequest.d.ts +15 -7
- package/types/modularui/types.d.ts +2 -0
- package/types/redux/_modularui/types.d.ts +2 -2
- package/types/utils/fetch/types.d.ts +8 -5
|
@@ -5,21 +5,22 @@ import { useSelector } from "react-redux";
|
|
|
5
5
|
import ModularUIRequest from "../modularui/ModularUIRequest";
|
|
6
6
|
import { getLocale } from "../redux/selectors/i18n";
|
|
7
7
|
|
|
8
|
-
import type { RequestBaseOptions } from "../utils";
|
|
9
8
|
import type Href from "../models/href/Href";
|
|
10
|
-
|
|
11
|
-
const getModularUIRequest = createSelector([getLocale], (localeCode) => {
|
|
12
|
-
return (href: Href, options?: $Shape<RequestBaseOptions>) => {
|
|
13
|
-
const request = new ModularUIRequest(href, options);
|
|
14
|
-
request.locale = localeCode;
|
|
15
|
-
return request;
|
|
16
|
-
};
|
|
17
|
-
});
|
|
9
|
+
import type { RequestModularUIOptions } from "../utils";
|
|
18
10
|
|
|
19
11
|
/**
|
|
20
12
|
* Creates a ModularUIRequest with the locale as available in the redux store
|
|
21
13
|
*/
|
|
22
14
|
export const useModularUIRequest = (): ((
|
|
23
15
|
href: Href,
|
|
24
|
-
options?: $Shape<
|
|
25
|
-
) => ModularUIRequest) =>
|
|
16
|
+
options?: $Shape<RequestModularUIOptions>
|
|
17
|
+
) => ModularUIRequest) =>
|
|
18
|
+
useSelector(
|
|
19
|
+
createSelector([getLocale], (localeCode) => {
|
|
20
|
+
return (href: Href, options?: $Shape<RequestModularUIOptions>) => {
|
|
21
|
+
const request = new ModularUIRequest(href, options);
|
|
22
|
+
request.locale = localeCode;
|
|
23
|
+
return request;
|
|
24
|
+
};
|
|
25
|
+
})
|
|
26
|
+
);
|
|
@@ -9,6 +9,7 @@ import type { ModularUIModel, AuthenticationType } from "../types";
|
|
|
9
9
|
import type { ModularUIResponse } from "../../modularui";
|
|
10
10
|
import type LinkCollection from "../links/LinkCollection";
|
|
11
11
|
import type Href from "../href/Href";
|
|
12
|
+
import { fallbackDefaultAuthenticationType } from "../../constants";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* The Application model
|
|
@@ -23,6 +24,12 @@ export default class ApplicationModel extends ResourceModel {
|
|
|
23
24
|
return "Application";
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
/**
|
|
28
|
+
*/
|
|
29
|
+
static get modelName(): string {
|
|
30
|
+
return "ApplicationModel";
|
|
31
|
+
}
|
|
32
|
+
|
|
26
33
|
/**
|
|
27
34
|
*/
|
|
28
35
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -68,7 +75,9 @@ export default class ApplicationModel extends ResourceModel {
|
|
|
68
75
|
* Getting the authentication types of the application
|
|
69
76
|
*/
|
|
70
77
|
get authenticationTypes(): Array<AuthenticationType> {
|
|
71
|
-
const authenticationTypes = this.getContribution("security", [
|
|
78
|
+
const authenticationTypes = this.getContribution("security", [
|
|
79
|
+
fallbackDefaultAuthenticationType,
|
|
80
|
+
]);
|
|
72
81
|
|
|
73
82
|
//put primary first
|
|
74
83
|
return authenticationTypes?.sort(
|
|
@@ -37,6 +37,13 @@ class ResourceModel extends BaseModel implements IModelWithChildModels {
|
|
|
37
37
|
this._lastServerUpdate = Date.now();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Property to render name of a model, is original name after transpilation
|
|
42
|
+
*/
|
|
43
|
+
static get modelName(): string {
|
|
44
|
+
throw new IllegalStateException(`No modelName set on the resource model`);
|
|
45
|
+
}
|
|
46
|
+
|
|
40
47
|
/**
|
|
41
48
|
* Returns true when the model is supported based on configuration found in contributions
|
|
42
49
|
*
|
|
@@ -19,6 +19,12 @@ class BusinessScenarioModel extends ConceptDetailModel {
|
|
|
19
19
|
return "BusinessScenario";
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
*/
|
|
24
|
+
static get modelName(): string {
|
|
25
|
+
return "BusinessScenario";
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
/**
|
|
23
29
|
*/
|
|
24
30
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -41,6 +41,12 @@ export default class ConceptDetailModel extends ResourceModel {
|
|
|
41
41
|
return "ConceptDetail";
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
*/
|
|
46
|
+
static get modelName(): string {
|
|
47
|
+
return "ConceptDetailModel";
|
|
48
|
+
}
|
|
49
|
+
|
|
44
50
|
/**
|
|
45
51
|
*/
|
|
46
52
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -46,6 +46,12 @@ export default class ConceptIndexModel extends ResourceModel {
|
|
|
46
46
|
return "ConceptIndex";
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
*/
|
|
51
|
+
static get modelName(): string {
|
|
52
|
+
return "ConceptIndexModel";
|
|
53
|
+
}
|
|
54
|
+
|
|
49
55
|
/**
|
|
50
56
|
*/
|
|
51
57
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -13,6 +13,12 @@ class ConceptTypeDetailModel extends ResourceModel {
|
|
|
13
13
|
return "ConceptTypeDetail";
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
*/
|
|
18
|
+
static get modelName(): string {
|
|
19
|
+
return "ConceptTypeDetailModel";
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
/**
|
|
17
23
|
*/
|
|
18
24
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -41,6 +41,12 @@ export default class ContentIndexModel extends ResourceModel {
|
|
|
41
41
|
return "ContentIndex";
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
*/
|
|
46
|
+
static get modelName(): string {
|
|
47
|
+
return "ContentIndexModel";
|
|
48
|
+
}
|
|
49
|
+
|
|
44
50
|
/**
|
|
45
51
|
*/
|
|
46
52
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -49,6 +49,12 @@ export default class ContentTOCModel extends ResourceModel {
|
|
|
49
49
|
return "ContentTOC";
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
*/
|
|
54
|
+
static get modelName(): string {
|
|
55
|
+
return "ContentTOCModel";
|
|
56
|
+
}
|
|
57
|
+
|
|
52
58
|
/**
|
|
53
59
|
*/
|
|
54
60
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -12,6 +12,12 @@ export default class ContentTypeModel extends ResourceModel {
|
|
|
12
12
|
return "ContentType";
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
*/
|
|
17
|
+
static get modelName(): string {
|
|
18
|
+
return "ContentTypeModel";
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
*/
|
|
17
23
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -95,6 +95,12 @@ class FormModel extends ResourceModel {
|
|
|
95
95
|
return this.getContribution("actiontype", "form");
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
*/
|
|
100
|
+
static get modelName(): string {
|
|
101
|
+
return "FormModel";
|
|
102
|
+
}
|
|
103
|
+
|
|
98
104
|
/**
|
|
99
105
|
*/
|
|
100
106
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -83,6 +83,12 @@ export default class ListDetailModel extends DetailModel {
|
|
|
83
83
|
return "ListDetail";
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
/**
|
|
87
|
+
*/
|
|
88
|
+
static get modelName(): string {
|
|
89
|
+
return "ListDetailModel";
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
/**
|
|
87
93
|
*/
|
|
88
94
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -33,6 +33,12 @@ export default class LookupOptionsModel extends ResourceModel {
|
|
|
33
33
|
return "LookupOptions";
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
*/
|
|
38
|
+
static get modelName(): string {
|
|
39
|
+
return "LookupOptionsModel";
|
|
40
|
+
}
|
|
41
|
+
|
|
36
42
|
/**
|
|
37
43
|
*/
|
|
38
44
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -30,6 +30,12 @@ export default class GroupingPanelModel extends ResourceModel {
|
|
|
30
30
|
return "GroupingPanel";
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
*/
|
|
35
|
+
static get modelName(): string {
|
|
36
|
+
return "GroupingPanelModel";
|
|
37
|
+
}
|
|
38
|
+
|
|
33
39
|
/**
|
|
34
40
|
*/
|
|
35
41
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -25,9 +25,10 @@ import ContentModel from "./content/ContentModel";
|
|
|
25
25
|
import ContentTypeModel from "./content/ContentTypeModel";
|
|
26
26
|
import LookupOptionsModel from "./lookup/LookupOptionsModel";
|
|
27
27
|
|
|
28
|
+
import { IllegalArgumentException } from "../exceptions";
|
|
29
|
+
|
|
28
30
|
import type ModularUIResponse from "../modularui/ModularUIResponse";
|
|
29
31
|
import type { ModularUIModel } from "./types";
|
|
30
|
-
import { IllegalArgumentException } from "../exceptions";
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* Mapping of models and resourcetypes
|
|
@@ -62,7 +63,8 @@ const RESOURCE_MODELS = [
|
|
|
62
63
|
* Resolve a model by resource
|
|
63
64
|
*/
|
|
64
65
|
const resolveModel = (
|
|
65
|
-
data: ModularUIResponse
|
|
66
|
+
data: ModularUIResponse,
|
|
67
|
+
availableModels: Array<Class<ModularUIModel>> = RESOURCE_MODELS
|
|
66
68
|
): Class<ModularUIModel> | null => {
|
|
67
69
|
if (!data) {
|
|
68
70
|
throw new IllegalArgumentException(
|
|
@@ -72,11 +74,11 @@ const resolveModel = (
|
|
|
72
74
|
|
|
73
75
|
if (!has(data.contributions, "resourcetype")) {
|
|
74
76
|
throw new IllegalArgumentException(
|
|
75
|
-
"Data has wrong format, missing resourcetype in contributions, cannot resolve model"
|
|
77
|
+
"Data has wrong format, missing resourcetype property in contributions, cannot resolve model"
|
|
76
78
|
);
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
const resourceTypeModel =
|
|
81
|
+
const resourceTypeModel = availableModels.find((resourceModel) =>
|
|
80
82
|
resourceModel.isApplicableModel(data)
|
|
81
83
|
);
|
|
82
84
|
|
|
@@ -14,6 +14,12 @@ export default class CaseSearchModel extends ListModel {
|
|
|
14
14
|
return "CaseSearch";
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
*/
|
|
19
|
+
static get modelName(): string {
|
|
20
|
+
return "CaseSearchModel";
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
/**
|
|
18
24
|
*/
|
|
19
25
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
|
@@ -51,6 +51,12 @@ export default class TaskGroupModel extends ResourceModel {
|
|
|
51
51
|
return "TaskGroup";
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
*/
|
|
56
|
+
static get modelName(): string {
|
|
57
|
+
return "TaskGroupModel";
|
|
58
|
+
}
|
|
59
|
+
|
|
54
60
|
/**
|
|
55
61
|
*/
|
|
56
62
|
static isApplicableModel(data: ModularUIResponse): boolean {
|
package/src/models/types.js
CHANGED
|
@@ -25,7 +25,11 @@ import { IllegalArgumentException, IllegalStateException } from "../exceptions";
|
|
|
25
25
|
|
|
26
26
|
import { isPlainObject } from "../utils/helpers/objects";
|
|
27
27
|
|
|
28
|
-
import type {
|
|
28
|
+
import type { TargetModel } from "./types";
|
|
29
|
+
import type {
|
|
30
|
+
RequestBaseOptions,
|
|
31
|
+
RequestModularUIOptions,
|
|
32
|
+
} from "../utils/fetch/types";
|
|
29
33
|
import type { ModularUIModel } from "../models/types";
|
|
30
34
|
|
|
31
35
|
/**
|
|
@@ -36,8 +40,9 @@ class ModularUIRequest {
|
|
|
36
40
|
_response: ModularUIResponse;
|
|
37
41
|
|
|
38
42
|
_href: Href;
|
|
39
|
-
_options:
|
|
40
|
-
_targetModel: ?
|
|
43
|
+
_options: RequestModularUIOptions;
|
|
44
|
+
_targetModel: ?TargetModel;
|
|
45
|
+
_forceTargetModel: boolean = false;
|
|
41
46
|
_contributionsHref: string;
|
|
42
47
|
_locale: string;
|
|
43
48
|
_method: $Keys<typeof HTTP_METHODS> = HTTP_METHODS.GET;
|
|
@@ -46,7 +51,10 @@ class ModularUIRequest {
|
|
|
46
51
|
|
|
47
52
|
/**
|
|
48
53
|
*/
|
|
49
|
-
constructor(
|
|
54
|
+
constructor(
|
|
55
|
+
href: Href | string,
|
|
56
|
+
options: $Shape<RequestModularUIOptions> = {}
|
|
57
|
+
) {
|
|
50
58
|
if (!href) {
|
|
51
59
|
throw new IllegalArgumentException(
|
|
52
60
|
"You must pass a href to the resource that is requested"
|
|
@@ -132,7 +140,7 @@ class ModularUIRequest {
|
|
|
132
140
|
|
|
133
141
|
/**
|
|
134
142
|
*/
|
|
135
|
-
get options():
|
|
143
|
+
get options(): RequestModularUIOptions {
|
|
136
144
|
return {
|
|
137
145
|
...this._options,
|
|
138
146
|
locale: this.locale,
|
|
@@ -142,7 +150,24 @@ class ModularUIRequest {
|
|
|
142
150
|
|
|
143
151
|
/**
|
|
144
152
|
*/
|
|
145
|
-
|
|
153
|
+
get requestOptions(): RequestBaseOptions {
|
|
154
|
+
/* eslint-disable no-unused-vars */
|
|
155
|
+
const {
|
|
156
|
+
targetModel,
|
|
157
|
+
forceTargetModel,
|
|
158
|
+
updateModel,
|
|
159
|
+
childmodels,
|
|
160
|
+
isValidationRequest,
|
|
161
|
+
removeOnUnmount,
|
|
162
|
+
...requestOptions
|
|
163
|
+
} = this.options;
|
|
164
|
+
/* eslint-enable no-unused-vars */
|
|
165
|
+
return requestOptions;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
*/
|
|
170
|
+
set options(options: RequestModularUIOptions) {
|
|
146
171
|
this._options = options;
|
|
147
172
|
}
|
|
148
173
|
|
|
@@ -156,31 +181,73 @@ class ModularUIRequest {
|
|
|
156
181
|
|
|
157
182
|
/**
|
|
158
183
|
*/
|
|
159
|
-
set targetModel(targetModel:
|
|
184
|
+
set targetModel(targetModel: TargetModel) {
|
|
160
185
|
this._targetModel = targetModel;
|
|
161
186
|
}
|
|
162
187
|
|
|
163
188
|
/**
|
|
164
189
|
*/
|
|
165
|
-
get targetModel(): ?
|
|
190
|
+
get targetModel(): ?TargetModel {
|
|
166
191
|
return this._targetModel;
|
|
167
192
|
}
|
|
168
193
|
|
|
169
194
|
/**
|
|
170
195
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
196
|
+
set forceTargetModel(forceTargetModel: boolean) {
|
|
197
|
+
this._forceTargetModel = forceTargetModel ?? false;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
*/
|
|
202
|
+
get forceTargetModel(): boolean {
|
|
203
|
+
return this._forceTargetModel;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
*/
|
|
208
|
+
resolveModel(): Class<ModularUIModel> {
|
|
209
|
+
let availableModels;
|
|
210
|
+
if (this.targetModel) {
|
|
211
|
+
availableModels = Array.isArray(this.targetModel)
|
|
212
|
+
? [...this.targetModel]
|
|
213
|
+
: [this.targetModel];
|
|
214
|
+
|
|
215
|
+
if (this.forceTargetModel) {
|
|
216
|
+
return availableModels[0];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const Model: Class<ModularUIModel> | null = resolveModel(
|
|
221
|
+
this.response,
|
|
222
|
+
availableModels
|
|
223
|
+
);
|
|
173
224
|
|
|
174
|
-
// check for ResourceModel
|
|
175
225
|
if (Model && Model.isApplicableModel) {
|
|
176
|
-
return
|
|
226
|
+
return Model;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (availableModels) {
|
|
230
|
+
throw new IllegalStateException(
|
|
231
|
+
`data for ${this.href.toString()} is not applicable for model(s): ${availableModels
|
|
232
|
+
.map((m) => m.modelName)
|
|
233
|
+
.join(", ")}, received response: ${JSON.stringify(this.response)}`
|
|
234
|
+
);
|
|
177
235
|
}
|
|
178
236
|
|
|
179
237
|
throw new IllegalStateException(
|
|
180
|
-
`
|
|
238
|
+
`no javascript model is applicable for received request of ${this.href.toString()}, with response: ${JSON.stringify(
|
|
239
|
+
this.response
|
|
240
|
+
)}`
|
|
181
241
|
);
|
|
182
242
|
}
|
|
183
243
|
|
|
244
|
+
/**
|
|
245
|
+
*/
|
|
246
|
+
createModel(): ModularUIModel {
|
|
247
|
+
const Model = this.resolveModel();
|
|
248
|
+
return new Model(this.response);
|
|
249
|
+
}
|
|
250
|
+
|
|
184
251
|
/**
|
|
185
252
|
*/
|
|
186
253
|
processContributionsService(contributionsData: Object): void {
|
|
@@ -274,7 +341,7 @@ class ModularUIRequest {
|
|
|
274
341
|
*/
|
|
275
342
|
fetchDataService(): Promise<any> {
|
|
276
343
|
return universalFetch({
|
|
277
|
-
...this.
|
|
344
|
+
...this.requestOptions,
|
|
278
345
|
url: `${BASE}${this.href.path}`,
|
|
279
346
|
params: this.href.getQuerystringForModularUI(),
|
|
280
347
|
locale: this.options.locale,
|
|
@@ -451,7 +518,7 @@ class ModularUIRequest {
|
|
|
451
518
|
);
|
|
452
519
|
|
|
453
520
|
return universalFetch({
|
|
454
|
-
...this.
|
|
521
|
+
...this.requestOptions,
|
|
455
522
|
url: `${BASE}${href}`,
|
|
456
523
|
})
|
|
457
524
|
.then((response: Object) => {
|
|
@@ -519,10 +586,9 @@ class ModularUIRequest {
|
|
|
519
586
|
) {
|
|
520
587
|
const validationHref = this.href.setParameter("commit", "false");
|
|
521
588
|
return universalFetch({
|
|
522
|
-
...this.
|
|
589
|
+
...this.requestOptions,
|
|
523
590
|
url: `${BASE}${this.href.path}`,
|
|
524
591
|
params: validationHref.getQuerystringForModularUI(),
|
|
525
|
-
childmodels: false,
|
|
526
592
|
data: this.getDynamicValidationData(model),
|
|
527
593
|
}).then((data) => {
|
|
528
594
|
if (data == null || typeof data !== "object") {
|
|
@@ -115,17 +115,12 @@ describe("modularUIRequest", () => {
|
|
|
115
115
|
expect(requestWithChildModels.withChildModels).toBe(true);
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
it("
|
|
118
|
+
it("Throws when data is missing", () => {
|
|
119
119
|
const requestWithTargetModel = new ModularUIRequest("/");
|
|
120
120
|
requestWithTargetModel.targetModel = ApplicationModel;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const wrongTargetModel = new ModularUIRequest("/");
|
|
126
|
-
wrongTargetModel.targetModel = Href;
|
|
127
|
-
|
|
128
|
-
expect(() => wrongTargetModel.createModel()).toThrow(IllegalStateException);
|
|
121
|
+
expect(() => requestWithTargetModel.createModel()).toThrow(
|
|
122
|
+
IllegalArgumentException
|
|
123
|
+
);
|
|
129
124
|
});
|
|
130
125
|
|
|
131
126
|
it("creates a model from a response", () => {
|