l-min-components 1.0.690 → 1.0.694

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.690",
3
+ "version": "1.0.694",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "src/assets",
@@ -185,7 +185,7 @@ const AppMainLayout = () => {
185
185
  : window.location.pathname.includes("developer") ||
186
186
  window.location.hostname.includes("developer")
187
187
  ? "developer"
188
- : defaultAcct?.toLowerCase()
188
+ : "developer"
189
189
  }
190
190
  isOpen={isOpen}
191
191
  setIsOpen={setIsOpen}
@@ -1,4 +1,4 @@
1
- import React, { useState, CSSProperties, useEffect, useRef } from "react";
1
+ import React, { useState, useEffect, useRef } from "react";
2
2
  import LoaderCustom from "../customLoader";
3
3
  import {
4
4
  ControlInput,
@@ -7,7 +7,10 @@ import {
7
7
  DropDownControls,
8
8
  DropDownHeader,
9
9
  DropDownItem,
10
- } from "./styles";
10
+ DownIcon,
11
+ Tick,
12
+ } from "./DropDownComponentStyles";
13
+
11
14
  /**
12
15
  * @param {{
13
16
  * dropdownData: Array,
@@ -26,21 +29,14 @@ import {
26
29
  */
27
30
 
28
31
  const DropDownComponent = (props) => {
29
- // select state that dictates the current value.
30
32
  const [selected, setSelected] = useState(props.default);
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();
33
+ const [dropdown, setDropdown] = useState(false);
34
+ const [searchParam, setSearchParam] = useState("");
37
35
  const { isLoading, showLoader = false } = props;
38
36
 
39
- // dropdown menu ref
40
37
  const dropdownRef = useRef(null);
41
38
  const dropdownListRef = useRef(null);
42
39
 
43
- // click outside closes the dropdown menu
44
40
  const handleClickOutside = (event) => {
45
41
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
46
42
  setDropdown(false);
@@ -54,9 +50,10 @@ const DropDownComponent = (props) => {
54
50
  };
55
51
  }, []);
56
52
 
57
- // useEffect to return a function value onChange
58
53
  useEffect(() => {
59
- props?.onSelect && props?.onSelect(selected);
54
+ if (props.onSelect) {
55
+ props.onSelect(selected);
56
+ }
60
57
  }, [selected]);
61
58
 
62
59
  const handleDropdownToggle = () => {
@@ -65,9 +62,8 @@ const DropDownComponent = (props) => {
65
62
 
66
63
  const handleScroll = (e) => {
67
64
  const { scrollTop, scrollHeight, clientHeight } = e.target;
68
- const isBottom = scrollTop + clientHeight >= scrollHeight - 10; // Adjusted threshold to 10px
65
+ const isBottom = scrollTop + clientHeight >= scrollHeight - 10;
69
66
  if (isBottom) {
70
- console.log("Near bottom, loading more data.");
71
67
  props.loadMoreData();
72
68
  }
73
69
  };
@@ -82,79 +78,74 @@ const DropDownComponent = (props) => {
82
78
 
83
79
  return (
84
80
  <DropDownContainer
85
- className={props?.className}
81
+ className={props.className}
86
82
  ref={dropdownRef}
87
83
  onMouseEnter={() => props.toggleOnHover && setDropdown(true)}
88
84
  onMouseLeave={() => props.toggleOnHover && setDropdown(false)}
89
85
  >
90
- <DropDownHeader>{props?.header}</DropDownHeader>
86
+ <DropDownHeader>{props.header}</DropDownHeader>
91
87
  <DropDownControls>
92
- {props?.searchable ? (
88
+ {props.searchable ? (
93
89
  <ControlInput
94
- placeholder={props?.inputPlaceHolder || "Select Dropdown"}
90
+ placeholder={props.inputPlaceHolder || "Select Dropdown"}
95
91
  type="text"
96
- value={props?.valueSelect?.name || selected?.name}
97
- onChange={(e) => {
98
- setSearchParam(e.target.value);
99
- }}
100
- // onClick={() => setDropdown(true)}
92
+ value={props.valueSelect?.name || selected?.name}
93
+ onChange={(e) => setSearchParam(e.target.value)}
101
94
  onClick={handleDropdownToggle}
102
95
  />
103
96
  ) : (
104
- // <p onClick={() => setDropdown(!dropdown)}>
105
97
  <p onClick={handleDropdownToggle}>
106
- {props?.valueSelect?.name ||
98
+ {props.valueSelect?.name ||
107
99
  selected?.name ||
108
- props?.inputPlaceHolder}
100
+ props.inputPlaceHolder}
109
101
  </p>
110
102
  )}
111
- {/* <DownIcon onClick={() => setDropdown(!dropdown)} /> */}
112
- <DownIcon onClick={handleDropdownToggle} />
103
+ <DownIcon onClick={handleDropdownToggle}>
104
+ <path d="M1 1L7 7L13 1" />
105
+ </DownIcon>
113
106
  {searchParam && dropdown && (
114
107
  <DropDownContent onScroll={handleScroll} ref={dropdownListRef}>
115
- {props?.dropdownData?.map((dropdownItem, idx) => {
108
+ {props.dropdownData.map((dropdownItem, idx) => {
116
109
  if (
117
- props?.dropdownData[idx]?.name
118
- ?.toLowerCase()
119
- .includes(searchParam?.toLowerCase())
120
- )
110
+ dropdownItem.name
111
+ .toLowerCase()
112
+ .includes(searchParam.toLowerCase())
113
+ ) {
121
114
  return (
122
115
  <DropDownItem
123
116
  key={idx}
124
117
  onClick={() => {
125
118
  setSelected(dropdownItem);
126
- setDropdown();
119
+ setDropdown(false);
127
120
  }}
128
121
  >
129
- <span>{dropdownItem?.name}</span>
130
- {(props?.valueSelect || selected) === dropdownItem && (
122
+ <span>{dropdownItem.name}</span>
123
+ {(props.valueSelect || selected) === dropdownItem && (
131
124
  <Tick />
132
125
  )}
133
126
  </DropDownItem>
134
127
  );
128
+ }
129
+ return null;
135
130
  })}
136
131
  </DropDownContent>
137
132
  )}
138
133
  {!searchParam && dropdown && (
139
134
  <DropDownContent onScroll={handleScroll} ref={dropdownListRef}>
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
- })}
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
+ ))}
156
147
  <div className={showLoader ? "loader" : ""}>
157
- {isLoading && showLoader && props?.dropdownData?.length > 0 && (
148
+ {isLoading && showLoader && props.dropdownData.length > 0 && (
158
149
  <LoaderCustom />
159
150
  )}
160
151
  </div>
@@ -164,44 +155,5 @@ const DropDownComponent = (props) => {
164
155
  </DropDownContainer>
165
156
  );
166
157
  };
167
- export default DropDownComponent;
168
158
 
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
- };
159
+ export default DropDownComponent;
@@ -1,6 +1,6 @@
1
1
  import styled from "styled-components";
2
2
  import(
3
- "https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900;1,1000&display=swap"
3
+ "https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000&display=swap"
4
4
  );
5
5
 
6
6
  export const DropDownContainer = styled.div`
@@ -43,6 +43,10 @@ export const ControlInput = styled.input`
43
43
  border: none;
44
44
  cursor: caret;
45
45
  background: none;
46
+
47
+ &::placeholder {
48
+ color: #adb2b2; // Placeholder text color
49
+ }
46
50
  `;
47
51
 
48
52
  export const DropDownContent = styled.ul`
@@ -56,24 +60,18 @@ export const DropDownContent = styled.ul`
56
60
  max-height: 200px;
57
61
  overflow-y: scroll;
58
62
  scrollbar-width: thin;
59
- /* "auto" or "thin" depending on browser support */
60
63
  scrollbar-color: transparent transparent;
61
- /* color values for thumb and track */
62
64
 
63
65
  &::-webkit-scrollbar {
64
66
  width: 6px;
65
- /* adjust as needed */
66
67
  background-color: transparent;
67
- /* color value for track */
68
68
  }
69
69
 
70
70
  &::-webkit-scrollbar-thumb {
71
71
  background-color: transparent;
72
- /* color value for thumb */
73
72
  }
74
- // padding: 4px 10px;
75
- .loader{
76
- /* padding: 5px 0px; */
73
+
74
+ .loader {
77
75
  margin-bottom: 20px;
78
76
  }
79
77
  `;
@@ -104,3 +102,28 @@ export const DropDownItem = styled.li`
104
102
  }
105
103
  }
106
104
  `;
105
+
106
+ export const DownIcon = styled.svg`
107
+ width: ${({ width }) => width || "18px"};
108
+ height: ${({ height }) => height || "9px"};
109
+ fill: none;
110
+ cursor: pointer;
111
+ path {
112
+ stroke: ${({ fill }) => fill || "#7C8080"};
113
+ stroke-width: 2;
114
+ stroke-linecap: round;
115
+ stroke-linejoin: round;
116
+ }
117
+ `;
118
+
119
+ export const Tick = styled.svg`
120
+ width: ${({ size }) => size || "16px"};
121
+ height: ${({ size }) => size || "16px"};
122
+ fill: none;
123
+ path {
124
+ stroke: ${({ stroke }) => stroke || "white"};
125
+ stroke-width: 1.5;
126
+ stroke-linecap: round;
127
+ stroke-linejoin: round;
128
+ }
129
+ `;