@starasia/dropdown 1.0.6 → 2.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.
@@ -1,4 +1,4 @@
1
- (function(w,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],r):(w=typeof globalThis<"u"?globalThis:w||self,r(w.Dropdown={},w.jsxRuntime,w.React))})(this,function(w,r,o){"use strict";const q=`@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap");
1
+ (function(h,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],n):(h=typeof globalThis<"u"?globalThis:h||self,n(h.Dropdown={},h.jsxRuntime,h.React))})(this,function(h,n,t){"use strict";const O=`@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap");
2
2
  * {
3
3
  margin: 0;
4
4
  padding: 0;
@@ -6,129 +6,45 @@
6
6
  box-sizing: border-box;
7
7
  }
8
8
  :root {
9
- /* color */
10
- /* brand */
11
- --starasia-ui-dropdown-color-primary-blue: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
12
- --starasia-ui-dropdown-color-secondary-blue: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
13
- --starasia-ui-dropdown-color-tertiary-blue: var(--starasia-ui-brand-primary-secondary, rgba(144, 176, 218, 1));
14
- --starasia-ui-dropdown-color-quaternary-blue: var(--starasia-ui-brand-primary-tertiary, rgba(227, 237, 248, 1));
15
- --starasia-ui-dropdown-color-quinary-blue: var(--starasia-ui-brand-primary-tertiary, rgba(227, 237, 248, 1));
16
- /* gray */
17
- --starasia-ui-dropdown-color-primary-gray: var(
18
- --starasia-ui-color-gray-700,
19
- rgba(55, 65, 81, 1)
20
- );
21
- --starasia-ui-dropdown-color-secondary-gray: var(
22
- --starasia-ui-color-gray-500,
23
- rgba(107, 114, 128, 1)
24
- );
25
- --starasia-ui-dropdown-color-tertiary-gray: var(
26
- --starasia-ui-color-gray-300,
27
- rgba(209, 213, 219, 1)
28
- );
29
- --starasia-ui-dropdown-color-quaternary-gray: var(
30
- --starasia-ui-color-gray-100,
31
- rgba(243, 244, 246, 1)
32
- );
33
- --starasia-ui-dropdown-color-quinary-gray: var(
34
- --starasia-ui-color-gray-50,
35
- rgba(249, 250, 251, 1)
36
- );
37
- /* bg color */
38
- --starasia-ui-dropdown-background-color-primary: var(
39
- --starasia-ui-dropdown-color-secondary-blue,
40
- rgba(59, 130, 246, 1)
41
- );
42
- --starasia-ui-dropdown-background-color-secondary: var(
43
- --starasia-ui-dropdown-color-quinary-blue,
44
- rgba(239, 246, 255, 1)
45
- );
46
-
47
- /* disalble color */
48
- --starasia-ui-dropdown-color-disable: var(
49
- --starasia-ui-dropdown-color-tertiary-gray,
50
- rgba(209, 213, 219, 1)
51
- );
52
-
53
- /* border color */
54
- --starasia-ui-dropdown-border-color-primary: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
55
- --starasia-ui-dropdown-border-color-secondary: var(
56
- --starasia-ui-color-gray-300,
57
- rgba(209, 213, 219, 1)
58
- );
59
- --starasia-ui-dropdown-border-color-tertiary: rgba(120, 134, 127, 0.2);
60
-
61
- --starasia-ui-dropdown-color-secondary-red: var(
62
- --starasia-ui-color-red-500,
63
- rgba(239, 68, 68, 1)
64
- );
65
-
66
- /* plachoder color */
67
- --starasia-ui-dropdown-placholder-color: var(
68
- --starasia-ui-color-gray-200,
69
- rgba(201, 206, 204, 1)
70
- );
71
-
72
- /* white */
73
- --starasia-ui-dropdown-color-white: var(--starasia-ui-color-gray-50, rgba(255, 254, 255, 1));
74
- /* disabled bg */
75
- --starasia-ui-dropdown-color-disabled-bg: rgba(242, 243, 242, 1);
76
- /* text colors */
77
- --starasia-ui-dropdown-color-text-primary: rgba(24, 26, 25, 1);
78
- --starasia-ui-dropdown-color-text-secondary: rgba(120, 134, 127, 1);
79
- /* shadow */
80
- --starasia-ui-dropdown-box-shadow-list: rgba(0, 0, 0, 0.08);
81
-
82
- /* border width */
83
- --starasia-ui-dropdown-border-width: var(--starasia-ui-border, 1px);
84
-
85
- /* spacing */
86
- --starasia-ui-dropdown-spacing-xs: var(--starasia-ui-spacing-xs, 4px);
87
- --starasia-ui-dropdown-spacing-sm: var(--starasia-ui-spacing-sm, 8px);
88
-
89
- /* shadow */
90
- --starasia-ui-dropdown-box-shadow: 0px 0px 0px 2px rgba(var(--starasia-ui-raw-color-brand-secondary, 144, 176, 218), 0.2);
91
-
92
- /* below is for size,above is */
93
- --starasia-ui-dropdown-fontWeight-normal: var(
94
- --starasia-ui-fontWeights-normal,
95
- 300
96
- );
97
- /* dropdown size sm */
98
- --starasia-ui-dropdown-height-sm: var(--starasia-ui-h-8, 32px);
99
- --starasia-ui-dropdown-border-radius-sm: var(--starasia-ui-radii-md, 8px);
100
- --starasia-ui-dropdown-padding-inline-sm: var(--starasia-ui-spacing-sm, 8px);
101
-
102
- /* dropdown size md */
103
- --starasia-ui-dropdown-height-md: 38px;
104
- --starasia-ui-dropdown-border-radius-md: var(--starasia-ui-radii-md, 8px);
105
- --starasia-ui-dropdown-padding-inline-md: var(--starasia-ui-spacing-3, 12px);
106
-
107
- /* dropdown size lg */
108
- --starasia-ui-dropdown-height-lg: var(--starasia-ui-h-12, 48px);
109
- --starasia-ui-dropdown-border-radius-lg: var(--starasia-ui-radii-lg, 12px);
110
- --starasia-ui-dropdown-padding-inline-lg: var(--starasia-ui-spacing-3, 12px);
9
+ --sa-dropdown-brand: var(--sa-background-brand, #04254f);
10
+ --sa-dropdown-brand-subtle: var(--sa-color-brand-50, #e6edf6);
11
+ --sa-dropdown-brand-secondary: var(--sa-color-brand-200, #99b3db);
12
+ --sa-dropdown-bg: var(--sa-background-primary, #ffffff);
13
+ --sa-dropdown-bg-disabled: rgba(242, 243, 242, 1);
14
+ --sa-dropdown-border: var(--sa-border, 1px);
15
+ --sa-dropdown-border-color: rgba(120, 134, 127, 0.2);
16
+ --sa-dropdown-border-active: var(--sa-background-brand, #04254f);
17
+ --sa-dropdown-border-search: var(--sa-color-gray-300, #dddee1);
18
+ --sa-dropdown-border-error: var(--sa-color-error-500, #ff4d6d);
19
+ --sa-dropdown-color-disable: var(--sa-color-gray-300, #dddee1);
20
+ --sa-dropdown-placeholder: var(--sa-color-gray-400, #b7b9be);
21
+ --sa-dropdown-text-primary: rgba(24, 26, 25, 1);
22
+ --sa-dropdown-text-secondary: rgba(120, 134, 127, 1);
23
+ --sa-dropdown-shadow-list: rgba(0, 0, 0, 0.08);
24
+ --sa-dropdown-shadow-focus: 0px 0px 0px 2px var(--sa-color-brand-200, #99b3db);
25
+ --sa-dropdown-radius: var(--sa-radii-md, 0.5rem);
26
+ --sa-dropdown-radius-lg: var(--sa-radii-lg, 0.75rem);
111
27
  }
112
28
 
113
29
  .starasia-input-dropdown-size-sm {
114
- --baseFont: var(--starasia-ui-fontSizes-sm, 12px);
115
- --height: var(--starasia-ui-dropdown-height-sm);
116
- --borderRadius: var(--starasia-ui-dropdown-border-radius-sm);
117
- --paddingInline: var(--starasia-ui-dropdown-padding-inline-sm);
30
+ --baseFont: var(--sa-font-size-sm, 12px);
31
+ --height: var(--sa-h-8, 32px);
32
+ --borderRadius: var(--sa-dropdown-radius);
33
+ --paddingInline: var(--sa-spacing-sm, 8px);
118
34
  }
119
35
 
120
36
  .starasia-input-dropdown-size-md {
121
- --baseFont: var(--starasia-ui-fontSizes-md, 14px);
122
- --height: var(--starasia-ui-dropdown-height-md);
123
- --borderRadius: var(--starasia-ui-dropdown-border-radius-md);
124
- --paddingInline: var(--starasia-ui-dropdown-padding-inline-md);
37
+ --baseFont: var(--sa-font-size-md, 14px);
38
+ --height: 38px;
39
+ --borderRadius: var(--sa-dropdown-radius);
40
+ --paddingInline: var(--sa-spacing-3, 12px);
125
41
  }
126
42
 
127
43
  .starasia-input-dropdown-size-lg {
128
- --baseFont: var(--starasia-ui-fontSizes-lg, 16px);
129
- --height: var(--starasia-ui-dropdown-height-lg);
130
- --borderRadius: var(--starasia-ui-dropdown-border-radius-lg);
131
- --paddingInline: var(--starasia-ui-dropdown-padding-inline-lg);
44
+ --baseFont: var(--sa-font-size-lg, 16px);
45
+ --height: var(--sa-h-12, 48px);
46
+ --borderRadius: var(--sa-dropdown-radius-lg);
47
+ --paddingInline: var(--sa-spacing-3, 12px);
132
48
  }
133
49
 
134
50
  .starasia-input-dropdown-container {
@@ -137,32 +53,31 @@
137
53
  padding-inline: var(--paddingInline);
138
54
  display: flex;
139
55
  align-items: center;
140
- border: var(--starasia-ui-dropdown-border-width) solid
141
- var(--starasia-ui-dropdown-border-color-tertiary);
56
+ border: var(--sa-dropdown-border) solid var(--sa-dropdown-border-color);
142
57
  border-radius: var(--borderRadius);
143
- background-color: var(--starasia-ui-dropdown-color-white);
58
+ background-color: var(--sa-dropdown-bg);
144
59
  font-size: var(--baseFont);
145
60
  cursor: pointer;
146
61
  }
147
62
  .starasia-input-dropdown-container.disable {
148
- background-color: var(--starasia-ui-dropdown-color-disabled-bg);
63
+ background-color: var(--sa-dropdown-bg-disabled);
149
64
  cursor: not-allowed;
150
65
  pointer-events: none;
151
66
  }
152
67
 
153
68
  .starasia-input-dropdown-container.error {
154
- border-color: var(--starasia-ui-dropdown-color-secondary-red) !important;
69
+ border-color: var(--sa-dropdown-border-error) !important;
155
70
  }
156
71
  .starasia-input-dropdown-container.active {
157
- border-color: var(--starasia-ui-dropdown-border-color-primary);
158
- box-shadow: var(--starasia-ui-dropdown-box-shadow);
159
- background-color: var(--starasia-ui-dropdown-color-white);
72
+ border-color: var(--sa-dropdown-border-active);
73
+ box-shadow: var(--sa-dropdown-shadow-focus);
74
+ background-color: var(--sa-dropdown-bg);
160
75
  }
161
76
 
162
77
  .starasia-input-dropdown-preview-container {
163
78
  display: flex;
164
79
  flex-direction: row;
165
- gap: var(--starasia-ui-dropdown-spacing-sm);
80
+ gap: var(--sa-spacing-sm, 8px);
166
81
  align-items: center;
167
82
  justify-content: space-between;
168
83
  width: 100%;
@@ -173,12 +88,11 @@
173
88
  /* position: absolute; */
174
89
  position: fixed;
175
90
  /* left: 0; */
176
- padding: var(--starasia-ui-dropdown-spacing-sm);
177
- border: var(--starasia-ui-dropdown-border-width) solid
178
- var(--starasia-ui-dropdown-border-color-tertiary);
91
+ padding: var(--sa-spacing-sm, 8px);
92
+ border: var(--sa-dropdown-border) solid var(--sa-dropdown-border-color);
179
93
  border-radius: var(--borderRadius);
180
- background-color: var(--starasia-ui-dropdown-color-white);
181
- box-shadow: 0px 8px 12px 0px var(--starasia-ui-dropdown-box-shadow-list);
94
+ background-color: var(--sa-dropdown-bg);
95
+ box-shadow: 0px 8px 12px 0px var(--sa-dropdown-shadow-list);
182
96
  max-height: 312px;
183
97
  overflow-y: auto;
184
98
  z-index: 999;
@@ -187,7 +101,7 @@
187
101
  /* min-width: 100%; */
188
102
  display: flex;
189
103
  flex-direction: column;
190
- gap: var(--starasia-ui-dropdown-spacing-sm);
104
+ gap: var(--sa-spacing-sm, 8px);
191
105
  /* overflow: hidden;
192
106
  text-overflow: ellipsis;
193
107
  white-space: nowrap; */
@@ -195,11 +109,11 @@
195
109
 
196
110
  .starasia-input-dropdown-lists-container-bottom {
197
111
  top: 100%;
198
- margin-top: var(--starasia-ui-dropdown-spacing-xs);
112
+ margin-top: var(--sa-spacing-xs, 4px);
199
113
  }
200
114
  .starasia-input-dropdown-lists-container-top {
201
115
  bottom: 100%;
202
- margin-bottom: var(--starasia-ui-dropdown-spacing-xs);
116
+ margin-bottom: var(--sa-spacing-xs, 4px);
203
117
  }
204
118
 
205
119
  .starasia-input-dropdown-container-dropdown-search {
@@ -208,12 +122,11 @@
208
122
  height: var(--height);
209
123
  min-height: var(--height);
210
124
  max-height: var(--height);
211
- border: var(--starasia-ui-dropdown-border-width) solid
212
- var(--starasia-ui-dropdown-border-color-secondary);
125
+ border: var(--sa-dropdown-border) solid var(--sa-dropdown-border-search);
213
126
  border-radius: var(--borderRadius);
214
- gap: var(--starasia-ui-dropdown-spacing-sm);
127
+ gap: var(--sa-spacing-sm, 8px);
215
128
  padding-inline: var(--paddingInline);
216
- background: var(--starasia-ui-dropdown-color-white);
129
+ background: var(--sa-dropdown-bg);
217
130
  & input {
218
131
  flex: 1;
219
132
  outline: none;
@@ -228,7 +141,7 @@
228
141
  flex-direction: column;
229
142
  /* overflow: hidden; */
230
143
 
231
- /* gap: var(--starasia-ui-dropdown-spacing-xs); */
144
+ /* gap: var(--sa-spacing-xs, 0.25rem); */
232
145
  }
233
146
  .starasia-input-dropdwon-item-container.multi {
234
147
  display: flex;
@@ -236,7 +149,7 @@
236
149
  gap: 8px;
237
150
  /* overflow: hidden; */
238
151
 
239
- /* gap: var(--starasia-ui-dropdown-spacing-xs); */
152
+ /* gap: var(--sa-spacing-xs, 0.25rem); */
240
153
  }
241
154
 
242
155
  .starasia-input-dropdwon-item {
@@ -247,33 +160,38 @@
247
160
  display: flex;
248
161
  align-items: center;
249
162
  cursor: pointer;
250
- gap: var(--starasia-ui-dropdown-spacing-xs);
163
+ gap: var(--sa-spacing-xs, 4px);
251
164
  padding-block: var(--paddingInline);
252
- border-radius: var(--starasia-ui-dropdown-border-radius-sm);
165
+ border-radius: var(--sa-dropdown-radius);
253
166
  /* min-width: max-content; */
254
167
  overflow: hidden;
255
168
  }
256
169
 
257
170
  .starasia-input-dropdwon-item:hover {
258
- background-color: rgba(var(--starasia-ui-raw-color-brand-secondary, 144, 176, 218), 0.21);
171
+ background-color: color-mix(in srgb, var(--sa-dropdown-brand-secondary) 21%, transparent);
259
172
  }
260
173
  .starasia-input-dropdwon-item.active {
261
- /* color: var(--starasia-ui-dropdown-background-color-primary); */
174
+ /* color: var(--sa-dropdown-brand); */
262
175
  /* border-radius: var(--borderRadius); */
263
- background-color: rgba(var(--starasia-ui-raw-color-brand-secondary, 144, 176, 218), 0.21);
264
- /* background: var(--starasia-ui-dropdown-background-color-secondary); */
176
+ background-color: color-mix(in srgb, var(--sa-dropdown-brand-secondary) 21%, transparent);
177
+ /* background: var(--sa-dropdown-brand-subtle); */
265
178
  /* box-shadow: 0px 0px 0px -1px #f0f0f0; */
266
179
  }
180
+ .starasia-input-dropdwon-item.highlight {
181
+ background-color: color-mix(in srgb, var(--sa-dropdown-brand-secondary) 35%, transparent);
182
+ outline: 2px solid color-mix(in srgb, var(--sa-dropdown-brand-secondary) 40%, transparent);
183
+ outline-offset: -2px;
184
+ }
267
185
 
268
186
  .starasia-input-dropdwon-item-disable {
269
- color: var(--starasia-ui-dropdown-color-disable) !important;
187
+ color: var(--sa-dropdown-color-disable) !important;
270
188
  pointer-events: none;
271
189
  }
272
190
 
273
191
  .starasia-input-dropdown-container-preview-item {
274
192
  flex: 1;
275
193
  display: flex;
276
- gap: var(--starasia-ui-dropdown-spacing-xs);
194
+ gap: var(--sa-spacing-xs, 4px);
277
195
  flex-wrap: wrap;
278
196
  align-items: center;
279
197
  overflow-y: auto;
@@ -281,12 +199,11 @@
281
199
  }
282
200
 
283
201
  .starasia-input-dropdown-preview-item {
284
- border: var(--starasia-ui-dropdown-border-width) solid
285
- var(--starasia-ui-dropdown-border-color-primary);
202
+ border: var(--sa-dropdown-border) solid var(--sa-dropdown-border-active);
286
203
  padding-inline: var(--paddingInline);
287
204
  border-radius: var(--borderRadius);
288
- background-color: var(--starasia-ui-dropdown-background-color-secondary);
289
- color: var(--starasia-ui-dropdown-background-color-primary);
205
+ background-color: var(--sa-dropdown-brand-subtle);
206
+ color: var(--sa-dropdown-brand);
290
207
  height: max-content;
291
208
  font-size: var(--baseFont);
292
209
  display: flex;
@@ -294,35 +211,35 @@
294
211
  gap: 2;
295
212
  }
296
213
  .starasia-input-dropdown-placeholder {
297
- color: var(--starasia-ui-dropdown-placholder-color);
298
- font-weight: var(--starasia-ui-dropdown-fontWeight-normal);
214
+ color: var(--sa-dropdown-placeholder);
215
+ font-weight: var(--sa-font-weight-normal, 300);
299
216
  }
300
217
 
301
218
  .starasia-input-dropdwon-item-text {
302
- color: var(--starasia-ui-dropdown-color-text-primary);
219
+ color: var(--sa-dropdown-text-primary);
303
220
  /* font-size: 14px; */
304
221
  font-size: inherit;
305
222
  font-weight: 500;
306
223
  }
307
224
  .starasia-input-dropdwon-item-text.active {
308
- color: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
225
+ color: var(--sa-dropdown-brand);
309
226
  }
310
227
 
311
228
  .starasia-input-dropdwon-item-text-description {
312
- color: var(--starasia-ui-dropdown-color-text-secondary);
229
+ color: var(--sa-dropdown-text-secondary);
313
230
  /* font-size: 14px; */
314
231
  font-size: inherit;
315
232
  font-weight: 400;
316
233
  }
317
234
  .starasia-input-dropdwon-item-text-description.active {
318
- color: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
235
+ color: var(--sa-dropdown-brand);
319
236
  }
320
237
 
321
238
  /* for checkbox */
322
239
  .checkbox-wrapper-30 .checkbox {
323
240
  --bg: #fff;
324
241
  --brdr: #d1d6ee;
325
- --brdr-actv: var(--starasia-ui-brand-primary-default, rgba(74, 106, 148, 1));
242
+ --brdr-actv: var(--sa-background-brand, #04254f);
326
243
  --brdr-hovr: #bbc1e1;
327
244
  --dur: calc((var(--size, 2) / 2) * 0.6s);
328
245
  display: inline-block;
@@ -394,4 +311,4 @@
394
311
  height: 100%;
395
312
  width: 100%;
396
313
  }
397
- `;function A(a){const[e,t]=o.useState(a),p=o.useRef(null),i=s=>{p.current&&!p.current.contains(s.target)&&t(!1)};return o.useEffect(()=>(document.addEventListener("click",i,!0),()=>{document.removeEventListener("click",i,!0)}),[]),{ref:p,isComponentVisible:e,setIsComponentVisible:t}}const D=({...a})=>r.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",...a,viewBox:"0 0 24 24",fill:"none",color:"#939E99",children:r.jsx("path",{d:"M4 9L12 17L20 9",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5})}),F=({...a})=>r.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",...a,viewBox:"0 0 20 20",fill:"none",children:[r.jsx("circle",{cx:"9.80547",cy:"9.8055",r:"7.49047",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),r.jsx("path",{d:"M15.0153 15.4043L17.9519 18.3333",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]}),O=({isChecked:a})=>r.jsxs("div",{className:"checkbox-wrapper-30",children:[r.jsxs("span",{className:"checkbox",children:[r.jsx("input",{type:"checkbox",style:{pointerEvents:"none"},checked:a}),r.jsx("svg",{children:r.jsx("use",{xlinkHref:"#checkbox-30",className:"checkbox"})})]}),r.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",style:{display:"none"},children:r.jsx("symbol",{id:"checkbox-30",viewBox:"0 0 22 22",children:r.jsx("path",{fill:"none",stroke:"currentColor",d:"M5.5,11.3L9,14.8L20.2,3.3l0,0c-0.5-1-1.5-1.8-2.7-1.8h-13c-1.7,0-3,1.3-3,3v13c0,1.7,1.3,3,3,3h13 c1.7,0,3-1.3,3-3v-13c0-0.4-0.1-0.8-0.3-1.2"})})})]}),H=o.forwardRef(({positionDropdown:a,dropdownLists:e,isComponentVisible:t,searchAble:p,onSearch:i,value:s,handleChangeValue:g,multiSelect:l,searchValue:v},E)=>{const[m,z]=o.useState(0),[N,k]=o.useState(),h=o.useRef(null);return o.useEffect(()=>{if(h.current){const n=h.current.getBoundingClientRect();z(n.width)}},[h,t]),o.useEffect(()=>{e&&v?e.forEach(n=>{if(n.label.startsWith(v||"")){k(n.value);return}}):k(void 0)},[v,e]),r.jsx(r.Fragment,{children:t?r.jsxs("div",{className:"starasia-input-dropdown-lists-container",onClick:n=>n.stopPropagation(),ref:E,children:[p?r.jsxs("div",{className:"starasia-input-dropdown-container-dropdown-search",style:{order:a=="bottom"?0:2,position:"sticky",top:0,bottom:0,zIndex:1},children:[r.jsx("div",{style:{display:"flex"},children:r.jsx(F,{strokeWidth:2,width:20})}),r.jsx("input",{onChange:n=>{i&&i(n.target.value)},value:v,autoFocus:!0,style:{width:"100%"}})]}):null,r.jsx("div",{className:`starasia-input-dropdwon-item-container ${l?"multi":""}`,ref:h,children:e.map((n,x)=>{const f=!!(s!=null&&s.find(C=>C.value===n.value));return r.jsxs("div",{className:`starasia-input-dropdwon-item ${f?"active":" "} ${n.disable?"starasia-input-dropdwon-item-disable":null}`,onClick:()=>g(n.label,n.value),children:[l?r.jsx("div",{style:{marginRight:"8px"},children:r.jsx(O,{isChecked:f})}):null,n.icon?r.jsx("div",{children:o.cloneElement(n.icon,{width:16})}):null,r.jsxs("div",{children:[r.jsx("p",{className:`starasia-input-dropdwon-item-text ${f?"active":null} ${n.disable?"starasia-input-dropdwon-item-disable":null}`,style:{textWrap:"nowrap",width:`${m-12}px`,overflow:"hidden",textOverflow:"ellipsis"},children:n.label}),n.description?r.jsx("p",{className:`starasia-input-dropdwon-item-text-description ${f?"active":null} ${n.disable?"starasia-input-dropdwon-item-disable":null}`,style:{textWrap:"nowrap",width:`${m-12}px`,overflow:"hidden",textOverflow:"ellipsis"},children:n.description}):null]})]},x)})})]}):null})}),M=({children:a,handleChangePosition:e})=>{const t=o.useRef(null);o.useEffect(()=>{var g;const i=()=>{if(t.current){let l=t.current.parentElement;for(;l&&!p(l);)l=l.parentElement;l&&e()}};let s=(g=t.current)==null?void 0:g.parentElement;for(;s&&!p(s);)s=s.parentElement;return s&&s.addEventListener("scroll",i),i(),()=>{s&&s.removeEventListener("scroll",i)}},[]);const p=i=>i&&(i.scrollHeight>i.clientHeight||i.scrollWidth>i.clientWidth);return r.jsx("div",{ref:t,children:a})},W="starasia-input-dropdown-styles";(a=>{if(!document.getElementById(W)){const e=document.createElement("style");e.id=W,e.textContent=a,document.head.appendChild(e)}})(q);const P=({dropdownLists:a,onChange:e,defaultValue:t,size:p="md",multiSelect:i,searchAble:s,iconLeft:g,placeholder:l,onSearch:v,error:E,onBlur:m,onFocus:z,disable:N,searchValue:k})=>{const h=o.useRef(),[n,x]=o.useState([]),[f,C]=o.useState(""),b=o.useRef(null),{isComponentVisible:I,ref:B,setIsComponentVisible:S}=A(!1),V=()=>{S(d=>!d)},j=(d,c)=>{if(!i)x([{label:d,value:c}]),e([{label:d,value:c}]),S(!1);else if(n==null?void 0:n.find(u=>u.value===c)){const u=[...n?n.filter(G=>G.value!==c):[]];x(u),e(u)}else{const u=[...n||[],{label:d,value:c}];x(u),e(u)}};o.useEffect(()=>{JSON.stringify(h.current)===JSON.stringify(t)||(h.current=t,x(h.current||[]))},[t]);const J=()=>n.length?i?n==null?void 0:n.map((d,c)=>r.jsxs("div",{className:"starasia-input-dropdown-preview-item",children:[r.jsx("p",{style:{minWidth:"max-content"},children:d==null?void 0:d.label},c),r.jsx(T,{onClick:()=>j(d.label,d.value)})]})):r.jsx("p",{style:{minWidth:"max-content"},children:n==null?void 0:n[0].label}):r.jsx("p",{className:"starasia-input-dropdown-placeholder",children:l}),y=()=>{if(B.current&&b.current){const d=window.innerHeight,c=B.current.getBoundingClientRect(),L=b.current.getBoundingClientRect(),u=c.bottom+L.height;b.current.style.left=`${c.left}px`,b.current.style.width=`${c.width}px`,u>=d-10?(b.current.style.top=`${c.top-L.height-5}px`,C("top")):(b.current.style.top=`${c.top+c.height}px`,C("bottom"))}};return o.useEffect(()=>(window.addEventListener("scroll",y),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y),window.removeEventListener("resize",y)}),[]),o.useEffect(()=>{y()},[I]),r.jsx(M,{handleChangePosition:y,children:r.jsxs("div",{className:`starasia-input-dropdown-container ${N?"disable":""} starasia-input-dropdown-size-${p} ${I?"active":""} ${E?"error":""}`,ref:B,onClick:V,children:[r.jsxs("div",{className:"starasia-input-dropdown-preview-container",children:[g?r.jsx(r.Fragment,{children:o.cloneElement(g,{width:$(p),color:"#939E99",style:{color:"#939E99"}})}):null,r.jsx("div",{className:"starasia-input-dropdown-container-preview-item",tabIndex:100,onBlur:m,onFocus:z,children:J()}),r.jsx(D,{strokeWidth:2,width:$(p),style:{color:"#939E99"}})]}),r.jsx(H,{dropdownLists:a,handleChangeValue:j,isComponentVisible:I,positionDropdown:f,searchAble:!!s,value:n,onSearch:v,ref:b,multiSelect:i,searchValue:k})]})})},$=a=>{if(a==="sm")return 16;if(a==="md")return 16;if(a==="lg")return 20},T=a=>r.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",...a,children:r.jsx("path",{d:"M12 6L6 12M6.00001 6L12 12",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})});w.Dropdown=P,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
314
+ `;function H(e){const[p,d]=t.useState(e),c=t.useRef(null),a=o=>{c.current&&!c.current.contains(o.target)&&d(!1)};return t.useEffect(()=>(document.addEventListener("click",a,!0),()=>{document.removeEventListener("click",a,!0)}),[]),{ref:c,isComponentVisible:p,setIsComponentVisible:d}}const V=({...e})=>n.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",...e,viewBox:"0 0 24 24",fill:"none",color:"#939E99",children:n.jsx("path",{d:"M4 9L12 17L20 9",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5})}),M=({...e})=>n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",...e,viewBox:"0 0 20 20",fill:"none",children:[n.jsx("circle",{cx:"9.80547",cy:"9.8055",r:"7.49047",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),n.jsx("path",{d:"M15.0153 15.4043L17.9519 18.3333",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]}),P=({isChecked:e})=>n.jsxs("div",{className:"checkbox-wrapper-30",children:[n.jsxs("span",{className:"checkbox",children:[n.jsx("input",{type:"checkbox",style:{pointerEvents:"none"},checked:e}),n.jsx("svg",{children:n.jsx("use",{xlinkHref:"#checkbox-30",className:"checkbox"})})]}),n.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",style:{display:"none"},children:n.jsx("symbol",{id:"checkbox-30",viewBox:"0 0 22 22",children:n.jsx("path",{fill:"none",stroke:"currentColor",d:"M5.5,11.3L9,14.8L20.2,3.3l0,0c-0.5-1-1.5-1.8-2.7-1.8h-13c-1.7,0-3,1.3-3,3v13c0,1.7,1.3,3,3,3h13 c1.7,0,3-1.3,3-3v-13c0-0.4-0.1-0.8-0.3-1.2"})})})]}),q=t.forwardRef(({positionDropdown:e,dropdownLists:p,isComponentVisible:d,searchAble:c,onSearch:a,value:o,handleChangeValue:v,multiSelect:l,searchValue:B,highlightedIndex:f},$)=>{const[z,N]=t.useState(0),k=t.useRef(null),g=t.useRef([]);return t.useEffect(()=>{if(k.current){const r=k.current.getBoundingClientRect();N(r.width)}},[k,d]),t.useEffect(()=>{var r;f>=0&&g.current[f]&&((r=g.current[f])==null||r.scrollIntoView({block:"nearest"}))},[f]),n.jsx(n.Fragment,{children:d?n.jsxs("div",{className:"starasia-input-dropdown-lists-container",onClick:r=>r.stopPropagation(),ref:$,children:[c?n.jsxs("div",{className:"starasia-input-dropdown-container-dropdown-search",style:{order:e=="bottom"?0:2,position:"sticky",top:0,bottom:0,zIndex:1},children:[n.jsx("div",{style:{display:"flex"},children:n.jsx(M,{strokeWidth:2,width:20})}),n.jsx("input",{onChange:r=>{a&&a(r.target.value)},value:B,autoFocus:!0,style:{width:"100%"}})]}):null,n.jsx("div",{className:`starasia-input-dropdwon-item-container ${l?"multi":""}`,ref:k,children:p.map((r,b)=>{const m=!!(o!=null&&o.find(y=>y.value===r.value));return n.jsxs("div",{className:`starasia-input-dropdwon-item ${m?"active":""} ${b===f?"highlight":""} ${r.disable?"starasia-input-dropdwon-item-disable":""}`,ref:y=>{g.current[b]=y},onClick:()=>v(r.label,r.value),children:[l?n.jsx("div",{style:{marginRight:"8px"},children:n.jsx(P,{isChecked:m})}):null,r.icon?n.jsx("div",{children:t.cloneElement(r.icon,{width:16})}):null,n.jsxs("div",{children:[n.jsx("p",{className:`starasia-input-dropdwon-item-text ${m?"active":null} ${r.disable?"starasia-input-dropdwon-item-disable":null}`,style:{textWrap:"nowrap",width:`${z-12}px`,overflow:"hidden",textOverflow:"ellipsis"},children:r.label}),r.description?n.jsx("p",{className:`starasia-input-dropdwon-item-text-description ${m?"active":null} ${r.disable?"starasia-input-dropdwon-item-disable":null}`,style:{textWrap:"nowrap",width:`${z-12}px`,overflow:"hidden",textOverflow:"ellipsis"},children:r.description}):null]})]},b)})})]}):null})}),T=({children:e,handleChangePosition:p})=>{const d=t.useRef(null);t.useEffect(()=>{var v;const a=()=>{if(d.current){let l=d.current.parentElement;for(;l&&!c(l);)l=l.parentElement;l&&p()}};let o=(v=d.current)==null?void 0:v.parentElement;for(;o&&!c(o);)o=o.parentElement;return o&&o.addEventListener("scroll",a),a(),()=>{o&&o.removeEventListener("scroll",a)}},[]);const c=a=>a&&(a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth);return n.jsx("div",{ref:d,children:e})},S="starasia-input-dropdown-styles";(e=>{if(!document.getElementById(S)){const p=document.createElement("style");p.id=S,p.textContent=e,document.head.appendChild(p)}})(O);const J=({dropdownLists:e,onChange:p,defaultValue:d,size:c="md",multiSelect:a,searchAble:o,iconLeft:v,placeholder:l,onSearch:B,error:f,onBlur:$,onFocus:z,disable:N,searchValue:k})=>{const g=t.useRef(),[r,b]=t.useState([]),[m,y]=t.useState(""),[u,D]=t.useState(-1),x=t.useRef(null),{isComponentVisible:E,ref:L,setIsComponentVisible:I}=H(!1),U=()=>{I(s=>!s)},W=(s,i)=>{if(!a)b([{label:s,value:i}]),p([{label:s,value:i}]),I(!1);else if(r==null?void 0:r.find(w=>w.value===i)){const w=[...r?r.filter(X=>X.value!==i):[]];b(w),p(w)}else{const w=[...r||[],{label:s,value:i}];b(w),p(w)}};t.useEffect(()=>{JSON.stringify(g.current)===JSON.stringify(d)||(g.current=d,b(g.current||[]))},[d]);const G=()=>r.length?a?r==null?void 0:r.map((s,i)=>n.jsxs("div",{className:"starasia-input-dropdown-preview-item",children:[n.jsx("p",{style:{minWidth:"max-content"},children:s==null?void 0:s.label},i),n.jsx(K,{onClick:()=>W(s.label,s.value)})]})):n.jsx("p",{style:{minWidth:"max-content"},children:r==null?void 0:r[0].label}):n.jsx("p",{className:"starasia-input-dropdown-placeholder",children:l}),C=()=>{if(L.current&&x.current){const s=window.innerHeight,i=L.current.getBoundingClientRect(),j=x.current.getBoundingClientRect(),w=i.bottom+j.height;x.current.style.left=`${i.left}px`,x.current.style.width=`${i.width}px`,w>=s-10?(x.current.style.top=`${i.top-j.height-5}px`,y("top")):(x.current.style.top=`${i.top+i.height}px`,y("bottom"))}};t.useEffect(()=>(window.addEventListener("scroll",C),window.addEventListener("resize",C),()=>{window.removeEventListener("scroll",C),window.removeEventListener("resize",C)}),[]),t.useEffect(()=>{C()},[E]),t.useEffect(()=>{E||D(-1)},[E]);const Q=s=>{if(!E){(s.key==="ArrowDown"||s.key==="Enter")&&(s.preventDefault(),I(!0));return}switch(s.key){case"ArrowDown":{s.preventDefault();const i=A(e,u,1);i!==-1&&D(i);break}case"ArrowUp":{s.preventDefault();const i=A(e,u,-1);i!==-1&&D(i);break}case"Enter":{s.preventDefault(),u>=0&&e[u]&&!e[u].disable&&W(e[u].label,e[u].value);break}case"Escape":{I(!1);break}}};return n.jsx(T,{handleChangePosition:C,children:n.jsxs("div",{className:`starasia-input-dropdown-container ${N?"disable":""} starasia-input-dropdown-size-${c} ${E?"active":""} ${f?"error":""}`,ref:L,onClick:U,onKeyDown:Q,tabIndex:0,onBlur:$,onFocus:z,children:[n.jsxs("div",{className:"starasia-input-dropdown-preview-container",children:[v?n.jsx(n.Fragment,{children:t.cloneElement(v,{width:F(c),color:"#939E99",style:{color:"#939E99"}})}):null,n.jsx("div",{className:"starasia-input-dropdown-container-preview-item",children:G()}),n.jsx(V,{strokeWidth:2,width:F(c),style:{color:"#939E99"}})]}),n.jsx(q,{dropdownLists:e,handleChangeValue:W,isComponentVisible:E,positionDropdown:m,searchAble:!!o,value:r,onSearch:B,ref:x,multiSelect:a,searchValue:k,highlightedIndex:u})]})})},A=(e,p,d)=>{const c=e.length;let a=p+d;for(;a>=0&&a<c;){if(!e[a].disable)return a;a+=d}if(d===1){for(let o=0;o<c;o++)if(!e[o].disable)return o}else for(let o=c-1;o>=0;o--)if(!e[o].disable)return o;return-1},F=e=>{if(e==="sm")return 16;if(e==="md")return 16;if(e==="lg")return 20},K=e=>n.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",...e,children:n.jsx("path",{d:"M12 6L6 12M6.00001 6L12 12",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})});h.Dropdown=J,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starasia/dropdown",
3
- "version": "1.0.6",
3
+ "version": "2.0.0",
4
4
  "description": "dropdown component for starasia UI",
5
5
  "author": "Prawito Hudoro",
6
6
  "main": "dist/dropdown.umd.js",