@mgarlik/datastore 0.1.21 → 0.1.23

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/dist/index.d.cts CHANGED
@@ -1,6 +1,65 @@
1
1
  import React$1, { ReactNode } from 'react';
2
+ import { filterType } from '@mgarlik/json-filter';
2
3
  import { D as DataStoreStorage } from './storage-D_xv8gFb.cjs';
3
4
 
5
+ type formTypes = "textInput" | "select" | "switch" | "dateTime" | "radio";
6
+
7
+ type textInputProps = {
8
+ placeholder?: string;
9
+ multiline?: boolean;
10
+ numberOfLines?: number;
11
+ secure: boolean;
12
+ };
13
+
14
+ type switchProps = {
15
+ thumbColor?: string;
16
+ trackColor?: { true: string; false: string };
17
+ };
18
+
19
+ type dateTimeProps = {
20
+ mode: "date" | "time" | "datetime";
21
+ };
22
+
23
+ type DataSourceOptions = {
24
+ dataProvider: string;
25
+ filter?: filterType;
26
+ map: Record<string, string>;
27
+ };
28
+
29
+ type selectProps = {
30
+ multiple?: boolean;
31
+ options?:
32
+ | Array<{ value: string | number; label: string }>
33
+ | { dataSource: DataSourceOptions };
34
+ };
35
+
36
+ // type selectProps = {
37
+ // multiple?: boolean;
38
+ // options?:
39
+ // Array<{ value: string | number; label: string }>
40
+ // | {
41
+ // dataSource: ProviderDataSourceType & {
42
+ // map: { value: string; label: string };
43
+ // };
44
+ // };
45
+ // };
46
+
47
+ type FormTypeMap = {
48
+ textInput: textInputProps;
49
+ select: selectProps;
50
+ switch: switchProps;
51
+ dateTime: dateTimeProps;
52
+ radio: never; // zatím žádné props
53
+ };
54
+
55
+ type FormTypeObject = {
56
+ [K in keyof FormTypeMap]: FormTypeMap[K] extends never
57
+ ? { type: K; props?: never }
58
+ : { type: K; props?: FormTypeMap[K] };
59
+ }[keyof FormTypeMap];
60
+
61
+ type formType = formTypes | FormTypeObject;
62
+
4
63
  type ProviderDataSourceType = {
5
64
  /**
6
65
  * Adresa pro CRUD data
@@ -16,6 +75,7 @@ type ProviderDataSourceType = {
16
75
  delete?: string;
17
76
  // updates?: { [key: string]: string };
18
77
  };
78
+ dataProvider?: string;
19
79
  /**
20
80
  * Prime zadani pole dat
21
81
  * */
@@ -29,7 +89,7 @@ type ProviderDataSourceType = {
29
89
  * Nacist vsechny pole bez ohledu na schema
30
90
  */
31
91
  readAllFields?: boolean;
32
- filter?: FilterType$1;
92
+ filter?: filterType;
33
93
  /**
34
94
  * Nazvy naslouchajicich socketu
35
95
  */
@@ -41,9 +101,6 @@ type DataProviderActionType = "create" | "update" | "delete";
41
101
  //TODO: Rule type
42
102
  type RuleType = {};
43
103
 
44
- //TODO: Filter type
45
- type FilterType$1 = {};
46
-
47
104
  type ProviderEditorType = {
48
105
  title?: string;
49
106
  /**
@@ -69,18 +126,18 @@ type ProviderLayoutType = {
69
126
  description?: string;
70
127
  footer?: string;
71
128
  tooltip?: string | React.ReactNode;
72
- visible?: boolean | JsonFilter;
129
+ visible?: boolean | filterType;
73
130
  items: Array<{
74
131
  field: string;
75
- form?: "textInput" | "select" | "switch" | "dateTime";
132
+ form?: formType;
76
133
  label?: string; // jen override
77
- visible?: boolean | JsonFilter;
134
+ visible?: boolean | filterType;
78
135
  tooltip?: string | React.ReactNode;
79
136
  }>;
80
137
  }[];
81
138
  };
82
139
 
83
- type ProviderSchemaItemType = {
140
+ type BasicProviderSchemaItemType = {
84
141
  /**
85
142
  * Zdrojove pole pro hodnotu (např. "name" nebo "price"). Pokud není uvedeno, očekává se, že hodnota bude přímo v kořenovém objektu.
86
143
  */
@@ -89,44 +146,28 @@ type ProviderSchemaItemType = {
89
146
  * Výchozí hodnota pole, která se použije, pokud není poskytnuta žádná jiná hodnota. Může být typu string, number, boolean nebo jiného vhodného typu v závislosti na kontextu použití.
90
147
  */
91
148
  default?: any;
149
+ }
150
+
151
+ type ProviderSchemaItemType = BasicProviderSchemaItemType & {
152
+ /** Typ hodnoty */
153
+ type?: "string" | "number" | "date" | "boolean";
92
154
  /**
93
155
  * Povolene hodnoty
94
156
  *
95
157
  */
96
158
  enum?: any[];
97
159
  /**
98
- * Je pole vyžadováno pri editaci?
160
+ * Je pole vyžadováno pro model ( pri create nebo pri update )?
99
161
  */
100
162
  required?: boolean;
101
- /**
102
- * Je pole pri editaci viditelné?
103
- */
104
- visibility?: "hidden" | "visible";
105
163
  /**
106
164
  * Polozku lze editovat
107
165
  */
108
166
  editable?: boolean | RuleType;
109
- type?: "string" | "number" | "date" | "boolean";
110
- form?: "textInput" | "select" | "switch" | "dateTime" | "radio";
111
- multiple?: boolean;
112
- mode?: "screen";
113
- title?: string;
114
- placeholder?: string;
115
- // Pro select a radio
116
- options?: { value: any; label?: string, icon?: string }[] | {
117
- dataProvider: ProviderTypes;
118
- optionKeys?: { value: string; label: LabelProps | { title: string; icon: string } };
119
- filter?: string | RuleType;
120
- };
167
+ form?: formType;
168
+ label?: string;
121
169
  description?: string;
122
- /** TODO: Divna definice labelu */
123
- optionKeys?: { value: string; label: LabelProps | { title: string; icon: string } };
124
170
  validations?: ValidationType;
125
- /**
126
- * Text input nezobrazuje znaky
127
- */
128
- secure?: boolean;
129
- hidden?: boolean;
130
171
  };
131
172
 
132
173
  type DataProviderType = {
@@ -392,35 +433,11 @@ interface UseDataProviderResult {
392
433
  /** Vytvoří novou položku providera. */
393
434
  createItem: (data: JSONType, callback?: (value: JSONType) => void) => Promise<JSONType>;
394
435
  }
395
- /**
396
- * Zaregistruje/zpřístupní providera a vrátí normalizované dokumenty spolu s CRUD helpery.
397
- *
398
- * @param id Provider id nebo inline definice providera.
399
- * @param params Parametry šablony používané při renderu URI/definice.
400
- * @param dataFilter Volitelný client-side filtr dokumentů providera.
401
- * @param settings Volitelný závislý dokument použitý pro přepočet dat.
402
- */
403
- declare const useDataProvider: (
404
- /**
405
- * Provider id nebo objekt data {key: value}
406
- */
407
- id: string | {
436
+ declare const useDataProvider: (id: string | {
408
437
  [key: string]: any;
409
- } | false,
410
- /**
411
- * Parametry pro prerenderovani providera (profiles/<%= profileId %>)
412
- */
413
- params?: {
438
+ } | false, params?: {
414
439
  [key: string]: string;
415
- } | null,
416
- /**
417
- * Filtrovani dat
418
- */
419
- dataFilter?: JSONType | null,
420
- /**
421
- * Nejake nastaveni
422
- */
423
- settings?: {
440
+ } | null, dataFilter?: filterType | null, settings?: {
424
441
  documentId?: string;
425
442
  document?: JSONType;
426
443
  }) => UseDataProviderResult;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,65 @@
1
1
  import React$1, { ReactNode } from 'react';
2
+ import { filterType } from '@mgarlik/json-filter';
2
3
  import { D as DataStoreStorage } from './storage-D_xv8gFb.js';
3
4
 
5
+ type formTypes = "textInput" | "select" | "switch" | "dateTime" | "radio";
6
+
7
+ type textInputProps = {
8
+ placeholder?: string;
9
+ multiline?: boolean;
10
+ numberOfLines?: number;
11
+ secure: boolean;
12
+ };
13
+
14
+ type switchProps = {
15
+ thumbColor?: string;
16
+ trackColor?: { true: string; false: string };
17
+ };
18
+
19
+ type dateTimeProps = {
20
+ mode: "date" | "time" | "datetime";
21
+ };
22
+
23
+ type DataSourceOptions = {
24
+ dataProvider: string;
25
+ filter?: filterType;
26
+ map: Record<string, string>;
27
+ };
28
+
29
+ type selectProps = {
30
+ multiple?: boolean;
31
+ options?:
32
+ | Array<{ value: string | number; label: string }>
33
+ | { dataSource: DataSourceOptions };
34
+ };
35
+
36
+ // type selectProps = {
37
+ // multiple?: boolean;
38
+ // options?:
39
+ // Array<{ value: string | number; label: string }>
40
+ // | {
41
+ // dataSource: ProviderDataSourceType & {
42
+ // map: { value: string; label: string };
43
+ // };
44
+ // };
45
+ // };
46
+
47
+ type FormTypeMap = {
48
+ textInput: textInputProps;
49
+ select: selectProps;
50
+ switch: switchProps;
51
+ dateTime: dateTimeProps;
52
+ radio: never; // zatím žádné props
53
+ };
54
+
55
+ type FormTypeObject = {
56
+ [K in keyof FormTypeMap]: FormTypeMap[K] extends never
57
+ ? { type: K; props?: never }
58
+ : { type: K; props?: FormTypeMap[K] };
59
+ }[keyof FormTypeMap];
60
+
61
+ type formType = formTypes | FormTypeObject;
62
+
4
63
  type ProviderDataSourceType = {
5
64
  /**
6
65
  * Adresa pro CRUD data
@@ -16,6 +75,7 @@ type ProviderDataSourceType = {
16
75
  delete?: string;
17
76
  // updates?: { [key: string]: string };
18
77
  };
78
+ dataProvider?: string;
19
79
  /**
20
80
  * Prime zadani pole dat
21
81
  * */
@@ -29,7 +89,7 @@ type ProviderDataSourceType = {
29
89
  * Nacist vsechny pole bez ohledu na schema
30
90
  */
31
91
  readAllFields?: boolean;
32
- filter?: FilterType$1;
92
+ filter?: filterType;
33
93
  /**
34
94
  * Nazvy naslouchajicich socketu
35
95
  */
@@ -41,9 +101,6 @@ type DataProviderActionType = "create" | "update" | "delete";
41
101
  //TODO: Rule type
42
102
  type RuleType = {};
43
103
 
44
- //TODO: Filter type
45
- type FilterType$1 = {};
46
-
47
104
  type ProviderEditorType = {
48
105
  title?: string;
49
106
  /**
@@ -69,18 +126,18 @@ type ProviderLayoutType = {
69
126
  description?: string;
70
127
  footer?: string;
71
128
  tooltip?: string | React.ReactNode;
72
- visible?: boolean | JsonFilter;
129
+ visible?: boolean | filterType;
73
130
  items: Array<{
74
131
  field: string;
75
- form?: "textInput" | "select" | "switch" | "dateTime";
132
+ form?: formType;
76
133
  label?: string; // jen override
77
- visible?: boolean | JsonFilter;
134
+ visible?: boolean | filterType;
78
135
  tooltip?: string | React.ReactNode;
79
136
  }>;
80
137
  }[];
81
138
  };
82
139
 
83
- type ProviderSchemaItemType = {
140
+ type BasicProviderSchemaItemType = {
84
141
  /**
85
142
  * Zdrojove pole pro hodnotu (např. "name" nebo "price"). Pokud není uvedeno, očekává se, že hodnota bude přímo v kořenovém objektu.
86
143
  */
@@ -89,44 +146,28 @@ type ProviderSchemaItemType = {
89
146
  * Výchozí hodnota pole, která se použije, pokud není poskytnuta žádná jiná hodnota. Může být typu string, number, boolean nebo jiného vhodného typu v závislosti na kontextu použití.
90
147
  */
91
148
  default?: any;
149
+ }
150
+
151
+ type ProviderSchemaItemType = BasicProviderSchemaItemType & {
152
+ /** Typ hodnoty */
153
+ type?: "string" | "number" | "date" | "boolean";
92
154
  /**
93
155
  * Povolene hodnoty
94
156
  *
95
157
  */
96
158
  enum?: any[];
97
159
  /**
98
- * Je pole vyžadováno pri editaci?
160
+ * Je pole vyžadováno pro model ( pri create nebo pri update )?
99
161
  */
100
162
  required?: boolean;
101
- /**
102
- * Je pole pri editaci viditelné?
103
- */
104
- visibility?: "hidden" | "visible";
105
163
  /**
106
164
  * Polozku lze editovat
107
165
  */
108
166
  editable?: boolean | RuleType;
109
- type?: "string" | "number" | "date" | "boolean";
110
- form?: "textInput" | "select" | "switch" | "dateTime" | "radio";
111
- multiple?: boolean;
112
- mode?: "screen";
113
- title?: string;
114
- placeholder?: string;
115
- // Pro select a radio
116
- options?: { value: any; label?: string, icon?: string }[] | {
117
- dataProvider: ProviderTypes;
118
- optionKeys?: { value: string; label: LabelProps | { title: string; icon: string } };
119
- filter?: string | RuleType;
120
- };
167
+ form?: formType;
168
+ label?: string;
121
169
  description?: string;
122
- /** TODO: Divna definice labelu */
123
- optionKeys?: { value: string; label: LabelProps | { title: string; icon: string } };
124
170
  validations?: ValidationType;
125
- /**
126
- * Text input nezobrazuje znaky
127
- */
128
- secure?: boolean;
129
- hidden?: boolean;
130
171
  };
131
172
 
132
173
  type DataProviderType = {
@@ -392,35 +433,11 @@ interface UseDataProviderResult {
392
433
  /** Vytvoří novou položku providera. */
393
434
  createItem: (data: JSONType, callback?: (value: JSONType) => void) => Promise<JSONType>;
394
435
  }
395
- /**
396
- * Zaregistruje/zpřístupní providera a vrátí normalizované dokumenty spolu s CRUD helpery.
397
- *
398
- * @param id Provider id nebo inline definice providera.
399
- * @param params Parametry šablony používané při renderu URI/definice.
400
- * @param dataFilter Volitelný client-side filtr dokumentů providera.
401
- * @param settings Volitelný závislý dokument použitý pro přepočet dat.
402
- */
403
- declare const useDataProvider: (
404
- /**
405
- * Provider id nebo objekt data {key: value}
406
- */
407
- id: string | {
436
+ declare const useDataProvider: (id: string | {
408
437
  [key: string]: any;
409
- } | false,
410
- /**
411
- * Parametry pro prerenderovani providera (profiles/<%= profileId %>)
412
- */
413
- params?: {
438
+ } | false, params?: {
414
439
  [key: string]: string;
415
- } | null,
416
- /**
417
- * Filtrovani dat
418
- */
419
- dataFilter?: JSONType | null,
420
- /**
421
- * Nejake nastaveni
422
- */
423
- settings?: {
440
+ } | null, dataFilter?: filterType | null, settings?: {
424
441
  documentId?: string;
425
442
  document?: JSONType;
426
443
  }) => UseDataProviderResult;