@servicetitan/form-state 31.1.0 → 31.3.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 (37) hide show
  1. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.js +61 -57
  2. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.js.map +1 -1
  3. package/dist/async-lazy-dropdown-state/index.js +1 -0
  4. package/dist/async-lazy-dropdown-state/index.js.map +1 -1
  5. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.js +23 -13
  6. package/dist/async-lazy-dropdown-state/use-async-lazy-dropdown-state.js.map +1 -1
  7. package/dist/date-range.js +2 -1
  8. package/dist/date-range.js.map +1 -1
  9. package/dist/demo/dropdown-state.js +284 -60
  10. package/dist/demo/dropdown-state.js.map +1 -1
  11. package/dist/demo/index.js +1 -0
  12. package/dist/demo/index.js.map +1 -1
  13. package/dist/dropdown-state.js +168 -222
  14. package/dist/dropdown-state.js.map +1 -1
  15. package/dist/form-helpers.js +73 -116
  16. package/dist/form-helpers.js.map +1 -1
  17. package/dist/form-validators.js +25 -39
  18. package/dist/form-validators.js.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/persistent-form-state/domain-storage.js +22 -16
  22. package/dist/persistent-form-state/domain-storage.js.map +1 -1
  23. package/dist/persistent-form-state/in-memory-storage.js +14 -5
  24. package/dist/persistent-form-state/in-memory-storage.js.map +1 -1
  25. package/dist/persistent-form-state/index.js +1 -0
  26. package/dist/persistent-form-state/index.js.map +1 -1
  27. package/dist/persistent-form-state/persistent-form-state.js +40 -71
  28. package/dist/persistent-form-state/persistent-form-state.js.map +1 -1
  29. package/package.json +5 -5
  30. package/dist/__tests__/form-helpers.test.js +0 -263
  31. package/dist/__tests__/form-helpers.test.js.map +0 -1
  32. package/dist/__tests__/form-validators.test.js +0 -48
  33. package/dist/__tests__/form-validators.test.js.map +0 -1
  34. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.js +0 -46
  35. package/dist/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.js.map +0 -1
  36. package/dist/persistent-form-state/__tests__/domain-storage.test.js +0 -60
  37. package/dist/persistent-form-state/__tests__/domain-storage.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistent-form-state/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"sources":["../../src/persistent-form-state/index.ts"],"sourcesContent":["export * from './persistent-form-state';\nexport * from './domain-storage';\nexport * from './in-memory-storage';\n"],"names":[],"mappings":"AAAA,cAAc,0BAA0B;AACxC,cAAc,mBAAmB;AACjC,cAAc,sBAAsB"}
@@ -1,87 +1,55 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
1
14
  import { autorun } from 'mobx';
2
15
  import { FormState } from 'formstate';
3
16
  import { MemoryStorage } from './in-memory-storage';
4
- import { setFormStateValues, formStateToJS, } from '../form-helpers';
17
+ import { setFormStateValues, formStateToJS } from '../form-helpers';
5
18
  import { DomainStorage } from './domain-storage';
6
- export var PersistenceMode;
7
- (function (PersistenceMode) {
19
+ export var PersistenceMode = /*#__PURE__*/ function(PersistenceMode) {
8
20
  PersistenceMode[PersistenceMode["Session"] = 0] = "Session";
9
21
  PersistenceMode[PersistenceMode["Domain"] = 1] = "Domain";
10
22
  PersistenceMode[PersistenceMode["InMemory"] = 2] = "InMemory";
11
- })(PersistenceMode || (PersistenceMode = {}));
23
+ return PersistenceMode;
24
+ }({});
12
25
  export class PersistentFormState extends FormState {
13
- constructor($, cacheKey, persistenceMode, autoSave, version) {
14
- super($);
15
- Object.defineProperty(this, "cacheKey", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: cacheKey
20
- });
21
- Object.defineProperty(this, "persistenceMode", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: persistenceMode
26
- });
27
- Object.defineProperty(this, "storageSystem", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: void 0
32
- });
33
- Object.defineProperty(this, "resetFormSuper", {
34
- enumerable: true,
35
- configurable: true,
36
- writable: true,
37
- value: this.reset
38
- });
39
- Object.defineProperty(this, "save", {
40
- enumerable: true,
41
- configurable: true,
42
- writable: true,
43
- value: () => {
44
- this.storageSystem.setItem(this.cacheKey, formStateToJS(this));
26
+ constructor($, cacheKey, persistenceMode, autoSave, version){
27
+ super($), _define_property(this, "cacheKey", void 0), _define_property(this, "persistenceMode", void 0), _define_property(this, "storageSystem", void 0), _define_property(this, "resetFormSuper", void 0), _define_property(this, "save", void 0), _define_property(this, "resetForm", void 0), _define_property(this, "trackChange", void 0), _define_property(this, "getCached", void 0), this.cacheKey = cacheKey, this.persistenceMode = persistenceMode, this.resetFormSuper = this.reset, this.save = ()=>{
28
+ this.storageSystem.setItem(this.cacheKey, formStateToJS(this));
29
+ }, this.resetForm = ()=>{
30
+ this.resetFormSuper();
31
+ this.storageSystem.removeItem(this.cacheKey);
32
+ }, this.trackChange = ()=>{
33
+ autorun(()=>this.save(), {
34
+ delay: 500
35
+ });
36
+ }, this.getCached = ()=>{
37
+ const data = this.storageSystem.getItem(this.cacheKey);
38
+ if (data) {
39
+ setFormStateValues(this, data);
45
40
  }
46
- });
47
- Object.defineProperty(this, "resetForm", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: () => {
52
- this.resetFormSuper();
53
- this.storageSystem.removeItem(this.cacheKey);
54
- }
55
- });
56
- Object.defineProperty(this, "trackChange", {
57
- enumerable: true,
58
- configurable: true,
59
- writable: true,
60
- value: () => {
61
- autorun(() => this.save(), { delay: 500 });
62
- }
63
- });
64
- Object.defineProperty(this, "getCached", {
65
- enumerable: true,
66
- configurable: true,
67
- writable: true,
68
- value: () => {
69
- const data = this.storageSystem.getItem(this.cacheKey);
70
- if (data) {
71
- setFormStateValues(this, data);
72
- }
73
- }
74
- });
75
- if (PersistenceMode.Domain === this.persistenceMode) {
41
+ };
42
+ if (1 === this.persistenceMode) {
76
43
  if (!version) {
77
44
  throw 'Set a data structure version.';
78
45
  }
79
- this.storageSystem = new DomainStorage({ cacheKey, version });
80
- }
81
- else if (PersistenceMode.Session === this.persistenceMode) {
46
+ this.storageSystem = new DomainStorage({
47
+ cacheKey,
48
+ version
49
+ });
50
+ } else if (0 === this.persistenceMode) {
82
51
  throw 'Use of Session storage is currently unsafe';
83
- }
84
- else {
52
+ } else {
85
53
  this.storageSystem = MemoryStorage;
86
54
  }
87
55
  this.getCached();
@@ -90,4 +58,5 @@ export class PersistentFormState extends FormState {
90
58
  }
91
59
  }
92
60
  }
61
+
93
62
  //# sourceMappingURL=persistent-form-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistent-form-state.js","sourceRoot":"","sources":["../../src/persistent-form-state/persistent-form-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAyB,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAmB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAGH,kBAAkB,EAClB,aAAa,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,2DAAO,CAAA;IACP,yDAAM,CAAA;IACN,6DAAQ,CAAA;AACZ,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,OAAO,mBAAqD,SAAQ,SAAY;IAIlF,YACI,CAAI,EACI,QAAgB,EAChB,eAAgC,EACxC,QAAkB,EAClB,OAAgB;QAEhB,KAAK,CAAC,CAAC,CAAC,CAAC;QALT;;;;mBAAQ,QAAQ;WAAQ;QACxB;;;;mBAAQ,eAAe;WAAiB;QANpC;;;;;WAAsD;QACtD;;;;mBAAiB,IAAI,CAAC,KAAK;WAAC;QA4BpC;;;;mBAAO,GAAG,EAAE;gBACR,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC;WAAC;QAEF;;;;mBAAY,GAAG,EAAE;gBACb,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,CAAC;WAAC;QAEM;;;;mBAAc,GAAG,EAAE;gBACvB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC;WAAC;QAEM;;;;mBAAY,GAAG,EAAE;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEvD,IAAI,IAAI,EAAE,CAAC;oBACP,kBAAkB,CAAC,IAAI,EAAE,IAAsD,CAAC,CAAC;gBACrF,CAAC;YACL,CAAC;WAAC;QApCE,IAAI,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,+BAA+B,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1D,MAAM,4CAA4C,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;CAsBJ"}
1
+ {"version":3,"sources":["../../src/persistent-form-state/persistent-form-state.ts"],"sourcesContent":["import { autorun } from 'mobx';\nimport { FormState, ValidatableMapOrArray } from 'formstate';\nimport { InMemoryStorage, MemoryStorage } from './in-memory-storage';\nimport {\n RecursivePartial,\n FormStateShape,\n setFormStateValues,\n formStateToJS,\n} from '../form-helpers';\nimport { DomainStorage } from './domain-storage';\n\nexport enum PersistenceMode {\n Session,\n Domain,\n InMemory,\n}\n\nexport class PersistentFormState<T extends ValidatableMapOrArray> extends FormState<T> {\n private storageSystem!: InMemoryStorage<T> | DomainStorage<T>;\n private resetFormSuper = this.reset;\n\n constructor(\n $: T,\n private cacheKey: string,\n private persistenceMode: PersistenceMode,\n autoSave?: boolean,\n version?: number\n ) {\n super($);\n\n if (PersistenceMode.Domain === this.persistenceMode) {\n if (!version) {\n throw 'Set a data structure version.';\n }\n this.storageSystem = new DomainStorage<T>({ cacheKey, version });\n } else if (PersistenceMode.Session === this.persistenceMode) {\n throw 'Use of Session storage is currently unsafe';\n } else {\n this.storageSystem = MemoryStorage;\n }\n\n this.getCached();\n if (autoSave) {\n this.trackChange();\n }\n }\n\n save = () => {\n this.storageSystem.setItem(this.cacheKey, formStateToJS(this));\n };\n\n resetForm = () => {\n this.resetFormSuper();\n this.storageSystem.removeItem(this.cacheKey);\n };\n\n private trackChange = () => {\n autorun(() => this.save(), { delay: 500 });\n };\n\n private getCached = () => {\n const data = this.storageSystem.getItem(this.cacheKey);\n\n if (data) {\n setFormStateValues(this, data as unknown as RecursivePartial<FormStateShape<T>>);\n }\n };\n}\n"],"names":["autorun","FormState","MemoryStorage","setFormStateValues","formStateToJS","DomainStorage","PersistenceMode","PersistentFormState","constructor","$","cacheKey","persistenceMode","autoSave","version","storageSystem","resetFormSuper","save","resetForm","trackChange","getCached","reset","setItem","removeItem","delay","data","getItem"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,SAAS,QAA+B,YAAY;AAC7D,SAA0BC,aAAa,QAAQ,sBAAsB;AACrE,SAGIC,kBAAkB,EAClBC,aAAa,QACV,kBAAkB;AACzB,SAASC,aAAa,QAAQ,mBAAmB;AAEjD,OAAO,IAAA,AAAKC,yCAAAA;;;;WAAAA;MAIX;AAED,OAAO,MAAMC,4BAA6DN;IAItEO,YACIC,CAAI,EACJ,AAAQC,QAAgB,EACxB,AAAQC,eAAgC,EACxCC,QAAkB,EAClBC,OAAgB,CAClB;QACE,KAAK,CAACJ,mGAVV,uBAAQK,iBAAR,KAAA,IACA,uBAAQC,kBAAR,KAAA,IA4BAC,uBAAAA,QAAAA,KAAAA,IAIAC,uBAAAA,aAAAA,KAAAA,IAKA,uBAAQC,eAAR,KAAA,IAIA,uBAAQC,aAAR,KAAA,SArCYT,WAAAA,eACAC,kBAAAA,sBALJI,iBAAiB,IAAI,CAACK,KAAK,OA4BnCJ,OAAO;YACH,IAAI,CAACF,aAAa,CAACO,OAAO,CAAC,IAAI,CAACX,QAAQ,EAAEN,cAAc,IAAI;QAChE,QAEAa,YAAY;YACR,IAAI,CAACF,cAAc;YACnB,IAAI,CAACD,aAAa,CAACQ,UAAU,CAAC,IAAI,CAACZ,QAAQ;QAC/C,QAEQQ,cAAc;YAClBlB,QAAQ,IAAM,IAAI,CAACgB,IAAI,IAAI;gBAAEO,OAAO;YAAI;QAC5C,QAEQJ,YAAY;YAChB,MAAMK,OAAO,IAAI,CAACV,aAAa,CAACW,OAAO,CAAC,IAAI,CAACf,QAAQ;YAErD,IAAIc,MAAM;gBACNrB,mBAAmB,IAAI,EAAEqB;YAC7B;QACJ;QApCI,IAAIlB,MAA2B,IAAI,CAACK,eAAe,EAAE;YACjD,IAAI,CAACE,SAAS;gBACV,MAAM;YACV;YACA,IAAI,CAACC,aAAa,GAAG,IAAIT,cAAiB;gBAAEK;gBAAUG;YAAQ;QAClE,OAAO,IAAIP,MAA4B,IAAI,CAACK,eAAe,EAAE;YACzD,MAAM;QACV,OAAO;YACH,IAAI,CAACG,aAAa,GAAGZ;QACzB;QAEA,IAAI,CAACiB,SAAS;QACd,IAAIP,UAAU;YACV,IAAI,CAACM,WAAW;QACpB;IACJ;AAsBJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/form-state",
3
- "version": "31.1.0",
3
+ "version": "31.3.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,17 +15,17 @@
15
15
  "src"
16
16
  ],
17
17
  "devDependencies": {
18
- "@servicetitan/data-query": "^31.1.0",
18
+ "@servicetitan/data-query": "^31.3.0",
19
19
  "@servicetitan/design-system": "~14.5.1",
20
20
  "@types/debounce": "~1.2.1",
21
21
  "@types/react": "~18.2.55",
22
22
  "formstate": "^2.1.0",
23
23
  "mobx": "~6.10.2",
24
- "mobx-react": "~9.0.2",
24
+ "mobx-react": "^9.2.0",
25
25
  "react": "^18.2.0"
26
26
  },
27
27
  "peerDependencies": {
28
- "@servicetitan/data-query": "^31.1.0",
28
+ "@servicetitan/data-query": "^31.3.0",
29
29
  "@servicetitan/design-system": ">=13.2.1",
30
30
  "formstate": "^2.1.0",
31
31
  "mobx": ">=6.6.0",
@@ -41,5 +41,5 @@
41
41
  "cli": {
42
42
  "webpack": false
43
43
  },
44
- "gitHead": "0307e2a84704ceddcef55ff15519cb5aa6ccb228"
44
+ "gitHead": "7fc7b9cbf766fe23879ae81831f28bdd96559bce"
45
45
  }
@@ -1,263 +0,0 @@
1
- import { FormState, FieldState } from 'formstate';
2
- import { commitFormState, formStateToJS, BAD_formStateToJS, InputFieldState, traverseFormState, setFormStateValues, isFieldStateChanged, isFormStateChanged, } from '../form-helpers';
3
- const getFormState = () => new FormState({
4
- field: new InputFieldState(0),
5
- subForm: new FormState({
6
- subField: new InputFieldState(1),
7
- subSubForm: new FormState({
8
- subSubField: new InputFieldState(1),
9
- subSubField2: new InputFieldState(2),
10
- }),
11
- subSubFormArray: new FormState([
12
- new FormState({
13
- veryNestedField: new FieldState(1),
14
- }),
15
- ]),
16
- subSubFormMap: new FormState(new Map([
17
- ['subSubMapField', new FieldState('x')],
18
- ['subSubMapField2', new FieldState('y')],
19
- ])),
20
- }),
21
- subFormArray: new FormState([
22
- new FormState({
23
- a: new InputFieldState(1),
24
- }),
25
- ]),
26
- subFormArray2: new FormState([new InputFieldState(1), new InputFieldState(2)]),
27
- subFormMap: new FormState(new Map([
28
- ['subMapField', new FieldState('one')],
29
- ['subMapField2', new FieldState('two')],
30
- ['subMapField3', new FieldState('three')],
31
- ])),
32
- });
33
- test('traverseFormState recursive', () => {
34
- const form = getFormState();
35
- const traverseResult = [];
36
- traverseFormState(true, form, key => {
37
- traverseResult.push(key);
38
- }, key => {
39
- traverseResult.push(key);
40
- });
41
- expect(traverseResult).toContain('field');
42
- expect(traverseResult).toContain('subForm');
43
- expect(traverseResult).toContain('subField');
44
- expect(traverseResult).toContain('veryNestedField');
45
- expect(traverseResult).toContain('subSubMapField');
46
- });
47
- test('traverseFormState non recursive', () => {
48
- const form = getFormState();
49
- const traverseResult = [];
50
- traverseFormState(false, form, key => {
51
- traverseResult.push(key);
52
- }, key => {
53
- traverseResult.push(key);
54
- });
55
- expect(traverseResult).toContain('field');
56
- expect(traverseResult).toContain('subForm');
57
- expect(traverseResult).not.toContain('subField');
58
- });
59
- test('formStateToJS', () => {
60
- const form = getFormState();
61
- const formStateAsJS = formStateToJS(form);
62
- expect(formStateAsJS).toMatchSnapshot();
63
- });
64
- test('formStateToJS complex types', () => {
65
- const data = {
66
- a: {
67
- '1': 1,
68
- 'string': 'string',
69
- 'true': true,
70
- },
71
- b: [3, 5, 7],
72
- c: {
73
- x: 1,
74
- y: 'string',
75
- z: true,
76
- },
77
- d: {
78
- '1': true,
79
- '2': {
80
- x: 2,
81
- },
82
- },
83
- };
84
- const mapForm = new Map([
85
- ['1', new FieldState(true)],
86
- [
87
- '2',
88
- new FormState({
89
- x: new FieldState(2),
90
- }),
91
- ],
92
- ]);
93
- const form = new FormState({
94
- a: new FieldState(data.a),
95
- b: new FieldState(data.b),
96
- c: new FieldState(data.c),
97
- d: new FormState(mapForm),
98
- });
99
- expect(formStateToJS(form)).toEqual(data);
100
- expect(BAD_formStateToJS(form)).toEqual(data);
101
- });
102
- test('setFormStateValues', () => {
103
- const form = setFormStateValues(getFormState(), {
104
- field: 2,
105
- subForm: {
106
- subSubForm: {
107
- subSubField: undefined,
108
- },
109
- subSubFormMap: { subSubMapField2: 'z' },
110
- },
111
- subFormArray2: [3, 4],
112
- subFormMap: { subMapField: 'infinity' },
113
- });
114
- expect(form.$.field.value).toBe(2);
115
- expect(form.$.subForm.$.subSubForm.$.subSubField.value).toBe(undefined);
116
- expect(form.$.subForm.$.subSubForm.$.subSubField2.value).toBe(2);
117
- expect(form.$.subForm.$.subSubFormMap.$.get('subSubMapField2').value).toBe('z');
118
- expect(form.$.subFormArray2.$.map(item => item.value)).toEqual([3, 4]);
119
- expect(form.$.subFormMap.$.get('subMapField').value).toBe('infinity');
120
- });
121
- test('setFormStateValues array length mismatch', () => {
122
- const form = new FormState([
123
- new FormState({
124
- a: new FieldState(1),
125
- b: new FormState([
126
- new FormState({
127
- c: new FieldState(1),
128
- d: new FieldState(1),
129
- }),
130
- ]),
131
- }),
132
- ]);
133
- expect(() => setFormStateValues(form, [{ a: 1 }, { a: 2 }])).toThrowError(/Number of elements/);
134
- expect(() => setFormStateValues(form, [{ a: 1, b: [{ c: 1 }, { c: 1 }] }])).toThrowError(/Number of elements/);
135
- });
136
- test('setFormStateValues top level array', () => {
137
- const formState = new FormState([
138
- new FormState({ a: new FieldState(1), b: new FieldState(2) }),
139
- new FormState({ a: new FieldState(1), b: new FieldState(2) }),
140
- ]);
141
- setFormStateValues(formState, [
142
- { a: 4, b: 5 },
143
- { a: 5, b: 6 },
144
- ]);
145
- expect(formState.$[0].$.a.value).toBe(4);
146
- expect(formState.$[0].$.b.value).toBe(5);
147
- expect(formState.$[1].$.a.value).toBe(5);
148
- expect(formState.$[1].$.b.value).toBe(6);
149
- });
150
- test('setFormStateValues top level map', () => {
151
- const formState = new FormState(new Map([
152
- ['a', new FormState({ a: new FieldState(1), b: new FieldState(2) })],
153
- ['b', new FormState({ a: new FieldState(1), b: new FieldState(2) })],
154
- ]));
155
- setFormStateValues(formState, {
156
- a: { a: 4, b: 5 },
157
- b: { a: 5, b: 6 },
158
- });
159
- expect(formState.$.get('a').$.a.value).toBe(4);
160
- expect(formState.$.get('a').$.b.value).toBe(5);
161
- expect(formState.$.get('b').$.a.value).toBe(5);
162
- expect(formState.$.get('b').$.b.value).toBe(6);
163
- });
164
- test('commitFormState', () => {
165
- const form = getFormState();
166
- const oldFieldValue = form.$.field.value;
167
- const newFieldValue = oldFieldValue + 1;
168
- const oldSubFieldValue = form.$.subForm.$.subField.value;
169
- const newSubFieldValue = oldSubFieldValue + 1;
170
- form.$.field.value = newFieldValue;
171
- form.$.subForm.$.subField.value = newSubFieldValue;
172
- form.reset();
173
- expect(form.$.field.value).toBe(oldFieldValue);
174
- expect(form.$.subForm.$.subField.value).toBe(oldSubFieldValue);
175
- form.$.field.value = newFieldValue;
176
- form.$.subForm.$.subField.value = newSubFieldValue;
177
- commitFormState(form);
178
- form.reset();
179
- expect(form.$.field.value).toBe(newFieldValue);
180
- expect(form.$.subForm.$.subField.value).toBe(newSubFieldValue);
181
- });
182
- describe('isFieldStateChanged', () => {
183
- let fieldState;
184
- const exec = () => isFieldStateChanged(fieldState);
185
- describe('InputFieldState', () => {
186
- beforeEach(() => {
187
- fieldState = new InputFieldState(undefined);
188
- });
189
- it('should return false if value is empty string', () => {
190
- fieldState.value = '';
191
- expect(exec()).toBe(false);
192
- });
193
- it('should return false if value empty string and state is dirty', () => {
194
- fieldState.onChange('');
195
- expect(exec()).toBe(false);
196
- });
197
- it('should return false if value changed but state not dirty', () => {
198
- fieldState.value = '1';
199
- expect(exec()).toBe(false);
200
- });
201
- it('should return true if value changed and state is dirty', () => {
202
- fieldState.onChange('1');
203
- expect(exec()).toBe(true);
204
- });
205
- });
206
- describe('FieldState', () => {
207
- beforeEach(() => {
208
- fieldState = new FieldState(undefined);
209
- });
210
- it('should return true if value changed', () => {
211
- fieldState.onChange('');
212
- expect(exec()).toBe(true);
213
- });
214
- it('should return false if value changed but not dirty', () => {
215
- fieldState.value = '1';
216
- expect(exec()).toBe(false);
217
- });
218
- it('should return true if value changed and state is dirty', () => {
219
- fieldState.onChange('1');
220
- expect(exec()).toBe(true);
221
- });
222
- });
223
- describe('FieldState Object', () => {
224
- beforeEach(() => {
225
- fieldState = new FieldState({ a: 1 });
226
- });
227
- it('should compare structurally and return false if object equal', () => {
228
- fieldState.onChange({ a: 1 });
229
- expect(exec()).toBe(false);
230
- });
231
- it('should compare structurally and return true if object not equal', () => {
232
- fieldState.onChange({ a: 2 });
233
- expect(exec()).toBe(true);
234
- });
235
- it('should return false if object equal but not dirty', () => {
236
- fieldState.value = { a: 1 };
237
- expect(exec()).toBe(false);
238
- });
239
- });
240
- });
241
- describe('isFormStateChanged', () => {
242
- let formState;
243
- const exec = () => isFormStateChanged(formState).get();
244
- beforeEach(() => {
245
- formState = getFormState();
246
- });
247
- it('should return false if nothing changed', () => {
248
- expect(exec()).toBe(false);
249
- });
250
- it('should return true if field is changed', () => {
251
- formState.$.field.onChange(123);
252
- expect(exec()).toBe(true);
253
- });
254
- it('should return false if changed but value is the same', () => {
255
- formState.$.field.onChange(formState.$.field.value);
256
- expect(exec()).toBe(false);
257
- });
258
- it('should return true if sub form field is changed', () => {
259
- formState.$.subForm.$.subField.onChange(123);
260
- expect(exec()).toBe(true);
261
- });
262
- });
263
- //# sourceMappingURL=form-helpers.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-helpers.test.js","sourceRoot":"","sources":["../../src/__tests__/form-helpers.test.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { FormValidators } from '../form-validators';
2
- describe('FormValidators', () => {
3
- describe('website', () => {
4
- const exec = FormValidators.website();
5
- it('should return false if website url is valid', () => {
6
- for (const url of [
7
- 'servicetitan.com',
8
- 'www.servicetitan.com',
9
- 'http://servicetitan.com',
10
- 'http://wwww.servicetitan.com',
11
- 'https://servicetitan.com',
12
- 'https://wwww.servicetitan.com',
13
- 'something.servicetitan.com',
14
- ]) {
15
- expect(exec(url)).toBeFalsy();
16
- }
17
- });
18
- it('should return error message if website url is not valid', () => {
19
- for (const url of [
20
- 'servicetitan.c',
21
- 'servicetitan',
22
- 'htp://servicetitan.com',
23
- 'http://wwww.servicetitan.com!',
24
- 'https://servicetitan.com:',
25
- 'https://wwww.servic:etitan.com',
26
- ]) {
27
- expect(exec(url)).toBeTruthy();
28
- }
29
- });
30
- });
31
- describe('exactLength', () => {
32
- const exactLength = 10;
33
- const exec = FormValidators.exactLength(exactLength);
34
- it('should return error message if value length is greater than defined', () => {
35
- expect(exec('a'.repeat(exactLength + 1))).toBeTruthy();
36
- });
37
- it('should return error message if value length is less than defined', () => {
38
- expect(exec('a'.repeat(exactLength - 1))).toBeTruthy();
39
- });
40
- it('should return false if value length is equal to defined', () => {
41
- expect(exec('a'.repeat(exactLength))).toBeFalsy();
42
- });
43
- it('should return false if value is undefined', () => {
44
- expect(exec(undefined)).toBeFalsy();
45
- });
46
- });
47
- });
48
- //# sourceMappingURL=form-validators.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-validators.test.js","sourceRoot":"","sources":["../../src/__tests__/form-validators.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QAEtC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACnD,KAAK,MAAM,GAAG,IAAI;gBACd,kBAAkB;gBAClB,sBAAsB;gBACtB,yBAAyB;gBACzB,8BAA8B;gBAC9B,0BAA0B;gBAC1B,+BAA+B;gBAC/B,4BAA4B;aAC/B,EAAE,CAAC;gBACA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAClC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,KAAK,MAAM,GAAG,IAAI;gBACd,gBAAgB;gBAChB,cAAc;gBACd,wBAAwB;gBACxB,+BAA+B;gBAC/B,2BAA2B;gBAC3B,gCAAgC;aACnC,EAAE,CAAC;gBACA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAErD,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,46 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { useAsyncLazyDropdownState } from './use-async-lazy-dropdown-state';
4
- import { Form } from '@servicetitan/design-system';
5
- import { observer } from 'mobx-react';
6
- export default {
7
- title: 'Marketing Form/Async Select Helper',
8
- component: useAsyncLazyDropdownState,
9
- parameters: {},
10
- };
11
- const dataFetcher = async (searchString) => {
12
- const options = [
13
- { value: 1, text: 'Australia' },
14
- { value: 2, text: 'America' },
15
- { value: 3, text: 'New Zealand' },
16
- { value: 4, text: 'Spain' },
17
- { value: 5, text: 'Turkey' },
18
- { value: 6, text: 'India' },
19
- { value: 7, text: 'Russia' },
20
- { value: 8, text: 'Poland' },
21
- { value: 9, text: 'Canada' },
22
- ];
23
- // simulating remote api call
24
- const res = await new Promise(resolve => {
25
- setTimeout(() => {
26
- const resultNumber = 3;
27
- const filteredOptions = options.filter(o => o.text.toLowerCase().includes(searchString.toLowerCase()));
28
- if (filteredOptions.length > resultNumber) {
29
- filteredOptions.length = resultNumber;
30
- }
31
- resolve(filteredOptions);
32
- }, 1000);
33
- });
34
- return res;
35
- };
36
- const BasicExample = observer(() => {
37
- const [value, setValue] = useState();
38
- const [state, onOpenChange] = useAsyncLazyDropdownState(value, dataFetcher);
39
- return (_jsx(Form.AnvilSelect, { label: "Async Select (For Selects that have to fetch options from a remote server)", onChange: setValue, small: true, scrollHeight: "250px", trigger: undefined, search: {
40
- value: state.search,
41
- placeholder: 'type something',
42
- onChange: state.onSearchChange,
43
- }, value: value, onOpenChange: onOpenChange, loading: state.loading, options: state.optionsWithValue, multiple: true }));
44
- });
45
- export const basic = () => _jsx(BasicExample, {});
46
- //# sourceMappingURL=async-lazy-dropdown-state.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async-lazy-dropdown-state.stories.js","sourceRoot":"","sources":["../../src/async-lazy-dropdown-state/async-lazy-dropdown-state.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAA2B,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,eAAe;IACX,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,yBAAyB;IACpC,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;IAC/C,MAAM,OAAO,GAAG;QACZ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;QAC/B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;QAC7B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;QACjC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;QAC3B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;QAC3B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC/B,CAAC;IACF,6BAA6B;IAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAwB,OAAO,CAAC,EAAE;QAC3D,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,YAAY,GAAG,CAAC,CAAC;YACvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAC5D,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACxC,eAAe,CAAC,MAAM,GAAG,YAAY,CAAC;YAC1C,CAAC;YACD,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAO,QAAQ,CAAC,GAAG,EAAE;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAA2B,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE5E,OAAO,CACH,KAAC,IAAI,CAAC,WAAW,IACb,KAAK,EAAC,4EAA4E,EAClF,QAAQ,EAAE,QAAQ,EAClB,KAAK,QACL,YAAY,EAAC,OAAO,EACpB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,WAAW,EAAE,gBAAgB;YAC7B,QAAQ,EAAE,KAAK,CAAC,cAAc;SACjC,EACD,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,OAAO,EAAE,KAAK,CAAC,gBAAgB,EAC/B,QAAQ,SACV,CACL,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,KAAC,YAAY,KAAG,CAAC"}
@@ -1,60 +0,0 @@
1
- import { DomainStorage } from '../domain-storage';
2
- const newData = {
3
- string: 'value',
4
- number: 1,
5
- simpleObject: {
6
- name: 'name value',
7
- deepObject: {
8
- name2: 'name2 value',
9
- },
10
- },
11
- };
12
- describe('domain-storage', () => {
13
- test('getItem returns null if the key does not exist', function () {
14
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
15
- const data = storage.getItem();
16
- expect(data).toBe(null);
17
- });
18
- test('getItem returns value from storage', function () {
19
- const existingValue = JSON.stringify({ value: newData, version: 1 });
20
- localStorage.setItem('test', existingValue);
21
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
22
- const data = storage.getItem();
23
- expect(data).toEqual(newData);
24
- });
25
- test('getItem returns null when the version does not match', function () {
26
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
27
- storage.setItem('', newData);
28
- const data = storage.getItem();
29
- expect(data).toEqual(newData);
30
- const newStorage = new DomainStorage({ cacheKey: 'test', version: 2 });
31
- const newStorageData = newStorage.getItem();
32
- expect(newStorageData).toEqual(null);
33
- });
34
- test('getItem returns null when there is invalid formStateCache in storage', function () {
35
- localStorage.setItem('test', '{}');
36
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
37
- const data = storage.getItem();
38
- expect(data).toEqual(null);
39
- expect(localStorage.removeItem).toHaveBeenCalledWith('test');
40
- });
41
- test('getItem returns null when there is invalid json in storage', function () {
42
- localStorage.setItem('test', '{{}');
43
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
44
- const data = storage.getItem();
45
- expect(data).toEqual(null);
46
- });
47
- test('setItem adds value to storage', function () {
48
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
49
- storage.setItem('', newData);
50
- const expectedValue = JSON.stringify({ value: newData, version: 1 });
51
- expect(localStorage.getItem('test')).toEqual(expectedValue);
52
- });
53
- test('removeItem removes value from storage', function () {
54
- localStorage.setItem('test', '{}');
55
- const storage = new DomainStorage({ cacheKey: 'test', version: 1 });
56
- storage.removeItem();
57
- expect(localStorage.length).toEqual(0);
58
- });
59
- });
60
- //# sourceMappingURL=domain-storage.test.js.map