react-hook-core 0.4.7 → 0.4.8

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/core.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true })
3
3
  var formutil_1 = require("./formutil")
4
4
  exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
5
+ exports.sizes = exports.pageSizes
5
6
  var resources = (function () {
6
7
  function resources() {}
7
8
  resources.phone = / |-|\.|\(|\)/g
@@ -16,17 +17,6 @@ var resources = (function () {
16
17
  return resources
17
18
  })()
18
19
  exports.resources = resources
19
- exports.size = exports.pageSizes
20
- function getCurrencyCode(form) {
21
- if (form) {
22
- var x = form.getAttribute("currency-code")
23
- if (x) {
24
- return x
25
- }
26
- }
27
- return undefined
28
- }
29
- exports.getCurrencyCode = getCurrencyCode
30
20
  function removePhoneFormat(phone) {
31
21
  if (phone) {
32
22
  return phone.replace(resources.phone, "")
@@ -35,46 +25,6 @@ function removePhoneFormat(phone) {
35
25
  }
36
26
  }
37
27
  exports.removePhoneFormat = removePhoneFormat
38
- function buildKeys(attributes) {
39
- if (!attributes) {
40
- return []
41
- }
42
- var ks = Object.keys(attributes)
43
- var ps = []
44
- for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
45
- var k = ks_1[_i]
46
- var attr = attributes[k]
47
- if (attr.key === true) {
48
- ps.push(k)
49
- }
50
- }
51
- return ps
52
- }
53
- exports.buildKeys = buildKeys
54
- function buildId(p, keys) {
55
- if (!keys || keys.length === 0 || keys.length === 1) {
56
- if (keys && keys.length === 1) {
57
- if (p[keys[0]]) {
58
- return p[keys[0]]
59
- }
60
- }
61
- return p["id"]
62
- }
63
- var id = {}
64
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
65
- var key = keys_1[_i]
66
- var v = p[key]
67
- if (!v) {
68
- v = p[key]
69
- if (!v) {
70
- return null
71
- }
72
- }
73
- id[key] = v
74
- }
75
- return id
76
- }
77
- exports.buildId = buildId
78
28
  exports.datetimeToString = function (inputDate) {
79
29
  var date = new Date(inputDate)
80
30
  var year = date.getFullYear()
@@ -116,7 +66,7 @@ function getModelName(form, name) {
116
66
  var b = form.name
117
67
  if (b) {
118
68
  if (b.endsWith("Form")) {
119
- return b.substr(0, b.length - 4)
69
+ return b.substring(0, b.length - 4)
120
70
  }
121
71
  return b
122
72
  }
package/lib/useEdit.js CHANGED
@@ -24,6 +24,46 @@ var merge_1 = require("./merge")
24
24
  var reflect_1 = require("./reflect")
25
25
  var state_1 = require("./state")
26
26
  var update_1 = require("./update")
27
+ function buildKeys(attributes) {
28
+ if (!attributes) {
29
+ return []
30
+ }
31
+ var ks = Object.keys(attributes)
32
+ var ps = []
33
+ for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
34
+ var k = ks_1[_i]
35
+ var attr = attributes[k]
36
+ if (attr.key === true) {
37
+ ps.push(k)
38
+ }
39
+ }
40
+ return ps
41
+ }
42
+ exports.buildKeys = buildKeys
43
+ function buildId(p, keys) {
44
+ if (!keys || keys.length === 0 || keys.length === 1) {
45
+ if (keys && keys.length === 1) {
46
+ if (p[keys[0]]) {
47
+ return p[keys[0]]
48
+ }
49
+ }
50
+ return p["id"]
51
+ }
52
+ var id = {}
53
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
54
+ var key = keys_1[_i]
55
+ var v = p[key]
56
+ if (!v) {
57
+ v = p[key]
58
+ if (!v) {
59
+ return null
60
+ }
61
+ }
62
+ id[key] = v
63
+ }
64
+ return id
65
+ }
66
+ exports.buildId = buildId
27
67
  function build(attributes, name) {
28
68
  if (!attributes) {
29
69
  return undefined
@@ -47,8 +87,8 @@ function buildMetaModel(attributes) {
47
87
  var md = {}
48
88
  var pks = new Array()
49
89
  var keys = Object.keys(attributes)
50
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
51
- var key = keys_1[_i]
90
+ for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
91
+ var key = keys_2[_i]
52
92
  var attr = attributes[key]
53
93
  if (attr) {
54
94
  if (attr.version) {
@@ -96,7 +136,7 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
96
136
  p.version = version
97
137
  }
98
138
  }
99
- var id = core_1.buildId(params, keys)
139
+ var id = buildId(params, keys)
100
140
  if (p && p.initialize) {
101
141
  p.initialize(id, baseProps.load, baseProps.setState, p.callback)
102
142
  } else {
@@ -133,7 +173,7 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
133
173
  p.version = version
134
174
  }
135
175
  }
136
- var id = core_1.buildId(params, keys)
176
+ var id = buildId(params, keys)
137
177
  if (p && p.initialize) {
138
178
  p.initialize(id, baseProps.load, baseProps.setState, p.callback)
139
179
  } else {
@@ -414,8 +454,8 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
414
454
  if (isPatch) {
415
455
  var keys = Object.keys(result)
416
456
  var a = origin
417
- for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
418
- var k = keys_2[_i]
457
+ for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {
458
+ var k = keys_3[_i]
419
459
  a[k] = result[k]
420
460
  }
421
461
  succeed(successMsg, a, undefined, backOnSave, a)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/core.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Params } from "react-router"
2
1
  import { focusFirstElement } from "./formutil"
3
2
 
4
3
  export interface LoadingService {
@@ -6,6 +5,7 @@ export interface LoadingService {
6
5
  hideLoading(): void
7
6
  }
8
7
  export const pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
8
+ export const sizes = pageSizes
9
9
  // tslint:disable-next-line:class-name
10
10
  export class resources {
11
11
  static phone = / |-|\.|\(|\)/g
@@ -18,17 +18,7 @@ export class resources {
18
18
  static limits = pageSizes
19
19
  static pageMaxSize = 7
20
20
  }
21
- export const size = pageSizes
22
21
 
23
- export function getCurrencyCode(form?: HTMLFormElement | null): string | undefined {
24
- if (form) {
25
- const x = form.getAttribute("currency-code")
26
- if (x) {
27
- return x
28
- }
29
- }
30
- return undefined
31
- }
32
22
  export function removePhoneFormat(phone: string): string {
33
23
  if (phone) {
34
24
  return phone.replace(resources.phone, "")
@@ -42,7 +32,6 @@ export interface StringMap {
42
32
  export interface ResourceService {
43
33
  resource(): StringMap
44
34
  value(key: string, param?: any): string
45
- format(f: string, ...args: any[]): string
46
35
  }
47
36
 
48
37
  export interface Locale {
@@ -98,13 +87,7 @@ export type DataType =
98
87
  | "dates"
99
88
  | "datetimes"
100
89
  | "times"
101
- /*
102
- export interface Metadata {
103
- name?: string;
104
- attributes: Attributes;
105
- source?: string;
106
- }
107
- */
90
+
108
91
  export interface Attribute {
109
92
  name?: string
110
93
  type?: DataType
@@ -116,45 +99,6 @@ export interface Attributes {
116
99
  [key: string]: Attribute
117
100
  }
118
101
 
119
- export function buildKeys(attributes: Attributes): string[] {
120
- if (!attributes) {
121
- return []
122
- }
123
- const ks = Object.keys(attributes)
124
- const ps = []
125
- for (const k of ks) {
126
- const attr: Attribute = attributes[k]
127
- if (attr.key === true) {
128
- ps.push(k)
129
- }
130
- }
131
- return ps
132
- }
133
- type Readonly<T> = {
134
- readonly [P in keyof T]: T[P]
135
- }
136
- export function buildId<ID>(p: Readonly<Params<string>>, keys?: string[]): ID | null {
137
- if (!keys || keys.length === 0 || keys.length === 1) {
138
- if (keys && keys.length === 1) {
139
- if (p[keys[0]]) {
140
- return p[keys[0]] as any
141
- }
142
- }
143
- return p["id"] as any
144
- }
145
- const id: any = {}
146
- for (const key of keys) {
147
- let v = p[key]
148
- if (!v) {
149
- v = p[key]
150
- if (!v) {
151
- return null
152
- }
153
- }
154
- id[key] = v
155
- }
156
- return id
157
- }
158
102
  export const datetimeToString = (inputDate: Date) => {
159
103
  const date = new Date(inputDate)
160
104
  const year = date.getFullYear()
@@ -172,61 +116,6 @@ export const dateToString = (inputDate: Date) => {
172
116
  const day = String(inputDate.getDate()).padStart(2, "0")
173
117
  return `${year}-${month}-${day}`
174
118
  }
175
- /*
176
- export function formatFax(value: string) {
177
- return formatter.formatFax(value);
178
- }
179
-
180
- export function formatPhone(value: string) {
181
- return formatter.formatPhone(value);
182
- }
183
- export function formatNumber(num: string|number, scale?: number, locale?: Locale): string {
184
- if (!scale) {
185
- scale = 2;
186
- }
187
- if (!locale) {
188
- locale = storage.getLocale();
189
- }
190
- let c: number;
191
- if (!num) {
192
- return '';
193
- } else if (typeof num === 'number') {
194
- c = num;
195
- } else {
196
- const x: any = num;
197
- if (isNaN(x)) {
198
- return '';
199
- } else {
200
- c = parseFloat(x);
201
- }
202
- }
203
- return storage.locale().formatNumber(c, scale, locale);
204
- }
205
-
206
- export function formatCurrency(currency: string|number, locale?: Locale, currencyCode?: string) {
207
- if (!currencyCode) {
208
- currencyCode = 'USD';
209
- }
210
- if (!locale) {
211
- locale = storage.getLocale();
212
- }
213
- let c: number;
214
- if (!currency) {
215
- return '';
216
- } else if (typeof currency === 'number') {
217
- c = currency;
218
- } else {
219
- let x: any = currency;
220
- x = x.replace(locale.decimalSeparator, '.');
221
- if (isNaN(x)) {
222
- return '';
223
- } else {
224
- c = parseFloat(x);
225
- }
226
- }
227
- return storage.locale().formatCurrency(c, currencyCode, locale);
228
- }
229
- */
230
119
 
231
120
  export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement | undefined {
232
121
  if (form) {
@@ -251,7 +140,7 @@ export function getModelName(form?: HTMLFormElement | null, name?: string): stri
251
140
  const b = form.name
252
141
  if (b) {
253
142
  if (b.endsWith("Form")) {
254
- return b.substr(0, b.length - 4)
143
+ return b.substring(0, b.length - 4)
255
144
  }
256
145
  return b
257
146
  }
package/src/edit.ts CHANGED
@@ -48,31 +48,7 @@ export function createModel<T>(attributes?: Attributes): T {
48
48
  }
49
49
  return obj
50
50
  }
51
- /*
52
- export function initPropertyNullInModel<T>(obj: T, m?: Attributes): T {
53
- if (!m) {
54
- const x: any = {};
55
- return x;
56
- }
57
- const model = createModel(m);
58
- for (const key of Object.keys(model as any)) {
59
- if (obj && !(obj as any).hasOwnProperty(key)) {
60
- (obj as any)[key] = (model as any)[key];
61
- }
62
- }
63
- return obj;
64
- }
65
- export function handleStatus(x: number|string, st: EditStatusConfig, gv: (k: string, p?: any) => string, se: (m: string, title?: string, detail?: string, callback?: () => void) => void): void {
66
- const title = gv('error');
67
- if (x === st.version_error) {
68
- se(gv('error_version'), title);
69
- } else if (x === st.data_corrupt) {
70
- se(gv('error_data_corrupt'), title);
71
- } else {
72
- se(gv('error_internal'), title);
73
- }
74
- }
75
- */
51
+
76
52
  export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
77
53
  if (Array.isArray(x)) {
78
54
  return false
@@ -83,6 +59,7 @@ export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
83
59
  }
84
60
  return false
85
61
  }
62
+
86
63
  type Result<T> = number | T | ErrorMessage[]
87
64
  export function afterSaved<T>(
88
65
  res: Result<T>,
package/src/search.ts CHANGED
@@ -33,7 +33,6 @@ export interface Sortable {
33
33
  export interface Pagination {
34
34
  initLimit?: number
35
35
  limit: number
36
- // limit: number;
37
36
  page?: number
38
37
  total?: number
39
38
  pages?: number
@@ -43,7 +42,7 @@ export interface Pagination {
43
42
  appendable?: boolean
44
43
  }
45
44
 
46
- interface Searchable extends Pagination, Sortable {}
45
+ export interface Searchable extends Pagination, Sortable {}
47
46
 
48
47
  export function getOffset(limit: number, page?: number, firstLimit?: number): number {
49
48
  const p = page && page > 0 ? page : 1
package/src/useEdit.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { useEffect, useState } from "react"
2
- import { useNavigate, useParams } from "react-router"
2
+ import { Params, useNavigate, useParams } from "react-router"
3
3
  import {
4
4
  Attribute,
5
5
  Attributes,
6
- buildId,
7
6
  ErrorMessage,
8
7
  getModelName as getModelName2,
9
8
  hideLoading,
@@ -23,6 +22,46 @@ import { clone, makeDiff } from "./reflect"
23
22
  import { localeOf } from "./state"
24
23
  import { useUpdate } from "./update"
25
24
 
25
+ export function buildKeys(attributes: Attributes): string[] {
26
+ if (!attributes) {
27
+ return []
28
+ }
29
+ const ks = Object.keys(attributes)
30
+ const ps = []
31
+ for (const k of ks) {
32
+ const attr: Attribute = attributes[k]
33
+ if (attr.key === true) {
34
+ ps.push(k)
35
+ }
36
+ }
37
+ return ps
38
+ }
39
+ type Readonly<T> = {
40
+ readonly [P in keyof T]: T[P]
41
+ }
42
+ export function buildId<ID>(p: Readonly<Params<string>>, keys?: string[]): ID | null {
43
+ if (!keys || keys.length === 0 || keys.length === 1) {
44
+ if (keys && keys.length === 1) {
45
+ if (p[keys[0]]) {
46
+ return p[keys[0]] as any
47
+ }
48
+ }
49
+ return p["id"] as any
50
+ }
51
+ const id: any = {}
52
+ for (const key of keys) {
53
+ let v = p[key]
54
+ if (!v) {
55
+ v = p[key]
56
+ if (!v) {
57
+ return null
58
+ }
59
+ }
60
+ id[key] = v
61
+ }
62
+ return id
63
+ }
64
+
26
65
  export interface EditParameter {
27
66
  resource: ResourceService
28
67
  showMessage: (msg: string, option?: string) => void
package/lib/useView.js DELETED
@@ -1,133 +0,0 @@
1
- "use strict"
2
- var __assign =
3
- (this && this.__assign) ||
4
- function () {
5
- __assign =
6
- Object.assign ||
7
- function (t) {
8
- for (var s, i = 1, n = arguments.length; i < n; i++) {
9
- s = arguments[i]
10
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]
11
- }
12
- return t
13
- }
14
- return __assign.apply(this, arguments)
15
- }
16
- Object.defineProperty(exports, "__esModule", { value: true })
17
- var react_1 = require("react")
18
- var react_router_1 = require("react-router")
19
- var core_1 = require("./core")
20
- var error_1 = require("./error")
21
- var formutil_1 = require("./formutil")
22
- var merge_1 = require("./merge")
23
- exports.useViewOne = function (p) {
24
- return exports.useCoreView(p.refForm, p.initialState, p.service, p, p)
25
- }
26
- exports.useView = function (refForm, initialState, service, p1, p) {
27
- var baseProps = exports.useCoreView(refForm, initialState, service, p1, p)
28
- var _a = merge_1.useMergeState(initialState),
29
- setState = _a[1]
30
- var params = react_router_1.useParams()
31
- react_1.useEffect(function () {
32
- if (baseProps.refForm) {
33
- core_1.initForm(baseProps.refForm.current)
34
- }
35
- var id = core_1.buildId(params, p ? p.keys : undefined)
36
- if (id) {
37
- if (p && p.initialize) {
38
- p.initialize(id, baseProps.load, setState, p.callback)
39
- } else {
40
- baseProps.load(id, p ? p.callback : undefined)
41
- }
42
- }
43
- }, [])
44
- return __assign({}, baseProps)
45
- }
46
- exports.useCoreView = function (refForm, initialState, service, p1, p) {
47
- var _a = merge_1.useMergeState(initialState),
48
- state = _a[0],
49
- setState = _a[1]
50
- var _b = react_1.useState(),
51
- running = _b[0],
52
- setRunning = _b[1]
53
- var navigate = react_router_1.useNavigate()
54
- var back = function (event) {
55
- if (event) {
56
- event.preventDefault()
57
- }
58
- navigate(-1)
59
- }
60
- var getModelName = function (f) {
61
- if (p && p.name) {
62
- return p.name
63
- }
64
- return core_1.getModelName(f, "model")
65
- }
66
- var showModel = function (model) {
67
- var n = getModelName(refForm.current)
68
- var objSet = {}
69
- objSet[n] = model
70
- setState(objSet)
71
- }
72
- var _handleNotFound = function (form) {
73
- var msg = error_1.message(p1.resource.value, "error_not_found", "error")
74
- if (form) {
75
- formutil_1.setReadOnly(form)
76
- }
77
- p1.showError(msg.message, msg.title)
78
- }
79
- var handleNotFound = p && p.handleNotFound ? p.handleNotFound : _handleNotFound
80
- var _load = function (_id, callback) {
81
- var id = _id
82
- if (id != null && id !== "") {
83
- setRunning(true)
84
- core_1.showLoading(p1.loading)
85
- var fn = typeof service === "function" ? service : service.load
86
- fn(id)
87
- .then(function (obj) {
88
- if (!obj) {
89
- handleNotFound(refForm.current)
90
- } else {
91
- if (callback) {
92
- callback(obj, showModel)
93
- } else {
94
- showModel(obj)
95
- }
96
- }
97
- setRunning(false)
98
- core_1.hideLoading(p1.loading)
99
- })
100
- .catch(function (err) {
101
- var data = err && err.response ? err.response : err
102
- var r = p1.resource
103
- var title = r.value("error")
104
- var msg = r.value("error_internal")
105
- if (data && data.status === 404) {
106
- handleNotFound(refForm.current)
107
- } else {
108
- if (data && data.status) {
109
- msg = error_1.messageByHttpStatus(data.status, r.value)
110
- }
111
- formutil_1.setReadOnly(refForm.current)
112
- p1.showError(msg, title)
113
- }
114
- setRunning(false)
115
- core_1.hideLoading(p1.loading)
116
- })
117
- }
118
- }
119
- var load = p && p.load ? p.load : _load
120
- return {
121
- state: state,
122
- setState: setState,
123
- refForm: refForm,
124
- resource: p1.resource.resource(),
125
- running: running,
126
- setRunning: setRunning,
127
- showModel: showModel,
128
- getModelName: getModelName,
129
- handleNotFound: handleNotFound,
130
- load: load,
131
- back: back,
132
- }
133
- }
package/src/useView.ts DELETED
@@ -1,183 +0,0 @@
1
- import { useEffect, useState } from "react"
2
- import { useNavigate, useParams } from "react-router"
3
- import { Attributes, buildId, getModelName as getModelName2, hideLoading, initForm, LoadingService, Locale, ResourceService, showLoading } from "./core"
4
- import { message, messageByHttpStatus } from "./error"
5
- import { setReadOnly } from "./formutil"
6
- import { DispatchWithCallback, useMergeState } from "./merge"
7
-
8
- export interface ViewParameter {
9
- resource: ResourceService
10
- showError: (m: string, header?: string, detail?: string, callback?: () => void) => void
11
- getLocale?: (profile?: string) => Locale
12
- loading?: LoadingService
13
- }
14
- export interface ViewService<T, ID> {
15
- metadata?(): Attributes | undefined
16
- keys?(): string[]
17
- load(id: ID, ctx?: any): Promise<T | null>
18
- }
19
-
20
- export interface BaseViewComponentParam<T, ID> {
21
- name?: string
22
- handleNotFound?: (form?: HTMLFormElement) => void
23
- getModelName?: (f?: HTMLFormElement) => string
24
- showModel?: (m: T) => void
25
- load?: (i: ID, callback?: (m: T, showM: (m2: T) => void) => void) => void
26
- }
27
- export interface HookBaseViewParameter<T, ID, S> extends BaseViewComponentParam<T, ID> {
28
- refForm: any
29
- initialState: S
30
- service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>
31
- resource: ResourceService
32
- showError: (m: string, header?: string, detail?: string, callback?: () => void) => void
33
- getLocale?: () => Locale
34
- loading?: LoadingService
35
- }
36
- export interface ViewComponentParam<T, ID, S> extends BaseViewComponentParam<T, ID> {
37
- keys?: string[]
38
- initialize?: (
39
- id: ID,
40
- ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void,
41
- setState2: DispatchWithCallback<Partial<S>>,
42
- callback?: (m: T, showF: (model: T) => void) => void,
43
- ) => void
44
- callback?: (m: T, showF: (model: T) => void) => void
45
- }
46
- export interface HookPropsViewParameter<T, ID, S, P> extends HookPropsBaseViewParameter<T, ID, S, P> {
47
- keys?: string[]
48
- initialize?: (
49
- id: ID,
50
- ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void,
51
- setState2: DispatchWithCallback<Partial<S>>,
52
- callback?: (m: T, showF: (model: T) => void) => void,
53
- ) => void
54
- callback?: (m: T, showF: (model: T) => void) => void
55
- }
56
- export interface HookPropsBaseViewParameter<T, ID, S, P> extends HookBaseViewParameter<T, ID, S> {
57
- props: P
58
- }
59
- export const useViewOne = <T, ID, S>(p: HookBaseViewParameter<T, ID, S>) => {
60
- return useCoreView(p.refForm, p.initialState, p.service, p, p)
61
- }
62
- export const useView = <T, ID, S>(
63
- refForm: any,
64
- initialState: S,
65
- service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>,
66
- p1: ViewParameter,
67
- p?: ViewComponentParam<T, ID, S>,
68
- ) => {
69
- const baseProps = useCoreView(refForm, initialState, service, p1, p)
70
- const [, setState] = useMergeState<S>(initialState)
71
- const params = useParams()
72
- useEffect(() => {
73
- if (baseProps.refForm) {
74
- initForm(baseProps.refForm.current)
75
- }
76
- const id = buildId<ID>(params, p ? p.keys : undefined)
77
- if (id) {
78
- if (p && p.initialize) {
79
- p.initialize(id, baseProps.load, setState, p.callback)
80
- } else {
81
- baseProps.load(id, p ? p.callback : undefined)
82
- }
83
- }
84
- }, [])
85
- return { ...baseProps }
86
- }
87
-
88
- export const useCoreView = <T, ID, S>(
89
- refForm: any,
90
- initialState: S,
91
- service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>,
92
- p1: ViewParameter,
93
- p?: ViewComponentParam<T, ID, S>,
94
- ) => {
95
- const [state, setState] = useMergeState<S>(initialState)
96
- const [running, setRunning] = useState<boolean>()
97
- const navigate = useNavigate()
98
-
99
- const back = (event: any) => {
100
- if (event) {
101
- event.preventDefault()
102
- }
103
- navigate(-1)
104
- }
105
-
106
- const getModelName = (f?: HTMLFormElement) => {
107
- if (p && p.name) {
108
- return p.name
109
- }
110
- return getModelName2(f, "model")
111
- }
112
-
113
- const showModel = (model: T) => {
114
- const n: string = getModelName(refForm.current)
115
- const objSet: any = {}
116
- objSet[n] = model
117
- setState(objSet)
118
- }
119
-
120
- const _handleNotFound = (form?: any): void => {
121
- const msg = message(p1.resource.value, "error_not_found", "error")
122
- if (form) {
123
- setReadOnly(form)
124
- }
125
- p1.showError(msg.message, msg.title)
126
- }
127
- const handleNotFound = p && p.handleNotFound ? p.handleNotFound : _handleNotFound
128
-
129
- const _load = (_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) => {
130
- const id: any = _id
131
- if (id != null && id !== "") {
132
- setRunning(true)
133
- showLoading(p1.loading)
134
- const fn = typeof service === "function" ? service : service.load
135
- fn(id)
136
- .then((obj) => {
137
- if (!obj) {
138
- handleNotFound(refForm.current)
139
- } else {
140
- if (callback) {
141
- callback(obj, showModel)
142
- } else {
143
- showModel(obj)
144
- }
145
- }
146
- setRunning(false)
147
- hideLoading(p1.loading)
148
- })
149
- .catch((err) => {
150
- const data = err && err.response ? err.response : err
151
- const r = p1.resource
152
- const title = r.value("error")
153
- let msg = r.value("error_internal")
154
- if (data && data.status === 404) {
155
- handleNotFound(refForm.current)
156
- } else {
157
- if (data && data.status) {
158
- msg = messageByHttpStatus(data.status, r.value)
159
- }
160
- setReadOnly(refForm.current)
161
- p1.showError(msg, title)
162
- }
163
- setRunning(false)
164
- hideLoading(p1.loading)
165
- })
166
- }
167
- }
168
- const load = p && p.load ? p.load : _load
169
-
170
- return {
171
- state,
172
- setState,
173
- refForm,
174
- resource: p1.resource.resource(),
175
- running,
176
- setRunning,
177
- showModel,
178
- getModelName,
179
- handleNotFound,
180
- load,
181
- back,
182
- }
183
- }