react-hook-core 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -1 +1 @@
1
- # react-xone
1
+ # react
package/lib/components.js CHANGED
@@ -327,6 +327,7 @@ var BaseSearchComponent = (function (_super) {
327
327
  _this.doSearch();
328
328
  };
329
329
  _this.resource = resourceService.resource();
330
+ _this.hideFilter = true;
330
331
  _this.getModelName = _this.getModelName.bind(_this);
331
332
  _this.showMessage = _this.showMessage.bind(_this);
332
333
  _this.toggleFilter = _this.toggleFilter.bind(_this);
@@ -357,7 +358,9 @@ var BaseSearchComponent = (function (_super) {
357
358
  return 'filter';
358
359
  };
359
360
  BaseSearchComponent.prototype.toggleFilter = function (event) {
360
- this.hideFilter = !this.hideFilter;
361
+ var x = !this.hideFilter;
362
+ core_1.handleToggle(event.target, !x);
363
+ this.hideFilter = x;
361
364
  };
362
365
  BaseSearchComponent.prototype.load = function (s, autoSearch) {
363
366
  var obj2 = search_core_1.initFilter(s, this);
@@ -956,9 +959,7 @@ var EditComponent = (function (_super) {
956
959
  var k = (this.ui ? this.ui.registerEvents : undefined);
957
960
  this.form = core_2.initForm(this.ref.current, k);
958
961
  var id = core_2.buildId(this.props, this.keys);
959
- if (id) {
960
- this.load(id);
961
- }
962
+ this.load(id);
962
963
  };
963
964
  EditComponent.prototype.load = function (_id, callback) {
964
965
  var _this = this;
package/lib/core.js CHANGED
@@ -269,3 +269,16 @@ function getDecodeFromForm(u, d) {
269
269
  return (u && u.ui ? u.ui.decodeFromForm : undefined);
270
270
  }
271
271
  exports.getDecodeFromForm = getDecodeFromForm;
272
+ function handleToggle(target, on) {
273
+ if (target) {
274
+ if (on) {
275
+ if (!target.classList.contains('on')) {
276
+ target.classList.add('on');
277
+ }
278
+ }
279
+ else {
280
+ target.classList.remove('on');
281
+ }
282
+ }
283
+ }
284
+ exports.handleToggle = handleToggle;
package/lib/index.js CHANGED
@@ -19,6 +19,22 @@ __export(require("./useView"));
19
19
  __export(require("./useEdit"));
20
20
  __export(require("./useSearch"));
21
21
  __export(require("./useMessage"));
22
+ function checked(s, v) {
23
+ if (s) {
24
+ if (Array.isArray(s)) {
25
+ return s.includes(v);
26
+ }
27
+ else {
28
+ return s === v;
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ exports.checked = checked;
34
+ function value(obj) {
35
+ return (obj ? obj : {});
36
+ }
37
+ exports.value = value;
22
38
  exports.withDefaultProps = function (Component) {
23
39
  return function (props) {
24
40
  return React.createElement(Component, { props: props, history: props.history });
package/lib/useEdit.js CHANGED
@@ -39,20 +39,20 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
39
39
  var keys;
40
40
  if (p && !p.keys && service && service.metadata) {
41
41
  var metadata = (p.metadata ? p.metadata : service.metadata());
42
- var meta = edit_1.build(metadata);
43
- keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
44
- var version = (p.version ? p.version : (meta ? meta.version : undefined));
45
- p.keys = keys;
46
- p.version = version;
42
+ if (metadata) {
43
+ var meta = edit_1.build(metadata);
44
+ keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
45
+ var version = (p.version ? p.version : (meta ? meta.version : undefined));
46
+ p.keys = keys;
47
+ p.version = version;
48
+ }
47
49
  }
48
50
  var id = core_1.buildId(props, keys);
49
- if (id) {
50
- if (p && p.initialize) {
51
- p.initialize(id, baseProps.load, baseProps.setState, p.callback);
52
- }
53
- else {
54
- baseProps.load(id, p ? p.callback : undefined);
55
- }
51
+ if (p && p.initialize) {
52
+ p.initialize(id, baseProps.load, baseProps.setState, p.callback);
53
+ }
54
+ else {
55
+ baseProps.load(id, p ? p.callback : undefined);
56
56
  }
57
57
  }, []);
58
58
  return __assign({}, baseProps);
package/lib/useSearch.js CHANGED
@@ -70,6 +70,21 @@ function mergeParam(p) {
70
70
  if (!p.pageMaxSize || p.pageMaxSize <= 0) {
71
71
  p.pageMaxSize = 7;
72
72
  }
73
+ if (p.hideFilter === undefined) {
74
+ p.hideFilter = true;
75
+ }
76
+ if (p.addable === undefined) {
77
+ p.addable = true;
78
+ }
79
+ if (p.editable === undefined) {
80
+ p.editable = true;
81
+ }
82
+ if (p.approvable === undefined) {
83
+ p.approvable = true;
84
+ }
85
+ if (p.deletable === undefined) {
86
+ p.deletable = true;
87
+ }
73
88
  return p;
74
89
  }
75
90
  else {
@@ -77,7 +92,12 @@ function mergeParam(p) {
77
92
  sequenceNo: 'sequenceNo',
78
93
  pageSize: 24,
79
94
  pageSizes: core_1.pageSizes,
80
- pageMaxSize: 7
95
+ pageMaxSize: 7,
96
+ hideFilter: true,
97
+ addable: true,
98
+ editable: true,
99
+ approvable: true,
100
+ deletable: true
81
101
  };
82
102
  }
83
103
  }
@@ -136,7 +156,9 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
136
156
  };
137
157
  var _c = merge_1.useMergeState(p), component = _c[0], setComponent = _c[1];
138
158
  var toggleFilter = function (event) {
139
- setComponent({ hideFilter: !component.hideFilter });
159
+ var x = !component.hideFilter;
160
+ core_1.handleToggle(event.target, !x);
161
+ setComponent({ hideFilter: x });
140
162
  };
141
163
  var add = function (event) {
142
164
  event.preventDefault();
@@ -305,7 +327,6 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
305
327
  var _showResults = function (s, sr, lc) {
306
328
  var results = sr.list;
307
329
  if (results && results.length > 0) {
308
- debugger;
309
330
  search_core_1.formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
310
331
  }
311
332
  var am = component.appendMode;
@@ -365,7 +386,9 @@ exports.useCoreSearch = function (props, refForm, initialState, service, p1, p2)
365
386
  getCurrencyCode: getCurrencyCode,
366
387
  updateDateState: updateDateState, resource: p1.resource.resource(), setComponent: setComponent,
367
388
  component: component, showMessage: p1.showMessage, load: load,
368
- add: add, searchOnClick: search, sort: sort,
389
+ add: add,
390
+ search: search,
391
+ sort: sort,
369
392
  changeView: changeView,
370
393
  showMore: showMore,
371
394
  toggleFilter: toggleFilter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/components.ts CHANGED
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import {RouteComponentProps} from 'react-router';
3
3
  import {clone, diff, makeDiff} from 'reflectx';
4
4
  import {addParametersIntoUrl, append, buildMessage, changePage, changePageSize, formatResults, getFieldsFromForm, getModel, handleAppend, handleSortEvent, initFilter, mergeFilter as mergeFilter2, more, reset, Searchable, showPaging, validate} from 'search-core';
5
- import {BaseDiffState, createDiffStatus, createEditStatus, DiffApprService, DiffParameter, DiffState, DiffStatusConfig, hideLoading, showLoading} from './core';
5
+ import {BaseDiffState, createDiffStatus, createEditStatus, DiffApprService, DiffParameter, DiffState, DiffStatusConfig, handleToggle, hideLoading, showLoading} from './core';
6
6
  import {Attributes, buildId, EditStatusConfig, error, ErrorMessage, Filter, getCurrencyCode, getModelName as getModelName2, initForm, LoadingService, Locale, message, messageByHttpStatus, PageChange, pageSizes, removePhoneFormat, ResourceService, SearchParameter, SearchResult, SearchService, SearchState, StringMap, UIService, ViewParameter, ViewService} from './core';
7
7
  import {formatDiffModel, getDataFields} from './diff';
8
8
  import {build, createModel as createModel2, EditParameter, GenericService, handleStatus, handleVersion, initPropertyNullInModel, ResultInfo} from './edit';
@@ -54,7 +54,7 @@ export class ViewComponent<T, ID, P extends RouteComponentProps, S> extends Reac
54
54
  loading?: LoadingService;
55
55
  showError: (msg: string, title?: string, detail?: string, callback?: () => void) => void;
56
56
  getLocale?: (profile?: string) => Locale;
57
- loadData?: (id: ID, ctx?: any) => Promise<T>;
57
+ loadData?: (id: ID) => Promise<T|null>;
58
58
  // protected service: ViewService<T, ID>;
59
59
  form?: HTMLFormElement;
60
60
  ref: any;
@@ -301,6 +301,7 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
301
301
  protected listFormId?: string) {
302
302
  super(props, getLocale, (ui ? ui.removeError : undefined));
303
303
  this.resource = resourceService.resource();
304
+ this.hideFilter = true;
304
305
  this.getModelName = this.getModelName.bind(this);
305
306
  this.showMessage = this.showMessage.bind(this);
306
307
 
@@ -388,8 +389,10 @@ export class BaseSearchComponent<T, F extends Filter, P, I extends SearchState<T
388
389
  return 'filter';
389
390
  }
390
391
 
391
- toggleFilter(event: any): void {
392
- this.hideFilter = !this.hideFilter;
392
+ toggleFilter(event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {
393
+ const x = !this.hideFilter;
394
+ handleToggle(event.target as HTMLInputElement, !x);
395
+ this.hideFilter = x;
393
396
  }
394
397
  load(s: F, autoSearch: boolean): void {
395
398
  const obj2 = initFilter(s, this);
@@ -1023,11 +1026,9 @@ export class EditComponent<T, ID, P extends RouteComponentProps, S> extends Base
1023
1026
  const k = (this.ui ? this.ui.registerEvents : undefined);
1024
1027
  this.form = initForm(this.ref.current, k);
1025
1028
  const id = buildId<ID>(this.props, this.keys);
1026
- if (id) {
1027
- this.load(id);
1028
- }
1029
+ this.load(id);
1029
1030
  }
1030
- load(_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) {
1031
+ load(_id: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) {
1031
1032
  const id: any = _id;
1032
1033
  if (id != null && id !== '') {
1033
1034
  const com = this;
package/src/core.ts CHANGED
@@ -105,9 +105,9 @@ export interface ViewParameter {
105
105
  loading?: LoadingService;
106
106
  }
107
107
  export interface ViewService<T, ID> {
108
- metadata?(): Attributes;
108
+ metadata?(): Attributes|undefined;
109
109
  keys?(): string[];
110
- load(id: ID, ctx?: any): Promise<T>;
110
+ load(id: ID, ctx?: any): Promise<T|null>;
111
111
  }
112
112
 
113
113
  export interface DiffParameter {
@@ -236,7 +236,7 @@ export interface ErrorMessage {
236
236
  message?: string;
237
237
  }
238
238
  export interface UIService {
239
- getValue(el: HTMLInputElement, locale?: Locale, currencyCode?: string): string|number|boolean;
239
+ getValue(el: HTMLInputElement, locale?: Locale, currencyCode?: string): string|number|boolean|null|undefined;
240
240
  decodeFromForm(form: HTMLFormElement, locale?: Locale, currencyCode?: string|null): any;
241
241
 
242
242
  validateForm(form?: HTMLFormElement, locale?: Locale, focusFirst?: boolean, scroll?: boolean): boolean;
@@ -380,7 +380,7 @@ export function formatCurrency(currency: string|number, locale?: Locale, currenc
380
380
  }
381
381
  */
382
382
 
383
- export function initForm(form: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement {
383
+ export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement|undefined {
384
384
  if (form) {
385
385
  setTimeout(() => {
386
386
  if (initMat) {
@@ -496,3 +496,14 @@ export function getDecodeFromForm(u?: UIParameter, d?: (form: HTMLFormElement, l
496
496
  }
497
497
  return (u && u.ui ? u.ui.decodeFromForm : undefined);
498
498
  }
499
+ export function handleToggle(target?: HTMLInputElement, on?: boolean): void {
500
+ if (target) {
501
+ if (on) {
502
+ if (!target.classList.contains('on')) {
503
+ target.classList.add('on');
504
+ }
505
+ } else {
506
+ target.classList.remove('on');
507
+ }
508
+ }
509
+ }
package/src/index.ts CHANGED
@@ -16,6 +16,19 @@ export * from './useEdit';
16
16
  export * from './useSearch';
17
17
  export * from './useMessage';
18
18
 
19
+ export function checked(s: string[]|string|undefined, v: string): boolean|undefined {
20
+ if (s) {
21
+ if (Array.isArray(s)) {
22
+ return s.includes(v);
23
+ } else {
24
+ return s === v;
25
+ }
26
+ }
27
+ return false;
28
+ }
29
+ export function value<T>(obj?: T): T {
30
+ return (obj ? obj : {} as any);
31
+ }
19
32
  export const withDefaultProps = (Component: any) => (props: RouteComponentProps) => {
20
33
  // return <Component props={props} history={props.history} />;
21
34
  return React.createElement(Component, { props, history: props.history });
package/src/useEdit.ts CHANGED
@@ -40,7 +40,7 @@ export interface BaseEditComponentParam<T, ID> {
40
40
  fail?: (result: ResultInfo<T>) => void;
41
41
  postSave?: (obj: T, res: number|ResultInfo<T>, version?: string, backOnSave?: boolean) => void;
42
42
  handleDuplicateKey?: (result?: ResultInfo<T>) => void;
43
- load?: (i: ID, callback?: (m: T, showM: (m2: T) => void) => void) => void;
43
+ load?: (i: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) => void;
44
44
  doSave?: (obj: T, diff?: T, version?: string, isBack?: boolean) => void;
45
45
  prepareCustomData?: (data: any) => void; // need to review
46
46
  }
@@ -57,11 +57,11 @@ export interface HookBaseEditParameter<T, ID, S> extends BaseEditComponentParam<
57
57
  loading?: LoadingService;
58
58
  }
59
59
  export interface EditComponentParam<T, ID, S> extends BaseEditComponentParam<T, ID> {
60
- initialize?: (id: ID, ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
60
+ initialize?: (id: ID|null, ld: (i: ID|null, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
61
61
  callback?: (m: T, showF: (model: T) => void) => void;
62
62
  }
63
63
  export interface HookPropsEditParameter<T, ID, S, P extends RouteComponentProps> extends HookPropsBaseEditParameter<T, ID, S, P> {
64
- initialize?: (id: ID, ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
64
+ initialize?: (id: ID|null, ld: (i: ID|null, cb?: (m: T, showF: (model: T) => void) => void) => void, setState2: DispatchWithCallback<Partial<S>>, callback?: (m: T, showF: (model: T) => void) => void) => void;
65
65
  callback?: (m: T, showF: (model: T) => void) => void;
66
66
  }
67
67
  export interface HookPropsBaseEditParameter<T, ID, S, P extends RouteComponentProps> extends HookBaseEditParameter<T, ID, S> {
@@ -98,19 +98,19 @@ export const useEditProps = <T, ID, S, P extends RouteComponentProps>(
98
98
  let keys: string[]|undefined;
99
99
  if (p && !p.keys && service && service.metadata) {
100
100
  const metadata = (p.metadata ? p.metadata : service.metadata());
101
- const meta = build(metadata);
102
- keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
103
- const version = (p.version ? p.version : (meta ? meta.version : undefined));
104
- p.keys = keys;
105
- p.version = version;
101
+ if (metadata) {
102
+ const meta = build(metadata);
103
+ keys = (p.keys ? p.keys : (meta ? meta.keys : undefined));
104
+ const version = (p.version ? p.version : (meta ? meta.version : undefined));
105
+ p.keys = keys;
106
+ p.version = version;
107
+ }
106
108
  }
107
109
  const id = buildId<ID>(props, keys);
108
- if (id) {
109
- if (p && p.initialize) {
110
- p.initialize(id, baseProps.load, baseProps.setState, p.callback);
111
- } else {
112
- baseProps.load(id, p ? p.callback : undefined);
113
- }
110
+ if (p && p.initialize) {
111
+ p.initialize(id, baseProps.load, baseProps.setState, p.callback);
112
+ } else {
113
+ baseProps.load(id, p ? p.callback : undefined);
114
114
  }
115
115
  }, []);
116
116
  return {...baseProps};
@@ -404,7 +404,7 @@ export const useCoreEdit = <T, ID, S, P>(
404
404
  };
405
405
  const doSave = (p && p.doSave ? p.doSave : _doSave);
406
406
 
407
- const _load = (_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) => {
407
+ const _load = (_id: ID|null, callback?: (m: T, showM: (m2: T) => void) => void) => {
408
408
  const id: any = _id;
409
409
  if (id != null && id !== '') {
410
410
  setRunning(true);
package/src/useSearch.ts CHANGED
@@ -3,7 +3,7 @@ import {RouteComponentProps} from 'react-router';
3
3
  import {useHistory, useRouteMatch} from 'react-router-dom';
4
4
  import {clone} from 'reflectx';
5
5
  import {addParametersIntoUrl, append, buildMessage, Filter, formatResults, getFieldsFromForm, getModel, handleAppend, handleSort, initFilter, mergeFilter as mergeFilter2, Pagination, removeSortStatus, showPaging, Sortable, validate} from 'search-core';
6
- import {error, getDecodeFromForm, getName, getRemoveError, getValidateForm, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
6
+ import {error, getDecodeFromForm, getName, getRemoveError, getValidateForm, handleToggle, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
7
7
  import {DispatchWithCallback, useMergeState} from './merge';
8
8
  import {buildFromUrl} from './route';
9
9
  import {enLocale} from './state';
@@ -58,8 +58,14 @@ export interface HookPropsSearchParameter<T, S extends Filter, ST, P extends Rou
58
58
  initialize?: (ld: (s: S, auto?: boolean) => void, setState2: DispatchWithCallback<Partial<ST>>, com?: SearchComponentState<T, S>) => void;
59
59
  }
60
60
  export interface SearchComponentParam<T, M extends Filter> {
61
+ addable?: boolean;
62
+ editable?: boolean;
63
+ approvable?: boolean;
64
+ deletable?: boolean;
65
+
61
66
  keys?: string[];
62
67
  sequenceNo?: string;
68
+ hideFilter?: boolean;
63
69
  name?: string;
64
70
  fields?: string[];
65
71
  appendMode?: boolean;
@@ -121,7 +127,7 @@ export interface SearchComponentState<T, S> extends Pagination, Sortable {
121
127
 
122
128
  pageMaxSize?: number;
123
129
  pageSizes?: number[];
124
- excluding?: any;
130
+ excluding?: string[]|number[];
125
131
  hideFilter?: boolean;
126
132
 
127
133
  ignoreUrlParam?: boolean;
@@ -146,13 +152,33 @@ function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>): Search
146
152
  if (!p.pageMaxSize || p.pageMaxSize <= 0) {
147
153
  p.pageMaxSize = 7;
148
154
  }
155
+ if (p.hideFilter === undefined) {
156
+ p.hideFilter = true;
157
+ }
158
+ if (p.addable === undefined) {
159
+ p.addable = true;
160
+ }
161
+ if (p.editable === undefined) {
162
+ p.editable = true;
163
+ }
164
+ if (p.approvable === undefined) {
165
+ p.approvable = true;
166
+ }
167
+ if (p.deletable === undefined) {
168
+ p.deletable = true;
169
+ }
149
170
  return p;
150
171
  } else {
151
172
  return {
152
173
  sequenceNo: 'sequenceNo',
153
174
  pageSize: 24,
154
175
  pageSizes,
155
- pageMaxSize: 7
176
+ pageMaxSize: 7,
177
+ hideFilter: true,
178
+ addable: true,
179
+ editable: true,
180
+ approvable: true,
181
+ deletable: true
156
182
  };
157
183
  }
158
184
  }
@@ -229,8 +255,10 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
229
255
  // const p = createSearchComponentState<T, S>(p1);
230
256
  const [component, setComponent] = useMergeState<SearchComponentState<T, S>>(p);
231
257
 
232
- const toggleFilter = (event: any): void => {
233
- setComponent({ hideFilter: !component.hideFilter });
258
+ const toggleFilter = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void => {
259
+ const x = !component.hideFilter;
260
+ handleToggle(event.target as HTMLInputElement, !x);
261
+ setComponent({ hideFilter: x });
234
262
  };
235
263
 
236
264
  const add = (event: any) => {
@@ -409,7 +437,6 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
409
437
  const _showResults = (s: S, sr: SearchResult<T>, lc: Locale) => {
410
438
  const results = sr.list;
411
439
  if (results && results.length > 0) {
412
- debugger;
413
440
  formatResults(results, component.pageIndex, component.pageSize, component.pageSize, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
414
441
  }
415
442
  const am = component.appendMode;
@@ -476,7 +503,7 @@ export const useCoreSearch = <T, S extends Filter, ST, P>(
476
503
  showMessage: p1.showMessage,
477
504
  load,
478
505
  add,
479
- searchOnClick: search,
506
+ search,
480
507
  sort,
481
508
  changeView,
482
509
  showMore,
package/tsconfig.json CHANGED
@@ -14,7 +14,8 @@
14
14
  "removeComments": true,
15
15
  "lib": [
16
16
  "dom",
17
- "es6"
17
+ "es6",
18
+ "es7"
18
19
  ]
19
20
  },
20
21
  "include": [