@servicetitan/form-state 31.2.0 → 32.0.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":"dropdown-state.js","sourceRoot":"","sources":["../../src/demo/dropdown-state.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/demo/dropdown-state.tsx"],"sourcesContent":["import { useRef, Fragment, FC } from 'react';\n\nimport { InMemoryDataSource, AsyncDataSource, FilterDescriptor } from '@servicetitan/data-query';\n\nimport {\n AnvilSelect,\n AnvilSelectOptionsProps,\n Text,\n ButtonGroup,\n Button,\n} from '@servicetitan/design-system';\n\nimport { FieldState } from 'formstate';\nimport { observer } from 'mobx-react';\n\nimport { DropdownState, DropdownOption } from '..';\n\nfunction useDropdownField<T>(initial: T) {\n return useRef(new FieldState(initial)).current;\n}\n\nfunction useDropdownState<T extends DropdownOption<any>>(state: DropdownState<T>) {\n return useRef(state).current;\n}\n\ninterface Planet extends DropdownOption<number> {\n diameter: number;\n moons: number;\n}\n\nconst options: Planet[] = [\n { value: 1, text: 'Alderaan', diameter: 12500, moons: 0 },\n { value: 2, text: 'Bespin', diameter: 118000, moons: 2 },\n { value: 3, text: 'Coruscant', diameter: 12240, moons: 4 },\n { value: 4, text: 'Dagobah', diameter: 14410, moons: 0 },\n { value: 5, text: 'Hoth', diameter: 7200, moons: 3 },\n { value: 6, text: 'Kashyyyk', diameter: 12765, moons: 3 },\n { value: 7, text: 'Naboo', diameter: 12120, moons: 3 },\n { value: 8, text: 'Tatooine', diameter: 10465, moons: 3 },\n { value: 9, text: 'Yavin', diameter: 200000, moons: 26 },\n];\n\ninterface Character extends DropdownOption<number> {\n group: string;\n}\n\nconst optionsWithGroups: Character[] = [\n { value: 1, text: 'Hem Dazon', group: 'Arcona' },\n { value: 2, text: 'El-Les', group: 'Arcona' },\n { value: 3, text: 'Jheeg', group: 'Arcona' },\n { value: 4, text: 'Paploo', group: 'Ewok' },\n { value: 5, text: 'Gallo', group: 'Gungan' },\n { value: 6, text: 'Lyonie', group: 'Gungan' },\n { value: 7, text: 'Tobler Ceel', group: 'Gungan' },\n { value: 8, text: 'Ganne', group: 'Gungan' },\n { value: 9, text: 'Augara Jowil', group: 'Gungan' },\n { value: 10, text: 'Reegesk', group: 'Ranat' },\n { value: 11, text: 'Rik-tak', group: 'Ranat' },\n { value: 12, text: 'Bahb', group: 'Zeltron' },\n { value: 13, text: 'Chantique', group: 'Zeltron' },\n { value: 14, text: 'Luxa', group: 'Zeltron' },\n { value: 15, text: 'Rahuhl', group: 'Zeltron' },\n];\n\nconst InMemoryDropdownStateExample: FC = observer(() => {\n const field = useDropdownField<AnvilSelectOptionsProps[]>([]);\n const state = useDropdownState(\n new DropdownState<Planet | Character>({\n dataSource: new InMemoryDataSource(options),\n })\n );\n\n const handleChange = (data: AnvilSelectOptionsProps | AnvilSelectOptionsProps[]) => {\n field.onChange(Array.isArray(data) ? data : [data]);\n };\n\n const withReset = (handler: () => void) => {\n return async () => {\n handleChange([]);\n state.setSearch('');\n state.setDataSource(null);\n state.setSearchByGroup(false);\n state.setSort([{ field: 'text' }]);\n state.setFilter(null);\n state.setGroup([{ field: 'group' }]);\n\n await Promise.resolve();\n\n handler();\n };\n };\n\n const withoutGroups = withReset(() => {\n state.setDataSource(new InMemoryDataSource(options));\n });\n\n const withGroups = withReset(() => {\n state.setDataSource(new InMemoryDataSource(optionsWithGroups));\n });\n\n const withGroupsAndSearch = withReset(() => {\n state.setDataSource(new InMemoryDataSource(optionsWithGroups));\n state.setSearchByGroup(true);\n });\n\n const customSort = withReset(() => {\n state.setDataSource(new InMemoryDataSource(options));\n state.setSort([{ field: 'diameter', dir: 'desc' }]);\n });\n\n const customFilter = withReset(() => {\n state.setDataSource(new InMemoryDataSource(options));\n state.setFilter({\n logic: 'and',\n filters: [{ field: 'diameter', value: 12250, operator: 'gte' }],\n });\n });\n\n const customGroup = withReset(() => {\n state.setDataSource(new InMemoryDataSource(options));\n state.setGroup([{ field: 'moons', dir: 'desc' }]);\n });\n\n return (\n <Fragment>\n <AnvilSelect\n value={field.value}\n onChange={handleChange}\n options={state.options}\n search={{ value: state.search, onChange: state.onSearchChange }}\n multiple\n />\n\n <Text size={4} className=\"m-t-4 m-b-half\">\n Without groups\n </Text>\n <Button onClick={withoutGroups}>Apply</Button>\n\n <Text size={4} className=\"m-t-4 m-b-half\">\n With groups\n </Text>\n <ButtonGroup>\n <Button onClick={withGroups}>Search in options</Button>\n <Button onClick={withGroupsAndSearch}>Search in options & groups</Button>\n </ButtonGroup>\n\n <Text size={4} className=\"m-t-4 m-b-half\">\n Custom sort\n </Text>\n <Button onClick={customSort}>Apply</Button>\n\n <Text size={4} className=\"m-t-4 m-b-half\">\n Custom filter\n </Text>\n <Button onClick={customFilter}>Apply</Button>\n\n <Text size={4} className=\"m-t-4 m-b-half\">\n Custom group\n </Text>\n <Button onClick={customGroup}>Apply</Button>\n </Fragment>\n );\n});\n\nconst AsyncDropdownStateExample: FC = observer(() => {\n const field = useDropdownField<AnvilSelectOptionsProps[]>([]);\n const state = useDropdownState(\n new DropdownState<Planet>({\n dataSource: new AsyncDataSource(\n {\n async get({ filter }) {\n const search = (filter?.filters?.[0] as FilterDescriptor | undefined)\n ?.value as string | undefined;\n\n const result = search\n ? options.filter(({ text }) =>\n text.toLowerCase().includes(search.toLowerCase())\n )\n : options;\n\n await new Promise(resolver => setTimeout(resolver, 1000));\n\n return {\n data: result,\n total: result.length,\n };\n },\n },\n undefined,\n true\n ),\n lazy: true,\n })\n );\n\n const handleChange = (data: AnvilSelectOptionsProps | AnvilSelectOptionsProps[]) => {\n field.onChange(Array.isArray(data) ? data : [data]);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n state.fetch();\n }\n };\n\n return (\n <AnvilSelect\n value={field.value}\n onChange={handleChange}\n options={state.options}\n search={{ value: state.search, onChange: state.onSearchChange }}\n onOpenChange={handleOpenChange}\n loading={state.loading}\n multiple\n />\n );\n});\n\nexport const DropdownStateExample: FC = () => {\n return (\n <Fragment>\n <Text size={5} className=\"m-b-half\">\n InMemoryDataSource\n </Text>\n <InMemoryDropdownStateExample />\n\n <Text size={5} className=\"m-t-5 m-b-half\">\n AsyncDataSource\n </Text>\n <AsyncDropdownStateExample />\n </Fragment>\n );\n};\n"],"names":["useRef","Fragment","InMemoryDataSource","AsyncDataSource","AnvilSelect","Text","ButtonGroup","Button","FieldState","observer","DropdownState","useDropdownField","initial","current","useDropdownState","state","options","value","text","diameter","moons","optionsWithGroups","group","InMemoryDropdownStateExample","field","dataSource","handleChange","data","onChange","Array","isArray","withReset","handler","setSearch","setDataSource","setSearchByGroup","setSort","setFilter","setGroup","Promise","resolve","withoutGroups","withGroups","withGroupsAndSearch","customSort","dir","customFilter","logic","filters","operator","customGroup","search","onSearchChange","multiple","size","className","onClick","AsyncDropdownStateExample","get","filter","result","toLowerCase","includes","resolver","setTimeout","total","length","undefined","lazy","handleOpenChange","open","fetch","onOpenChange","loading","DropdownStateExample"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './dropdown-state';
2
+
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/demo/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"sources":["../../src/demo/index.ts"],"sourcesContent":["export * from './dropdown-state';\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1,12 +1,25 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
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
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
2
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
16
  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;
17
+ 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
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { observable, computed, action, runInAction, makeObservable } from 'mobx';
11
24
  import debounce from 'debounce';
12
25
  function isGroupItem(item, groupedBy) {
@@ -18,288 +31,221 @@ export class DropdownState {
18
31
  const result = new Map();
19
32
  const flat = [];
20
33
  const groupField = this.group[0].field;
21
- this.traverse(this.data, item => {
22
- var _a, _b;
34
+ this.traverse(this.data, (item)=>{
23
35
  const group = item[groupField];
24
36
  if (group) {
25
37
  if (result.has(group)) {
26
- (_b = (_a = result.get(group)) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.push(item);
27
- }
28
- else {
38
+ var _result_get_options, _result_get;
39
+ (_result_get = result.get(group)) === null || _result_get === void 0 ? void 0 : (_result_get_options = _result_get.options) === null || _result_get_options === void 0 ? void 0 : _result_get_options.push(item);
40
+ } else {
29
41
  result.set(group, {
30
42
  value: group,
31
43
  text: String(group),
32
- options: [item],
44
+ options: [
45
+ item
46
+ ]
33
47
  });
34
48
  }
35
- }
36
- else {
49
+ } else {
37
50
  flat.push(item);
38
51
  }
39
52
  }, groupField);
40
- return [...flat, ...Array.from(result.values())];
53
+ return [
54
+ ...flat,
55
+ ...Array.from(result.values())
56
+ ];
41
57
  }
42
58
  get state() {
43
- var _a;
59
+ var _this_searchFilter;
44
60
  return {
45
61
  sort: this.sort,
46
- filter: this.searchFilter || this.filter
47
- ? this.searchFilter && this.filter
48
- ? { logic: 'and', filters: [this.searchFilter, this.filter] }
49
- : ((_a = this.searchFilter) !== null && _a !== void 0 ? _a : this.filter)
50
- : undefined,
51
- group: this.group,
62
+ filter: this.searchFilter || this.filter ? this.searchFilter && this.filter ? {
63
+ logic: 'and',
64
+ filters: [
65
+ this.searchFilter,
66
+ this.filter
67
+ ]
68
+ } : (_this_searchFilter = this.searchFilter) !== null && _this_searchFilter !== void 0 ? _this_searchFilter : this.filter : undefined,
69
+ group: this.group
52
70
  };
53
71
  }
54
72
  get searchFilter() {
55
73
  if (!this.search) {
56
74
  return undefined;
57
75
  }
58
- const filter = { operator: 'contains', value: this.search, ignoreCase: true };
76
+ const filter = {
77
+ operator: 'contains',
78
+ value: this.search,
79
+ ignoreCase: true
80
+ };
59
81
  return {
60
82
  logic: 'or',
61
83
  filters: [
62
- { ...filter, field: 'text' },
63
- ...(this.searchByGroup ? [{ ...filter, field: 'group' }] : []),
64
- ],
84
+ {
85
+ ...filter,
86
+ field: 'text'
87
+ },
88
+ ...this.searchByGroup ? [
89
+ {
90
+ ...filter,
91
+ field: 'group'
92
+ }
93
+ ] : []
94
+ ]
65
95
  };
66
96
  }
67
- constructor({ dataSource, searchByGroup, state, lazy, } = {}) {
68
- var _a, _b, _c;
69
- Object.defineProperty(this, "loading", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: false
74
- });
75
- Object.defineProperty(this, "search", {
76
- enumerable: true,
77
- configurable: true,
78
- writable: true,
79
- value: ''
80
- });
81
- Object.defineProperty(this, "dataSource", {
82
- enumerable: true,
83
- configurable: true,
84
- writable: true,
85
- value: void 0
86
- });
87
- Object.defineProperty(this, "searchByGroup", {
88
- enumerable: true,
89
- configurable: true,
90
- writable: true,
91
- value: void 0
92
- });
93
- Object.defineProperty(this, "sort", {
94
- enumerable: true,
95
- configurable: true,
96
- writable: true,
97
- value: void 0
98
- });
99
- Object.defineProperty(this, "filter", {
100
- enumerable: true,
101
- configurable: true,
102
- writable: true,
103
- value: void 0
104
- });
105
- Object.defineProperty(this, "group", {
106
- enumerable: true,
107
- configurable: true,
108
- writable: true,
109
- value: void 0
110
- });
111
- Object.defineProperty(this, "data", {
112
- enumerable: true,
113
- configurable: true,
114
- writable: true,
115
- value: []
116
- });
97
+ constructor({ dataSource, searchByGroup, state, lazy } = {}){
98
+ _define_property(this, "loading", false);
99
+ _define_property(this, "search", '');
100
+ _define_property(this, "dataSource", void 0);
101
+ _define_property(this, "searchByGroup", void 0);
102
+ _define_property(this, "sort", void 0);
103
+ _define_property(this, "filter", void 0);
104
+ _define_property(this, "group", void 0);
105
+ _define_property(this, "data", []);
117
106
  // eslint-disable-next-line @typescript-eslint/member-ordering
118
- Object.defineProperty(this, "onSearchChange", {
119
- enumerable: true,
120
- configurable: true,
121
- writable: true,
122
- value: (() => {
123
- const fetch = debounce(() => this.fetch(), 100);
124
- return (_0, data) => {
125
- runInAction(() => {
126
- this.search = data.value;
127
- });
128
- fetch();
129
- };
130
- })()
131
- });
132
- Object.defineProperty(this, "setSearch", {
133
- enumerable: true,
134
- configurable: true,
135
- writable: true,
136
- value: async (search) => {
137
- this.search = search;
138
- await this.fetch();
139
- }
140
- });
141
- Object.defineProperty(this, "setDataSource", {
142
- enumerable: true,
143
- configurable: true,
144
- writable: true,
145
- value: async (dataSource) => {
146
- this.dataSource = dataSource;
147
- await this.fetch();
148
- }
149
- });
150
- Object.defineProperty(this, "setSearchByGroup", {
151
- enumerable: true,
152
- configurable: true,
153
- writable: true,
154
- value: async (searchByGroup) => {
155
- this.searchByGroup = searchByGroup;
156
- await this.fetch();
157
- }
158
- });
159
- Object.defineProperty(this, "setSort", {
160
- enumerable: true,
161
- configurable: true,
162
- writable: true,
163
- value: async (sort) => {
164
- this.sort = sort;
165
- await this.fetch();
166
- }
167
- });
168
- Object.defineProperty(this, "setFilter", {
169
- enumerable: true,
170
- configurable: true,
171
- writable: true,
172
- value: async (filter) => {
173
- this.filter = filter;
174
- await this.fetch();
175
- }
176
- });
177
- Object.defineProperty(this, "setGroup", {
178
- enumerable: true,
179
- configurable: true,
180
- writable: true,
181
- value: async (group) => {
182
- this.group = group;
183
- await this.fetch();
184
- }
185
- });
186
- Object.defineProperty(this, "fetch", {
187
- enumerable: true,
188
- configurable: true,
189
- writable: true,
190
- value: async () => {
191
- var _a;
192
- this.loading = true;
193
- const response = await ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.getData(this.state));
194
- runInAction(() => {
195
- var _a;
196
- this.data = (_a = response === null || response === void 0 ? void 0 : response.data) !== null && _a !== void 0 ? _a : [];
197
- this.loading = false;
107
+ _define_property(this, "onSearchChange", (()=>{
108
+ const fetch = debounce(()=>this.fetch(), 100);
109
+ return (_0, data)=>{
110
+ runInAction(()=>{
111
+ this.search = data.value;
198
112
  });
113
+ fetch();
114
+ };
115
+ })());
116
+ _define_property(this, "setSearch", async (search)=>{
117
+ this.search = search;
118
+ await this.fetch();
119
+ });
120
+ _define_property(this, "setDataSource", async (dataSource)=>{
121
+ this.dataSource = dataSource;
122
+ await this.fetch();
123
+ });
124
+ _define_property(this, "setSearchByGroup", async (searchByGroup)=>{
125
+ this.searchByGroup = searchByGroup;
126
+ await this.fetch();
127
+ });
128
+ _define_property(this, "setSort", async (sort)=>{
129
+ this.sort = sort;
130
+ await this.fetch();
131
+ });
132
+ _define_property(this, "setFilter", async (filter)=>{
133
+ this.filter = filter;
134
+ await this.fetch();
135
+ });
136
+ _define_property(this, "setGroup", async (group)=>{
137
+ this.group = group;
138
+ await this.fetch();
139
+ });
140
+ _define_property(this, "fetch", async ()=>{
141
+ var _this_dataSource;
142
+ this.loading = true;
143
+ const response = await ((_this_dataSource = this.dataSource) === null || _this_dataSource === void 0 ? void 0 : _this_dataSource.getData(this.state));
144
+ runInAction(()=>{
145
+ var _response_data;
146
+ this.data = (_response_data = response === null || response === void 0 ? void 0 : response.data) !== null && _response_data !== void 0 ? _response_data : [];
147
+ this.loading = false;
148
+ });
149
+ });
150
+ _define_property(this, "traverse", (items, itemCallback, groupedBy)=>{
151
+ if (!items) {
152
+ return;
199
153
  }
200
- });
201
- Object.defineProperty(this, "traverse", {
202
- enumerable: true,
203
- configurable: true,
204
- writable: true,
205
- value: (items, itemCallback, groupedBy) => {
206
- if (!items) {
207
- return;
208
- }
209
- for (const item of items) {
210
- if (isGroupItem(item, groupedBy)) {
211
- this.traverse(item.items, itemCallback, groupedBy);
212
- }
213
- else {
214
- itemCallback(item);
215
- }
154
+ for (const item of items){
155
+ if (isGroupItem(item, groupedBy)) {
156
+ this.traverse(item.items, itemCallback, groupedBy);
157
+ } else {
158
+ itemCallback(item);
216
159
  }
217
160
  }
218
161
  });
219
162
  makeObservable(this);
220
163
  this.dataSource = dataSource !== null && dataSource !== void 0 ? dataSource : null;
221
164
  this.searchByGroup = searchByGroup !== null && searchByGroup !== void 0 ? searchByGroup : false;
222
- this.sort = (_a = state === null || state === void 0 ? void 0 : state.sort) !== null && _a !== void 0 ? _a : [{ field: 'text' }];
223
- this.filter = (_b = state === null || state === void 0 ? void 0 : state.filter) !== null && _b !== void 0 ? _b : null;
224
- this.group = (_c = state === null || state === void 0 ? void 0 : state.group) !== null && _c !== void 0 ? _c : [{ field: 'group' }];
165
+ var _state_sort;
166
+ this.sort = (_state_sort = state === null || state === void 0 ? void 0 : state.sort) !== null && _state_sort !== void 0 ? _state_sort : [
167
+ {
168
+ field: 'text'
169
+ }
170
+ ];
171
+ var _state_filter;
172
+ this.filter = (_state_filter = state === null || state === void 0 ? void 0 : state.filter) !== null && _state_filter !== void 0 ? _state_filter : null;
173
+ var _state_group;
174
+ this.group = (_state_group = state === null || state === void 0 ? void 0 : state.group) !== null && _state_group !== void 0 ? _state_group : [
175
+ {
176
+ field: 'group'
177
+ }
178
+ ];
225
179
  if (!lazy) {
226
180
  this.fetch();
227
181
  }
228
182
  }
229
183
  }
230
- __decorate([
231
- observable,
232
- __metadata("design:type", Object)
184
+ _ts_decorate([
185
+ observable
233
186
  ], DropdownState.prototype, "loading", void 0);
234
- __decorate([
235
- observable,
236
- __metadata("design:type", Object)
187
+ _ts_decorate([
188
+ observable
237
189
  ], DropdownState.prototype, "search", void 0);
238
- __decorate([
190
+ _ts_decorate([
239
191
  computed,
240
- __metadata("design:type", Object),
241
- __metadata("design:paramtypes", [])
192
+ _ts_metadata("design:type", void 0),
193
+ _ts_metadata("design:paramtypes", [])
242
194
  ], DropdownState.prototype, "options", null);
243
- __decorate([
195
+ _ts_decorate([
244
196
  computed,
245
- __metadata("design:type", Object),
246
- __metadata("design:paramtypes", [])
197
+ _ts_metadata("design:type", void 0),
198
+ _ts_metadata("design:paramtypes", [])
247
199
  ], DropdownState.prototype, "state", null);
248
- __decorate([
200
+ _ts_decorate([
249
201
  computed,
250
- __metadata("design:type", Object),
251
- __metadata("design:paramtypes", [])
202
+ _ts_metadata("design:type", void 0),
203
+ _ts_metadata("design:paramtypes", [])
252
204
  ], DropdownState.prototype, "searchFilter", null);
253
- __decorate([
205
+ _ts_decorate([
254
206
  observable,
255
- __metadata("design:type", Object)
207
+ _ts_metadata("design:type", Object)
256
208
  ], DropdownState.prototype, "dataSource", void 0);
257
- __decorate([
209
+ _ts_decorate([
258
210
  observable,
259
- __metadata("design:type", Boolean)
211
+ _ts_metadata("design:type", Boolean)
260
212
  ], DropdownState.prototype, "searchByGroup", void 0);
261
- __decorate([
213
+ _ts_decorate([
262
214
  observable,
263
- __metadata("design:type", Array)
215
+ _ts_metadata("design:type", Array)
264
216
  ], DropdownState.prototype, "sort", void 0);
265
- __decorate([
217
+ _ts_decorate([
266
218
  observable,
267
- __metadata("design:type", Object)
219
+ _ts_metadata("design:type", Object)
268
220
  ], DropdownState.prototype, "filter", void 0);
269
- __decorate([
221
+ _ts_decorate([
270
222
  observable,
271
- __metadata("design:type", Array)
223
+ _ts_metadata("design:type", Array)
272
224
  ], DropdownState.prototype, "group", void 0);
273
- __decorate([
225
+ _ts_decorate([
274
226
  observable,
275
- __metadata("design:type", Array)
227
+ _ts_metadata("design:type", Array)
276
228
  ], DropdownState.prototype, "data", void 0);
277
- __decorate([
278
- action,
279
- __metadata("design:type", Object)
229
+ _ts_decorate([
230
+ action
280
231
  ], DropdownState.prototype, "setSearch", void 0);
281
- __decorate([
282
- action,
283
- __metadata("design:type", Object)
232
+ _ts_decorate([
233
+ action
284
234
  ], DropdownState.prototype, "setDataSource", void 0);
285
- __decorate([
286
- action,
287
- __metadata("design:type", Object)
235
+ _ts_decorate([
236
+ action
288
237
  ], DropdownState.prototype, "setSearchByGroup", void 0);
289
- __decorate([
290
- action,
291
- __metadata("design:type", Object)
238
+ _ts_decorate([
239
+ action
292
240
  ], DropdownState.prototype, "setSort", void 0);
293
- __decorate([
294
- action,
295
- __metadata("design:type", Object)
241
+ _ts_decorate([
242
+ action
296
243
  ], DropdownState.prototype, "setFilter", void 0);
297
- __decorate([
298
- action,
299
- __metadata("design:type", Object)
244
+ _ts_decorate([
245
+ action
300
246
  ], DropdownState.prototype, "setGroup", void 0);
301
- __decorate([
302
- action,
303
- __metadata("design:type", Object)
247
+ _ts_decorate([
248
+ action
304
249
  ], DropdownState.prototype, "fetch", void 0);
250
+
305
251
  //# sourceMappingURL=dropdown-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-state.js","sourceRoot":"","sources":["../src/dropdown-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/dropdown-state.ts"],"sourcesContent":["import { ChangeEvent } from 'react';\nimport {\n State,\n SortDescriptor,\n CompositeFilterDescriptor,\n GroupDescriptor,\n GroupResult,\n DataSource,\n} from '@servicetitan/data-query';\n\nimport { InputOnChangeData, AnvilSelectOptionsProps } from '@servicetitan/design-system';\n\nimport { observable, computed, action, runInAction, makeObservable } from 'mobx';\n\nimport debounce from 'debounce';\n\nfunction isGroupItem<T>(item: T | GroupResult<T>, groupedBy: string): item is GroupResult<T> {\n const { items, field } = item as GroupResult<T>;\n return !!items && field === groupedBy;\n}\n\nexport interface DropdownOption<T> {\n value: T;\n text: string;\n}\n\ninterface DropdownStateConstructorParams<T> {\n dataSource?: DataSource<T>;\n searchByGroup?: boolean;\n state?: {\n sort?: SortDescriptor[];\n filter?: CompositeFilterDescriptor;\n group?: [GroupDescriptor];\n };\n lazy?: boolean;\n}\n\nexport class DropdownState<T extends DropdownOption<any>> {\n @observable loading = false;\n @observable search = '';\n\n @computed get options() {\n const result = new Map<T[keyof T], AnvilSelectOptionsProps>();\n const flat: AnvilSelectOptionsProps[] = [];\n\n const groupField = this.group[0].field;\n\n this.traverse(\n this.data,\n item => {\n const group = item[groupField as keyof T];\n\n if (group) {\n if (result.has(group)) {\n result.get(group)?.options?.push(item);\n } else {\n result.set(group, {\n value: group,\n text: String(group),\n options: [item],\n });\n }\n } else {\n flat.push(item);\n }\n },\n groupField\n );\n\n return [...flat, ...Array.from(result.values())];\n }\n\n @computed get state() {\n return {\n sort: this.sort,\n filter:\n this.searchFilter || this.filter\n ? this.searchFilter && this.filter\n ? { logic: 'and', filters: [this.searchFilter, this.filter] }\n : (this.searchFilter ?? this.filter)\n : undefined,\n group: this.group,\n } as State;\n }\n\n @computed private get searchFilter() {\n if (!this.search) {\n return undefined;\n }\n\n const filter = { operator: 'contains', value: this.search, ignoreCase: true };\n\n return {\n logic: 'or',\n filters: [\n { ...filter, field: 'text' },\n ...(this.searchByGroup ? [{ ...filter, field: 'group' }] : []),\n ],\n } as CompositeFilterDescriptor;\n }\n\n @observable private dataSource: DataSource<T> | null;\n @observable private searchByGroup: boolean;\n @observable private sort: SortDescriptor[];\n @observable private filter: CompositeFilterDescriptor | null;\n @observable private group: [GroupDescriptor];\n\n @observable private data: T[] | GroupResult<T>[] = [];\n\n constructor({\n dataSource,\n searchByGroup,\n state,\n lazy,\n }: DropdownStateConstructorParams<T> = {}) {\n makeObservable(this);\n\n this.dataSource = dataSource ?? null;\n this.searchByGroup = searchByGroup ?? false;\n this.sort = state?.sort ?? [{ field: 'text' }];\n this.filter = state?.filter ?? null;\n this.group = state?.group ?? [{ field: 'group' }];\n\n if (!lazy) {\n this.fetch();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n onSearchChange = (() => {\n const fetch = debounce(() => this.fetch(), 100);\n return (_0: ChangeEvent<HTMLInputElement>, data: InputOnChangeData) => {\n runInAction(() => {\n this.search = data.value;\n });\n fetch();\n };\n })();\n\n @action\n setSearch = async (search: string) => {\n this.search = search;\n await this.fetch();\n };\n\n @action\n setDataSource = async (dataSource: DataSource<T> | null) => {\n this.dataSource = dataSource;\n await this.fetch();\n };\n\n @action\n setSearchByGroup = async (searchByGroup: boolean) => {\n this.searchByGroup = searchByGroup;\n await this.fetch();\n };\n\n @action\n setSort = async (sort: SortDescriptor[]) => {\n this.sort = sort;\n await this.fetch();\n };\n\n @action\n setFilter = async (filter: CompositeFilterDescriptor | null) => {\n this.filter = filter;\n await this.fetch();\n };\n\n @action\n setGroup = async (group: [GroupDescriptor]) => {\n this.group = group;\n await this.fetch();\n };\n\n @action\n fetch = async () => {\n this.loading = true;\n\n const response = await this.dataSource?.getData(this.state);\n\n runInAction(() => {\n this.data = response?.data ?? [];\n this.loading = false;\n });\n };\n\n private traverse = (\n items: T[] | GroupResult<T>[],\n itemCallback: (item: T) => void,\n groupedBy: string\n ) => {\n if (!items) {\n return;\n }\n\n for (const item of items) {\n if (isGroupItem(item, groupedBy)) {\n this.traverse(item.items, itemCallback, groupedBy);\n } else {\n itemCallback(item);\n }\n }\n };\n}\n"],"names":["observable","computed","action","runInAction","makeObservable","debounce","isGroupItem","item","groupedBy","items","field","DropdownState","options","result","Map","flat","groupField","group","traverse","data","has","get","push","set","value","text","String","Array","from","values","state","sort","filter","searchFilter","logic","filters","undefined","search","operator","ignoreCase","searchByGroup","constructor","dataSource","lazy","loading","onSearchChange","fetch","_0","setSearch","setDataSource","setSearchByGroup","setSort","setFilter","setGroup","response","getData","itemCallback"],"mappings":"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"}