@spring-systems/core 0.8.0
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/CHANGELOG.md +33 -0
- package/LICENSE +8 -0
- package/README.md +77 -0
- package/dist/adapters/index.d.ts +246 -0
- package/dist/adapters/index.js +56 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/auth/index.d.ts +17 -0
- package/dist/auth/index.js +19 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/chunk-5D6XE7NJ.js +16 -0
- package/dist/chunk-5D6XE7NJ.js.map +1 -0
- package/dist/chunk-EFUBAQCV.js +94 -0
- package/dist/chunk-EFUBAQCV.js.map +1 -0
- package/dist/chunk-F2SIMWZ5.js +173 -0
- package/dist/chunk-F2SIMWZ5.js.map +1 -0
- package/dist/chunk-F7WUQJH7.js +399 -0
- package/dist/chunk-F7WUQJH7.js.map +1 -0
- package/dist/chunk-GON7Q32Q.js +176 -0
- package/dist/chunk-GON7Q32Q.js.map +1 -0
- package/dist/chunk-GXU75LQX.js +182 -0
- package/dist/chunk-GXU75LQX.js.map +1 -0
- package/dist/chunk-HFELOXDQ.js +110 -0
- package/dist/chunk-HFELOXDQ.js.map +1 -0
- package/dist/chunk-KX32MU3I.js +190 -0
- package/dist/chunk-KX32MU3I.js.map +1 -0
- package/dist/chunk-MEWPYTWC.js +284 -0
- package/dist/chunk-MEWPYTWC.js.map +1 -0
- package/dist/chunk-N2L4TUC4.js +34 -0
- package/dist/chunk-N2L4TUC4.js.map +1 -0
- package/dist/chunk-NQQIVCLX.js +47 -0
- package/dist/chunk-NQQIVCLX.js.map +1 -0
- package/dist/chunk-OSSX443T.js +146 -0
- package/dist/chunk-OSSX443T.js.map +1 -0
- package/dist/chunk-PT4DIYUK.js +78 -0
- package/dist/chunk-PT4DIYUK.js.map +1 -0
- package/dist/chunk-QAVWXARR.js +51 -0
- package/dist/chunk-QAVWXARR.js.map +1 -0
- package/dist/chunk-RRWKDFAB.js +143 -0
- package/dist/chunk-RRWKDFAB.js.map +1 -0
- package/dist/chunk-RUCXSQEY.js +42 -0
- package/dist/chunk-RUCXSQEY.js.map +1 -0
- package/dist/chunk-S6RPCN5H.js +64 -0
- package/dist/chunk-S6RPCN5H.js.map +1 -0
- package/dist/chunk-S7MKRNMI.js +153 -0
- package/dist/chunk-S7MKRNMI.js.map +1 -0
- package/dist/chunk-SQB4F3EF.js +55 -0
- package/dist/chunk-SQB4F3EF.js.map +1 -0
- package/dist/chunk-U5OH3GAI.js +399 -0
- package/dist/chunk-U5OH3GAI.js.map +1 -0
- package/dist/chunk-UDT2RPX2.js +43 -0
- package/dist/chunk-UDT2RPX2.js.map +1 -0
- package/dist/config/index.d.ts +63 -0
- package/dist/config/index.js +109 -0
- package/dist/config/index.js.map +1 -0
- package/dist/devtools/index.d.ts +54 -0
- package/dist/devtools/index.js +67 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/errors/index.d.ts +39 -0
- package/dist/errors/index.js +21 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/events/index.d.ts +153 -0
- package/dist/events/index.js +12 -0
- package/dist/events/index.js.map +1 -0
- package/dist/form-types-D3MdGpjA.d.ts +290 -0
- package/dist/framework-config-types-DeUbx4bu.d.ts +574 -0
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.js +7 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/index.d.ts +112 -0
- package/dist/instance/index.js +37 -0
- package/dist/instance/index.js.map +1 -0
- package/dist/logger/index.d.ts +44 -0
- package/dist/logger/index.js +27 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/middleware/index.d.ts +91 -0
- package/dist/middleware/index.js +23 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware-registry-DT002qRd.d.ts +60 -0
- package/dist/middleware-types-DVG9C1qJ.d.ts +85 -0
- package/dist/plugins/index.d.ts +104 -0
- package/dist/plugins/index.js +16 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/runtime-env-config-CajOEJCP.d.ts +148 -0
- package/dist/security-sanitize-Bb0PExM6.d.ts +9 -0
- package/dist/spring-instance-EbUh4mQb.d.ts +119 -0
- package/dist/testing/index.d.ts +129 -0
- package/dist/testing/index.js +171 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.js +72 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +143 -0
- package/dist/utils/index.js +786 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/validation/index.d.ts +48 -0
- package/dist/validation/index.js +147 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +142 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
eventBus
|
|
3
|
+
} from "../chunk-OSSX443T.js";
|
|
4
|
+
import "../chunk-S6RPCN5H.js";
|
|
5
|
+
import "../chunk-RUCXSQEY.js";
|
|
6
|
+
import "../chunk-KX32MU3I.js";
|
|
7
|
+
import "../chunk-EFUBAQCV.js";
|
|
8
|
+
import "../chunk-PT4DIYUK.js";
|
|
9
|
+
export {
|
|
10
|
+
eventBus
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types used by both List and TreeList grids.
|
|
3
|
+
* Single source of truth — re-exported from lists.ts and treelists.ts.
|
|
4
|
+
* @module grid-types
|
|
5
|
+
*/
|
|
6
|
+
interface Permission {
|
|
7
|
+
delete: boolean;
|
|
8
|
+
insert: boolean;
|
|
9
|
+
list: boolean;
|
|
10
|
+
read: boolean;
|
|
11
|
+
update: boolean;
|
|
12
|
+
/** Allows projects to add custom permission fields (e.g., { export: true, approve: false }) */
|
|
13
|
+
[key: string]: boolean;
|
|
14
|
+
}
|
|
15
|
+
type LogicOperator = "and" | "or";
|
|
16
|
+
/** Node structure for tree-based filter. */
|
|
17
|
+
interface FilterNode {
|
|
18
|
+
field?: string;
|
|
19
|
+
operator?: string;
|
|
20
|
+
value?: string | number | boolean | null;
|
|
21
|
+
logic?: LogicOperator;
|
|
22
|
+
filters?: FilterNode[];
|
|
23
|
+
negate?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Simple key-value system filter (normalized into FilterNode by the engine). */
|
|
26
|
+
interface SystemFilterRecord {
|
|
27
|
+
[key: string]: string | number | boolean | Date | null | undefined;
|
|
28
|
+
}
|
|
29
|
+
type ColumnType = "string" | "number" | "date" | "datetime" | "time" | "boolean" | "object" | "color";
|
|
30
|
+
/** Column layout for saving into user settings. */
|
|
31
|
+
interface ColumnLayout {
|
|
32
|
+
key: string;
|
|
33
|
+
order: number;
|
|
34
|
+
width?: number;
|
|
35
|
+
show: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface DefaultFilter {
|
|
38
|
+
domain_name: string;
|
|
39
|
+
id_public: string;
|
|
40
|
+
is_default: boolean;
|
|
41
|
+
json_data: string;
|
|
42
|
+
name: string;
|
|
43
|
+
user_setting_type_code: "user" | "fixed" | "layout";
|
|
44
|
+
version: number;
|
|
45
|
+
}
|
|
46
|
+
interface SavedLayout {
|
|
47
|
+
domain_name: string;
|
|
48
|
+
id_public: string;
|
|
49
|
+
is_default: boolean;
|
|
50
|
+
json_data: string;
|
|
51
|
+
name: string;
|
|
52
|
+
user_setting_type_code: "layout";
|
|
53
|
+
version: number;
|
|
54
|
+
}
|
|
55
|
+
/** Combined structure for json_data in user-settings — filter + layout in one JSON. */
|
|
56
|
+
interface CombinedSettingData {
|
|
57
|
+
user_filter?: FilterNode | null;
|
|
58
|
+
layout?: ColumnLayout[];
|
|
59
|
+
}
|
|
60
|
+
/** Type guard for FilterNode — checks for tree-filter or leaf-filter shape. */
|
|
61
|
+
declare function isFilterNode(val: unknown): val is FilterNode;
|
|
62
|
+
/** Type guard for CombinedSettingData — checks for user_filter or layout property. */
|
|
63
|
+
declare function isCombinedSettingData(val: unknown): val is CombinedSettingData;
|
|
64
|
+
/** Type guard for Permission — checks for all 5 required CRUD boolean keys. */
|
|
65
|
+
declare function isPermission(val: unknown): val is Permission;
|
|
66
|
+
/** Type guard for ColumnLayout — checks for required key, order, show properties. */
|
|
67
|
+
declare function isColumnLayout(val: unknown): val is ColumnLayout;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Types for FormManager - runtime shapes of fields, details, and store API.
|
|
71
|
+
* @module form-types
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
/** Concrete union type for form field values (JSON-like data from API) */
|
|
75
|
+
type FormDataValue = string | number | boolean | Date | null | undefined | FormDataValue[] | {
|
|
76
|
+
[key: string]: FormDataValue;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Form field value — at runtime includes: string, number, boolean, Date, null, undefined,
|
|
80
|
+
* arrays, plain objects (JSON data from API). TS interface limitation: cannot be expressed as a union
|
|
81
|
+
* without losing compatibility with TS interfaces (they lack implicit index signatures).
|
|
82
|
+
*/
|
|
83
|
+
type FormFieldValue = unknown;
|
|
84
|
+
/** Zustand store state — top-level keys (detail, list, ...) */
|
|
85
|
+
interface FormStoreState {
|
|
86
|
+
[key: string]: FormFieldValue;
|
|
87
|
+
}
|
|
88
|
+
/** Indexable object with FormDataValue entries — concrete type for dynamic field access in utilities */
|
|
89
|
+
interface IndexedFormData {
|
|
90
|
+
[key: string]: FormDataValue;
|
|
91
|
+
}
|
|
92
|
+
/** Indexable object — concrete type for generic object traversal (deepCopy, tree access) */
|
|
93
|
+
interface Indexable {
|
|
94
|
+
[key: string]: FormDataValue;
|
|
95
|
+
}
|
|
96
|
+
/** Plain object of a collection item — with known meta keys */
|
|
97
|
+
interface FormCollectionItem {
|
|
98
|
+
__cid?: string;
|
|
99
|
+
id_public?: string;
|
|
100
|
+
[key: string]: FormDataValue;
|
|
101
|
+
}
|
|
102
|
+
/** Map of form fields — fieldName -> FormFieldRuntime */
|
|
103
|
+
interface FormDetailFields {
|
|
104
|
+
[key: string]: FormFieldRuntime;
|
|
105
|
+
}
|
|
106
|
+
/** Structure definition for a nested object/collection */
|
|
107
|
+
interface FormStructureDef {
|
|
108
|
+
[key: string]: FormFieldDefinitionRuntime;
|
|
109
|
+
}
|
|
110
|
+
/** Forward declaration for FormManagerImpl - avoids circular dependency */
|
|
111
|
+
interface FormManagerRef {
|
|
112
|
+
handleForm: <_T>(setState: (updater: (state: FormStoreState) => FormStoreState) => void, collectionKeys?: string[] | string, isFilter?: boolean) => FormCollectionActions;
|
|
113
|
+
}
|
|
114
|
+
/** Runtime shape of a field definition in structure (metadata without value) */
|
|
115
|
+
interface FormFieldDefinitionRuntime {
|
|
116
|
+
value?: FormDataValue;
|
|
117
|
+
title?: string | ((item: FormCollectionItem) => string);
|
|
118
|
+
resourceKey?: string;
|
|
119
|
+
validation?: string | ((value: FormDataValue, structure: FormDetailFields) => string);
|
|
120
|
+
required?: (structure: FormDetailFields) => boolean;
|
|
121
|
+
skipValidation?: boolean;
|
|
122
|
+
skipField?: boolean;
|
|
123
|
+
help?: string;
|
|
124
|
+
dataSource?: FormDataValue[];
|
|
125
|
+
visible?: (structure: FormDetailFields) => boolean;
|
|
126
|
+
disabled?: (structure: FormDetailFields) => boolean;
|
|
127
|
+
onChange?: (value: FormDataValue, formManager: FormManagerRef) => void;
|
|
128
|
+
[key: string]: FormFieldValue;
|
|
129
|
+
}
|
|
130
|
+
/** Core field identity and value. */
|
|
131
|
+
interface FormFieldCore {
|
|
132
|
+
value?: FormDataValue;
|
|
133
|
+
items?: FormCollectionItem[];
|
|
134
|
+
structure?: FormStructureDef;
|
|
135
|
+
title?: string | ((item: FormCollectionItem) => string);
|
|
136
|
+
resourceKey?: string;
|
|
137
|
+
key?: string;
|
|
138
|
+
help?: string;
|
|
139
|
+
dataSource?: FormDataValue[];
|
|
140
|
+
}
|
|
141
|
+
/** Validation facet of a form field. */
|
|
142
|
+
interface FormFieldValidation {
|
|
143
|
+
validation?: string | ((value: FormDataValue, structure: FormDetailFields) => string);
|
|
144
|
+
required?: (structure: FormDetailFields) => boolean;
|
|
145
|
+
skipValidation?: boolean;
|
|
146
|
+
skipField?: boolean;
|
|
147
|
+
serverError?: string;
|
|
148
|
+
forceDefault?: boolean;
|
|
149
|
+
}
|
|
150
|
+
/** Mutation methods for form fields. */
|
|
151
|
+
interface FormFieldMutation {
|
|
152
|
+
set?: (newValue: FormDataValue, index?: number, fieldName?: string) => void;
|
|
153
|
+
add?: (parent: FormCollectionItem | null, defaultValue?: FormCollectionItem) => void;
|
|
154
|
+
remove?: (item: FormCollectionItem) => void;
|
|
155
|
+
}
|
|
156
|
+
/** Lifecycle hooks for form fields (collection items, change events). */
|
|
157
|
+
interface FormFieldLifecycle {
|
|
158
|
+
onChange?: (value: FormDataValue, formManager: FormManagerRef) => void;
|
|
159
|
+
onBeforeAdd?: (newItem: FormCollectionItem) => FormCollectionItem | undefined;
|
|
160
|
+
onAfterAdd?: (addedItem: FormCollectionItem, allItems: FormCollectionItem[]) => void;
|
|
161
|
+
onBeforeRemove?: (item: FormCollectionItem) => boolean | void;
|
|
162
|
+
onAfterRemove?: (removedItem: FormCollectionItem) => void;
|
|
163
|
+
}
|
|
164
|
+
/** Visibility facet of a form field. */
|
|
165
|
+
interface FormFieldVisibility {
|
|
166
|
+
visible?: (structure: FormDetailFields) => boolean;
|
|
167
|
+
disabled?: (structure: FormDetailFields) => boolean;
|
|
168
|
+
}
|
|
169
|
+
/** Runtime shape of a single form field — intersection of all facets. 100% backward-compatible. */
|
|
170
|
+
interface FormFieldRuntime extends FormFieldCore, FormFieldValidation, FormFieldMutation, FormFieldLifecycle, FormFieldVisibility {
|
|
171
|
+
[key: string]: FormFieldValue;
|
|
172
|
+
}
|
|
173
|
+
type FormChangedPath = string;
|
|
174
|
+
interface FormChangesSnapshot {
|
|
175
|
+
isChanged: boolean;
|
|
176
|
+
changedPaths: FormChangedPath[];
|
|
177
|
+
lastChangedPath?: FormChangedPath;
|
|
178
|
+
}
|
|
179
|
+
interface FormChangesApi {
|
|
180
|
+
get(): FormChangesSnapshot;
|
|
181
|
+
isChanged(path: FormChangedPath): boolean;
|
|
182
|
+
markClean(): void;
|
|
183
|
+
touch(path: FormChangedPath, previousValue: FormDataValue, currentValue: FormDataValue): void;
|
|
184
|
+
setChanged(path: FormChangedPath, changed: boolean): void;
|
|
185
|
+
exportBaseline?: () => FormStoreState;
|
|
186
|
+
importBaseline?: (baseline: FormStoreState) => void;
|
|
187
|
+
}
|
|
188
|
+
/** Runtime state of the entire form detail - access to fields via string index, specific runtime keys */
|
|
189
|
+
interface FormDetailRuntime extends FormStoreState {
|
|
190
|
+
isEdited?: boolean;
|
|
191
|
+
isValidated?: boolean;
|
|
192
|
+
changes?: FormChangesApi;
|
|
193
|
+
formManager?: FormManagerRef;
|
|
194
|
+
form?: (collectionKeys?: string | string[]) => FormCollectionActions;
|
|
195
|
+
}
|
|
196
|
+
/** Minimal interface for createForm return value — Zustand store instance. */
|
|
197
|
+
interface FormStoreInstance {
|
|
198
|
+
getState: () => object;
|
|
199
|
+
}
|
|
200
|
+
/** Type for the Zustand-like store used by FormManager */
|
|
201
|
+
interface FormStoreApi {
|
|
202
|
+
getState: () => FormStoreState;
|
|
203
|
+
setState: (updater: (s: FormStoreState) => FormStoreState) => void;
|
|
204
|
+
getInitialState: () => FormStoreState;
|
|
205
|
+
}
|
|
206
|
+
/** Actions for manipulating collections in the form (add/remove/set) */
|
|
207
|
+
interface FormCollectionActions {
|
|
208
|
+
add: (parent: FormCollectionItem | null, newItem: FormCollectionItem) => void;
|
|
209
|
+
remove: (itemToRemove: FormCollectionItem) => void;
|
|
210
|
+
set: (newValue: FormFieldValue, key: string, item: FormCollectionItem) => void;
|
|
211
|
+
}
|
|
212
|
+
/** Non-generic version of FormManager for contexts where invariant M is not needed. */
|
|
213
|
+
interface FormManagerBase {
|
|
214
|
+
clearFields(): void;
|
|
215
|
+
getFields(): (FormStoreState & {
|
|
216
|
+
id_public?: string;
|
|
217
|
+
}) | null;
|
|
218
|
+
setFields(value: FormStoreState, opts?: {
|
|
219
|
+
markClean?: boolean;
|
|
220
|
+
}): void;
|
|
221
|
+
get(key: string): FormFieldValue;
|
|
222
|
+
set(key: string, value: FormFieldValue): void;
|
|
223
|
+
getReadOnly(): boolean;
|
|
224
|
+
setReadOnly(value: boolean): void;
|
|
225
|
+
setIdPublic(value: string): void;
|
|
226
|
+
validate(): boolean;
|
|
227
|
+
save(url: string, fields: FormStoreState & {
|
|
228
|
+
id_public?: string;
|
|
229
|
+
}, validations?: boolean): Promise<FormStoreState | false>;
|
|
230
|
+
load<T extends FormStoreState>(route: string, id_public?: string, detailData?: T, copyFrom?: string): Promise<T | undefined>;
|
|
231
|
+
getPermissions(): Permission | undefined;
|
|
232
|
+
setPermissions(permissions: Permission | undefined): void;
|
|
233
|
+
transformDs(items: FormCollectionItem[], structure?: FormStructureDef): FormCollectionItem[];
|
|
234
|
+
handleForm<_T>(setState: (updater: (state: FormStoreState) => FormStoreState) => void, collectionKeys?: string[] | string, isFilter?: boolean): FormCollectionActions;
|
|
235
|
+
}
|
|
236
|
+
/** Minimal interface for ListManager — covers .load() called from Detail/Context. */
|
|
237
|
+
interface ListManagerLoadable {
|
|
238
|
+
load(allowLoad?: boolean): Promise<object | null | undefined | void>;
|
|
239
|
+
highlightRow(id_public: string): void;
|
|
240
|
+
}
|
|
241
|
+
/** Form readOnly state — minimal interface for the readOnly field in FormPageForm */
|
|
242
|
+
interface ReadOnlyField {
|
|
243
|
+
value?: boolean;
|
|
244
|
+
set?: (newValue: boolean) => void;
|
|
245
|
+
}
|
|
246
|
+
interface Identifiable {
|
|
247
|
+
id_public?: string | number;
|
|
248
|
+
id?: string | number;
|
|
249
|
+
[key: string]: FormFieldValue;
|
|
250
|
+
}
|
|
251
|
+
/** Extracts ID from an object — looks for `key`, `id_public`, `id` (in that order). */
|
|
252
|
+
declare function getIdentifiableId(obj: unknown, key?: string): string | number | undefined;
|
|
253
|
+
/** Zustand boundary cast — encapsulates `as unknown as T` for Store type invariance. */
|
|
254
|
+
declare function storeBoundary<T>(value: FormFieldValue): T;
|
|
255
|
+
/** Boundary function: narrows FormFieldValue (=unknown) to FormDataValue at the unknown→typed boundary. */
|
|
256
|
+
declare function toFormDataValue(value: FormFieldValue): FormDataValue;
|
|
257
|
+
/** Type guard: checks if an unknown value is a FormFieldRuntime-like object (has `value` key and is not a Date/Array). */
|
|
258
|
+
declare function isFormFieldRuntime(val: unknown): val is FormFieldRuntime;
|
|
259
|
+
/** Typed accessor: returns FormFieldRuntime from FormStoreState[key] with a runtime type check. */
|
|
260
|
+
declare function getField(state: FormStoreState | null | undefined, key: string): FormFieldRuntime | undefined;
|
|
261
|
+
/** Typed accessor: returns nested FormStoreState from FormStoreState[key] with a runtime check. */
|
|
262
|
+
declare function getSubState(state: FormStoreState | null | undefined, key: string): FormStoreState | undefined;
|
|
263
|
+
/** Typed accessor: returns a value from Zustand store state under the given key. */
|
|
264
|
+
declare function getStoreValue<T>(state: object, key: string): T;
|
|
265
|
+
/** Filter value in the TreeList/List filter system — includes lookup objects */
|
|
266
|
+
type FilterFieldValue = string | number | boolean | Date | null | undefined | {
|
|
267
|
+
id_public?: string | number;
|
|
268
|
+
value?: string | number;
|
|
269
|
+
[key: string]: FilterFieldValue | undefined;
|
|
270
|
+
} | FilterFieldValue[];
|
|
271
|
+
/** Shape of an error object from API/Axios */
|
|
272
|
+
interface ApiErrorLike {
|
|
273
|
+
code?: string;
|
|
274
|
+
name?: string;
|
|
275
|
+
message?: string;
|
|
276
|
+
status?: number;
|
|
277
|
+
data?: unknown;
|
|
278
|
+
}
|
|
279
|
+
/** Comparison function for the validation engine */
|
|
280
|
+
type ComparisonFunction = (a: FormDataValue, b: FormDataValue) => boolean;
|
|
281
|
+
/** Named validator function — registered via registerValidator, resolved at validation time. */
|
|
282
|
+
type ValidatorFn = (value: FormDataValue, structure: FormDetailFields) => string;
|
|
283
|
+
interface FormLifecycle<T = FormStoreState> {
|
|
284
|
+
onBeforeLoad?: (id: string) => void | Promise<void>;
|
|
285
|
+
onAfterLoad?: (data: FormStoreState) => void;
|
|
286
|
+
onBeforeSave?: (fields: T) => T;
|
|
287
|
+
onAfterSave?: (result: FormStoreState) => void;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export { type ApiErrorLike as A, type FormStructureDef as B, type ColumnLayout as C, type DefaultFilter as D, type Indexable as E, type FormDetailRuntime as F, type IndexedFormData as G, type LogicOperator as H, type Identifiable as I, type SystemFilterRecord as J, getField as K, type ListManagerLoadable as L, getIdentifiableId as M, getStoreValue as N, getSubState as O, type Permission as P, isColumnLayout as Q, type ReadOnlyField as R, type SavedLayout as S, isCombinedSettingData as T, isFilterNode as U, type ValidatorFn as V, isFormFieldRuntime as W, isPermission as X, storeBoundary as Y, toFormDataValue as Z, type FormDataValue as a, type FormStoreState as b, type ColumnType as c, type CombinedSettingData as d, type ComparisonFunction as e, type FilterFieldValue as f, type FilterNode as g, type FormChangedPath as h, type FormChangesApi as i, type FormChangesSnapshot as j, type FormCollectionActions as k, type FormCollectionItem as l, type FormDetailFields as m, type FormFieldCore as n, type FormFieldDefinitionRuntime as o, type FormFieldLifecycle as p, type FormFieldMutation as q, type FormFieldRuntime as r, type FormFieldValidation as s, type FormFieldValue as t, type FormFieldVisibility as u, type FormLifecycle as v, type FormManagerBase as w, type FormManagerRef as x, type FormStoreApi as y, type FormStoreInstance as z };
|