@campxdev/react-blueprint 1.3.4 → 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.4",
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;
@@ -79,101 +77,6 @@ const CustomPaper = (props: any) => (
79
77
  </Paper>
80
78
  );
81
79
 
82
- enum SingleSelectActionsTypes {
83
- OPEN = 'open',
84
- CLOSE = 'close',
85
- LOAD_INTERNAL_OPTIONS_START = 'load_internal_options_start',
86
- LOAD_INTERNAL_OPTIONS_END = 'load_internal_options_end',
87
- LOAD_SELECTED_OPTIONS_START = 'load_selected_options_start',
88
- LOAD_SELECTED_OPTIONS_END = 'load_selected_options_end',
89
- SET_NETWORK_ERROR = 'set_network_error',
90
- SET_INTERNAL_OPTIONS = 'set_internal_options',
91
- APPEND_INTERNAL_OPTIONS = 'append_internal_options',
92
- CHANGE_HAS_MORE_FLAG = 'change_has_more_flag',
93
- SET_SEARCH = 'set_search',
94
- CLEAR_SEARCH = 'clear_search',
95
- }
96
- const singleSelectReducer = (
97
- state: any,
98
- {
99
- actionType,
100
- stateChanges,
101
- }: { actionType: SingleSelectActionsTypes; stateChanges?: any },
102
- ) => {
103
- switch (actionType) {
104
- case SingleSelectActionsTypes.OPEN: {
105
- return { ...state, open: true };
106
- }
107
- case SingleSelectActionsTypes.CLOSE: {
108
- return {
109
- ...state,
110
- open: false,
111
- loadingInternalOptions: false,
112
- };
113
- }
114
- case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_START: {
115
- return { ...state, loadingInternalOptions: true };
116
- }
117
- case SingleSelectActionsTypes.LOAD_INTERNAL_OPTIONS_END: {
118
- return { ...state, loadingInternalOptions: false };
119
- }
120
- case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_START: {
121
- return { ...state, loadingInitialInternalOptions: true };
122
- }
123
- case SingleSelectActionsTypes.LOAD_SELECTED_OPTIONS_END: {
124
- return { ...state, loadingInitialInternalOptions: false };
125
- }
126
- case SingleSelectActionsTypes.SET_NETWORK_ERROR: {
127
- return { ...state, ...stateChanges };
128
- }
129
- case SingleSelectActionsTypes.SET_SEARCH: {
130
- return {
131
- ...state,
132
- search: stateChanges.search,
133
- hasMore: true,
134
- };
135
- }
136
- case SingleSelectActionsTypes.CLEAR_SEARCH: {
137
- return {
138
- ...state,
139
- search: null,
140
- offset: 0,
141
- internalOptions: stateChanges.internalOptions,
142
- internalOptionsMap: stateChanges.internalOptionsMap,
143
- };
144
- }
145
- case SingleSelectActionsTypes.SET_INTERNAL_OPTIONS: {
146
- return {
147
- ...state,
148
- internalOptions: stateChanges.internalOptions,
149
- internalOptionsMap: stateChanges.internalOptionsMap,
150
- loadingInternalOptions: false,
151
- };
152
- }
153
- case SingleSelectActionsTypes.APPEND_INTERNAL_OPTIONS: {
154
- return {
155
- ...state,
156
- internalOptions: [...state.internalOptions, ...stateChanges.newOptions],
157
- internalOptionsMap: {
158
- ...state.internalOptionsMap,
159
- ...stateChanges.internalOptionsMap,
160
- },
161
- loadingInternalOptions: false,
162
- limit: state.limit,
163
- offset: state.offset + (stateChanges?.persistOffset ? 0 : 10),
164
- };
165
- }
166
- case SingleSelectActionsTypes.CHANGE_HAS_MORE_FLAG: {
167
- return {
168
- ...state,
169
- hasMore: !state.hasMore,
170
- };
171
- }
172
- default:
173
- return { ...state, ...stateChanges };
174
- }
175
- };
176
-
177
80
  export const SingleSelect = ({
178
81
  options,
179
82
  optionsApiEndPoint,
@@ -202,7 +105,7 @@ export const SingleSelect = ({
202
105
  return _.keyBy(options ?? [], getValue ? getValue : (o) => o.value);
203
106
  };
204
107
 
205
- const [state, dispatch] = useReducer(singleSelectReducer, {
108
+ const initialState: SingleSelectState = {
206
109
  open: false,
207
110
  loadingInternalOptions: false,
208
111
  loadingInitialInternalOptions: false,
@@ -212,7 +115,9 @@ export const SingleSelect = ({
212
115
  offset: 0,
213
116
  hasMore: true,
214
117
  search: null,
215
- });
118
+ };
119
+
120
+ const [state, dispatch] = useReducer(singleSelectReducer, initialState);
216
121
  const {
217
122
  open,
218
123
  loadingInternalOptions,
@@ -241,8 +146,10 @@ export const SingleSelect = ({
241
146
  limit,
242
147
  offset,
243
148
  dbValueProps: {
244
- ...dbValueProps,
149
+ valueKey: dbValueProps.valueKey,
245
150
  ...(dbValueProps.isObjectId && { isObjectId: true }),
151
+ ...(dbValueProps.isInt && { isInt: true }),
152
+ ...(dbValueProps.isFloat && { isFloat: true }),
246
153
  selectedValueData: value,
247
154
  },
248
155
  dbLabelProps,
@@ -465,6 +372,7 @@ export const SingleSelect = ({
465
372
  filterBySelectedValues: true,
466
373
  },
467
374
  dbLabelProps,
375
+ ...optionsApiEndpointParams,
468
376
  },
469
377
  });
470
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
+ }