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 CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function readOnly(form) {
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
- var nodeName = ctrl.nodeName;
13
- var type = ctrl.getAttribute('type');
14
- if (nodeName === 'INPUT' && type !== null) {
15
- nodeName = type.toUpperCase();
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
- else {
33
- ctrl.disabled = true;
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.readOnly = readOnly;
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.readOnly(f);
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.readOnly(form);
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.readOnly(refForm.current);
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
- __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);
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
- return exports.useCoreView(p.refForm, p.initialState, p.service, p, p);
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
- 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);
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
- 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();
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
- else {
83
- if (callback) {
84
- callback(obj, showModel);
85
- }
86
- else {
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
- 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);
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
- else {
101
- if (data && data.status) {
102
- msg = core_1.messageByHttpStatus(data.status, r.value);
103
- }
104
- formutil_1.readOnly(refForm.current);
105
- p1.showError(msg, title);
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
- setRunning(false);
108
- core_1.hideLoading(p1.loading);
109
- });
110
- }
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
- };
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/formutil.ts CHANGED
@@ -1,4 +1,4 @@
1
- export function readOnly(form?: HTMLFormElement|null): void {
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
- let nodeName = ctrl.nodeName;
11
- const type = ctrl.getAttribute('type');
12
- if (nodeName === 'INPUT' && type !== null) {
13
- nodeName = type.toUpperCase();
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 (nodeName !== 'BUTTON'
16
- && nodeName !== 'RESET'
17
- && nodeName !== 'SUBMIT'
18
- && nodeName !== 'SELECT') {
19
- switch (type) {
20
- case 'checkbox':
21
- ctrl.disabled = true;
22
- break;
23
- case 'radio':
24
- ctrl.disabled = true;
25
- break;
26
- default:
27
- ctrl.readOnly = true;
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
@@ -12,7 +12,6 @@ export * from './update';
12
12
  export * from './useSearch';
13
13
  export * from './useMessage';
14
14
  export * from './useEdit';
15
- export * from './components';
16
15
  export * from './search';
17
16
  export * from './reflect';
18
17
  export * from './com';
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, readOnly as setReadOnly} from './formutil';
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 {readOnly} from './formutil';
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
- readOnly(form);
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
- readOnly(refForm.current);
135
+ setReadOnly(refForm.current);
136
136
  p1.showError(msg, title);
137
137
  }
138
138
  setRunning(false);