@beinformed/ui 1.14.5 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/esm/hooks/index.js +1 -0
- package/esm/hooks/index.js.map +1 -1
- package/esm/hooks/useAllFormsOnModel.js +110 -0
- package/esm/hooks/useAllFormsOnModel.js.map +1 -0
- package/esm/hooks/useAuthentication.js +4 -1
- package/esm/hooks/useAuthentication.js.map +1 -1
- package/esm/models/attributes/AttributeContent.js +4 -4
- package/esm/models/attributes/AttributeContent.js.map +1 -1
- package/esm/redux/actions/FormAttributeSet.js +4 -0
- package/esm/redux/actions/FormAttributeSet.js.map +1 -1
- package/esm/redux/actions/SignIn.js +9 -0
- package/esm/redux/actions/SignIn.js.map +1 -1
- package/esm/redux/reducers/AuthReducer.js +5 -0
- package/esm/redux/reducers/AuthReducer.js.map +1 -1
- package/esm/utils/helpers/checkResource.js +43 -0
- package/esm/utils/helpers/checkResource.js.map +1 -0
- package/esm/utils/index.js +1 -1
- package/esm/utils/index.js.map +1 -1
- package/lib/hooks/index.js +13 -0
- package/lib/hooks/index.js.flow +1 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useAllFormsOnModel.js +131 -0
- package/lib/hooks/useAllFormsOnModel.js.flow +92 -0
- package/lib/hooks/useAllFormsOnModel.js.map +1 -0
- package/lib/hooks/useAuthentication.js +3 -0
- package/lib/hooks/useAuthentication.js.flow +7 -5
- package/lib/hooks/useAuthentication.js.map +1 -1
- package/lib/models/attributes/AttributeContent.js +4 -4
- package/lib/models/attributes/AttributeContent.js.flow +3 -3
- package/lib/models/attributes/AttributeContent.js.map +1 -1
- package/lib/redux/actions/FormAttributeSet.js +4 -0
- package/lib/redux/actions/FormAttributeSet.js.flow +7 -2
- package/lib/redux/actions/FormAttributeSet.js.map +1 -1
- package/lib/redux/actions/SignIn.js +14 -2
- package/lib/redux/actions/SignIn.js.flow +8 -0
- package/lib/redux/actions/SignIn.js.map +1 -1
- package/lib/redux/reducers/AuthReducer.js +5 -0
- package/lib/redux/reducers/AuthReducer.js.flow +3 -0
- package/lib/redux/reducers/AuthReducer.js.map +1 -1
- package/lib/redux/reducers/__tests__/AuthReducer.spec.js.flow +52 -13
- package/lib/redux/types.js.flow +6 -1
- package/lib/utils/helpers/__tests__/checkResource.spec.js.flow +56 -0
- package/lib/utils/helpers/checkResource.js +57 -0
- package/{src/utils/helpers/checkResourceExists.js → lib/utils/helpers/checkResource.js.flow} +19 -0
- package/lib/utils/helpers/checkResource.js.map +1 -0
- package/lib/utils/index.js +4 -4
- package/lib/utils/index.js.flow +1 -1
- package/lib/utils/index.js.map +1 -1
- package/package.json +9 -9
- package/src/hooks/index.js +1 -0
- package/src/hooks/useAllFormsOnModel.js +92 -0
- package/src/hooks/useAuthentication.js +7 -5
- package/src/models/attributes/AttributeContent.js +3 -3
- package/src/redux/actions/FormAttributeSet.js +7 -2
- package/src/redux/actions/SignIn.js +8 -0
- package/src/redux/reducers/AuthReducer.js +3 -0
- package/src/redux/reducers/__tests__/AuthReducer.spec.js +52 -13
- package/src/redux/types.js +6 -1
- package/src/utils/helpers/__tests__/checkResource.spec.js +56 -0
- package/{lib/utils/helpers/checkResourceExists.js.flow → src/utils/helpers/checkResource.js} +19 -0
- package/src/utils/index.js +1 -1
- package/esm/utils/helpers/checkResourceExists.js +0 -23
- package/esm/utils/helpers/checkResourceExists.js.map +0 -1
- package/lib/utils/helpers/checkResourceExists.js +0 -34
- package/lib/utils/helpers/checkResourceExists.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useRetrieveFormsOnModel = void 0;
|
|
9
|
+
|
|
10
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
11
|
+
|
|
12
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
13
|
+
|
|
14
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
15
|
+
|
|
16
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
17
|
+
|
|
18
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
19
|
+
|
|
20
|
+
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
21
|
+
|
|
22
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
27
|
+
|
|
28
|
+
var _react = require("react");
|
|
29
|
+
|
|
30
|
+
var _useModularUIRequest = require("./useModularUIRequest");
|
|
31
|
+
|
|
32
|
+
var _constants = require("../constants");
|
|
33
|
+
|
|
34
|
+
var _ListModel = _interopRequireDefault(require("../models/list/ListModel"));
|
|
35
|
+
|
|
36
|
+
var _FormModel = _interopRequireDefault(require("../models/form/FormModel"));
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Retrieve all forms configured on a model with actions
|
|
40
|
+
* @param model
|
|
41
|
+
* @returns Object - { actionName: FormModel }
|
|
42
|
+
*/
|
|
43
|
+
var useRetrieveFormsOnModel = function useRetrieveFormsOnModel(model) {
|
|
44
|
+
var modularui = (0, _useModularUIRequest.useModularUIRequest)();
|
|
45
|
+
|
|
46
|
+
var _useState = (0, _react.useState)(null),
|
|
47
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
48
|
+
forms = _useState2[0],
|
|
49
|
+
setForms = _useState2[1];
|
|
50
|
+
|
|
51
|
+
var _useState3 = (0, _react.useState)(0),
|
|
52
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
53
|
+
requestCount = _useState4[0],
|
|
54
|
+
setRequestCount = _useState4[1];
|
|
55
|
+
|
|
56
|
+
var _useState5 = (0, _react.useState)(0),
|
|
57
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
58
|
+
responseCount = _useState6[0],
|
|
59
|
+
setResponseCount = _useState6[1];
|
|
60
|
+
|
|
61
|
+
(0, _react.useEffect)(function () {
|
|
62
|
+
var _context;
|
|
63
|
+
|
|
64
|
+
var requests = (0, _map.default)(_context = getActions(model)).call(_context, function (action) {
|
|
65
|
+
var href = action.selfhref.addParameter("commit", "false");
|
|
66
|
+
return modularui(href, {
|
|
67
|
+
method: _constants.HTTP_METHODS.POST
|
|
68
|
+
}).fetch().then(function (form) {
|
|
69
|
+
if (form instanceof _FormModel.default) {
|
|
70
|
+
form.tokens = [];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return (0, _defineProperty2.default)({}, action.name, form);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
setRequestCount(requests.length);
|
|
77
|
+
|
|
78
|
+
_promise.default.all(requests).then(function (responses) {
|
|
79
|
+
var _context2;
|
|
80
|
+
|
|
81
|
+
// put response array in object
|
|
82
|
+
var actionForms = _assign.default.apply(Object, (0, _concat.default)(_context2 = [{}]).call(_context2, (0, _toConsumableArray2.default)(responses)));
|
|
83
|
+
|
|
84
|
+
setForms(actionForms);
|
|
85
|
+
setResponseCount(responses.length);
|
|
86
|
+
});
|
|
87
|
+
}, [model, modularui]);
|
|
88
|
+
|
|
89
|
+
if (responseCount === requestCount) {
|
|
90
|
+
return forms;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return null;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
exports.useRetrieveFormsOnModel = useRetrieveFormsOnModel;
|
|
97
|
+
|
|
98
|
+
var getActions = function getActions(model) {
|
|
99
|
+
var _context3;
|
|
100
|
+
|
|
101
|
+
if (!model.actionCollection) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
var createActions = (0, _filter.default)(_context3 = model.actionCollection.getActionsByType("create")).call(_context3, function (action) {
|
|
106
|
+
return !action.isDisabled;
|
|
107
|
+
});
|
|
108
|
+
var allActions = (0, _toConsumableArray2.default)(createActions);
|
|
109
|
+
|
|
110
|
+
if (model instanceof _ListModel.default) {
|
|
111
|
+
model.listItemCollection.forEach(function (listItem) {
|
|
112
|
+
var _context4;
|
|
113
|
+
|
|
114
|
+
var updateActions = (0, _filter.default)(_context4 = listItem.actionCollection.getActionsByType("update")).call(_context4, function (action) {
|
|
115
|
+
return !action.isDisabled;
|
|
116
|
+
});
|
|
117
|
+
allActions.push.apply(allActions, (0, _toConsumableArray2.default)(updateActions));
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
var actions = [];
|
|
122
|
+
var unique = [];
|
|
123
|
+
allActions.forEach(function (action) {
|
|
124
|
+
if (!(0, _includes.default)(unique).call(unique, action.name)) {
|
|
125
|
+
unique.push(action.name);
|
|
126
|
+
actions.push(action);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return actions;
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=useAllFormsOnModel.js.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
|
|
4
|
+
import { useModularUIRequest } from "./useModularUIRequest";
|
|
5
|
+
|
|
6
|
+
import { HTTP_METHODS } from "../constants";
|
|
7
|
+
|
|
8
|
+
import ListModel from "../models/list/ListModel";
|
|
9
|
+
import FormModel from "../models/form/FormModel";
|
|
10
|
+
|
|
11
|
+
import type DetailModel from "../models/detail/DetailModel";
|
|
12
|
+
import type TabModel from "../models/tab/TabModel";
|
|
13
|
+
import type ActionModel from "../models/actions/ActionModel";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Retrieve all forms configured on a model with actions
|
|
17
|
+
* @param model
|
|
18
|
+
* @returns Object - { actionName: FormModel }
|
|
19
|
+
*/
|
|
20
|
+
export const useRetrieveFormsOnModel = (
|
|
21
|
+
model: ListModel | DetailModel | TabModel
|
|
22
|
+
): null | { [actionName: string]: FormModel } => {
|
|
23
|
+
const modularui = useModularUIRequest();
|
|
24
|
+
const [forms, setForms] = useState(null);
|
|
25
|
+
const [requestCount, setRequestCount] = useState(0);
|
|
26
|
+
const [responseCount, setResponseCount] = useState(0);
|
|
27
|
+
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const requests = getActions(model).map((action) => {
|
|
30
|
+
const href = action.selfhref.addParameter("commit", "false");
|
|
31
|
+
|
|
32
|
+
return modularui(href, { method: HTTP_METHODS.POST })
|
|
33
|
+
.fetch()
|
|
34
|
+
.then((form) => {
|
|
35
|
+
if (form instanceof FormModel) {
|
|
36
|
+
form.tokens = [];
|
|
37
|
+
}
|
|
38
|
+
return { [action.name]: form };
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
setRequestCount(requests.length);
|
|
43
|
+
|
|
44
|
+
Promise.all(requests).then((responses) => {
|
|
45
|
+
// put response array in object
|
|
46
|
+
const actionForms = Object.assign({}, ...responses);
|
|
47
|
+
setForms(actionForms);
|
|
48
|
+
setResponseCount(responses.length);
|
|
49
|
+
});
|
|
50
|
+
}, [model, modularui]);
|
|
51
|
+
|
|
52
|
+
if (responseCount === requestCount) {
|
|
53
|
+
return forms;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return null;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const getActions = (
|
|
60
|
+
model: ListModel | DetailModel | TabModel
|
|
61
|
+
): Array<ActionModel> => {
|
|
62
|
+
if (!model.actionCollection) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const createActions = model.actionCollection
|
|
67
|
+
.getActionsByType("create")
|
|
68
|
+
.filter((action) => !action.isDisabled);
|
|
69
|
+
|
|
70
|
+
const allActions = [...createActions];
|
|
71
|
+
|
|
72
|
+
if (model instanceof ListModel) {
|
|
73
|
+
model.listItemCollection.forEach((listItem) => {
|
|
74
|
+
const updateActions = listItem.actionCollection
|
|
75
|
+
.getActionsByType("update")
|
|
76
|
+
.filter((action) => !action.isDisabled);
|
|
77
|
+
|
|
78
|
+
allActions.push(...updateActions);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const actions = [];
|
|
83
|
+
const unique = [];
|
|
84
|
+
allActions.forEach((action) => {
|
|
85
|
+
if (!unique.includes(action.name)) {
|
|
86
|
+
unique.push(action.name);
|
|
87
|
+
actions.push(action);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return actions;
|
|
92
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAllFormsOnModel.js"],"names":["useRetrieveFormsOnModel","model","modularui","forms","setForms","requestCount","setRequestCount","responseCount","setResponseCount","requests","getActions","action","href","selfhref","addParameter","method","HTTP_METHODS","POST","fetch","then","form","FormModel","tokens","name","length","all","responses","actionForms","Object","actionCollection","createActions","getActionsByType","isDisabled","allActions","ListModel","listItemCollection","forEach","listItem","updateActions","push","actions","unique"],"mappings":"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","sourcesContent":["// @flow\nimport { useState, useEffect } from \"react\";\n\nimport { useModularUIRequest } from \"./useModularUIRequest\";\n\nimport { HTTP_METHODS } from \"../constants\";\n\nimport ListModel from \"../models/list/ListModel\";\nimport FormModel from \"../models/form/FormModel\";\n\nimport type DetailModel from \"../models/detail/DetailModel\";\nimport type TabModel from \"../models/tab/TabModel\";\nimport type ActionModel from \"../models/actions/ActionModel\";\n\n/**\n * Retrieve all forms configured on a model with actions\n * @param model\n * @returns Object - { actionName: FormModel }\n */\nexport const useRetrieveFormsOnModel = (\n model: ListModel | DetailModel | TabModel\n): null | { [actionName: string]: FormModel } => {\n const modularui = useModularUIRequest();\n const [forms, setForms] = useState(null);\n const [requestCount, setRequestCount] = useState(0);\n const [responseCount, setResponseCount] = useState(0);\n\n useEffect(() => {\n const requests = getActions(model).map((action) => {\n const href = action.selfhref.addParameter(\"commit\", \"false\");\n\n return modularui(href, { method: HTTP_METHODS.POST })\n .fetch()\n .then((form) => {\n if (form instanceof FormModel) {\n form.tokens = [];\n }\n return { [action.name]: form };\n });\n });\n\n setRequestCount(requests.length);\n\n Promise.all(requests).then((responses) => {\n // put response array in object\n const actionForms = Object.assign({}, ...responses);\n setForms(actionForms);\n setResponseCount(responses.length);\n });\n }, [model, modularui]);\n\n if (responseCount === requestCount) {\n return forms;\n }\n\n return null;\n};\n\nconst getActions = (\n model: ListModel | DetailModel | TabModel\n): Array<ActionModel> => {\n if (!model.actionCollection) {\n return [];\n }\n\n const createActions = model.actionCollection\n .getActionsByType(\"create\")\n .filter((action) => !action.isDisabled);\n\n const allActions = [...createActions];\n\n if (model instanceof ListModel) {\n model.listItemCollection.forEach((listItem) => {\n const updateActions = listItem.actionCollection\n .getActionsByType(\"update\")\n .filter((action) => !action.isDisabled);\n\n allActions.push(...updateActions);\n });\n }\n\n const actions = [];\n const unique = [];\n allActions.forEach((action) => {\n if (!unique.includes(action.name)) {\n unique.push(action.name);\n actions.push(action);\n }\n });\n\n return actions;\n};\n"],"file":"useAllFormsOnModel.js"}
|
|
@@ -45,6 +45,9 @@ var useLogin = function useLogin() {
|
|
|
45
45
|
return {
|
|
46
46
|
isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
|
|
47
47
|
errorMessage: auth.error,
|
|
48
|
+
resetErrors: function resetErrors() {
|
|
49
|
+
return dispatch((0, _actions.resetAuthErrors)());
|
|
50
|
+
},
|
|
48
51
|
login: function login(username, password) {
|
|
49
52
|
return dispatch((0, _actions.login)(username, password));
|
|
50
53
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import { useSelector, useDispatch } from "react-redux";
|
|
3
3
|
import { getApplication } from "../redux/_modularui/selectors";
|
|
4
|
-
import { login, logout } from "../redux/actions";
|
|
4
|
+
import { login, logout, resetAuthErrors } from "../redux/actions";
|
|
5
5
|
import UserServicesModel from "../models/user/UserServicesModel";
|
|
6
6
|
import { useState, useEffect } from "react";
|
|
7
7
|
|
|
8
|
+
import type { ResetAuthErrorsAction } from "../redux/types";
|
|
8
9
|
type LoginHook = {
|
|
9
10
|
isAuthenticated: boolean,
|
|
10
11
|
errorMessage: ?string,
|
|
12
|
+
resetErrors: () => ResetAuthErrorsAction,
|
|
11
13
|
login: (username: string, password: string) => void,
|
|
12
14
|
};
|
|
13
15
|
type LogoutHook = {
|
|
@@ -39,6 +41,7 @@ export const useLogin = (): LoginHook => {
|
|
|
39
41
|
return {
|
|
40
42
|
isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
|
|
41
43
|
errorMessage: auth.error,
|
|
44
|
+
resetErrors: () => dispatch(resetAuthErrors()),
|
|
42
45
|
login: (username: string, password: string) =>
|
|
43
46
|
dispatch(login(username, password)),
|
|
44
47
|
};
|
|
@@ -66,12 +69,11 @@ export const useLogout = (): LogoutHook => {
|
|
|
66
69
|
|
|
67
70
|
return {
|
|
68
71
|
isAuthenticated,
|
|
69
|
-
logout: () =>
|
|
70
|
-
|
|
72
|
+
logout: () =>
|
|
73
|
+
dispatch(logout()).then(() => {
|
|
71
74
|
if (!cancel) {
|
|
72
75
|
setIsAuthenticated(false);
|
|
73
76
|
}
|
|
74
|
-
})
|
|
75
|
-
},
|
|
77
|
+
}),
|
|
76
78
|
};
|
|
77
79
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","resetErrors","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAcA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYE,0BAAjC,EAAoD;AAClD,WAAOJ,eAAe,IAAIE,iBAAiB,CAACG,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAG,8BAAjB;AAEA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAZ,CAAb;AAEA,SAAO;AACLT,IAAAA,eAAe,EAAED,kBAAkB,CAACU,IAAI,CAACT,eAAN,EAAuBC,WAAvB,CAD9B;AAELU,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,WAAW,EAAE;AAAA,aAAMN,QAAQ,CAAC,+BAAD,CAAd;AAAA,KAHR;AAILO,IAAAA,KAAK,EAAE,eAACC,QAAD,EAAmBC,QAAnB;AAAA,aACLT,QAAQ,CAAC,oBAAMQ,QAAN,EAAgBC,QAAhB,CAAD,CADH;AAAA;AAJF,GAAP;AAOD,CAbM;AAeP;AACA;;;;;AACO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMV,QAAQ,GAAG,8BAAjB;AACA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYT,eAAZ,KAA+B,KAA1C;AAAA,GAAZ,CAAb;;AAEA,kBAA4B,qBAAS,KAAT,CAA5B;AAAA;AAAA,MAAOkB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8C,qBAAS;AAAA,WACrDpB,kBAAkB,CAACU,IAAD,EAAOR,WAAP,CADmC;AAAA,GAAT,CAA9C;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBoB,kBAAxB,iBANyC,CAUzC;AACA;;;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACXD,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAMA,SAAO;AACLnB,IAAAA,eAAe,EAAfA,eADK;AAELqB,IAAAA,MAAM,EAAE;AAAA,aACNd,QAAQ,CAAC,sBAAD,CAAR,CAAmBe,IAAnB,CAAwB,YAAM;AAC5B,YAAI,CAACJ,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJD,CADM;AAAA;AAFH,GAAP;AASD,CA3BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () =>\n dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n }),\n };\n};\n"],"file":"useAuthentication.js"}
|
|
@@ -120,7 +120,7 @@ var AttributeContent = /*#__PURE__*/function () {
|
|
|
120
120
|
|
|
121
121
|
return (_this$_content$elemen = this._content.elements) === null || _this$_content$elemen === void 0 ? void 0 : (0, _map.default)(_this$_content$elemen).call(_this$_content$elemen, function (element) {
|
|
122
122
|
if ("propertyElement" in element) {
|
|
123
|
-
// $FlowIssue[
|
|
123
|
+
// $FlowIssue[incompatible-use]
|
|
124
124
|
var _element$propertyElem = element.propertyElement,
|
|
125
125
|
label = _element$propertyElem.label,
|
|
126
126
|
layouthint = _element$propertyElem.layouthint,
|
|
@@ -135,8 +135,8 @@ var AttributeContent = /*#__PURE__*/function () {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
if ("textFragmentElement" in element) {
|
|
138
|
-
|
|
139
|
-
element.textFragmentElement,
|
|
138
|
+
// $FlowIssue[incompatible-use]
|
|
139
|
+
var _element$textFragment = element.textFragmentElement,
|
|
140
140
|
_label = _element$textFragment.label,
|
|
141
141
|
_layouthint = _element$textFragment.layouthint,
|
|
142
142
|
textfragments = _element$textFragment.textfragments;
|
|
@@ -154,7 +154,7 @@ var AttributeContent = /*#__PURE__*/function () {
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
if ("contentElement" in element) {
|
|
157
|
-
// $FlowIssue[
|
|
157
|
+
// $FlowIssue[incompatible-use]
|
|
158
158
|
var _element$contentEleme = element.contentElement,
|
|
159
159
|
_label2 = _element$contentEleme.label,
|
|
160
160
|
_layouthint2 = _element$contentEleme.layouthint,
|
|
@@ -62,7 +62,7 @@ class AttributeContent {
|
|
|
62
62
|
if (this._content?.elements) {
|
|
63
63
|
return this._content.elements?.map((element) => {
|
|
64
64
|
if ("propertyElement" in element) {
|
|
65
|
-
// $FlowIssue[
|
|
65
|
+
// $FlowIssue[incompatible-use]
|
|
66
66
|
const { label, layouthint, properties } = element.propertyElement;
|
|
67
67
|
|
|
68
68
|
return {
|
|
@@ -75,8 +75,8 @@ class AttributeContent {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
if ("textFragmentElement" in element) {
|
|
78
|
+
// $FlowIssue[incompatible-use]
|
|
78
79
|
const { label, layouthint, textfragments } =
|
|
79
|
-
// $FlowIssue[prop-missing]
|
|
80
80
|
element.textFragmentElement;
|
|
81
81
|
return {
|
|
82
82
|
textFragmentElement: {
|
|
@@ -91,7 +91,7 @@ class AttributeContent {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
if ("contentElement" in element) {
|
|
94
|
-
// $FlowIssue[
|
|
94
|
+
// $FlowIssue[incompatible-use]
|
|
95
95
|
const { label, layouthint, sections } = element.contentElement;
|
|
96
96
|
return {
|
|
97
97
|
contentElement: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","LayoutHintCollection","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","SectionModel","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n const { label, layouthint, textfragments } =\n // $FlowIssue[prop-missing]\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","LayoutHintCollection","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","SectionModel","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, textfragments } =\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
|
|
@@ -28,6 +28,10 @@ var updateFormAttribute = function updateFormAttribute(form, formObject, attribu
|
|
|
28
28
|
return function (dispatch) {
|
|
29
29
|
var newForm = form.clone();
|
|
30
30
|
|
|
31
|
+
if (!options.validate) {
|
|
32
|
+
options.validate = true;
|
|
33
|
+
}
|
|
34
|
+
|
|
31
35
|
if (newForm.currentFormObject && newForm.currentFormObject.equals(formObject)) {
|
|
32
36
|
newForm.currentFormObject.updateAttribute(attribute, inputvalue);
|
|
33
37
|
} else {
|
|
@@ -25,12 +25,16 @@ export const updateFormAttribute =
|
|
|
25
25
|
autosubmit: false,
|
|
26
26
|
autosave: false,
|
|
27
27
|
forceUpdate: false,
|
|
28
|
-
validate: true
|
|
28
|
+
validate: true,
|
|
29
29
|
}
|
|
30
30
|
): ThunkAction =>
|
|
31
31
|
(dispatch: Dispatch) => {
|
|
32
32
|
const newForm = form.clone();
|
|
33
33
|
|
|
34
|
+
if (!options.validate) {
|
|
35
|
+
options.validate = true;
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
if (
|
|
35
39
|
newForm.currentFormObject &&
|
|
36
40
|
newForm.currentFormObject.equals(formObject)
|
|
@@ -60,7 +64,8 @@ export const updateFormAttribute =
|
|
|
60
64
|
}
|
|
61
65
|
|
|
62
66
|
if (
|
|
63
|
-
newForm.currentFormObject &&
|
|
67
|
+
newForm.currentFormObject &&
|
|
68
|
+
options.validate &&
|
|
64
69
|
newForm.currentFormObject.hasDynamicValidations &&
|
|
65
70
|
getSetting("USE_INSTANT_SERVER_VALIDATION")
|
|
66
71
|
) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,QAAI,CAACP,OAAO,CAACI,QAAb,EAAuB;AACrBJ,MAAAA,OAAO,CAACI,QAAR,GAAmB,IAAnB;AACD;;AAED,QACEE,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCZ,UAAjC,CAFF,EAGE;AACAS,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CZ,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLO,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBZ,UAAtB,CAAJ,EAAuC;AACrCgB,UAAAA,cAAc,CAACH,eAAf,CAA+BZ,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAG,0CACvBT,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;AAKA,UAAIY,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAIf,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IACAR,OAAO,CAACI,QADR,IAEAE,OAAO,CAACE,iBAAR,CAA0BS,qBAF1B,IAGA,0BAAW,+BAAX,CAJF,EAKE;AACAZ,MAAAA,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,WAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;AACD,GAzDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (!options.validate) {\n options.validate = true;\n }\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject &&\n options.validate &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.loginSuccess = exports.loginFailed = exports.login = exports.changePassword = void 0;
|
|
8
|
+
exports.resetAuthErrors = exports.loginSuccess = exports.loginFailed = exports.login = exports.changePassword = void 0;
|
|
9
9
|
|
|
10
10
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
11
11
|
|
|
@@ -31,12 +31,24 @@ var loginFailed = function loginFailed(errorMessage) {
|
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* Resets any authentication errors
|
|
35
35
|
*/
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
exports.loginFailed = loginFailed;
|
|
39
39
|
|
|
40
|
+
var resetAuthErrors = function resetAuthErrors() {
|
|
41
|
+
return {
|
|
42
|
+
type: "AUTHENTICATION_RESET_ERRORS"
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Send login success action
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
exports.resetAuthErrors = resetAuthErrors;
|
|
51
|
+
|
|
40
52
|
var loginSuccess = function loginSuccess() {
|
|
41
53
|
return {
|
|
42
54
|
type: "AUTHENTICATION_SUCCESS"
|
|
@@ -10,6 +10,7 @@ import { CHANGEPASSWORD_PATH } from "../../constants/Constants";
|
|
|
10
10
|
|
|
11
11
|
import type {
|
|
12
12
|
LoginFailedAction,
|
|
13
|
+
ResetAuthErrorsAction,
|
|
13
14
|
LoginSuccessAction,
|
|
14
15
|
ThunkAction,
|
|
15
16
|
} from "../types";
|
|
@@ -22,6 +23,13 @@ export const loginFailed = (errorMessage: string): LoginFailedAction => ({
|
|
|
22
23
|
payload: errorMessage,
|
|
23
24
|
});
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Resets any authentication errors
|
|
28
|
+
*/
|
|
29
|
+
export const resetAuthErrors = (): ResetAuthErrorsAction => ({
|
|
30
|
+
type: "AUTHENTICATION_RESET_ERRORS",
|
|
31
|
+
});
|
|
32
|
+
|
|
25
33
|
/**
|
|
26
34
|
* Send login success action
|
|
27
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["loginFailed","errorMessage","type","payload","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","CHANGEPASSWORD_PATH","login","username","password","Authenticate","then","Cache","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["loginFailed","errorMessage","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","CHANGEPASSWORD_PATH","login","username","password","Authenticate","then","Cache","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AASA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;AAAA,SAA8C;AACvEC,IAAAA,IAAI,EAAE,sBADiE;AAEvEC,IAAAA,OAAO,EAAEF;AAF8D,GAA9C;AAAA,CAApB;AAKP;AACA;AACA;;;;;AACO,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAA8B;AAC3DF,IAAAA,IAAI,EAAE;AADqD,GAA9B;AAAA,CAAxB;AAIP;AACA;AACA;;;;;AACO,IAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,SAA2B;AACrDH,IAAAA,IAAI,EAAE;AAD+C,GAA3B;AAAA,CAArB;AAIP;AACA;AACA;;;;;AACO,IAAMI,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;AAAA;;AACvED,IAAAA,QAAQ,CAAC;AACPL,MAAAA,IAAI,EAAE;AADC,KAAD,CAAR;AAIA,QAAMO,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;AACA,QAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;AACA,WAAOR,QAAQ,CACb,mBAAKS,8BAAL,EAA0B;AACxBD,MAAAA,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;AAExBE,MAAAA,KAAK,EAAEJ;AAFiB,KAA1B,CADa,CAAf;AAMD,GAb6B;AAAA,CAAvB;AAeP;AACA;;;;;AACO,IAAMQ,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;AAAA,SACA,UAACZ,QAAD,EAAc;AACZA,IAAAA,QAAQ,CAAC,uCAAD,CAAR;AAEA,WAAO,IAAIa,qBAAJ,GACJH,KADI,CACEC,QADF,EACYC,QADZ,EAEJE,IAFI,CAEC;AAAA,aAAMd,QAAQ,CAAC,qCAAD,CAAd;AAAA,KAFD,EAGJc,IAHI,CAGC,YAAM;AACVC,qBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACAhB,MAAAA,QAAQ,CAACF,YAAY,EAAb,CAAR;AAEA,aAAOE,QAAQ,CAAC,wCAAD,CAAf;AACD,KARI,EASJiB,KATI,CASE,UAACC,KAAD,EAAW;AAChB,UAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;AAC/C,YAAMC,2BAA2B,GAAGpB,QAAQ,CAAC,qCAAD,CAA5C;AAEA,eAAO,iBAAQqB,OAAR,CAAgBD,2BAAhB,EAA6CN,IAA7C,CAAkD,YAAM;AAC7DC,yBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACA,iBAAOhB,QAAQ,CAACD,cAAc,EAAf,CAAf;AACD,SAHM,CAAP;AAID;;AAEDC,MAAAA,QAAQ,CAACP,WAAW,CAACyB,KAAK,CAACC,EAAP,CAAZ,CAAR;AACA,aAAOnB,QAAQ,CAAC,wCAAD,CAAf;AACD,KArBI,CAAP;AAsBD,GA1BD;AAAA,CADK","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"file":"SignIn.js"}
|
|
@@ -57,6 +57,11 @@ var AuthReducer = function AuthReducer() {
|
|
|
57
57
|
error: action.payload
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
+
case "AUTHENTICATION_RESET_ERRORS":
|
|
61
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
62
|
+
error: null
|
|
63
|
+
});
|
|
64
|
+
|
|
60
65
|
case "AUTHENTICATION_LOGOUT":
|
|
61
66
|
{
|
|
62
67
|
// clear cache because of cached contributions
|
|
@@ -34,6 +34,9 @@ const AuthReducer: Reducer<AuthState, ReduxAction> = (
|
|
|
34
34
|
case "AUTHENTICATION_ERROR":
|
|
35
35
|
return { ...state, mustChangePassword: false, error: action.payload };
|
|
36
36
|
|
|
37
|
+
case "AUTHENTICATION_RESET_ERRORS":
|
|
38
|
+
return { ...state, error: null };
|
|
39
|
+
|
|
37
40
|
case "AUTHENTICATION_LOGOUT": {
|
|
38
41
|
// clear cache because of cached contributions
|
|
39
42
|
if (state.isAuthenticated) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","Cache","clear"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;;;;;AAKA;AACA,IAAMA,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","Cache","clear"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;;;;;AAKA;AACA,IAAMA,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,6BAAL;AACE,6CAAYH,KAAZ;AAAmBF,QAAAA,KAAK,EAAE;AAA1B;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,YAAIE,KAAK,CAACJ,eAAV,EAA2B;AACzBQ,yBAAMC,KAAN;AACD;;AAED,+CACKL,KADL;AAEEH,UAAAA,kBAAkB,EAAE,KAFtB;AAGED,UAAAA,eAAe,EAAE,KAHnB;AAIEE,UAAAA,KAAK,EAAE;AAJT;AAMD;;AAED,SAAK,iBAAL;AACE,6CACKE,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEC,QAAAA,kBAAkB,EAAE,IAHtB;AAIEC,QAAAA,KAAK,EAAE;AAJT;;AAOF;AACE,aAAOE,KAAP;AAtCJ;AAwCD,CAhDD;;eAkDeD,W","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { Reducer } from \"redux\";\nimport type { AuthState, ReduxAction } from \"../types\";\n\n// REDUCER\nconst initialState: AuthState = {\n isAuthenticated: false,\n mustChangePassword: false,\n error: null,\n};\n\n/**\n * Auth reducer\n */\nconst AuthReducer: Reducer<AuthState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"AUTHENTICATION_SUCCESS\":\n return {\n ...state,\n isAuthenticated: true,\n error: null,\n mustChangePassword: false,\n };\n\n case \"AUTHENTICATION_ERROR\":\n return { ...state, mustChangePassword: false, error: action.payload };\n\n case \"AUTHENTICATION_RESET_ERRORS\":\n return { ...state, error: null };\n\n case \"AUTHENTICATION_LOGOUT\": {\n // clear cache because of cached contributions\n if (state.isAuthenticated) {\n Cache.clear();\n }\n\n return {\n ...state,\n mustChangePassword: false,\n isAuthenticated: false,\n error: null,\n };\n }\n\n case \"CHANGE_PASSWORD\":\n return {\n ...state,\n isAuthenticated: true,\n mustChangePassword: true,\n error: null,\n };\n\n default:\n return state;\n }\n};\n\nexport default AuthReducer;\n"],"file":"AuthReducer.js"}
|