react-hook-core 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/formutil.js +36 -22
- package/lib/index.js +0 -1
- package/lib/useEdit.js +28 -9
- package/lib/useView.js +107 -107
- package/package.json +1 -1
- package/src/formutil.ts +31 -20
- package/src/index.ts +0 -1
- package/src/useEdit.ts +25 -7
- package/src/useView.ts +3 -3
- package/lib/components.js +0 -1215
- package/src/components.ts +0 -1285
package/lib/formutil.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function
|
|
3
|
+
function setReadOnly(form) {
|
|
4
|
+
var args = [];
|
|
5
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
6
|
+
args[_i - 1] = arguments[_i];
|
|
7
|
+
}
|
|
4
8
|
if (!form) {
|
|
5
9
|
return;
|
|
6
10
|
}
|
|
@@ -8,34 +12,44 @@ function readOnly(form) {
|
|
|
8
12
|
for (var i = 0; i < len; i++) {
|
|
9
13
|
var ctrl = form[i];
|
|
10
14
|
var name_1 = ctrl.getAttribute('name');
|
|
15
|
+
var skip = false;
|
|
11
16
|
if (name_1 != null && name_1.length > 0 && name_1 !== 'btnBack') {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (nodeName !== 'BUTTON'
|
|
18
|
-
&& nodeName !== 'RESET'
|
|
19
|
-
&& nodeName !== 'SUBMIT'
|
|
20
|
-
&& nodeName !== 'SELECT') {
|
|
21
|
-
switch (type) {
|
|
22
|
-
case 'checkbox':
|
|
23
|
-
ctrl.disabled = true;
|
|
24
|
-
break;
|
|
25
|
-
case 'radio':
|
|
26
|
-
ctrl.disabled = true;
|
|
27
|
-
break;
|
|
28
|
-
default:
|
|
29
|
-
ctrl.readOnly = true;
|
|
17
|
+
if (arguments.length > 1) {
|
|
18
|
+
for (var j = 1; j < arguments.length; j++) {
|
|
19
|
+
if (arguments[j] === name_1) {
|
|
20
|
+
skip = true;
|
|
21
|
+
}
|
|
30
22
|
}
|
|
31
23
|
}
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
if (skip === false) {
|
|
25
|
+
var nodeName = ctrl.nodeName;
|
|
26
|
+
var type = ctrl.getAttribute('type');
|
|
27
|
+
if (nodeName === 'INPUT' && type !== null) {
|
|
28
|
+
nodeName = type.toUpperCase();
|
|
29
|
+
}
|
|
30
|
+
if (nodeName !== 'BUTTON'
|
|
31
|
+
&& nodeName !== 'RESET'
|
|
32
|
+
&& nodeName !== 'SUBMIT'
|
|
33
|
+
&& nodeName !== 'SELECT') {
|
|
34
|
+
switch (type) {
|
|
35
|
+
case 'checkbox':
|
|
36
|
+
ctrl.disabled = true;
|
|
37
|
+
break;
|
|
38
|
+
case 'radio':
|
|
39
|
+
ctrl.disabled = true;
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
ctrl.readOnly = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
ctrl.disabled = true;
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
51
|
}
|
|
38
|
-
exports.
|
|
52
|
+
exports.setReadOnly = setReadOnly;
|
|
39
53
|
function focusFirstElement(form) {
|
|
40
54
|
var i = 0;
|
|
41
55
|
var len = form.length;
|
package/lib/index.js
CHANGED
|
@@ -17,7 +17,6 @@ __export(require("./update"));
|
|
|
17
17
|
__export(require("./useSearch"));
|
|
18
18
|
__export(require("./useMessage"));
|
|
19
19
|
__export(require("./useEdit"));
|
|
20
|
-
__export(require("./components"));
|
|
21
20
|
__export(require("./search"));
|
|
22
21
|
__export(require("./reflect"));
|
|
23
22
|
__export(require("./com"));
|
package/lib/useEdit.js
CHANGED
|
@@ -100,12 +100,6 @@ exports.useEditOne = function (p) {
|
|
|
100
100
|
};
|
|
101
101
|
exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
102
102
|
var navigate = react_router_1.useNavigate();
|
|
103
|
-
var back = function (event) {
|
|
104
|
-
if (event) {
|
|
105
|
-
event.preventDefault();
|
|
106
|
-
}
|
|
107
|
-
navigate(-1);
|
|
108
|
-
};
|
|
109
103
|
var _a = react_1.useState(), running = _a[0], setRunning = _a[1];
|
|
110
104
|
var getModelName = function (f) {
|
|
111
105
|
if (p && p.name && p.name.length > 0) {
|
|
@@ -128,7 +122,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
128
122
|
setState(objSet);
|
|
129
123
|
if (p && p.readOnly) {
|
|
130
124
|
var f = refForm.current;
|
|
131
|
-
formutil_1.
|
|
125
|
+
formutil_1.setReadOnly(f);
|
|
132
126
|
}
|
|
133
127
|
};
|
|
134
128
|
var resetState = function (newMode, model, originalModel) {
|
|
@@ -138,7 +132,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
138
132
|
var _handleNotFound = function (form) {
|
|
139
133
|
var msg = core_1.message(p1.resource.value, 'error_404', 'error');
|
|
140
134
|
if (form) {
|
|
141
|
-
formutil_1.
|
|
135
|
+
formutil_1.setReadOnly(form);
|
|
142
136
|
}
|
|
143
137
|
p1.showError(msg.message, msg.title, undefined, function () { return window.history.back; });
|
|
144
138
|
};
|
|
@@ -153,6 +147,31 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
153
147
|
}
|
|
154
148
|
};
|
|
155
149
|
var getModel = (p && p.getModel ? p.getModel : _getModel);
|
|
150
|
+
var back = function (event) {
|
|
151
|
+
if (event) {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
}
|
|
154
|
+
var obj = getModel();
|
|
155
|
+
var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
|
|
156
|
+
var keys;
|
|
157
|
+
var version;
|
|
158
|
+
if (p && metadata && (!p.keys || !p.version)) {
|
|
159
|
+
var meta = edit_1.build(metadata);
|
|
160
|
+
keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
|
|
161
|
+
version = (p.version ? p.version : (meta ? meta.version : undefined));
|
|
162
|
+
}
|
|
163
|
+
var diffObj = reflect_1.makeDiff(edit_1.initPropertyNullInModel(flag.originalModel, metadata), obj, keys, version);
|
|
164
|
+
var objKeys = Object.keys(diffObj);
|
|
165
|
+
if (objKeys.length === 0) {
|
|
166
|
+
navigate(-1);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
var msg = core_1.message(p1.resource.value, 'msg_confirm_back', 'confirm', 'yes', 'no');
|
|
170
|
+
p1.confirm(msg.message, msg.title, function () {
|
|
171
|
+
navigate(-1);
|
|
172
|
+
}, msg.no, msg.yes);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
156
175
|
var _createModel = function () {
|
|
157
176
|
var metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
|
|
158
177
|
if (metadata) {
|
|
@@ -418,7 +437,7 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
418
437
|
msg = core_1.messageByHttpStatus(data.status, r.value);
|
|
419
438
|
}
|
|
420
439
|
if (data && (data.status === 401 || data.status === 403)) {
|
|
421
|
-
formutil_1.
|
|
440
|
+
formutil_1.setReadOnly(refForm.current);
|
|
422
441
|
}
|
|
423
442
|
p1.showError(msg, title);
|
|
424
443
|
}
|
package/lib/useView.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
var react_1 = require("react");
|
|
@@ -17,110 +17,110 @@ var core_1 = require("./core");
|
|
|
17
17
|
var formutil_1 = require("./formutil");
|
|
18
18
|
var merge_1 = require("./merge");
|
|
19
19
|
exports.useViewOne = function (p) {
|
|
20
|
-
|
|
20
|
+
return exports.useCoreView(p.refForm, p.initialState, p.service, p, p);
|
|
21
21
|
};
|
|
22
22
|
exports.useView = function (refForm, initialState, service, p1, p) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
23
|
+
var baseProps = exports.useCoreView(refForm, initialState, service, p1, p);
|
|
24
|
+
var _a = merge_1.useMergeState(initialState), setState = _a[1];
|
|
25
|
+
var params = react_router_1.useParams();
|
|
26
|
+
react_1.useEffect(function () {
|
|
27
|
+
if (baseProps.refForm) {
|
|
28
|
+
core_1.initForm(baseProps.refForm.current);
|
|
29
|
+
}
|
|
30
|
+
var id = core_1.buildId(params, p ? p.keys : undefined);
|
|
31
|
+
if (id) {
|
|
32
|
+
if (p && p.initialize) {
|
|
33
|
+
p.initialize(id, baseProps.load, setState, p.callback);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
baseProps.load(id, p ? p.callback : undefined);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, []);
|
|
40
|
+
return __assign({}, baseProps);
|
|
41
41
|
};
|
|
42
42
|
exports.useCoreView = function (refForm, initialState, service, p1, p) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
navigate(-1);
|
|
51
|
-
};
|
|
52
|
-
var getModelName = function (f) {
|
|
53
|
-
if (p && p.name) {
|
|
54
|
-
return p.name;
|
|
55
|
-
}
|
|
56
|
-
return core_1.getModelName(f, 'model');
|
|
57
|
-
};
|
|
58
|
-
var showModel = function (model) {
|
|
59
|
-
var n = getModelName(refForm.current);
|
|
60
|
-
var objSet = {};
|
|
61
|
-
objSet[n] = model;
|
|
62
|
-
setState(objSet);
|
|
63
|
-
};
|
|
64
|
-
var _handleNotFound = function (form) {
|
|
65
|
-
var msg = core_1.message(p1.resource.value, 'error_not_found', 'error');
|
|
66
|
-
if (form) {
|
|
67
|
-
formutil_1.readOnly(form);
|
|
68
|
-
}
|
|
69
|
-
p1.showError(msg.message, msg.title);
|
|
70
|
-
};
|
|
71
|
-
var handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
|
|
72
|
-
var _load = function (_id, callback) {
|
|
73
|
-
var id = _id;
|
|
74
|
-
if (id != null && id !== '') {
|
|
75
|
-
setRunning(true);
|
|
76
|
-
core_1.showLoading(p1.loading);
|
|
77
|
-
var fn = (typeof service === 'function' ? service : service.load);
|
|
78
|
-
fn(id).then(function (obj) {
|
|
79
|
-
if (!obj) {
|
|
80
|
-
handleNotFound(refForm.current);
|
|
43
|
+
var _a = merge_1.useMergeState(initialState), state = _a[0], setState = _a[1];
|
|
44
|
+
var _b = react_1.useState(), running = _b[0], setRunning = _b[1];
|
|
45
|
+
var navigate = react_router_1.useNavigate();
|
|
46
|
+
var back = function (event) {
|
|
47
|
+
if (event) {
|
|
48
|
+
event.preventDefault();
|
|
81
49
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
showModel(obj);
|
|
88
|
-
}
|
|
50
|
+
navigate(-1);
|
|
51
|
+
};
|
|
52
|
+
var getModelName = function (f) {
|
|
53
|
+
if (p && p.name) {
|
|
54
|
+
return p.name;
|
|
89
55
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var
|
|
94
|
-
var
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
56
|
+
return core_1.getModelName(f, 'model');
|
|
57
|
+
};
|
|
58
|
+
var showModel = function (model) {
|
|
59
|
+
var n = getModelName(refForm.current);
|
|
60
|
+
var objSet = {};
|
|
61
|
+
objSet[n] = model;
|
|
62
|
+
setState(objSet);
|
|
63
|
+
};
|
|
64
|
+
var _handleNotFound = function (form) {
|
|
65
|
+
var msg = core_1.message(p1.resource.value, 'error_not_found', 'error');
|
|
66
|
+
if (form) {
|
|
67
|
+
formutil_1.setReadOnly(form);
|
|
99
68
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
69
|
+
p1.showError(msg.message, msg.title);
|
|
70
|
+
};
|
|
71
|
+
var handleNotFound = (p && p.handleNotFound ? p.handleNotFound : _handleNotFound);
|
|
72
|
+
var _load = function (_id, callback) {
|
|
73
|
+
var id = _id;
|
|
74
|
+
if (id != null && id !== '') {
|
|
75
|
+
setRunning(true);
|
|
76
|
+
core_1.showLoading(p1.loading);
|
|
77
|
+
var fn = (typeof service === 'function' ? service : service.load);
|
|
78
|
+
fn(id).then(function (obj) {
|
|
79
|
+
if (!obj) {
|
|
80
|
+
handleNotFound(refForm.current);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (callback) {
|
|
84
|
+
callback(obj, showModel);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
showModel(obj);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
setRunning(false);
|
|
91
|
+
core_1.hideLoading(p1.loading);
|
|
92
|
+
}).catch(function (err) {
|
|
93
|
+
var data = (err && err.response) ? err.response : err;
|
|
94
|
+
var r = p1.resource;
|
|
95
|
+
var title = r.value('error');
|
|
96
|
+
var msg = r.value('error_internal');
|
|
97
|
+
if (data && data.status === 404) {
|
|
98
|
+
handleNotFound(refForm.current);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
if (data && data.status) {
|
|
102
|
+
msg = core_1.messageByHttpStatus(data.status, r.value);
|
|
103
|
+
}
|
|
104
|
+
formutil_1.setReadOnly(refForm.current);
|
|
105
|
+
p1.showError(msg, title);
|
|
106
|
+
}
|
|
107
|
+
setRunning(false);
|
|
108
|
+
core_1.hideLoading(p1.loading);
|
|
109
|
+
});
|
|
106
110
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
handleNotFound: handleNotFound,
|
|
123
|
-
load: load,
|
|
124
|
-
back: back
|
|
125
|
-
};
|
|
111
|
+
};
|
|
112
|
+
var load = (p && p.load ? p.load : _load);
|
|
113
|
+
return {
|
|
114
|
+
state: state,
|
|
115
|
+
setState: setState,
|
|
116
|
+
refForm: refForm,
|
|
117
|
+
resource: p1.resource.resource(),
|
|
118
|
+
running: running,
|
|
119
|
+
setRunning: setRunning,
|
|
120
|
+
showModel: showModel,
|
|
121
|
+
getModelName: getModelName,
|
|
122
|
+
handleNotFound: handleNotFound,
|
|
123
|
+
load: load,
|
|
124
|
+
back: back
|
|
125
|
+
};
|
|
126
126
|
};
|
package/package.json
CHANGED
package/src/formutil.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function setReadOnly(form?: HTMLFormElement|null, ...args: string[]): void {
|
|
2
2
|
if (!form) {
|
|
3
3
|
return;
|
|
4
4
|
}
|
|
@@ -6,28 +6,39 @@ export function readOnly(form?: HTMLFormElement|null): void {
|
|
|
6
6
|
for (let i = 0; i < len; i++) {
|
|
7
7
|
const ctrl = form[i] as HTMLInputElement;
|
|
8
8
|
const name = ctrl.getAttribute('name');
|
|
9
|
+
let skip = false;
|
|
9
10
|
if (name != null && name.length > 0 && name !== 'btnBack') {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
if (arguments.length > 1) {
|
|
12
|
+
for (let j = 1; j < arguments.length; j++) {
|
|
13
|
+
if (arguments[j] === name) {
|
|
14
|
+
skip = true;
|
|
15
|
+
// continue; has bugs => why?
|
|
16
|
+
}
|
|
17
|
+
}
|
|
14
18
|
}
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
if (skip === false) {
|
|
20
|
+
let nodeName = ctrl.nodeName;
|
|
21
|
+
const type = ctrl.getAttribute('type');
|
|
22
|
+
if (nodeName === 'INPUT' && type !== null) {
|
|
23
|
+
nodeName = type.toUpperCase();
|
|
24
|
+
}
|
|
25
|
+
if (nodeName !== 'BUTTON'
|
|
26
|
+
&& nodeName !== 'RESET'
|
|
27
|
+
&& nodeName !== 'SUBMIT'
|
|
28
|
+
&& nodeName !== 'SELECT') {
|
|
29
|
+
switch (type) {
|
|
30
|
+
case 'checkbox':
|
|
31
|
+
ctrl.disabled = true;
|
|
32
|
+
break;
|
|
33
|
+
case 'radio':
|
|
34
|
+
ctrl.disabled = true;
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
ctrl.readOnly = true;
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
ctrl.disabled = true;
|
|
28
41
|
}
|
|
29
|
-
} else {
|
|
30
|
-
ctrl.disabled = true;
|
|
31
42
|
}
|
|
32
43
|
}
|
|
33
44
|
}
|
package/src/index.ts
CHANGED
package/src/useEdit.ts
CHANGED
|
@@ -2,7 +2,7 @@ import {useEffect, useState} from 'react';
|
|
|
2
2
|
import {useNavigate, useParams} from 'react-router';
|
|
3
3
|
import {Attributes, buildId, ErrorMessage, getModelName as getModelName2, hideLoading, initForm, LoadingService, Locale, message, messageByHttpStatus, ResourceService, showLoading, UIService} from './core';
|
|
4
4
|
import {build, createModel as createModel2, EditParameter, GenericService, handleVersion, initPropertyNullInModel} from './edit';
|
|
5
|
-
import {focusFirstError,
|
|
5
|
+
import {focusFirstError, setReadOnly} from './formutil';
|
|
6
6
|
import {DispatchWithCallback, useMergeState} from './merge';
|
|
7
7
|
import {clone, makeDiff} from './reflect';
|
|
8
8
|
import {localeOf} from './state';
|
|
@@ -172,12 +172,6 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
172
172
|
} = p; */
|
|
173
173
|
const navigate = useNavigate();
|
|
174
174
|
// const addable = (p && p.patchable !== false ? true : undefined);
|
|
175
|
-
const back = (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
176
|
-
if (event) {
|
|
177
|
-
event.preventDefault();
|
|
178
|
-
}
|
|
179
|
-
navigate(-1);
|
|
180
|
-
};
|
|
181
175
|
|
|
182
176
|
const [running, setRunning] = useState<boolean>();
|
|
183
177
|
|
|
@@ -233,6 +227,30 @@ export const useCoreEdit = <T, ID, S, P>(
|
|
|
233
227
|
};
|
|
234
228
|
const getModel = (p && p.getModel ? p.getModel : _getModel);
|
|
235
229
|
|
|
230
|
+
const back = (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
|
231
|
+
if (event) {
|
|
232
|
+
event.preventDefault();
|
|
233
|
+
}
|
|
234
|
+
const obj = getModel();
|
|
235
|
+
const metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
|
|
236
|
+
let keys: string[]|undefined;
|
|
237
|
+
let version: string|undefined;
|
|
238
|
+
if (p && metadata && (!p.keys || !p.version)) {
|
|
239
|
+
const meta = build(metadata);
|
|
240
|
+
keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
|
|
241
|
+
version = (p.version ? p.version : (meta ? meta.version : undefined));
|
|
242
|
+
}
|
|
243
|
+
const diffObj = makeDiff(initPropertyNullInModel(flag.originalModel, metadata), obj, keys, version);
|
|
244
|
+
const objKeys = Object.keys(diffObj);
|
|
245
|
+
if (objKeys.length === 0) {
|
|
246
|
+
navigate(-1);
|
|
247
|
+
} else {
|
|
248
|
+
const msg = message(p1.resource.value, 'msg_confirm_back', 'confirm', 'yes', 'no');
|
|
249
|
+
p1.confirm(msg.message, msg.title, () => {
|
|
250
|
+
navigate(-1);
|
|
251
|
+
}, msg.no, msg.yes);
|
|
252
|
+
}
|
|
253
|
+
};
|
|
236
254
|
const _createModel = (): T => {
|
|
237
255
|
const metadata = (p && p.metadata ? p.metadata : (service.metadata ? service.metadata() : undefined));
|
|
238
256
|
if (metadata) {
|
package/src/useView.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {useEffect, useState} from 'react';
|
|
2
2
|
import {useNavigate, useParams} from 'react-router';
|
|
3
3
|
import {buildId, getModelName as getModelName2, hideLoading, initForm, LoadingService, Locale, message, messageByHttpStatus, ResourceService, showLoading, ViewParameter, ViewService} from './core';
|
|
4
|
-
import {
|
|
4
|
+
import {setReadOnly} from './formutil';
|
|
5
5
|
import {DispatchWithCallback, useMergeState} from './merge';
|
|
6
6
|
|
|
7
7
|
export interface BaseViewComponentParam<T, ID> {
|
|
@@ -97,7 +97,7 @@ export const useCoreView = <T, ID, S>(
|
|
|
97
97
|
const _handleNotFound = (form?: any): void => {
|
|
98
98
|
const msg = message(p1.resource.value, 'error_not_found', 'error');
|
|
99
99
|
if (form) {
|
|
100
|
-
|
|
100
|
+
setReadOnly(form);
|
|
101
101
|
}
|
|
102
102
|
p1.showError(msg.message, msg.title);
|
|
103
103
|
};
|
|
@@ -132,7 +132,7 @@ export const useCoreView = <T, ID, S>(
|
|
|
132
132
|
if (data && data.status) {
|
|
133
133
|
msg = messageByHttpStatus(data.status, r.value);
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
setReadOnly(refForm.current);
|
|
136
136
|
p1.showError(msg, title);
|
|
137
137
|
}
|
|
138
138
|
setRunning(false);
|