l-min-components 1.0.694 → 1.0.698

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": "l-min-components",
3
- "version": "1.0.694",
3
+ "version": "1.0.698",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/assets",
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect, useRef } from "react";
1
+ import React, { useState, CSSProperties, useEffect, useRef } from "react";
2
2
  import LoaderCustom from "../customLoader";
3
3
  import {
4
4
  ControlInput,
@@ -7,10 +7,7 @@ import {
7
7
  DropDownControls,
8
8
  DropDownHeader,
9
9
  DropDownItem,
10
- DownIcon,
11
- Tick,
12
- } from "./DropDownComponentStyles";
13
-
10
+ } from "./styles";
14
11
  /**
15
12
  * @param {{
16
13
  * dropdownData: Array,
@@ -29,14 +26,21 @@ import {
29
26
  */
30
27
 
31
28
  const DropDownComponent = (props) => {
29
+ // select state that dictates the current value.
32
30
  const [selected, setSelected] = useState(props.default);
33
- const [dropdown, setDropdown] = useState(false);
34
- const [searchParam, setSearchParam] = useState("");
31
+
32
+ // dropdown state that dictates if dropdown is dropped or not.
33
+ const [dropdown, setDropdown] = useState();
34
+
35
+ //search params
36
+ const [searchParam, setSearchParam] = useState();
35
37
  const { isLoading, showLoader = false } = props;
36
38
 
39
+ // dropdown menu ref
37
40
  const dropdownRef = useRef(null);
38
41
  const dropdownListRef = useRef(null);
39
42
 
43
+ // click outside closes the dropdown menu
40
44
  const handleClickOutside = (event) => {
41
45
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
42
46
  setDropdown(false);
@@ -50,10 +54,9 @@ const DropDownComponent = (props) => {
50
54
  };
51
55
  }, []);
52
56
 
57
+ // useEffect to return a function value onChange
53
58
  useEffect(() => {
54
- if (props.onSelect) {
55
- props.onSelect(selected);
56
- }
59
+ props?.onSelect && props?.onSelect(selected);
57
60
  }, [selected]);
58
61
 
59
62
  const handleDropdownToggle = () => {
@@ -62,8 +65,9 @@ const DropDownComponent = (props) => {
62
65
 
63
66
  const handleScroll = (e) => {
64
67
  const { scrollTop, scrollHeight, clientHeight } = e.target;
65
- const isBottom = scrollTop + clientHeight >= scrollHeight - 10;
68
+ const isBottom = scrollTop + clientHeight >= scrollHeight - 10; // Adjusted threshold to 10px
66
69
  if (isBottom) {
70
+ console.log("Near bottom, loading more data.");
67
71
  props.loadMoreData();
68
72
  }
69
73
  };
@@ -78,74 +82,79 @@ const DropDownComponent = (props) => {
78
82
 
79
83
  return (
80
84
  <DropDownContainer
81
- className={props.className}
85
+ className={props?.className}
82
86
  ref={dropdownRef}
83
87
  onMouseEnter={() => props.toggleOnHover && setDropdown(true)}
84
88
  onMouseLeave={() => props.toggleOnHover && setDropdown(false)}
85
89
  >
86
- <DropDownHeader>{props.header}</DropDownHeader>
90
+ <DropDownHeader>{props?.header}</DropDownHeader>
87
91
  <DropDownControls>
88
- {props.searchable ? (
92
+ {props?.searchable ? (
89
93
  <ControlInput
90
- placeholder={props.inputPlaceHolder || "Select Dropdown"}
94
+ placeholder={props?.inputPlaceHolder || "Select Dropdown"}
91
95
  type="text"
92
- value={props.valueSelect?.name || selected?.name}
93
- onChange={(e) => setSearchParam(e.target.value)}
96
+ value={props?.valueSelect?.name || selected?.name}
97
+ onChange={(e) => {
98
+ setSearchParam(e.target.value);
99
+ }}
100
+ // onClick={() => setDropdown(true)}
94
101
  onClick={handleDropdownToggle}
95
102
  />
96
103
  ) : (
104
+ // <p onClick={() => setDropdown(!dropdown)}>
97
105
  <p onClick={handleDropdownToggle}>
98
- {props.valueSelect?.name ||
106
+ {props?.valueSelect?.name ||
99
107
  selected?.name ||
100
- props.inputPlaceHolder}
108
+ props?.inputPlaceHolder}
101
109
  </p>
102
110
  )}
103
- <DownIcon onClick={handleDropdownToggle}>
104
- <path d="M1 1L7 7L13 1" />
105
- </DownIcon>
111
+ {/* <DownIcon onClick={() => setDropdown(!dropdown)} /> */}
112
+ <DownIcon onClick={handleDropdownToggle} />
106
113
  {searchParam && dropdown && (
107
114
  <DropDownContent onScroll={handleScroll} ref={dropdownListRef}>
108
- {props.dropdownData.map((dropdownItem, idx) => {
115
+ {props?.dropdownData?.map((dropdownItem, idx) => {
109
116
  if (
110
- dropdownItem.name
111
- .toLowerCase()
112
- .includes(searchParam.toLowerCase())
113
- ) {
117
+ props?.dropdownData[idx]?.name
118
+ ?.toLowerCase()
119
+ .includes(searchParam?.toLowerCase())
120
+ )
114
121
  return (
115
122
  <DropDownItem
116
123
  key={idx}
117
124
  onClick={() => {
118
125
  setSelected(dropdownItem);
119
- setDropdown(false);
126
+ setDropdown();
120
127
  }}
121
128
  >
122
- <span>{dropdownItem.name}</span>
123
- {(props.valueSelect || selected) === dropdownItem && (
129
+ <span>{dropdownItem?.name}</span>
130
+ {(props?.valueSelect || selected) === dropdownItem && (
124
131
  <Tick />
125
132
  )}
126
133
  </DropDownItem>
127
134
  );
128
- }
129
- return null;
130
135
  })}
131
136
  </DropDownContent>
132
137
  )}
133
138
  {!searchParam && dropdown && (
134
139
  <DropDownContent onScroll={handleScroll} ref={dropdownListRef}>
135
- {props.dropdownData.map((dropdownItem, idx) => (
136
- <DropDownItem
137
- key={idx}
138
- onClick={() => {
139
- setSelected(dropdownItem);
140
- setDropdown(false);
141
- }}
142
- >
143
- <span>{dropdownItem.name}</span>
144
- {(props.valueSelect || selected) === dropdownItem && <Tick />}
145
- </DropDownItem>
146
- ))}
140
+ {props?.dropdownData?.map((dropdownItem, idx) => {
141
+ return (
142
+ <DropDownItem
143
+ key={idx}
144
+ onClick={() => {
145
+ setSelected(dropdownItem);
146
+ setDropdown();
147
+ }}
148
+ >
149
+ <span>{dropdownItem?.name}</span>
150
+ {(props?.valueSelect || selected) === dropdownItem && (
151
+ <Tick />
152
+ )}
153
+ </DropDownItem>
154
+ );
155
+ })}
147
156
  <div className={showLoader ? "loader" : ""}>
148
- {isLoading && showLoader && props.dropdownData.length > 0 && (
157
+ {isLoading && showLoader && props?.dropdownData?.length > 0 && (
149
158
  <LoaderCustom />
150
159
  )}
151
160
  </div>
@@ -155,5 +164,44 @@ const DropDownComponent = (props) => {
155
164
  </DropDownContainer>
156
165
  );
157
166
  };
158
-
159
167
  export default DropDownComponent;
168
+
169
+ export const DownIcon = ({ width, height, fill, onClick }) => {
170
+ return (
171
+ <svg
172
+ width={width || "18"}
173
+ height={height || "9"}
174
+ viewBox="0 0 14 8"
175
+ fill="none"
176
+ xmlns="http://www.w3.org/2000/svg"
177
+ onClick={onClick}
178
+ >
179
+ <path
180
+ d="M1 1L7 7L13 1"
181
+ stroke={fill || "#7C8080"}
182
+ strokeWidth="2"
183
+ strokeLinecap="round"
184
+ strokeLinejoin="round"
185
+ />
186
+ </svg>
187
+ );
188
+ };
189
+ export const Tick = ({ size, stroke }) => {
190
+ return (
191
+ <svg
192
+ width={size || "16"}
193
+ height={size || "16"}
194
+ viewBox="0 0 16 16"
195
+ fill="none"
196
+ xmlns="http://www.w3.org/2000/svg"
197
+ >
198
+ <path
199
+ d="M12.3828 4.23828L5.82031 11.7383L3.00781 8.92578"
200
+ stroke={stroke || "white"}
201
+ strokeWidth="1.5"
202
+ strokeLinecap="round"
203
+ strokeLinejoin="round"
204
+ />
205
+ </svg>
206
+ );
207
+ };
@@ -145,8 +145,10 @@ const HeaderComponent = (props) => {
145
145
  }
146
146
  });
147
147
 
148
- if (pathname?.includes("personal")) {
149
- setSelectedAccount(personalArray[0]);
148
+ if (window.location.pathname.includes("personal")) {
149
+ setSelectedAccount(personalArray?.find(
150
+ (item) => item?.id === defaultAcctId || item?.id === account_id ?? item
151
+ ));
150
152
  }
151
153
  if (
152
154
  window.location.host?.includes("developer") ||
@@ -160,11 +162,15 @@ const HeaderComponent = (props) => {
160
162
  )
161
163
  );
162
164
  }
163
- if (pathname?.includes("instructor")) {
164
- setSelectedAccount(instructorArray[0]);
165
+ if (window.location.pathname.includes("instructor")) {
166
+ setSelectedAccount(instructorArray?.find(
167
+ (item) => item?.id === defaultAcctId || item?.id === account_id ?? item
168
+ ));
165
169
  }
166
- if (pathname?.includes("enterprise")) {
167
- setSelectedAccount(enterpriseArray[0]);
170
+ if (window.location.pathname.includes("enterprise")) {
171
+ setSelectedAccount(enterpriseArray?.find(
172
+ (item) => item?.id === defaultAcctId || item?.id === account_id ?? item
173
+ ));
168
174
  }
169
175
  // if all fails, set selected acct to developer
170
176
  else{