@learnforjob/react-multi-select-dropdown 1.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.
package/README.md ADDED
@@ -0,0 +1,111 @@
1
+ # React Multi Select Dropdown
2
+
3
+ A customizable, searchable, lightweight React multi-select dropdown with async loading, checkbox support, keyboard navigation, and virtualization.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install react-multi-select-dropdown
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```jsx
14
+ import React, { useState } from 'react';
15
+ import MultiSelectDropdown from 'react-multi-select-dropdown';
16
+
17
+ const options = [
18
+ { label: 'React', value: 'react' },
19
+ { label: 'Vue', value: 'vue' },
20
+ { label: 'Angular', value: 'angular' },
21
+ ];
22
+
23
+ function App() {
24
+ const [selected, setSelected] = useState([]);
25
+
26
+ return (
27
+ <MultiSelectDropdown
28
+ options={options}
29
+ value={selected}
30
+ onChange={setSelected}
31
+ placeholder="Select frameworks"
32
+ />
33
+ );
34
+ }
35
+
36
+ export default App;
37
+ ```
38
+
39
+ ## Props
40
+
41
+ | Prop | Type | Default | Description |
42
+ |------|------|---------|-------------|
43
+ | options | `Option[]` | `[]` | Array of options to display |
44
+ | value | `(string \| number)[]` | `[]` | Currently selected values |
45
+ | onChange | `(values: (string \| number)[]) => void` | `undefined` | Callback when selection changes |
46
+ | placeholder | `string` | `'Select options'` | Placeholder text when nothing is selected |
47
+ | disabled | `boolean` | `false` | Disable the dropdown |
48
+ | selectAllText | `string` | `'Select All'` | Text for select all checkbox |
49
+ | searchable | `boolean` | `true` | Enable search functionality |
50
+ | groupBy | `string` | `undefined` | Property to group options by |
51
+ | maxSelectionLimit | `number` | `undefined` | Maximum number of options that can be selected |
52
+ | renderOption | `(option: Option) => React.ReactNode` | `undefined` | Custom renderer for options |
53
+ | renderTag | `(option: Option) => React.ReactNode` | `undefined` | Custom renderer for selected tags |
54
+ | customClassName | `string` | `undefined` | Additional CSS class for the container |
55
+
56
+ ## TypeScript Support
57
+
58
+ This package is written in TypeScript and includes type definitions.
59
+
60
+ ## Customization
61
+
62
+ You can customize the rendering of options and selected tags:
63
+
64
+ ```jsx
65
+ <MultiSelectDropdown
66
+ options={options}
67
+ value={selected}
68
+ onChange={setSelected}
69
+ renderOption={(option) => (
70
+ <div>
71
+ <strong>{option.label}</strong>
72
+ </div>
73
+ )}
74
+ renderTag={(option) => (
75
+ <span style={{ backgroundColor: 'lightblue' }}>
76
+ {option.label}
77
+ </span>
78
+ )}
79
+ />
80
+ ```
81
+
82
+ ## Grouped Options
83
+
84
+ To group options, use the `groupBy` prop:
85
+
86
+ ```jsx
87
+ const groupedOptions = [
88
+ { label: 'React', value: 'react', category: 'Framework' },
89
+ { label: 'Vue', value: 'vue', category: 'Framework' },
90
+ { label: 'HTML', value: 'html', category: 'Language' },
91
+ { label: 'CSS', value: 'css', category: 'Language' },
92
+ ];
93
+
94
+ <MultiSelectDropdown
95
+ options={groupedOptions}
96
+ value={selected}
97
+ onChange={setSelected}
98
+ groupBy="category"
99
+ />
100
+ ```
101
+
102
+ ## Accessibility
103
+
104
+ The component follows accessibility best practices:
105
+ - Keyboard navigation (Arrow keys, Enter, Escape)
106
+ - ARIA labels
107
+ - Screen reader support
108
+
109
+ ## License
110
+
111
+ MIT
@@ -0,0 +1,40 @@
1
+ import React from "react";
2
+ import "../styles/multiSelectDropdown.scss";
3
+ export interface Option {
4
+ label: string;
5
+ value: string | number;
6
+ }
7
+ export interface Theme {
8
+ primaryColor?: string;
9
+ primaryHover?: string;
10
+ bgColor?: string;
11
+ borderColor?: string;
12
+ textColor?: string;
13
+ placeholderColor?: string;
14
+ itemHoverBg?: string;
15
+ selectedBg?: string;
16
+ selectedColor?: string;
17
+ disabledBg?: string;
18
+ disabledColor?: string;
19
+ borderRadius?: string;
20
+ fontSize?: string;
21
+ headerHeight?: string;
22
+ }
23
+ export interface MultiSelectDropdownProps {
24
+ options: Option[];
25
+ value: (string | number)[];
26
+ onChange: (values: (string | number)[]) => void;
27
+ placeholder?: string;
28
+ disabled?: boolean;
29
+ selectAllText?: string;
30
+ searchable?: boolean;
31
+ groupBy?: string;
32
+ maxSelectionLimit?: number;
33
+ renderOption?: (option: Option) => React.ReactNode;
34
+ renderTag?: (option: Option) => React.ReactNode;
35
+ customClassName?: string;
36
+ theme?: Theme;
37
+ }
38
+ declare const MultiSelectDropdown: ({ options, value, onChange, placeholder, disabled, selectAllText, searchable, groupBy, maxSelectionLimit, renderOption, renderTag: _renderTag, customClassName, theme, }: MultiSelectDropdownProps) => import("react/jsx-runtime").JSX.Element;
39
+ export default MultiSelectDropdown;
40
+ //# sourceMappingURL=MultiSelectDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectDropdown.d.ts","sourceRoot":"","sources":["../../src/components/MultiSelectDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,oCAAoC,CAAC;AAE5C,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,KAAK;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,QAAA,MAAM,mBAAmB,GAAI,0KAc1B,wBAAwB,4CAmP1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { default as MultiSelectDropdown } from './components/MultiSelectDropdown';
2
+ export type { MultiSelectDropdownProps, Theme } from './components/MultiSelectDropdown';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClF,YAAY,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{jsxs as e,jsx as n,Fragment as o}from"react/jsx-runtime";import{useState as r,useRef as t,useMemo as l,useEffect as i}from"react";!function(e,n){void 0===n&&(n={});var o=n.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css","top"===o&&r.firstChild?r.insertBefore(t,r.firstChild):r.appendChild(t),t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))}}(".multi-select {\n --ms-primary-color: #339ef7;\n --ms-primary-hover: #1a8ceb;\n --ms-bg-color: #ffffff;\n --ms-border-color: #cccccc;\n --ms-text-color: #333333;\n --ms-placeholder-color: #495057;\n --ms-item-hover-bg: #ebf5ff;\n --ms-selected-bg: #339ef7;\n --ms-selected-color: #ffffff;\n --ms-disabled-bg: #e9ecef;\n --ms-disabled-color: #b3b3b3;\n --ms-border-radius: 4px;\n --ms-font-size: 1rem;\n --ms-header-height: 36px;\n width: 100%;\n position: relative;\n}\n.multi-select .dropdown-header {\n box-sizing: border-box;\n background-color: var(--ms-bg-color);\n border: 1px solid var(--ms-border-color);\n border-radius: var(--ms-border-radius);\n color: var(--ms-text-color);\n cursor: default;\n display: table;\n border-spacing: 0px;\n border-collapse: separate;\n height: var(--ms-header-height);\n outline: none;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.multi-select .dropdown-header .dropdownText {\n box-sizing: border-box;\n inset: 0px;\n color: var(--ms-placeholder-color);\n font-size: var(--ms-font-size);\n line-height: calc(var(--ms-header-height) - 2px);\n padding-left: 10px;\n padding-right: 10px;\n position: absolute;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.multi-select .dropdown-header .arrowDown {\n box-sizing: border-box;\n border-color: rgb(153, 153, 153) transparent transparent;\n border-style: solid;\n border-width: 5px 5px 2.5px;\n display: inline-block;\n height: 0px;\n width: 0px;\n top: 14px;\n position: absolute;\n right: 8px;\n}\n.multi-select .dropdown-header .arrowUp {\n box-sizing: border-box;\n border-color: transparent transparent rgb(153, 153, 153);\n border-style: solid;\n border-width: 0px 5px 5px;\n display: inline-block;\n height: 0px;\n width: 0px;\n top: 14px;\n position: absolute;\n right: 8px;\n}\n.multi-select .dropdown-list {\n position: absolute;\n width: 100%;\n border: 1px solid var(--ms-border-color);\n border-top: none;\n background: var(--ms-bg-color);\n max-height: 300px;\n overflow-y: auto;\n z-index: 1000;\n}\n.multi-select .search-input {\n display: block;\n border-radius: 3px;\n box-sizing: border-box;\n height: 30px;\n line-height: 24px;\n border: 1px solid rgb(222, 226, 228);\n padding: 10px;\n width: stretch;\n outline: none;\n margin: 7px;\n}\n.multi-select .dropdown-item {\n padding: 10px 14px;\n cursor: pointer;\n color: rgb(102, 102, 102) !important;\n display: flex;\n font-size: 14px;\n margin: 0;\n align-items: flex-start;\n gap: 8px;\n}\n.multi-select .dropdown-item span {\n flex: 1;\n min-width: 0;\n word-break: break-all;\n overflow-wrap: anywhere;\n white-space: normal;\n}\n.multi-select .dropdown-item input {\n flex-shrink: 0;\n}\n.multi-select .dropdown-item:hover {\n background-color: var(--ms-item-hover-bg);\n}\n.multi-select .select-all {\n box-sizing: border-box;\n background-color: var(--ms-item-hover-bg);\n color: rgb(102, 102, 102);\n cursor: pointer;\n padding: 10px 14px;\n outline: 0px;\n margin-bottom: 6px;\n}\n.multi-select .dropdown-item.active {\n color: var(--ms-selected-color) !important;\n text-decoration: none;\n background-color: var(--ms-primary-color);\n}\n.multi-select .dropdown-item.active:hover {\n color: var(--ms-selected-color);\n}\n.multi-select .no-data {\n padding: 8px;\n text-align: center;\n color: #888;\n}\n.multi-select .multi-select.disabled .dropdown-header {\n background: var(--ms-disabled-bg);\n cursor: default;\n color: var(--ms-disabled-color);\n}",{insertAt:"top"});const s=({options:s=[],value:a=[],onChange:d,placeholder:c="Select options",disabled:p=!1,selectAllText:m="Select All",searchable:h=!0,groupBy:u,maxSelectionLimit:b,renderOption:g,renderTag:x,customClassName:v,theme:f})=>{const[w,y]=r(!1),[C,k]=r(""),N=t(null),z=l(()=>{if(!u)return s;const e=[],n=new Map;return s.forEach(e=>{const o=String(e[u]||"Other");n.has(o)||n.set(o,[]),n.get(o).push(e)}),n.forEach((n,o)=>{e.push({label:o,options:n})}),e},[s,u]),S=l(()=>{if(!h||!C)return u?z:s;const e=s.filter(e=>String(e?.label||"").toLowerCase().includes(C.toLowerCase()));return u?z.map(n=>({...n,options:n.options.filter(n=>e.some(e=>e.value===n.value))})).filter(e=>e.options.length>0):e},[s,C,h,u,z]),T=e=>{if(!a.includes(e)&&b&&a.length>=b)return;let n=[];n=a.includes(e)?a.filter(n=>n!==e):[...a,e],d&&d(n)},B=s.length>0&&s.every(e=>a.includes(e.value)),E=s.filter(e=>a.includes(e.value)).map(e=>e.label);return i(()=>{const e=e=>{N.current&&!N.current.contains(e.target)&&y(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),i(()=>{w||k("")},[w]),e("div",{className:`multi-select ${p?"disabled":""} ${v||""}`,ref:N,style:{"--ms-primary-color":f?.primaryColor,"--ms-primary-hover":f?.primaryHover,"--ms-bg-color":f?.bgColor,"--ms-border-color":f?.borderColor,"--ms-text-color":f?.textColor,"--ms-placeholder-color":f?.placeholderColor,"--ms-item-hover-bg":f?.itemHoverBg,"--ms-selected-bg":f?.selectedBg,"--ms-selected-color":f?.selectedColor,"--ms-disabled-bg":f?.disabledBg,"--ms-disabled-color":f?.disabledColor,"--ms-border-radius":f?.borderRadius,"--ms-font-size":f?.fontSize,"--ms-header-height":f?.headerHeight},children:[e("div",{className:"dropdown-header",onClick:()=>{p||y(e=>!e)},children:[n("span",{className:"dropdownText",children:0===a.length?c:B?m:E.join(", ")}),n("span",{className:""+(w?"arrowUp":"arrowDown")})]}),w&&!p&&e("div",{className:"dropdown-list",children:[h&&n("input",{type:"text",className:"search-input",placeholder:"Search...",value:C,onChange:e=>k(e.target.value)}),s.length>0&&e("label",{className:"dropdown-item select-all",children:[e("span",{children:[m," "]}),n("input",{type:"checkbox",checked:B,onChange:()=>{const e=s.map(e=>e.value);let n=[];n=e.every(e=>a.includes(e))?[]:e,d&&d(n)}})]}),u?S.map((r,t)=>e("div",{className:"option-group",children:[n("div",{className:"group-label",children:r.label}),r.options.length>0?r.options.map((r,l)=>n("label",{className:"dropdown-item "+(a.includes(r.value)?"active":""),children:g?g(r):e(o,{children:[n("span",{children:r.label}),n("input",{type:"checkbox",checked:a.includes(r.value),onChange:()=>T(r.value)})]})},`${t}-${l}`)):n("div",{className:"no-data",children:"No results found"})]},`group-${t}`)):S.length>0?S.map(r=>n("label",{className:"dropdown-item "+(a.includes(r.value)?"active":""),children:g?g(r):e(o,{children:[n("span",{children:r.label}),n("input",{type:"checkbox",checked:a.includes(r.value),onChange:()=>T(r.value)})]})},r.value)):n("div",{className:"no-data",children:"No results found"})]})]})};export{s as MultiSelectDropdown};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/MultiSelectDropdown.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","MultiSelectDropdown","options","value","onChange","placeholder","disabled","selectAllText","searchable","groupBy","maxSelectionLimit","renderOption","renderTag","_renderTag","customClassName","theme","isOpen","setIsOpen","useState","searchTerm","setSearchTerm","dropdownRef","useRef","processedOptions","useMemo","groups","groupMap","Map","forEach","option","groupKey","String","has","set","get","push","opts","label","filteredOptions","searchableOptions","filter","toLowerCase","includes","map","group","some","opt","length","handleCheckboxChange","val","updated","v","isAllSelected","every","selectedLabels","useEffect","handleClickOutside","event","current","contains","target","addEventListener","removeEventListener","_jsxs","className","primaryColor","primaryHover","bgColor","borderColor","textColor","placeholderColor","itemHoverBg","selectedBg","selectedColor","disabledBg","disabledColor","borderRadius","fontSize","headerHeight","children","onClick","prev","_jsx","join","e","checked","allValues","groupIndex","optionIndex","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),n=require("react");!function(e,n){void 0===n&&(n={});var o=n.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css","top"===o&&r.firstChild?r.insertBefore(t,r.firstChild):r.appendChild(t),t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))}}(".multi-select {\n --ms-primary-color: #339ef7;\n --ms-primary-hover: #1a8ceb;\n --ms-bg-color: #ffffff;\n --ms-border-color: #cccccc;\n --ms-text-color: #333333;\n --ms-placeholder-color: #495057;\n --ms-item-hover-bg: #ebf5ff;\n --ms-selected-bg: #339ef7;\n --ms-selected-color: #ffffff;\n --ms-disabled-bg: #e9ecef;\n --ms-disabled-color: #b3b3b3;\n --ms-border-radius: 4px;\n --ms-font-size: 1rem;\n --ms-header-height: 36px;\n width: 100%;\n position: relative;\n}\n.multi-select .dropdown-header {\n box-sizing: border-box;\n background-color: var(--ms-bg-color);\n border: 1px solid var(--ms-border-color);\n border-radius: var(--ms-border-radius);\n color: var(--ms-text-color);\n cursor: default;\n display: table;\n border-spacing: 0px;\n border-collapse: separate;\n height: var(--ms-header-height);\n outline: none;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.multi-select .dropdown-header .dropdownText {\n box-sizing: border-box;\n inset: 0px;\n color: var(--ms-placeholder-color);\n font-size: var(--ms-font-size);\n line-height: calc(var(--ms-header-height) - 2px);\n padding-left: 10px;\n padding-right: 10px;\n position: absolute;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.multi-select .dropdown-header .arrowDown {\n box-sizing: border-box;\n border-color: rgb(153, 153, 153) transparent transparent;\n border-style: solid;\n border-width: 5px 5px 2.5px;\n display: inline-block;\n height: 0px;\n width: 0px;\n top: 14px;\n position: absolute;\n right: 8px;\n}\n.multi-select .dropdown-header .arrowUp {\n box-sizing: border-box;\n border-color: transparent transparent rgb(153, 153, 153);\n border-style: solid;\n border-width: 0px 5px 5px;\n display: inline-block;\n height: 0px;\n width: 0px;\n top: 14px;\n position: absolute;\n right: 8px;\n}\n.multi-select .dropdown-list {\n position: absolute;\n width: 100%;\n border: 1px solid var(--ms-border-color);\n border-top: none;\n background: var(--ms-bg-color);\n max-height: 300px;\n overflow-y: auto;\n z-index: 1000;\n}\n.multi-select .search-input {\n display: block;\n border-radius: 3px;\n box-sizing: border-box;\n height: 30px;\n line-height: 24px;\n border: 1px solid rgb(222, 226, 228);\n padding: 10px;\n width: stretch;\n outline: none;\n margin: 7px;\n}\n.multi-select .dropdown-item {\n padding: 10px 14px;\n cursor: pointer;\n color: rgb(102, 102, 102) !important;\n display: flex;\n font-size: 14px;\n margin: 0;\n align-items: flex-start;\n gap: 8px;\n}\n.multi-select .dropdown-item span {\n flex: 1;\n min-width: 0;\n word-break: break-all;\n overflow-wrap: anywhere;\n white-space: normal;\n}\n.multi-select .dropdown-item input {\n flex-shrink: 0;\n}\n.multi-select .dropdown-item:hover {\n background-color: var(--ms-item-hover-bg);\n}\n.multi-select .select-all {\n box-sizing: border-box;\n background-color: var(--ms-item-hover-bg);\n color: rgb(102, 102, 102);\n cursor: pointer;\n padding: 10px 14px;\n outline: 0px;\n margin-bottom: 6px;\n}\n.multi-select .dropdown-item.active {\n color: var(--ms-selected-color) !important;\n text-decoration: none;\n background-color: var(--ms-primary-color);\n}\n.multi-select .dropdown-item.active:hover {\n color: var(--ms-selected-color);\n}\n.multi-select .no-data {\n padding: 8px;\n text-align: center;\n color: #888;\n}\n.multi-select .multi-select.disabled .dropdown-header {\n background: var(--ms-disabled-bg);\n cursor: default;\n color: var(--ms-disabled-color);\n}",{insertAt:"top"});exports.MultiSelectDropdown=({options:o=[],value:r=[],onChange:t,placeholder:l="Select options",disabled:s=!1,selectAllText:i="Select All",searchable:a=!0,groupBy:d,maxSelectionLimit:c,renderOption:p,renderTag:m,customClassName:h,theme:u})=>{const[b,x]=n.useState(!1),[g,v]=n.useState(""),f=n.useRef(null),w=n.useMemo(()=>{if(!d)return o;const e=[],n=new Map;return o.forEach(e=>{const o=String(e[d]||"Other");n.has(o)||n.set(o,[]),n.get(o).push(e)}),n.forEach((n,o)=>{e.push({label:o,options:n})}),e},[o,d]),y=n.useMemo(()=>{if(!a||!g)return d?w:o;const e=o.filter(e=>String(e?.label||"").toLowerCase().includes(g.toLowerCase()));return d?w.map(n=>({...n,options:n.options.filter(n=>e.some(e=>e.value===n.value))})).filter(e=>e.options.length>0):e},[o,g,a,d,w]),j=e=>{if(!r.includes(e)&&c&&r.length>=c)return;let n=[];n=r.includes(e)?r.filter(n=>n!==e):[...r,e],t&&t(n)},C=o.length>0&&o.every(e=>r.includes(e.value)),k=o.filter(e=>r.includes(e.value)).map(e=>e.label);return n.useEffect(()=>{const e=e=>{f.current&&!f.current.contains(e.target)&&x(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),n.useEffect(()=>{b||v("")},[b]),e.jsxs("div",{className:`multi-select ${s?"disabled":""} ${h||""}`,ref:f,style:{"--ms-primary-color":u?.primaryColor,"--ms-primary-hover":u?.primaryHover,"--ms-bg-color":u?.bgColor,"--ms-border-color":u?.borderColor,"--ms-text-color":u?.textColor,"--ms-placeholder-color":u?.placeholderColor,"--ms-item-hover-bg":u?.itemHoverBg,"--ms-selected-bg":u?.selectedBg,"--ms-selected-color":u?.selectedColor,"--ms-disabled-bg":u?.disabledBg,"--ms-disabled-color":u?.disabledColor,"--ms-border-radius":u?.borderRadius,"--ms-font-size":u?.fontSize,"--ms-header-height":u?.headerHeight},children:[e.jsxs("div",{className:"dropdown-header",onClick:()=>{s||x(e=>!e)},children:[e.jsx("span",{className:"dropdownText",children:0===r.length?l:C?i:k.join(", ")}),e.jsx("span",{className:""+(b?"arrowUp":"arrowDown")})]}),b&&!s&&e.jsxs("div",{className:"dropdown-list",children:[a&&e.jsx("input",{type:"text",className:"search-input",placeholder:"Search...",value:g,onChange:e=>v(e.target.value)}),o.length>0&&e.jsxs("label",{className:"dropdown-item select-all",children:[e.jsxs("span",{children:[i," "]}),e.jsx("input",{type:"checkbox",checked:C,onChange:()=>{const e=o.map(e=>e.value);let n=[];n=e.every(e=>r.includes(e))?[]:e,t&&t(n)}})]}),d?y.map((n,o)=>e.jsxs("div",{className:"option-group",children:[e.jsx("div",{className:"group-label",children:n.label}),n.options.length>0?n.options.map((n,t)=>e.jsx("label",{className:"dropdown-item "+(r.includes(n.value)?"active":""),children:p?p(n):e.jsxs(e.Fragment,{children:[e.jsx("span",{children:n.label}),e.jsx("input",{type:"checkbox",checked:r.includes(n.value),onChange:()=>j(n.value)})]})},`${o}-${t}`)):e.jsx("div",{className:"no-data",children:"No results found"})]},`group-${o}`)):y.length>0?y.map(n=>e.jsx("label",{className:"dropdown-item "+(r.includes(n.value)?"active":""),children:p?p(n):e.jsxs(e.Fragment,{children:[e.jsx("span",{children:n.label}),e.jsx("input",{type:"checkbox",checked:r.includes(n.value),onChange:()=>j(n.value)})]})},n.value)):e.jsx("div",{className:"no-data",children:"No results found"})]})]})};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/MultiSelectDropdown.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","options","value","onChange","placeholder","disabled","selectAllText","searchable","groupBy","maxSelectionLimit","renderOption","renderTag","_renderTag","customClassName","theme","isOpen","setIsOpen","useState","searchTerm","setSearchTerm","dropdownRef","useRef","processedOptions","useMemo","groups","groupMap","Map","forEach","option","groupKey","String","has","set","get","push","opts","label","filteredOptions","searchableOptions","filter","toLowerCase","includes","map","group","some","opt","length","handleCheckboxChange","val","updated","v","isAllSelected","every","selectedLabels","useEffect","handleClickOutside","event","current","contains","target","addEventListener","removeEventListener","_jsxs","className","primaryColor","primaryHover","bgColor","borderColor","textColor","placeholderColor","itemHoverBg","selectedBg","selectedColor","disabledBg","disabledColor","borderRadius","fontSize","headerHeight","children","onClick","prev","_jsx","jsx","join","jsxs","e","checked","allValues","groupIndex","optionIndex","_Fragment","Fragment"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@learnforjob/react-multi-select-dropdown",
3
+ "version": "1.0.0",
4
+ "description": "A customizable, searchable, lightweight React multi-select dropdown with async loading, checkbox support, keyboard navigation, virtualization, and TypeScript support.",
5
+ "author": "LearnForJob",
6
+ "license": "MIT",
7
+ "homepage": "https://learnforjob.com/",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/learnforjob/react-multi-select-dropdown.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/learnforjob/react-multi-select-dropdown/issues"
14
+ },
15
+ "main": "dist/index.js",
16
+ "module": "dist/index.es.js",
17
+ "types": "dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/index.es.js",
21
+ "require": "./dist/index.js",
22
+ "types": "./dist/index.d.ts"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "README.md",
28
+ "LICENSE"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "sideEffects": [
34
+ "*.css",
35
+ "*.scss"
36
+ ],
37
+ "scripts": {
38
+ "build": "rollup -c rollup.config.cjs",
39
+ "dev": "rollup -c rollup.config.cjs -w",
40
+ "prepare": "npm run build"
41
+ },
42
+ "keywords": [
43
+ "react",
44
+ "react-component",
45
+ "multi-select",
46
+ "multiselect",
47
+ "dropdown",
48
+ "react-dropdown",
49
+ "checkbox",
50
+ "searchable-dropdown",
51
+ "async-select",
52
+ "virtualized-list",
53
+ "typescript",
54
+ "ui-component",
55
+ "frontend",
56
+ "learnforjob"
57
+ ],
58
+ "peerDependencies": {
59
+ "react": ">=16.8.0",
60
+ "react-dom": ">=16.8.0"
61
+ },
62
+ "devDependencies": {
63
+ "@rollup/plugin-node-resolve": "^16.0.3",
64
+ "@rollup/plugin-terser": "^1.0.0",
65
+ "@rollup/plugin-typescript": "^11.0.0",
66
+ "@types/react": "^18.0.0",
67
+ "@types/react-dom": "^18.0.0",
68
+ "postcss": "^8.5.14",
69
+ "rollup": "^3.20.0",
70
+ "rollup-plugin-peer-deps-external": "^2.2.4",
71
+ "rollup-plugin-postcss": "^4.0.2",
72
+ "sass": "^1.99.0",
73
+ "tslib": "^2.8.1",
74
+ "typescript": "^5.0.0"
75
+ }
76
+ }