@campxdev/react-blueprint 1.3.3 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campxdev/react-blueprint",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "main": "./export.ts",
5
5
  "private": false,
6
6
  "dependencies": {
@@ -14,6 +14,11 @@ import { Spinner } from '../../Feedback/Spinner/Spinner';
14
14
  import { TextField } from '../TextField/TextField';
15
15
  import { OptionsLoader } from '../components/OptionsLoader';
16
16
  import { OptionContainer } from '../styles';
17
+ import {
18
+ SingleSelectActionsTypes,
19
+ singleSelectReducer,
20
+ SingleSelectState,
21
+ } from './singleSelectReducer';
17
22
 
18
23
  function sleep(duration: number): Promise<void> {
19
24
  return new Promise<void>((resolve) => {
@@ -23,13 +28,6 @@ function sleep(duration: number): Promise<void> {
23
28
  });
24
29
  }
25
30
 
26
- declare module '@mui/material/Autocomplete' {
27
- interface AutocompletePaperSlotPropsOverrides {
28
- loadingOptions: boolean;
29
- isSearch: boolean;
30
- }
31
- }
32
-
33
31
  export type SingleSelectProps = {
34
32
  options?: { label: string; subLabel?: string; value: any }[] | any[];
35
33
  optionsApiEndPoint?: string;
@@ -42,6 +40,8 @@ export type SingleSelectProps = {
42
40
  dbValueProps?: {
43
41
  valueKey: string;
44
42
  isObjectId?: boolean;
43
+ isInt?: boolean;
44
+ isFloat?: boolean;
45
45
  };
46
46
  dbLabelProps?: { labelKey: string; subLabelKey?: string };
47
47
  onChange: (value: any) => void;
@@ -77,101 +77,6 @@ const CustomPaper = (props: any) => (
77
77
  </Paper>
78
78
  );
79
79
 
80
- enum SingleSelectActionsTypes {
81
- OPEN = 'open',
82
- CLOSE = 'close',
83
- LOAD_INTERNAL_OPTIONS_START = 'load_internal_options_start',
84
- LOAD_INTERNAL_OPTIONS_END = 'load_internal_options_end',
85
- LOAD_SELECTED_OPTIONS_START = 'load_selected_options_start',
86
- LOAD_SELECTED_OPTIONS_END = 'load_selected_options_end',
87
- SET_NETWORK_ERROR = 'set_network_error',
88
- SET_INTERNAL_OPTIONS = 'set_internal_options',
89
- APPEND_INTERNAL_OPTIONS = 'append_internal_options',
90
- CHANGE_HAS_MORE_FLAG = 'change_has_more_flag',
91
- SET_SEARCH = 'set_search',
92
- CLEAR_SEARCH = 'clear_search',
93
- }
94
- const singleSelectReducer = (
95
- state: any,
96
- {
97
- actionType,
98
- stateChanges,
99
- }: { actionType: SingleSelectActionsTypes; stateChanges?: any },
100
- ) => {
101
- switch (actionType) {
102
- case SingleSelectActionsTypes.OPEN: {
103
- return { ...state, open: true };
104
- }
105
- case SingleSelectActionsTypes.CLOSE: {
106
- return {
107
- ...state,
108
- open: false,
109
- loadingInternalOptions: false,
110
- };
111
- }
112
- case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_START: {
113
- return { ...state, loadingInternalOptions: true };
114
- }
115
- case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_END: {
116
- return { ...state, loadingInternalOptions: false };
117
- }
118
- case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_START: {
119
- return { ...state, loadingInitialInternalOptions: true };
120
- }
121
- case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_END: {
122
- return { ...state, loadingInitialInternalOptions: false };
123
- }
124
- case SingleSelectActionsTypes.SET_NETWORK_ERROR: {
125
- return { ...state, ...stateChanges };
126
- }
127
- case SingleSelectActionsTypes.SET_SEARCH: {
128
- return {
129
- ...state,
130
- search: stateChanges.search,
131
- hasMore: true,
132
- };
133
- }
134
- case SingleSelectActionsTypes.CLEAR_SEARCH: {
135
- return {
136
- ...state,
137
- search: null,
138
- offset: 0,
139
- internalOptions: stateChanges.internalOptions,
140
- internalOptionsMap: stateChanges.internalOptionsMap,
141
- };
142
- }
143
- case SingleSelectActionsTypes.SET_INTERNAL_OPTIONS: {
144
- return {
145
- ...state,
146
- internalOptions: stateChanges.internalOptions,
147
- internalOptionsMap: stateChanges.internalOptionsMap,
148
- loadingInternalOptions: false,
149
- };
150
- }
151
- case SingleSelectActionsTypes.APPEND_INTERNAL_OPTIONS: {
152
- return {
153
- ...state,
154
- internalOptions: [...state.internalOptions, ...stateChanges.newOptions],
155
- internalOptionsMap: {
156
- ...state.internalOptionsMap,
157
- ...stateChanges.internalOptionsMap,
158
- },
159
- loadingInternalOptions: false,
160
- limit: state.limit,
161
- offset: state.offset + (stateChanges?.persistOffset ? 0 : 10),
162
- };
163
- }
164
- case SingleSelectActionsTypes.CHANGE_HAS_MORE_FLAG: {
165
- return {
166
- ...state,
167
- hasMore: !state.hasMore,
168
- };
169
- }
170
- default:
171
- return { ...state, ...stateChanges };
172
- }
173
- };
174
-
175
80
  export const SingleSelect = ({
176
81
  options,
177
82
  optionsApiEndPoint,
@@ -188,6 +93,8 @@ export const SingleSelect = ({
188
93
  dbValueProps = {
189
94
  valueKey: 'id',
190
95
  isObjectId: false,
96
+ isInt: false,
97
+ isFloat: false,
191
98
  },
192
99
  dbLabelProps,
193
100
  onOpen,
@@ -198,7 +105,7 @@ export const SingleSelect = ({
198
105
  return _.keyBy(options ?? [], getValue ? getValue : (o) => o.value);
199
106
  };
200
107
 
201
- const [state, dispatch] = useReducer(singleSelectReducer, {
108
+ const initialState: SingleSelectState = {
202
109
  open: false,
203
110
  loadingInternalOptions: false,
204
111
  loadingInitialInternalOptions: false,
@@ -208,7 +115,9 @@ export const SingleSelect = ({
208
115
  offset: 0,
209
116
  hasMore: true,
210
117
  search: null,
211
- });
118
+ };
119
+
120
+ const [state, dispatch] = useReducer(singleSelectReducer, initialState);
212
121
  const {
213
122
  open,
214
123
  loadingInternalOptions,
@@ -237,8 +146,10 @@ export const SingleSelect = ({
237
146
  limit,
238
147
  offset,
239
148
  dbValueProps: {
240
- ...dbValueProps,
149
+ valueKey: dbValueProps.valueKey,
241
150
  ...(dbValueProps.isObjectId && { isObjectId: true }),
151
+ ...(dbValueProps.isInt && { isInt: true }),
152
+ ...(dbValueProps.isFloat && { isFloat: true }),
242
153
  selectedValueData: value,
243
154
  },
244
155
  dbLabelProps,
@@ -328,8 +239,10 @@ export const SingleSelect = ({
328
239
  offset: offset + 10,
329
240
 
330
241
  dbValueProps: {
331
- ...dbValueProps,
242
+ valueKey: dbValueProps.valueKey,
332
243
  ...(dbValueProps.isObjectId && { isObjectId: true }),
244
+ ...(dbValueProps.isInt && { isInt: true }),
245
+ ...(dbValueProps.isFloat && { isFloat: true }),
333
246
  selectedValueData: value,
334
247
  },
335
248
  dbLabelProps: {
@@ -385,8 +298,10 @@ export const SingleSelect = ({
385
298
  limit,
386
299
  offset: 0,
387
300
  dbValueProps: {
388
- ...dbValueProps,
301
+ valueKey: dbValueProps.valueKey,
389
302
  ...(dbValueProps.isObjectId && { isObjectId: true }),
303
+ ...(dbValueProps.isInt && { isInt: true }),
304
+ ...(dbValueProps.isFloat && { isFloat: true }),
390
305
  selectedValueData: value,
391
306
  },
392
307
  dbLabelProps: {
@@ -449,12 +364,15 @@ export const SingleSelect = ({
449
364
  limit,
450
365
  offset,
451
366
  dbValueProps: {
452
- ...dbValueProps,
367
+ valueKey: dbValueProps.valueKey,
453
368
  ...(dbValueProps.isObjectId && { isObjectId: true }),
369
+ ...(dbValueProps.isInt && { isInt: true }),
370
+ ...(dbValueProps.isFloat && { isFloat: true }),
454
371
  selectedValueData: value,
455
372
  filterBySelectedValues: true,
456
373
  },
457
374
  dbLabelProps,
375
+ ...optionsApiEndpointParams,
458
376
  },
459
377
  });
460
378
  dispatch({
@@ -0,0 +1,125 @@
1
+ import { Reducer } from 'react';
2
+
3
+ export enum SingleSelectActionsTypes {
4
+ OPEN = 'open',
5
+ CLOSE = 'close',
6
+ LOAD_INTERNAL_OPTIONS_START = 'load_internal_options_start',
7
+ LOAD_INTERNAL_OPTIONS_END = 'load_internal_options_end',
8
+ LOAD_SELECTED_OPTIONS_START = 'load_selected_options_start',
9
+ LOAD_SELECTED_OPTIONS_END = 'load_selected_options_end',
10
+ SET_NETWORK_ERROR = 'set_network_error',
11
+ SET_INTERNAL_OPTIONS = 'set_internal_options',
12
+ APPEND_INTERNAL_OPTIONS = 'append_internal_options',
13
+ CHANGE_HAS_MORE_FLAG = 'change_has_more_flag',
14
+ SET_SEARCH = 'set_search',
15
+ CLEAR_SEARCH = 'clear_search',
16
+ }
17
+
18
+ export type Option = {
19
+ label: string;
20
+ subLabel?: string;
21
+ value: any;
22
+ };
23
+
24
+ export type SingleSelectState = {
25
+ open: boolean;
26
+ loadingInternalOptions: boolean;
27
+ loadingInitialInternalOptions: boolean;
28
+ internalOptions: Option[];
29
+ internalOptionsMap: { [x: string]: Option };
30
+ limit: number;
31
+ offset: number;
32
+ hasMore: boolean;
33
+ search: string | null;
34
+ error?: any;
35
+ };
36
+
37
+ export type SingleSelectAction = {
38
+ actionType: SingleSelectActionsTypes;
39
+ stateChanges?: Partial<SingleSelectState> & {
40
+ persistOffset?: boolean;
41
+ newOptions?: Option[];
42
+ };
43
+ };
44
+
45
+ export const singleSelectReducer: Reducer<
46
+ SingleSelectState,
47
+ SingleSelectAction
48
+ > = (state: SingleSelectState, action: SingleSelectAction) => {
49
+ const { actionType, stateChanges } = action;
50
+ switch (actionType) {
51
+ case SingleSelectActionsTypes.OPEN: {
52
+ return { ...state, open: true };
53
+ }
54
+ case SingleSelectActionsTypes.CLOSE: {
55
+ return {
56
+ ...state,
57
+ open: false,
58
+ loadingInternalOptions: false,
59
+ };
60
+ }
61
+ case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_START: {
62
+ return { ...state, loadingInternalOptions: true };
63
+ }
64
+ case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_END: {
65
+ return { ...state, loadingInternalOptions: false };
66
+ }
67
+ case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_START: {
68
+ return { ...state, loadingInitialInternalOptions: true };
69
+ }
70
+ case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_END: {
71
+ return { ...state, loadingInitialInternalOptions: false };
72
+ }
73
+ case SingleSelectActionsTypes.SET_NETWORK_ERROR: {
74
+ return { ...state, ...stateChanges };
75
+ }
76
+ case SingleSelectActionsTypes.SET_SEARCH: {
77
+ return {
78
+ ...state,
79
+ search: stateChanges?.search ?? null,
80
+ hasMore: true,
81
+ };
82
+ }
83
+ case SingleSelectActionsTypes.CLEAR_SEARCH: {
84
+ return {
85
+ ...state,
86
+ search: null,
87
+ offset: 0,
88
+ internalOptions: stateChanges?.internalOptions ?? [],
89
+ internalOptionsMap: stateChanges?.internalOptionsMap ?? {},
90
+ };
91
+ }
92
+ case SingleSelectActionsTypes.SET_INTERNAL_OPTIONS: {
93
+ return {
94
+ ...state,
95
+ internalOptions: stateChanges?.internalOptions ?? [],
96
+ internalOptionsMap: stateChanges?.internalOptionsMap ?? {},
97
+ loadingInternalOptions: false,
98
+ };
99
+ }
100
+ case SingleSelectActionsTypes.APPEND_INTERNAL_OPTIONS: {
101
+ return {
102
+ ...state,
103
+ internalOptions: [
104
+ ...state.internalOptions,
105
+ ...(stateChanges?.newOptions ?? []),
106
+ ],
107
+ internalOptionsMap: {
108
+ ...state.internalOptionsMap,
109
+ ...stateChanges?.internalOptionsMap,
110
+ },
111
+ loadingInternalOptions: false,
112
+ limit: state.limit,
113
+ offset: state.offset + (stateChanges?.persistOffset ? 0 : 10),
114
+ };
115
+ }
116
+ case SingleSelectActionsTypes.CHANGE_HAS_MORE_FLAG: {
117
+ return {
118
+ ...state,
119
+ hasMore: !state.hasMore,
120
+ };
121
+ }
122
+ default:
123
+ return { ...state, ...stateChanges };
124
+ }
125
+ };
@@ -1,6 +1,3 @@
1
- // import axios, {
2
- // axiosErrorToast,
3
- // } from "@campxdev/campx-web-utils/src/config/axios";
4
1
  import { axios } from '@campxdev/campx-web-utils';
5
2
  import Cookies from 'js-cookie';
6
3
 
package/types/theme.d.ts CHANGED
@@ -61,3 +61,10 @@ declare module '@mui/material/Typography' {
61
61
  button1: true;
62
62
  }
63
63
  }
64
+
65
+ declare module '@mui/material/Autocomplete' {
66
+ interface AutocompletePaperSlotPropsOverrides {
67
+ loadingOptions: boolean;
68
+ isSearch: boolean;
69
+ }
70
+ }