@servicetitan/form-state 22.4.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.
Files changed (81) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.d.ts +12 -0
  3. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.d.ts.map +1 -0
  4. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.js +89 -0
  5. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.js.map +1 -0
  6. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.d.ts +11 -0
  7. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.d.ts.map +1 -0
  8. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.js +55 -0
  9. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.js.map +1 -0
  10. package/dist/async-lazy-dropdown-state/index.d.ts +3 -0
  11. package/dist/async-lazy-dropdown-state/index.d.ts.map +1 -0
  12. package/dist/async-lazy-dropdown-state/index.js +3 -0
  13. package/dist/async-lazy-dropdown-state/index.js.map +1 -0
  14. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.d.ts +5 -0
  15. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.d.ts.map +1 -0
  16. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.js +26 -0
  17. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.js.map +1 -0
  18. package/dist/date-range.d.ts +5 -0
  19. package/dist/date-range.d.ts.map +1 -0
  20. package/dist/date-range.js +2 -0
  21. package/dist/date-range.js.map +1 -0
  22. package/dist/demo/dropdown-state.d.ts +3 -0
  23. package/dist/demo/dropdown-state.d.ts.map +1 -0
  24. package/dist/demo/dropdown-state.js +133 -0
  25. package/dist/demo/dropdown-state.js.map +1 -0
  26. package/dist/demo/index.d.ts +2 -0
  27. package/dist/demo/index.d.ts.map +1 -0
  28. package/dist/demo/index.js +2 -0
  29. package/dist/demo/index.js.map +1 -0
  30. package/dist/dropdown-state.d.ts +42 -0
  31. package/dist/dropdown-state.d.ts.map +1 -0
  32. package/dist/dropdown-state.js +314 -0
  33. package/dist/dropdown-state.js.map +1 -0
  34. package/dist/form-helpers.d.ts +70 -0
  35. package/dist/form-helpers.d.ts.map +1 -0
  36. package/dist/form-helpers.js +232 -0
  37. package/dist/form-helpers.js.map +1 -0
  38. package/dist/form-validators.d.ts +30 -0
  39. package/dist/form-validators.d.ts.map +1 -0
  40. package/dist/form-validators.js +56 -0
  41. package/dist/form-validators.js.map +1 -0
  42. package/dist/index.d.ts +6 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +6 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/persistent-form-state/domain-storage.d.ts +14 -0
  47. package/dist/persistent-form-state/domain-storage.d.ts.map +1 -0
  48. package/dist/persistent-form-state/domain-storage.js +42 -0
  49. package/dist/persistent-form-state/domain-storage.js.map +1 -0
  50. package/dist/persistent-form-state/in-memory-storage.d.ts +13 -0
  51. package/dist/persistent-form-state/in-memory-storage.d.ts.map +1 -0
  52. package/dist/persistent-form-state/in-memory-storage.js +30 -0
  53. package/dist/persistent-form-state/in-memory-storage.js.map +1 -0
  54. package/dist/persistent-form-state/index.d.ts +2 -0
  55. package/dist/persistent-form-state/index.d.ts.map +1 -0
  56. package/dist/persistent-form-state/index.js +2 -0
  57. package/dist/persistent-form-state/index.js.map +1 -0
  58. package/dist/persistent-form-state/persistent-form-state.d.ts +18 -0
  59. package/dist/persistent-form-state/persistent-form-state.d.ts.map +1 -0
  60. package/dist/persistent-form-state/persistent-form-state.js +93 -0
  61. package/dist/persistent-form-state/persistent-form-state.js.map +1 -0
  62. package/package.json +45 -0
  63. package/src/__tests__/__snapshots__/form-helpers.test.ts.snap +37 -0
  64. package/src/__tests__/form-helpers.test.ts +229 -0
  65. package/src/__tests__/form-validators.test.ts +55 -0
  66. package/src/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.tsx +66 -0
  67. package/src/async-lazy-dropdown-state/async-lazy-dropdown-state.ts +77 -0
  68. package/src/async-lazy-dropdown-state/index.ts +2 -0
  69. package/src/async-lazy-dropdown-state/use-async-lazy-dropdown-state.ts +38 -0
  70. package/src/date-range.ts +4 -0
  71. package/src/demo/dropdown-state.tsx +233 -0
  72. package/src/demo/index.ts +1 -0
  73. package/src/dropdown-state.ts +205 -0
  74. package/src/form-helpers.ts +259 -0
  75. package/src/form-validators.ts +106 -0
  76. package/src/index.ts +5 -0
  77. package/src/persistent-form-state/__tests__/domain-storage.test.ts +81 -0
  78. package/src/persistent-form-state/domain-storage.ts +43 -0
  79. package/src/persistent-form-state/in-memory-storage.ts +32 -0
  80. package/src/persistent-form-state/index.ts +1 -0
  81. package/src/persistent-form-state/persistent-form-state.ts +68 -0
@@ -0,0 +1,314 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { observable, computed, action, runInAction, makeObservable } from 'mobx';
20
+ import debounce from 'debounce';
21
+ function isGroupItem(item, groupedBy) {
22
+ const { items, field } = item;
23
+ return !!items && field === groupedBy;
24
+ }
25
+ export class DropdownState {
26
+ constructor({ dataSource, searchByGroup, state, lazy, } = {}) {
27
+ var _a, _b, _c;
28
+ Object.defineProperty(this, "loading", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: false
33
+ });
34
+ Object.defineProperty(this, "search", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: ''
39
+ });
40
+ Object.defineProperty(this, "dataSource", {
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true,
44
+ value: void 0
45
+ });
46
+ Object.defineProperty(this, "searchByGroup", {
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true,
50
+ value: void 0
51
+ });
52
+ Object.defineProperty(this, "sort", {
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true,
56
+ value: void 0
57
+ });
58
+ Object.defineProperty(this, "filter", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: void 0
63
+ });
64
+ Object.defineProperty(this, "group", {
65
+ enumerable: true,
66
+ configurable: true,
67
+ writable: true,
68
+ value: void 0
69
+ });
70
+ Object.defineProperty(this, "data", {
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ value: []
75
+ });
76
+ // eslint-disable-next-line @typescript-eslint/member-ordering
77
+ Object.defineProperty(this, "onSearchChange", {
78
+ enumerable: true,
79
+ configurable: true,
80
+ writable: true,
81
+ value: (() => {
82
+ const fetch = debounce(() => this.fetch(), 100);
83
+ return (_0, data) => {
84
+ runInAction(() => {
85
+ this.search = data.value;
86
+ });
87
+ fetch();
88
+ };
89
+ })()
90
+ });
91
+ Object.defineProperty(this, "setSearch", {
92
+ enumerable: true,
93
+ configurable: true,
94
+ writable: true,
95
+ value: (search) => __awaiter(this, void 0, void 0, function* () {
96
+ this.search = search;
97
+ yield this.fetch();
98
+ })
99
+ });
100
+ Object.defineProperty(this, "setDataSource", {
101
+ enumerable: true,
102
+ configurable: true,
103
+ writable: true,
104
+ value: (dataSource) => __awaiter(this, void 0, void 0, function* () {
105
+ this.dataSource = dataSource;
106
+ yield this.fetch();
107
+ })
108
+ });
109
+ Object.defineProperty(this, "setSearchByGroup", {
110
+ enumerable: true,
111
+ configurable: true,
112
+ writable: true,
113
+ value: (searchByGroup) => __awaiter(this, void 0, void 0, function* () {
114
+ this.searchByGroup = searchByGroup;
115
+ yield this.fetch();
116
+ })
117
+ });
118
+ Object.defineProperty(this, "setSort", {
119
+ enumerable: true,
120
+ configurable: true,
121
+ writable: true,
122
+ value: (sort) => __awaiter(this, void 0, void 0, function* () {
123
+ this.sort = sort;
124
+ yield this.fetch();
125
+ })
126
+ });
127
+ Object.defineProperty(this, "setFilter", {
128
+ enumerable: true,
129
+ configurable: true,
130
+ writable: true,
131
+ value: (filter) => __awaiter(this, void 0, void 0, function* () {
132
+ this.filter = filter;
133
+ yield this.fetch();
134
+ })
135
+ });
136
+ Object.defineProperty(this, "setGroup", {
137
+ enumerable: true,
138
+ configurable: true,
139
+ writable: true,
140
+ value: (group) => __awaiter(this, void 0, void 0, function* () {
141
+ this.group = group;
142
+ yield this.fetch();
143
+ })
144
+ });
145
+ Object.defineProperty(this, "fetch", {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: () => __awaiter(this, void 0, void 0, function* () {
150
+ var _d;
151
+ this.loading = true;
152
+ const response = yield ((_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.getData(this.state));
153
+ runInAction(() => {
154
+ var _a;
155
+ this.data = (_a = response === null || response === void 0 ? void 0 : response.data) !== null && _a !== void 0 ? _a : [];
156
+ this.loading = false;
157
+ });
158
+ })
159
+ });
160
+ Object.defineProperty(this, "traverse", {
161
+ enumerable: true,
162
+ configurable: true,
163
+ writable: true,
164
+ value: (items, itemCallback, groupedBy) => {
165
+ if (!items) {
166
+ return;
167
+ }
168
+ for (const item of items) {
169
+ if (isGroupItem(item, groupedBy)) {
170
+ this.traverse(item.items, itemCallback, groupedBy);
171
+ }
172
+ else {
173
+ itemCallback(item);
174
+ }
175
+ }
176
+ }
177
+ });
178
+ makeObservable(this);
179
+ this.dataSource = dataSource !== null && dataSource !== void 0 ? dataSource : null;
180
+ this.searchByGroup = searchByGroup !== null && searchByGroup !== void 0 ? searchByGroup : false;
181
+ this.sort = (_a = state === null || state === void 0 ? void 0 : state.sort) !== null && _a !== void 0 ? _a : [{ field: 'text' }];
182
+ this.filter = (_b = state === null || state === void 0 ? void 0 : state.filter) !== null && _b !== void 0 ? _b : null;
183
+ this.group = (_c = state === null || state === void 0 ? void 0 : state.group) !== null && _c !== void 0 ? _c : [{ field: 'group' }];
184
+ if (!lazy) {
185
+ this.fetch();
186
+ }
187
+ }
188
+ get options() {
189
+ const result = new Map();
190
+ const flat = [];
191
+ const groupField = this.group[0].field;
192
+ this.traverse(this.data, item => {
193
+ var _a, _b;
194
+ const group = item[groupField];
195
+ if (group) {
196
+ if (result.has(group)) {
197
+ (_b = (_a = result.get(group)) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.push(item);
198
+ }
199
+ else {
200
+ result.set(group, {
201
+ value: group,
202
+ text: String(group),
203
+ options: [item],
204
+ });
205
+ }
206
+ }
207
+ else {
208
+ flat.push(item);
209
+ }
210
+ }, groupField);
211
+ return [...flat, ...Array.from(result.values())];
212
+ }
213
+ get state() {
214
+ var _a;
215
+ return {
216
+ sort: this.sort,
217
+ filter: this.searchFilter || this.filter
218
+ ? this.searchFilter && this.filter
219
+ ? { logic: 'and', filters: [this.searchFilter, this.filter] }
220
+ : (_a = this.searchFilter) !== null && _a !== void 0 ? _a : this.filter
221
+ : undefined,
222
+ group: this.group,
223
+ };
224
+ }
225
+ get searchFilter() {
226
+ if (!this.search) {
227
+ return undefined;
228
+ }
229
+ const filter = { operator: 'contains', value: this.search, ignoreCase: true };
230
+ return {
231
+ logic: 'or',
232
+ filters: [
233
+ Object.assign(Object.assign({}, filter), { field: 'text' }),
234
+ ...(this.searchByGroup ? [Object.assign(Object.assign({}, filter), { field: 'group' })] : []),
235
+ ],
236
+ };
237
+ }
238
+ }
239
+ __decorate([
240
+ observable,
241
+ __metadata("design:type", Object)
242
+ ], DropdownState.prototype, "loading", void 0);
243
+ __decorate([
244
+ observable,
245
+ __metadata("design:type", Object)
246
+ ], DropdownState.prototype, "search", void 0);
247
+ __decorate([
248
+ computed,
249
+ __metadata("design:type", Object),
250
+ __metadata("design:paramtypes", [])
251
+ ], DropdownState.prototype, "options", null);
252
+ __decorate([
253
+ computed,
254
+ __metadata("design:type", Object),
255
+ __metadata("design:paramtypes", [])
256
+ ], DropdownState.prototype, "state", null);
257
+ __decorate([
258
+ computed,
259
+ __metadata("design:type", Object),
260
+ __metadata("design:paramtypes", [])
261
+ ], DropdownState.prototype, "searchFilter", null);
262
+ __decorate([
263
+ observable,
264
+ __metadata("design:type", Object)
265
+ ], DropdownState.prototype, "dataSource", void 0);
266
+ __decorate([
267
+ observable,
268
+ __metadata("design:type", Boolean)
269
+ ], DropdownState.prototype, "searchByGroup", void 0);
270
+ __decorate([
271
+ observable,
272
+ __metadata("design:type", Array)
273
+ ], DropdownState.prototype, "sort", void 0);
274
+ __decorate([
275
+ observable,
276
+ __metadata("design:type", Object)
277
+ ], DropdownState.prototype, "filter", void 0);
278
+ __decorate([
279
+ observable,
280
+ __metadata("design:type", Array)
281
+ ], DropdownState.prototype, "group", void 0);
282
+ __decorate([
283
+ observable,
284
+ __metadata("design:type", Array)
285
+ ], DropdownState.prototype, "data", void 0);
286
+ __decorate([
287
+ action,
288
+ __metadata("design:type", Object)
289
+ ], DropdownState.prototype, "setSearch", void 0);
290
+ __decorate([
291
+ action,
292
+ __metadata("design:type", Object)
293
+ ], DropdownState.prototype, "setDataSource", void 0);
294
+ __decorate([
295
+ action,
296
+ __metadata("design:type", Object)
297
+ ], DropdownState.prototype, "setSearchByGroup", void 0);
298
+ __decorate([
299
+ action,
300
+ __metadata("design:type", Object)
301
+ ], DropdownState.prototype, "setSort", void 0);
302
+ __decorate([
303
+ action,
304
+ __metadata("design:type", Object)
305
+ ], DropdownState.prototype, "setFilter", void 0);
306
+ __decorate([
307
+ action,
308
+ __metadata("design:type", Object)
309
+ ], DropdownState.prototype, "setGroup", void 0);
310
+ __decorate([
311
+ action,
312
+ __metadata("design:type", Object)
313
+ ], DropdownState.prototype, "fetch", void 0);
314
+ //# sourceMappingURL=dropdown-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-state.js","sourceRoot":"","sources":["../src/dropdown-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { SyntheticEvent, ChangeEvent, Key, ReactNode } from 'react';
2
+ import { FieldState, FormState, ValidatableMapOrArray } from 'formstate';
3
+ export declare class CheckboxFieldState extends FieldState<boolean> {
4
+ onChangeHandler: (_0: any, checked: boolean) => void;
5
+ DEPRECATED_onChangeHandler: (_0: SyntheticEvent<HTMLInputElement>, data: {
6
+ checked?: boolean;
7
+ }) => void;
8
+ }
9
+ export declare class InputFieldState<T> extends FieldState<T> {
10
+ onChangeHandler: (_0: SyntheticEvent<HTMLInputElement>, data: {
11
+ value: T;
12
+ }) => void;
13
+ onChangeNativeHandler: (event: ChangeEvent<HTMLInputElement>) => void;
14
+ }
15
+ export declare class TextAreaFieldState<T> extends FieldState<T> {
16
+ /**
17
+ * react-semantic type for onChange event of TextArea component seems to have a bug with data object type
18
+ * so declaring data as any
19
+ */
20
+ onChangeHandler: (_0: SyntheticEvent<HTMLTextAreaElement>, data: any) => void;
21
+ }
22
+ export declare class DropdownFieldState<T> extends FieldState<T> {
23
+ /**
24
+ * react-semantic type for onChange event of Dropdown component seems to have a bug with data object type
25
+ * so declaring data as any
26
+ */
27
+ onChangeHandler: (_0: SyntheticEvent<HTMLElement>, data: any) => void;
28
+ }
29
+ export declare class DropdownSearchFieldState<T> extends FieldState<T> {
30
+ onChangeHandler: (_0: SyntheticEvent<HTMLElement>, data: {
31
+ searchQuery: T;
32
+ }) => void;
33
+ }
34
+ export declare class DatetimeFieldState extends FieldState<Date | null> {
35
+ onChangeHandler: (event: {
36
+ target: {
37
+ value: Date | null;
38
+ };
39
+ }) => void;
40
+ }
41
+ export interface Option<T> {
42
+ key: Key;
43
+ text: ReactNode;
44
+ value: T;
45
+ }
46
+ export declare function enumToOptions<T>(enumObject: T, nameProvider?: (value: T[keyof T]) => Option<T[keyof T]>['text']): Option<T[keyof T]>[];
47
+ export declare function getEnumKeys<T>(enumObject: T): (keyof T)[];
48
+ export declare function getEnumValues<T>(enumObject: T): T[keyof T][];
49
+ export declare type FormValues = string | number | boolean | (string | number | boolean)[];
50
+ export interface FormStateAsJS {
51
+ [index: string]: FormValues | Map<any, any> | Set<any> | FormStateAsJS;
52
+ }
53
+ export declare function traverseFormState<T extends ValidatableMapOrArray>(recursive: boolean, formState: FormState<T>, onFormVisit?: (key: string, form: FormState<any>) => void, onFieldVisit?: (key: string, field: FieldState<any>) => void): void;
54
+ export declare function BAD_formStateToJS<T extends ValidatableMapOrArray>(formState: FormState<T>): FormStateAsJS;
55
+ export declare type FormStateShape<T> = T extends FormState<infer U>[] ? FormStateMapOrObject<U>[] : FormStateMapOrObject<T>;
56
+ declare type FormStateMapOrObject<T> = T extends Map<infer K, infer V> ? FormStateObject<Record<K & (string | number | symbol), V>> : FormStateObject<T>;
57
+ declare type FormStateObject<T> = {
58
+ [P in keyof T]: T[P] extends FieldState<infer U> ? U : T[P] extends FormState<infer U> ? FormStateShape<U> : never;
59
+ };
60
+ export declare function formStateToJS<T extends ValidatableMapOrArray>(formState: FormState<T>): FormStateShape<T>;
61
+ export declare type RecursivePartial<T> = T extends (infer U)[] ? RecursivePartialObject<U>[] : RecursivePartialObject<T>;
62
+ declare type RecursivePartialObject<T> = {
63
+ [P in keyof T]?: T[P] extends Record<any, any> ? RecursivePartial<T[P]> : T[P];
64
+ };
65
+ export declare function setFormStateValues<T extends ValidatableMapOrArray>(formState: FormState<T>, data: RecursivePartial<FormStateShape<T>>, triggerValidation?: boolean): FormState<T>;
66
+ export declare function commitFormState<T extends ValidatableMapOrArray>(formState: FormState<T>): void;
67
+ export declare function camelCaseToTitleCase(value: string): string;
68
+ export declare function isFormStateChanged<T extends ValidatableMapOrArray>(formState: FormState<T>): import("mobx").IComputedValue<boolean>;
69
+ export {};
70
+ //# sourceMappingURL=form-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-helpers.d.ts","sourceRoot":"","sources":["../src/form-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import { FieldState, FormState } from 'formstate';
2
+ import { toJS, isObservableMap, runInAction, transaction, computed, comparer } from 'mobx';
3
+ export class CheckboxFieldState extends FieldState {
4
+ constructor() {
5
+ super(...arguments);
6
+ Object.defineProperty(this, "onChangeHandler", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: (_0, checked) => {
11
+ this.onChange(checked);
12
+ }
13
+ });
14
+ // eslint-disable-next-line @typescript-eslint/naming-convention
15
+ Object.defineProperty(this, "DEPRECATED_onChangeHandler", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: (_0, data) => {
20
+ this.onChange(!!data.checked);
21
+ }
22
+ });
23
+ }
24
+ }
25
+ export class InputFieldState extends FieldState {
26
+ constructor() {
27
+ super(...arguments);
28
+ Object.defineProperty(this, "onChangeHandler", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: (_0, data) => {
33
+ this.onChange(data.value);
34
+ }
35
+ });
36
+ Object.defineProperty(this, "onChangeNativeHandler", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: (event) => {
41
+ this.onChange(event.currentTarget.value);
42
+ }
43
+ });
44
+ }
45
+ }
46
+ export class TextAreaFieldState extends FieldState {
47
+ constructor() {
48
+ super(...arguments);
49
+ /**
50
+ * react-semantic type for onChange event of TextArea component seems to have a bug with data object type
51
+ * so declaring data as any
52
+ */
53
+ Object.defineProperty(this, "onChangeHandler", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: (_0, data) => {
58
+ this.onChange(data.value);
59
+ }
60
+ });
61
+ }
62
+ }
63
+ export class DropdownFieldState extends FieldState {
64
+ constructor() {
65
+ super(...arguments);
66
+ /**
67
+ * react-semantic type for onChange event of Dropdown component seems to have a bug with data object type
68
+ * so declaring data as any
69
+ */
70
+ Object.defineProperty(this, "onChangeHandler", {
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ value: (_0, data) => {
75
+ this.onChange(data.value);
76
+ }
77
+ });
78
+ }
79
+ }
80
+ export class DropdownSearchFieldState extends FieldState {
81
+ constructor() {
82
+ super(...arguments);
83
+ Object.defineProperty(this, "onChangeHandler", {
84
+ enumerable: true,
85
+ configurable: true,
86
+ writable: true,
87
+ value: (_0, data) => {
88
+ this.onChange(data.searchQuery);
89
+ }
90
+ });
91
+ }
92
+ }
93
+ export class DatetimeFieldState extends FieldState {
94
+ constructor() {
95
+ super(...arguments);
96
+ Object.defineProperty(this, "onChangeHandler", {
97
+ enumerable: true,
98
+ configurable: true,
99
+ writable: true,
100
+ value: (event) => {
101
+ this.onChange(event.target.value);
102
+ }
103
+ });
104
+ }
105
+ }
106
+ export function enumToOptions(enumObject, nameProvider) {
107
+ return getEnumKeys(enumObject).map(k => ({
108
+ key: k,
109
+ text: nameProvider ? nameProvider(enumObject[k]) : k,
110
+ value: enumObject[k],
111
+ }));
112
+ }
113
+ export function getEnumKeys(enumObject) {
114
+ let keys = Object.keys(enumObject);
115
+ if (keys.some(k => typeof enumObject[k] === 'number')) {
116
+ keys = keys.filter(k => typeof enumObject[k] === 'number');
117
+ }
118
+ return keys;
119
+ }
120
+ export function getEnumValues(enumObject) {
121
+ return getEnumKeys(enumObject).map(k => enumObject[k]);
122
+ }
123
+ export function traverseFormState(recursive, formState, onFormVisit, onFieldVisit) {
124
+ const visitChild = (key, child) => {
125
+ if (child instanceof FormState) {
126
+ if (recursive) {
127
+ traverseFormState(recursive, child, onFormVisit, onFieldVisit);
128
+ }
129
+ if (onFormVisit) {
130
+ onFormVisit(key, child);
131
+ }
132
+ }
133
+ else if (onFieldVisit) {
134
+ onFieldVisit(key, child);
135
+ }
136
+ };
137
+ if (Array.isArray(formState.$)) {
138
+ formState.$.forEach((child, index) => visitChild(index.toString(), child));
139
+ }
140
+ else {
141
+ (isObservableMap(formState.$)
142
+ ? Array.from(formState.$)
143
+ : Object.entries(formState.$)).forEach(([key, child]) => visitChild(key, child));
144
+ }
145
+ }
146
+ // eslint-disable-next-line @typescript-eslint/naming-convention
147
+ export function BAD_formStateToJS(formState) {
148
+ const formValues = {};
149
+ traverseFormState(false, formState, (key, form) => (formValues[key] = BAD_formStateToJS(form)), (key, field) => (formValues[key] = toJS(field.value)));
150
+ return formValues;
151
+ }
152
+ export function formStateToJS(formState) {
153
+ const formValues = Array.isArray(formState.$) ? [] : {};
154
+ traverseFormState(false, formState, (key, form) => (formValues[key] = formStateToJS(form)), (key, field) => (formValues[key] = toJS(field.$)));
155
+ return formValues;
156
+ }
157
+ export function setFormStateValues(formState, data, triggerValidation = false) {
158
+ if (Array.isArray(formState.$) && data.length !== formState.$.length) {
159
+ throw new Error('Number of elements in data object node is different from number of element in form.' +
160
+ ' All array nodes should match in size before values can be applied to form.');
161
+ }
162
+ transaction(() => {
163
+ traverseFormState(false, formState, (key, form) => {
164
+ if (data instanceof Map || isObservableMap(data)) {
165
+ if (data.has(key)) {
166
+ setFormStateValues(form, data.get(key));
167
+ }
168
+ }
169
+ else {
170
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
171
+ setFormStateValues(form, data[key]);
172
+ }
173
+ }
174
+ }, (key, field) => {
175
+ if (data instanceof Map || isObservableMap(data)) {
176
+ if (data.has(key)) {
177
+ runInAction(() => {
178
+ field.value = data.get(key);
179
+ field.$ = data.get(key);
180
+ });
181
+ }
182
+ }
183
+ else {
184
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
185
+ runInAction(() => {
186
+ field.value = data[key];
187
+ field.$ = data[key];
188
+ });
189
+ }
190
+ }
191
+ });
192
+ if (triggerValidation) {
193
+ const setValidatedSubFields = (form) => {
194
+ form.validatedSubFields = form.getValues();
195
+ };
196
+ traverseFormState(true, formState, (_0, form) => {
197
+ setValidatedSubFields(form);
198
+ });
199
+ setValidatedSubFields(formState);
200
+ formState.validate();
201
+ }
202
+ });
203
+ return formState;
204
+ }
205
+ export function commitFormState(formState) {
206
+ traverseFormState(true, formState, undefined, (_0, field) => {
207
+ field.dirty = false;
208
+ field._initValue = field.value;
209
+ });
210
+ }
211
+ export function camelCaseToTitleCase(value) {
212
+ const regexp = /[A-Z](?=[A-Z][a-z])|[^A-Z](?=[A-Z])|[A-Za-z](?=[^A-Za-z])/g;
213
+ return value.replace(regexp, '$& ');
214
+ }
215
+ export function isFormStateChanged(formState) {
216
+ return computed(() => {
217
+ let isChanged = false;
218
+ traverseFormState(true, formState, undefined, (_0, field) => {
219
+ const isValueChanged = () => {
220
+ if (field instanceof InputFieldState) {
221
+ if (field._initValue === undefined && field.value === '') {
222
+ return false;
223
+ }
224
+ }
225
+ return !comparer.structural(field._initValue, field.value);
226
+ };
227
+ isChanged = isChanged || (field.dirty === true && isValueChanged());
228
+ });
229
+ return isChanged;
230
+ });
231
+ }
232
+ //# sourceMappingURL=form-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-helpers.js","sourceRoot":"","sources":["../src/form-helpers.ts"],"names":[],"mappings":"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"}