@bikdotai/bik-component-library 0.0.876-beta.0 → 0.0.876-beta.1
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/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js +2 -2
- package/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
- package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js +4 -4
- package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
- package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js +2 -2
- package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js.map +1 -1
- package/dist/cjs/components/accordion/Accordion.style.js +1 -1
- package/dist/cjs/components/accordion/Accordion.style.js.map +1 -1
- package/dist/cjs/components/action-button/ActionButton.styled.js +1 -1
- package/dist/cjs/components/action-button/ActionButton.styled.js.map +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js.map +1 -1
- package/dist/cjs/components/bik-layout/SidebarStyles.js +1 -1
- package/dist/cjs/components/bik-layout/SidebarStyles.js.map +1 -1
- package/dist/cjs/components/button/Button.styled.js +3 -3
- package/dist/cjs/components/button/Button.styled.js.map +1 -1
- package/dist/cjs/components/buttonGroup/ButtonGroupStyle.js +1 -1
- package/dist/cjs/components/buttonGroup/ButtonGroupStyle.js.map +1 -1
- package/dist/cjs/components/card-selector/CardSelector.styled.js +1 -1
- package/dist/cjs/components/card-selector/CardSelector.styled.js.map +1 -1
- package/dist/cjs/components/carousel-preview/CarouselPreview.style.js +2 -2
- package/dist/cjs/components/carousel-preview/CarouselPreview.style.js.map +1 -1
- package/dist/cjs/components/checkBox/CheckBox.styled.js +1 -1
- package/dist/cjs/components/checkBox/CheckBox.styled.js.map +1 -1
- package/dist/cjs/components/dropdown/MenuItem/MenuItem.js +1 -1
- package/dist/cjs/components/dropdown/MenuItem/MenuItem.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +10 -27
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js.map +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js +1 -1
- package/dist/cjs/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js.map +1 -1
- package/dist/cjs/components/dropdown/hooks/useDropdown.js +1 -1
- package/dist/cjs/components/dropdown/hooks/useDropdown.js.map +1 -1
- package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js +2 -2
- package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js.map +1 -1
- package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js +1 -1
- package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js.map +1 -1
- package/dist/cjs/components/icon-button/IconButton.styled.js +4 -4
- package/dist/cjs/components/icon-button/IconButton.styled.js.map +1 -1
- package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js +1 -1
- package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
- package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js +11 -14
- package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
- package/dist/cjs/components/plans/SubscriptionPlanSelector.js +1 -1
- package/dist/cjs/components/plans/SubscriptionPlanSelector.js.map +1 -1
- package/dist/cjs/components/product-picker-v2/style.js +2 -2
- package/dist/cjs/components/product-picker-v2/style.js.map +1 -1
- package/dist/cjs/components/switch/Switch.js +2 -2
- package/dist/cjs/components/switch/Switch.js.map +1 -1
- package/dist/cjs/components/template-preview/RCS/RCSPreview.styled.js +1 -1
- package/dist/cjs/components/template-preview/RCS/RCSPreview.styled.js.map +1 -1
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js +1 -1
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js.map +1 -1
- package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js +2 -2
- package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
- package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js +4 -4
- package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
- package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js +2 -2
- package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js.map +1 -1
- package/dist/esm/components/accordion/Accordion.style.js +1 -1
- package/dist/esm/components/accordion/Accordion.style.js.map +1 -1
- package/dist/esm/components/action-button/ActionButton.styled.js +1 -1
- package/dist/esm/components/action-button/ActionButton.styled.js.map +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
- package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js.map +1 -1
- package/dist/esm/components/bik-layout/SidebarStyles.js +1 -1
- package/dist/esm/components/bik-layout/SidebarStyles.js.map +1 -1
- package/dist/esm/components/button/Button.styled.js +3 -3
- package/dist/esm/components/button/Button.styled.js.map +1 -1
- package/dist/esm/components/buttonGroup/ButtonGroupStyle.js +1 -1
- package/dist/esm/components/buttonGroup/ButtonGroupStyle.js.map +1 -1
- package/dist/esm/components/card-selector/CardSelector.styled.js +1 -1
- package/dist/esm/components/card-selector/CardSelector.styled.js.map +1 -1
- package/dist/esm/components/carousel-preview/CarouselPreview.style.js +2 -2
- package/dist/esm/components/carousel-preview/CarouselPreview.style.js.map +1 -1
- package/dist/esm/components/checkBox/CheckBox.styled.js +1 -1
- package/dist/esm/components/checkBox/CheckBox.styled.js.map +1 -1
- package/dist/esm/components/dropdown/MenuItem/MenuItem.js +1 -1
- package/dist/esm/components/dropdown/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +278 -300
- package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.d.ts +0 -8
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +126 -170
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.d.ts +0 -4
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js +112 -144
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.d.ts +0 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +31 -32
- package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.d.ts +0 -2
- package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js +39 -54
- package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js.map +1 -1
- package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.d.ts +16 -18
- package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js +27 -73
- package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js.map +1 -1
- package/dist/esm/components/dropdown/hooks/useDropdown.d.ts +17 -4
- package/dist/esm/components/dropdown/hooks/useDropdown.js +163 -176
- package/dist/esm/components/dropdown/hooks/useDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/type.d.ts +0 -22
- package/dist/esm/components/dual-icon-button/DualIconButton.styled.js +2 -2
- package/dist/esm/components/dual-icon-button/DualIconButton.styled.js.map +1 -1
- package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js +1 -1
- package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js.map +1 -1
- package/dist/esm/components/icon-button/IconButton.styled.js +4 -4
- package/dist/esm/components/icon-button/IconButton.styled.js.map +1 -1
- package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js +44 -46
- package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
- package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +0 -3
- package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js +25 -29
- package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
- package/dist/esm/components/multi-level-dropdown/type.d.ts +0 -5
- package/dist/esm/components/plans/SubscriptionPlanSelector.js +1 -1
- package/dist/esm/components/plans/SubscriptionPlanSelector.js.map +1 -1
- package/dist/esm/components/product-picker-v2/style.js +2 -2
- package/dist/esm/components/product-picker-v2/style.js.map +1 -1
- package/dist/esm/components/switch/Switch.js +2 -2
- package/dist/esm/components/switch/Switch.js.map +1 -1
- package/dist/esm/components/template-preview/RCS/RCSPreview.styled.js +1 -1
- package/dist/esm/components/template-preview/RCS/RCSPreview.styled.js.map +1 -1
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js +1 -1
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("lodash/debounce"),O=require("react"),v=require("../OpenedDropdown/utils/iterationOnOptions.js"),U=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},V=U(Q),X=(a="1.0",C,R,A,g,w,j,H=[],i)=>{const[c,d]=O.useState(C??[]),[h,b]=O.useState([]),[l,T]=O.useState(""),[M,m]=O.useState(void 0),E=O.useRef(c),I=O.useRef(w);O.useEffect(()=>{I.current=w},[w]),O.useEffect(()=>{if(E.current=c,h.length&&l&&w){let t=[...h];const r=c.map(e=>{if(e.options)return e.options.map(n=>({value:n.value,selected:n.selected}));const s=e;return{value:s.value,selected:s.selected}}).flat();t=t.map(e=>{const s=r.find(n=>e.value===n.value);return s?{...e,selected:s.selected}:e}),j&&(t=t.map(e=>({...e,disabled:!H.includes(e.value)}))),b(g&&!A?[...t.sort(e=>e.selected?-1:1)]:[...t])}},[c]),O.useEffect(()=>{if(C){const t=[...C];d(g&&!A?[...t.sort(r=>r.selected?-1:1)]:[...t])}},[C]);const P=t=>{const r=[];return t.forEach(e=>{if(e.options){const s=e.options.filter(n=>n.selected===!0);r.push({...e,options:[...s]})}else e.selected&&r.push({...e})}),r},L=t=>{let r=0;return t.forEach(e=>{e.options?r+=e.options.filter(s=>s.selected===!0).length:e.selected&&r++}),r},D=t=>!g||!i&&i!==0?!1:L(t)>=i,y=O.useCallback(async t=>{const r=I.current;if(!t||!r)return;const e=[];v.iterateOnOptionsRaw(E.current,s=>{s.selected&&!e.includes(s.value)&&e.push(s.value)});try{const s=await r(t);if(m(void 0),s){const n=s.map(f=>{if(f.options){const o=f;return{...o,options:o.options.map(u=>({...u,selected:e.includes(u.value)}))}}return{...f,selected:e.includes(f.value)}});b([...n])}else b([])}catch(s){b([]),m(s instanceof Error?s.message:"Something went wrong while fetching the list. Please try again")}},[]),F=O.useMemo(()=>V.default(y,300),[y]);O.useEffect(()=>()=>F?.cancel(),[F]);function W(t){if(T(t),b([]),m(void 0),!t){F?.cancel();return}F(t)}function k(){l&&(m(void 0),y(l))}function q(t,r){if(!g)R?.(t);else{if(t.selected&&i&&D(c))return;if(h.length&&l&&w)if(t.selected){if(i&&D(c))return;let e=!1;const s=v.iterateOnOptions(c,{selected:t.selected},n=>n.value===t.value?(e=!0,!0):!1);if(e||s.push(t),r)return[...s];d([...s]),a==="2.0"&&p(s)}else{let e=!1,s=v.iterateOnOptions(c,{selected:t.selected},n=>n.value===t.value?(e=!0,!0):!1);if(e&&(s=s.filter(n=>n.value!==t.value)),r)return[...s];d([...s]),a==="2.0"&&p(s)}else{const e=v.iterateOnOptions(c,{selected:t.selected},s=>s.value===t.value);if(r)return[...e];d([...e]),a==="2.0"&&p(e)}}}function z(t){let r=[...c];h.forEach(e=>{r=r.map(s=>{const n=e;return typeof n.value<"u"&&n.value===s.value?{...s,selected:!1}:s})}),d([...r]),a==="2.0"&&p(r)}function B(t){let r=[...c];if(i&&i>0){const e=L(r),s=i-e;if(s<=0)return;let n=0;h.forEach(f=>{if(n>=s)return;let o=!1;r=r.map(u=>{const _=f;return u.selected||u.disabled?u:typeof _.value<"u"&&_.value===u.value?(o=!0,n++,{...u,selected:!0}):u}),!o&&n<s&&(f.disabled||(r.push({...f,selected:!0}),n++))}),d([...r]),a==="2.0"&&p(r)}}function G(t){if(h.length&&l&&w)t==="selectAll"?B():z();else if(t==="selectAll")if(i&&i>0){const r=L(c),e=i-r;if(e<=0)return;let s=0;const n=c.map(f=>{if(f.options){const o=f;return{...o,options:o.options.map(u=>u.disabled||u.selected||l&&!u.label?.toLowerCase().includes(l.toLowerCase())?u:s<e?(s++,{...u,selected:!0}):u)}}else{const o=f;return o.disabled||o.selected||l&&!o.label?.toLowerCase().includes(l.toLowerCase())?f:s<e?(s++,{...f,selected:!0}):f}});d([...n]),a==="2.0"&&p(n)}else{const r=v.iterateOnOptions(c,{selected:!0},e=>l?e.label?.toLowerCase().includes(l.toLowerCase())&&!e.disabled:!e.disabled);d([...r]),a==="2.0"&&p(r)}else if(t==="notSelected"){const r=v.iterateOnOptions(c,{selected:!1},e=>!e.disabled);d([...r]),a==="2.0"&&p(r)}}function J(){const t=v.iterateOnOptions(c,{selected:!1});d([...t]),a==="2.0"&&p(t)}function N(t){if(!g){q({label:l,value:l,isFreeForm:!0,selected:!0});return}const r=c.map(e=>e.options?e:{...e,selected:e.label===l&&e.value===l?t:e.selected});t&&(r.some(e=>e.label===l&&e.value===l)||r.unshift({label:l,value:l,isFreeForm:!0,selected:!0})),d([...r]),a==="2.0"&&p(r)}function p(t){const r=P(t??E.current);R?.([...r])}return{latestDropdownOptionsRef:E,dropdownOptions:c,search:W,searchedString:l,searchedOptions:h,searchError:M,retrySearch:k,onApplyHandler:q,selectAllHandler:G,onMultiSelectClear:J,onFreeFormSelect:N,onMultiSelectApply:p,getSelectedOptions:P,getCurrentSelectionCount:L,isMaxSelectionsReached:D,maxSelections:i}};exports.useDropdown=X;
|
|
2
2
|
//# sourceMappingURL=useDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDropdown.js","sources":["../../../../../src/components/dropdown/hooks/useDropdown.tsx"],"sourcesContent":["import debounce from 'lodash/debounce';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { SelectAllCheckboxState } from '../OpenedDropdown/components/menu/SelectAllMenu';\nimport {\n\tgetSelectionLeaves,\n\titerateOnOptions,\n\titerateOnOptionsRaw,\n} from '../OpenedDropdown/utils/iterationOnOptions';\nimport { DropdownOption, GroupedOption, SingleOption } from '../type';\n\nexport const useDropdown = (\n\tversion = '1.0',\n\toptions: DropdownOption[],\n\tonSelect: ((option: DropdownOption | DropdownOption[]) => void) | undefined,\n\tskipSorting?: boolean,\n\tisMultiSelect?: boolean,\n\tonSearch?: (searchKey: string) => Promise<DropdownOption[]>,\n\tdisableOtherSearchedOption?: boolean,\n\tdisableSearchedOptionExcept: string[] = [],\n\tmaxSelections?: number,\n\tchildrenLayout?: 'flyout' | 'nested',\n) => {\n\t// Only the nested layout makes children selectable; a flyout submenu click\n\t// marks the parent instead.\n\tconst nestedChildren = childrenLayout === 'nested';\n\tconst [dropdownOptions, setDropdownOptions] = useState(options ?? []);\n\tconst [searchedOptions, setSearchedOptions] = useState<DropdownOption[]>([]);\n\tconst [searchedString, setSearchedString] = useState('');\n\tconst [searchError, setSearchError] = useState<string | undefined>(undefined);\n\tconst latestDropdownOptionsRef = useRef(dropdownOptions);\n\t/** Store latest onSearch so performSearch/debouncedSearch stay stable when parent re-renders with new callback reference. */\n\tconst onSearchRef = useRef(onSearch);\n\n\tuseEffect(() => {\n\t\tonSearchRef.current = onSearch;\n\t}, [onSearch]);\n\n\tuseEffect(() => {\n\t\tlatestDropdownOptionsRef.current = dropdownOptions;\n\n\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\tlet searchedOptionsClone = [...searchedOptions] as SingleOption[];\n\t\t\tconst dropdownOptionFlat = dropdownOptions\n\t\t\t\t.map((option) => {\n\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\treturn (option as GroupedOption).options.map((op) => ({\n\t\t\t\t\t\t\tvalue: op.value,\n\t\t\t\t\t\t\tselected: op.selected,\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\tconst op = option as SingleOption;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: op.value,\n\t\t\t\t\t\tselected: op.selected,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.flat();\n\n\t\t\tsearchedOptionsClone = searchedOptionsClone.map((option) => {\n\t\t\t\tconst selectedDropdownOption = dropdownOptionFlat.find(\n\t\t\t\t\t(dropdownOption) => {\n\t\t\t\t\t\tif (option.value === dropdownOption.value) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (selectedDropdownOption) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected: selectedDropdownOption.selected,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn option;\n\t\t\t});\n\n\t\t\t// disable other options except selected in searched options\n\t\t\tif (disableOtherSearchedOption) {\n\t\t\t\tsearchedOptionsClone = searchedOptionsClone.map((option) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tdisabled: !disableSearchedOptionExcept.includes(option.value),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (isMultiSelect && !skipSorting) {\n\t\t\t\tsetSearchedOptions([\n\t\t\t\t\t...searchedOptionsClone.sort((option) =>\n\t\t\t\t\t\t(option as SingleOption).selected ? -1 : 1,\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tsetSearchedOptions([...searchedOptionsClone]);\n\t\t\t}\n\t\t}\n\t}, [dropdownOptions]);\n\n\tuseEffect(() => {\n\t\tif (options) {\n\t\t\tconst writeOptions = [...options];\n\t\t\tif (isMultiSelect && !skipSorting) {\n\t\t\t\tsetDropdownOptions([\n\t\t\t\t\t...writeOptions.sort((option) =>\n\t\t\t\t\t\t(option as SingleOption).selected ? -1 : 1,\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tsetDropdownOptions([...writeOptions]);\n\t\t\t}\n\t\t}\n\t}, [options]);\n\n\tconst getSelectedOptions = (data: DropdownOption[]) => {\n\t\tconst selectedOptions: DropdownOption[] = [];\n\t\tdata.forEach((option) => {\n\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\tconst groupedOptions = (option as GroupedOption).options.filter(\n\t\t\t\t\t(op) => op.selected === true,\n\t\t\t\t);\n\t\t\t\tselectedOptions.push({\n\t\t\t\t\t...option,\n\t\t\t\t\toptions: [...groupedOptions],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\tif (nestedChildren && singleOption.children?.length) {\n\t\t\t\t\t// A partly selected parent is itself unselected, so report it\n\t\t\t\t\t// whenever any child is selected, carrying only those children.\n\t\t\t\t\tconst selectedChildren = singleOption.children.filter(\n\t\t\t\t\t\t(child) => child.selected,\n\t\t\t\t\t);\n\t\t\t\t\tif (selectedChildren.length) {\n\t\t\t\t\t\tselectedOptions.push({\n\t\t\t\t\t\t\t...singleOption,\n\t\t\t\t\t\t\tchildren: selectedChildren,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (singleOption.selected) {\n\t\t\t\t\tselectedOptions.push({ ...option });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn selectedOptions;\n\t};\n\n\t// Count current selections for max selection limit\n\tconst getCurrentSelectionCount = (data: DropdownOption[]) =>\n\t\tgetSelectionLeaves(data, nestedChildren).filter((leaf) => leaf.selected)\n\t\t\t.length;\n\n\t// Check if max selections limit is reached\n\tconst isMaxSelectionsReached = (data: DropdownOption[]) => {\n\t\tif (!isMultiSelect || (!maxSelections && maxSelections !== 0)) return false;\n\t\treturn getCurrentSelectionCount(data) >= maxSelections;\n\t};\n\n\t/** Reads onSearch from ref so it stays stable ([] deps). No-ops when onSearchRef.current is undefined. */\n\tconst performSearch = useCallback(async (searchKey: string) => {\n\t\tconst onSearchFn = onSearchRef.current;\n\t\tif (!searchKey || !onSearchFn) return;\n\n\t\tconst selectedIds: (string | number)[] = [];\n\t\titerateOnOptionsRaw(latestDropdownOptionsRef.current, (option) => {\n\t\t\tif (option.selected && !selectedIds.includes(option.value)) {\n\t\t\t\tselectedIds.push(option.value);\n\t\t\t}\n\t\t});\n\n\t\ttry {\n\t\t\tconst response = await onSearchFn(searchKey);\n\t\t\tsetSearchError(undefined);\n\t\t\tif (response) {\n\t\t\t\tconst updatedResponseData = response.map((option) => {\n\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\tconst groupedOption = option as GroupedOption;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...groupedOption,\n\t\t\t\t\t\t\toptions: groupedOption.options.map((op) => ({\n\t\t\t\t\t\t\t\t...op,\n\t\t\t\t\t\t\t\tselected: selectedIds.includes(op.value),\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected: selectedIds.includes((option as SingleOption).value),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tsetSearchedOptions([...updatedResponseData]);\n\t\t\t} else {\n\t\t\t\tsetSearchedOptions([]);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsetSearchedOptions([]);\n\t\t\tsetSearchError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: 'Something went wrong while fetching the list. Please try again',\n\t\t\t);\n\t\t}\n\t}, []);\n\n\t/** Independent of onSearch so debounce is stable when callers pass inline functions. Pending searches are preserved across parent re-renders. performSearch no-ops when onSearchRef.current is undefined. */\n\tconst debouncedSearch = useMemo(\n\t\t() => debounce(performSearch, 300),\n\t\t[performSearch],\n\t);\n\n\tuseEffect(() => () => debouncedSearch?.cancel(), [debouncedSearch]);\n\n\tfunction search(searchKey: string) {\n\t\tsetSearchedString(searchKey);\n\t\tsetSearchedOptions([]);\n\t\tsetSearchError(undefined);\n\n\t\tif (!searchKey) {\n\t\t\tdebouncedSearch?.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tdebouncedSearch(searchKey);\n\t}\n\n\tfunction retrySearch() {\n\t\tif (searchedString) {\n\t\t\tsetSearchError(undefined);\n\t\t\tperformSearch(searchedString);\n\t\t}\n\t}\n\n\t/**\n\t * wrapper to prepare option for onSelect\n\t * for single select, this will call the onClose handler ,\n\t * for multiselect, it will do state update for options list\n\t * \t\tto make any option select,\n\t * \t\t\t\tonApplyHandler({ label, value: selected: true })\n\t * to deselect any option\n\t * \t\t\t\tonApplyHandler({ label, value: selected: false })\n\t * @param optionSelect\n\t */\n\tfunction onApplyHandler(optionSelect: SingleOption, returnOnly?: boolean) {\n\t\tif (!isMultiSelect) {\n\t\t\tonSelect?.(optionSelect);\n\t\t} else {\n\t\t\t// Check if trying to select and max selections is reached\n\t\t\tif (\n\t\t\t\toptionSelect.selected &&\n\t\t\t\tmaxSelections &&\n\t\t\t\tisMaxSelectionsReached(dropdownOptions)\n\t\t\t) {\n\t\t\t\t// Max selections reached, don't allow new selections\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\t\t/** Search mode */\n\t\t\t\t/**\n\t\t\t\t * on selected, push it to dropdown options,\n\t\t\t\t * on un-select, remove from dropdown option\n\t\t\t\t */\n\n\t\t\t\tif (optionSelect.selected) {\n\t\t\t\t\t// Check max selections for search mode too\n\t\t\t\t\tif (maxSelections && isMaxSelectionsReached(dropdownOptions)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** check if already there or not,\n\t\t\t\t\t * if yes, just update\n\t\t\t\t\t * else ,\n\t\t\t\t\t * \tappend\n\t\t\t\t\t */\n\n\t\t\t\t\tlet alreadyPresentInInitialOptions = false;\n\t\t\t\t\tconst currList = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t\t(optionForValidation: SingleOption) => {\n\t\t\t\t\t\t\tif (optionForValidation.value === optionSelect.value) {\n\t\t\t\t\t\t\t\talreadyPresentInInitialOptions = true;\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnestedChildren,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!alreadyPresentInInitialOptions) {\n\t\t\t\t\t\tcurrList.push(optionSelect);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (returnOnly) {\n\t\t\t\t\t\treturn [...currList];\n\t\t\t\t\t}\n\t\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t/** un-select,\n\t\t\t\t\t * if already present in initial data,\n\t\t\t\t\t * yes, just update\n\t\t\t\t\t * else,\n\t\t\t\t\t * \tremove\n\t\t\t\t\t */\n\n\t\t\t\t\tlet alreadyPresentInInitialOptions = false;\n\t\t\t\t\tlet currList = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t\t(optionForValidation: SingleOption) => {\n\t\t\t\t\t\t\tif (optionForValidation.value === optionSelect.value) {\n\t\t\t\t\t\t\t\talreadyPresentInInitialOptions = true;\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnestedChildren,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (alreadyPresentInInitialOptions) {\n\t\t\t\t\t\tcurrList = currList.filter((option) => {\n\t\t\t\t\t\t\tif ((option as SingleOption).value === optionSelect.value) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (returnOnly) {\n\t\t\t\t\t\treturn [...currList];\n\t\t\t\t\t}\n\t\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst currList = iterateOnOptions(\n\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t(optionForValidation: SingleOption) =>\n\t\t\t\t\t\toptionForValidation.value === optionSelect.value,\n\t\t\t\t\tnestedChildren,\n\t\t\t\t);\n\n\t\t\t\tif (returnOnly) {\n\t\t\t\t\treturn [...currList];\n\t\t\t\t}\n\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\tif (version === '2.0') {\n\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction selectAllForSearch(select: boolean) {\n\t\t// const allSearchedValues = searchedOptions.map(option => option.value);\n\t\tlet clonedDropdownOptions = [...dropdownOptions];\n\n\t\tif (select) {\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tlet found = false;\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\n\t\t\t\tif (!found) {\n\t\t\t\t\tclonedDropdownOptions.push({ ...option, selected: true });\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tsetDropdownOptions([...clonedDropdownOptions]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(clonedDropdownOptions);\n\t\t}\n\t}\n\n\tfunction selectAllForSearchWithLimit(select: boolean) {\n\t\tlet clonedDropdownOptions = [...dropdownOptions];\n\n\t\tif (select && maxSelections && maxSelections > 0) {\n\t\t\tconst currentCount = getCurrentSelectionCount(clonedDropdownOptions);\n\t\t\tconst remainingSlots = maxSelections - currentCount;\n\n\t\t\tif (remainingSlots <= 0) {\n\t\t\t\t// Already at max, don't select any more\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet selectedCount = 0;\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tif (selectedCount >= remainingSlots) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet found = false;\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\t// Skip if already selected\n\t\t\t\t\tif ((dOption as SingleOption).selected) {\n\t\t\t\t\t\treturn dOption;\n\t\t\t\t\t}\n\t\t\t\t\t// Skip if disabled\n\t\t\t\t\tif ((dOption as SingleOption).disabled) {\n\t\t\t\t\t\treturn dOption;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\n\t\t\t\tif (!found && selectedCount < remainingSlots) {\n\t\t\t\t\tconst newOption = option as SingleOption;\n\t\t\t\t\tif (!newOption.disabled) {\n\t\t\t\t\t\tclonedDropdownOptions.push({ ...option, selected: true });\n\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetDropdownOptions([...clonedDropdownOptions]);\n\t\t\tif (version === '2.0') {\n\t\t\t\tonMultiSelectApply(clonedDropdownOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction selectAllHandler(newState: SelectAllCheckboxState) {\n\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\tif (newState === 'selectAll') {\n\t\t\t\tselectAllForSearchWithLimit(true);\n\t\t\t} else {\n\t\t\t\tselectAllForSearch(false);\n\t\t\t}\n\t\t} else {\n\t\t\tif (newState === 'selectAll') {\n\t\t\t\tif (maxSelections && maxSelections > 0) {\n\t\t\t\t\t// Only select up to maxSelections limit\n\t\t\t\t\tconst currentCount = getCurrentSelectionCount(dropdownOptions);\n\t\t\t\t\tconst remainingSlots = maxSelections - currentCount;\n\n\t\t\t\t\tif (remainingSlots <= 0) {\n\t\t\t\t\t\t// Already at max, don't select any more\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet selectedCount = 0;\n\t\t\t\t\tconst newOptions = dropdownOptions.map((option) => {\n\t\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\t\t// Handle grouped options\n\t\t\t\t\t\t\tconst groupedOption = option as GroupedOption;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...groupedOption,\n\t\t\t\t\t\t\t\toptions: groupedOption.options.map((op) => {\n\t\t\t\t\t\t\t\t\t// Skip disabled options\n\t\t\t\t\t\t\t\t\tif (op.disabled) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Check if already selected\n\t\t\t\t\t\t\t\t\tif (op.selected) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Check search filter\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tsearchedString &&\n\t\t\t\t\t\t\t\t\t\t!op.label\n\t\t\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase())\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Select if we have remaining slots\n\t\t\t\t\t\t\t\t\tif (selectedCount < remainingSlots) {\n\t\t\t\t\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\t\t\t\t\treturn { ...op, selected: true };\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\t\t\t// Skip disabled options\n\t\t\t\t\t\t\tif (singleOption.disabled) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Check if already selected\n\t\t\t\t\t\t\tif (singleOption.selected) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Check search filter\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsearchedString &&\n\t\t\t\t\t\t\t\t!singleOption.label\n\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase())\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Select if we have remaining slots\n\t\t\t\t\t\t\tif (selectedCount < remainingSlots) {\n\t\t\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\t\t\treturn { ...option, selected: true };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// No max selection limit, select all\n\t\t\t\t\tconst newOptions = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: true },\n\t\t\t\t\t\t(option) =>\n\t\t\t\t\t\t\tsearchedString\n\t\t\t\t\t\t\t\t? option.label\n\t\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase()) && !option.disabled\n\t\t\t\t\t\t\t\t: !option.disabled,\n\t\t\t\t\t\tnestedChildren,\n\t\t\t\t\t);\n\t\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (newState === 'notSelected') {\n\t\t\t\tconst newOptions = iterateOnOptions(\n\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t{ selected: false },\n\t\t\t\t\t(option) => !option.disabled,\n\t\t\t\t\tnestedChildren,\n\t\t\t\t);\n\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\tif (version === '2.0') {\n\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onMultiSelectClear() {\n\t\tconst newOptions = iterateOnOptions(\n\t\t\tdropdownOptions,\n\t\t\t{ selected: false },\n\t\t\tundefined,\n\t\t\tnestedChildren,\n\t\t);\n\t\tsetDropdownOptions([...newOptions]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(newOptions);\n\t\t}\n\t}\n\n\tfunction onFreeFormSelect(selected: boolean) {\n\t\tif (!isMultiSelect) {\n\t\t\tonApplyHandler({\n\t\t\t\tlabel: searchedString,\n\t\t\t\tvalue: searchedString,\n\t\t\t\tisFreeForm: true,\n\t\t\t\tselected: true,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst updatedList = dropdownOptions.map((option) =>\n\t\t\t(option as GroupedOption).options\n\t\t\t\t? option\n\t\t\t\t: {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected:\n\t\t\t\t\t\t\t/** free form check */\n\t\t\t\t\t\t\toption.label === searchedString &&\n\t\t\t\t\t\t\t(option as SingleOption).value === searchedString\n\t\t\t\t\t\t\t\t? /** to mark as selected or not */\n\t\t\t\t\t\t\t\t selected\n\t\t\t\t\t\t\t\t: (option as SingleOption).selected,\n\t\t\t\t },\n\t\t);\n\n\t\tif (selected) {\n\t\t\tif (\n\t\t\t\t!updatedList.some(\n\t\t\t\t\t(option) =>\n\t\t\t\t\t\toption.label === searchedString &&\n\t\t\t\t\t\t(option as SingleOption).value === searchedString,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedList.unshift({\n\t\t\t\t\tlabel: searchedString,\n\t\t\t\t\tvalue: searchedString,\n\t\t\t\t\tisFreeForm: true,\n\t\t\t\t\tselected: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsetDropdownOptions([...updatedList]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(updatedList);\n\t\t}\n\t}\n\n\t/**\n\t * This is called when appy button is called,\n\t * here iterate and pick all options where selected if true.\n\t */\n\tfunction onMultiSelectApply(options?: DropdownOption[]) {\n\t\tconst optionsToSend: DropdownOption[] = getSelectedOptions(\n\t\t\toptions ?? latestDropdownOptionsRef.current,\n\t\t);\n\n\t\tonSelect?.([...optionsToSend]);\n\t}\n\n\treturn {\n\t\tlatestDropdownOptionsRef,\n\t\tdropdownOptions,\n\t\tsearch,\n\t\tsearchedString,\n\t\tsearchedOptions,\n\t\tsearchError,\n\t\tretrySearch,\n\t\tonApplyHandler,\n\t\tselectAllHandler,\n\t\tonMultiSelectClear,\n\t\tonFreeFormSelect,\n\t\tonMultiSelectApply,\n\t\tgetSelectedOptions,\n\t\tgetCurrentSelectionCount,\n\t\tisMaxSelectionsReached,\n\t\tmaxSelections,\n\t};\n};\n"],"names":["useDropdown","version","options","onSelect","skipSorting","isMultiSelect","onSearch","disableOtherSearchedOption","disableSearchedOptionExcept","maxSelections","childrenLayout","nestedChildren","dropdownOptions","setDropdownOptions","useState","searchedOptions","setSearchedOptions","searchedString","setSearchedString","searchError","setSearchError","latestDropdownOptionsRef","useRef","onSearchRef","useEffect","searchedOptionsClone","dropdownOptionFlat","option","op","selectedDropdownOption","dropdownOption","writeOptions","getSelectedOptions","data","selectedOptions","groupedOptions","singleOption","selectedChildren","child","getCurrentSelectionCount","getSelectionLeaves","leaf","isMaxSelectionsReached","performSearch","useCallback","searchKey","onSearchFn","selectedIds","iterateOnOptionsRaw","response","updatedResponseData","groupedOption","error","debouncedSearch","useMemo","debounce","search","retrySearch","onApplyHandler","optionSelect","returnOnly","alreadyPresentInInitialOptions","currList","iterateOnOptions","optionForValidation","onMultiSelectApply","selectAllForSearch","select","clonedDropdownOptions","dOption","selectAllForSearchWithLimit","currentCount","remainingSlots","selectedCount","found","selectAllHandler","newState","newOptions","onMultiSelectClear","onFreeFormSelect","selected","updatedList","optionsToSend"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDropdown.js","sources":["../../../../../src/components/dropdown/hooks/useDropdown.tsx"],"sourcesContent":["import debounce from 'lodash/debounce';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { SelectAllCheckboxState } from '../OpenedDropdown/components/menu/SelectAllMenu';\nimport {\n\titerateOnOptions,\n\titerateOnOptionsRaw,\n} from '../OpenedDropdown/utils/iterationOnOptions';\nimport { DropdownOption, GroupedOption, SingleOption } from '../type';\n\nexport const useDropdown = (\n\tversion = '1.0',\n\toptions: DropdownOption[],\n\tonSelect: ((option: DropdownOption | DropdownOption[]) => void) | undefined,\n\tskipSorting?: boolean,\n\tisMultiSelect?: boolean,\n\tonSearch?: (searchKey: string) => Promise<DropdownOption[]>,\n\tdisableOtherSearchedOption?: boolean,\n\tdisableSearchedOptionExcept: string[] = [],\n\tmaxSelections?: number,\n) => {\n\tconst [dropdownOptions, setDropdownOptions] = useState(options ?? []);\n\tconst [searchedOptions, setSearchedOptions] = useState<DropdownOption[]>([]);\n\tconst [searchedString, setSearchedString] = useState('');\n\tconst [searchError, setSearchError] = useState<string | undefined>(undefined);\n\tconst latestDropdownOptionsRef = useRef(dropdownOptions);\n\t/** Store latest onSearch so performSearch/debouncedSearch stay stable when parent re-renders with new callback reference. */\n\tconst onSearchRef = useRef(onSearch);\n\n\tuseEffect(() => {\n\t\tonSearchRef.current = onSearch;\n\t}, [onSearch]);\n\n\tuseEffect(() => {\n\t\tlatestDropdownOptionsRef.current = dropdownOptions;\n\n\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\tlet searchedOptionsClone = [...searchedOptions] as SingleOption[];\n\t\t\tconst dropdownOptionFlat = dropdownOptions\n\t\t\t\t.map((option) => {\n\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\treturn (option as GroupedOption).options.map((op) => ({\n\t\t\t\t\t\t\tvalue: op.value,\n\t\t\t\t\t\t\tselected: op.selected,\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\tconst op = option as SingleOption;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: op.value,\n\t\t\t\t\t\tselected: op.selected,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.flat();\n\n\t\t\tsearchedOptionsClone = searchedOptionsClone.map((option) => {\n\t\t\t\tconst selectedDropdownOption = dropdownOptionFlat.find(\n\t\t\t\t\t(dropdownOption) => {\n\t\t\t\t\t\tif (option.value === dropdownOption.value) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (selectedDropdownOption) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected: selectedDropdownOption.selected,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn option;\n\t\t\t});\n\n\t\t\t// disable other options except selected in searched options\n\t\t\tif (disableOtherSearchedOption) {\n\t\t\t\tsearchedOptionsClone = searchedOptionsClone.map((option) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tdisabled: !disableSearchedOptionExcept.includes(option.value),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (isMultiSelect && !skipSorting) {\n\t\t\t\tsetSearchedOptions([\n\t\t\t\t\t...searchedOptionsClone.sort((option) =>\n\t\t\t\t\t\t(option as SingleOption).selected ? -1 : 1,\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tsetSearchedOptions([...searchedOptionsClone]);\n\t\t\t}\n\t\t}\n\t}, [dropdownOptions]);\n\n\tuseEffect(() => {\n\t\tif (options) {\n\t\t\tconst writeOptions = [...options];\n\t\t\tif (isMultiSelect && !skipSorting) {\n\t\t\t\tsetDropdownOptions([\n\t\t\t\t\t...writeOptions.sort((option) =>\n\t\t\t\t\t\t(option as SingleOption).selected ? -1 : 1,\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tsetDropdownOptions([...writeOptions]);\n\t\t\t}\n\t\t}\n\t}, [options]);\n\n\tconst getSelectedOptions = (data: DropdownOption[]) => {\n\t\tconst selectedOptions: DropdownOption[] = [];\n\t\tdata.forEach((option) => {\n\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\tconst groupedOptions = (option as GroupedOption).options.filter(\n\t\t\t\t\t(op) => op.selected === true,\n\t\t\t\t);\n\t\t\t\tselectedOptions.push({\n\t\t\t\t\t...option,\n\t\t\t\t\toptions: [...groupedOptions],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif ((option as SingleOption).selected) {\n\t\t\t\t\tselectedOptions.push({ ...option });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn selectedOptions;\n\t};\n\n\t// Count current selections for max selection limit\n\tconst getCurrentSelectionCount = (data: DropdownOption[]) => {\n\t\tlet count = 0;\n\t\tdata.forEach((option) => {\n\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\tcount += (option as GroupedOption).options.filter(\n\t\t\t\t\t(op) => op.selected === true,\n\t\t\t\t).length;\n\t\t\t} else {\n\t\t\t\tif ((option as SingleOption).selected) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn count;\n\t};\n\n\t// Check if max selections limit is reached\n\tconst isMaxSelectionsReached = (data: DropdownOption[]) => {\n\t\tif (!isMultiSelect || (!maxSelections && maxSelections !== 0)) return false;\n\t\treturn getCurrentSelectionCount(data) >= maxSelections;\n\t};\n\n\t/** Reads onSearch from ref so it stays stable ([] deps). No-ops when onSearchRef.current is undefined. */\n\tconst performSearch = useCallback(async (searchKey: string) => {\n\t\tconst onSearchFn = onSearchRef.current;\n\t\tif (!searchKey || !onSearchFn) return;\n\n\t\tconst selectedIds: (string | number)[] = [];\n\t\titerateOnOptionsRaw(latestDropdownOptionsRef.current, (option) => {\n\t\t\tif (option.selected && !selectedIds.includes(option.value)) {\n\t\t\t\tselectedIds.push(option.value);\n\t\t\t}\n\t\t});\n\n\t\ttry {\n\t\t\tconst response = await onSearchFn(searchKey);\n\t\t\tsetSearchError(undefined);\n\t\t\tif (response) {\n\t\t\t\tconst updatedResponseData = response.map((option) => {\n\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\tconst groupedOption = option as GroupedOption;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...groupedOption,\n\t\t\t\t\t\t\toptions: groupedOption.options.map((op) => ({\n\t\t\t\t\t\t\t\t...op,\n\t\t\t\t\t\t\t\tselected: selectedIds.includes(op.value),\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected: selectedIds.includes((option as SingleOption).value),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tsetSearchedOptions([...updatedResponseData]);\n\t\t\t} else {\n\t\t\t\tsetSearchedOptions([]);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tsetSearchedOptions([]);\n\t\t\tsetSearchError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: 'Something went wrong while fetching the list. Please try again',\n\t\t\t);\n\t\t}\n\t}, []);\n\n\t/** Independent of onSearch so debounce is stable when callers pass inline functions. Pending searches are preserved across parent re-renders. performSearch no-ops when onSearchRef.current is undefined. */\n\tconst debouncedSearch = useMemo(\n\t\t() => debounce(performSearch, 300),\n\t\t[performSearch],\n\t);\n\n\tuseEffect(() => () => debouncedSearch?.cancel(), [debouncedSearch]);\n\n\tfunction search(searchKey: string) {\n\t\tsetSearchedString(searchKey);\n\t\tsetSearchedOptions([]);\n\t\tsetSearchError(undefined);\n\n\t\tif (!searchKey) {\n\t\t\tdebouncedSearch?.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tdebouncedSearch(searchKey);\n\t}\n\n\tfunction retrySearch() {\n\t\tif (searchedString) {\n\t\t\tsetSearchError(undefined);\n\t\t\tperformSearch(searchedString);\n\t\t}\n\t}\n\n\t/**\n\t * wrapper to prepare option for onSelect\n\t * for single select, this will call the onClose handler ,\n\t * for multiselect, it will do state update for options list\n\t * \t\tto make any option select,\n\t * \t\t\t\tonApplyHandler({ label, value: selected: true })\n\t * to deselect any option\n\t * \t\t\t\tonApplyHandler({ label, value: selected: false })\n\t * @param optionSelect\n\t */\n\tfunction onApplyHandler(optionSelect: SingleOption, returnOnly?: boolean) {\n\t\tif (!isMultiSelect) {\n\t\t\tonSelect?.(optionSelect);\n\t\t} else {\n\t\t\t// Check if trying to select and max selections is reached\n\t\t\tif (\n\t\t\t\toptionSelect.selected &&\n\t\t\t\tmaxSelections &&\n\t\t\t\tisMaxSelectionsReached(dropdownOptions)\n\t\t\t) {\n\t\t\t\t// Max selections reached, don't allow new selections\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\t\t/** Search mode */\n\t\t\t\t/**\n\t\t\t\t * on selected, push it to dropdown options,\n\t\t\t\t * on un-select, remove from dropdown option\n\t\t\t\t */\n\n\t\t\t\tif (optionSelect.selected) {\n\t\t\t\t\t// Check max selections for search mode too\n\t\t\t\t\tif (maxSelections && isMaxSelectionsReached(dropdownOptions)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t/** check if already there or not,\n\t\t\t\t\t * if yes, just update\n\t\t\t\t\t * else ,\n\t\t\t\t\t * \tappend\n\t\t\t\t\t */\n\n\t\t\t\t\tlet alreadyPresentInInitialOptions = false;\n\t\t\t\t\tconst currList = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t\t(optionForValidation: SingleOption) => {\n\t\t\t\t\t\t\tif (optionForValidation.value === optionSelect.value) {\n\t\t\t\t\t\t\t\talreadyPresentInInitialOptions = true;\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!alreadyPresentInInitialOptions) {\n\t\t\t\t\t\tcurrList.push(optionSelect);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (returnOnly) {\n\t\t\t\t\t\treturn [...currList];\n\t\t\t\t\t}\n\t\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t/** un-select,\n\t\t\t\t\t * if already present in initial data,\n\t\t\t\t\t * yes, just update\n\t\t\t\t\t * else,\n\t\t\t\t\t * \tremove\n\t\t\t\t\t */\n\n\t\t\t\t\tlet alreadyPresentInInitialOptions = false;\n\t\t\t\t\tlet currList = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t\t(optionForValidation: SingleOption) => {\n\t\t\t\t\t\t\tif (optionForValidation.value === optionSelect.value) {\n\t\t\t\t\t\t\t\talreadyPresentInInitialOptions = true;\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tif (alreadyPresentInInitialOptions) {\n\t\t\t\t\t\tcurrList = currList.filter((option) => {\n\t\t\t\t\t\t\tif (option.value === optionSelect.value) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (returnOnly) {\n\t\t\t\t\t\treturn [...currList];\n\t\t\t\t\t}\n\t\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst currList = iterateOnOptions(\n\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t{ selected: optionSelect.selected } as Partial<SingleOption>,\n\t\t\t\t\t(optionForValidation: SingleOption) =>\n\t\t\t\t\t\toptionForValidation.value === optionSelect.value,\n\t\t\t\t);\n\n\t\t\t\tif (returnOnly) {\n\t\t\t\t\treturn [...currList];\n\t\t\t\t}\n\t\t\t\tsetDropdownOptions([...currList]);\n\t\t\t\tif (version === '2.0') {\n\t\t\t\t\tonMultiSelectApply(currList);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction selectAllForSearch(select: boolean) {\n\t\t// const allSearchedValues = searchedOptions.map(option => option.value);\n\t\tlet clonedDropdownOptions = [...dropdownOptions];\n\n\t\tif (select) {\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tlet found = false;\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\n\t\t\t\tif (!found) {\n\t\t\t\t\tclonedDropdownOptions.push({ ...option, selected: true });\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tsetDropdownOptions([...clonedDropdownOptions]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(clonedDropdownOptions);\n\t\t}\n\t}\n\n\tfunction selectAllForSearchWithLimit(select: boolean) {\n\t\tlet clonedDropdownOptions = [...dropdownOptions];\n\n\t\tif (select && maxSelections && maxSelections > 0) {\n\t\t\tconst currentCount = getCurrentSelectionCount(clonedDropdownOptions);\n\t\t\tconst remainingSlots = maxSelections - currentCount;\n\n\t\t\tif (remainingSlots <= 0) {\n\t\t\t\t// Already at max, don't select any more\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet selectedCount = 0;\n\t\t\tsearchedOptions.forEach((option) => {\n\t\t\t\tif (selectedCount >= remainingSlots) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet found = false;\n\t\t\t\tclonedDropdownOptions = clonedDropdownOptions.map((dOption) => {\n\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\t// Skip if already selected\n\t\t\t\t\tif ((dOption as SingleOption).selected) {\n\t\t\t\t\t\treturn dOption;\n\t\t\t\t\t}\n\t\t\t\t\t// Skip if disabled\n\t\t\t\t\tif ((dOption as SingleOption).disabled) {\n\t\t\t\t\t\treturn dOption;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof singleOption.value !== 'undefined' &&\n\t\t\t\t\t\tsingleOption.value === (dOption as SingleOption).value\n\t\t\t\t\t) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...dOption,\n\t\t\t\t\t\t\tselected: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn dOption;\n\t\t\t\t});\n\n\t\t\t\tif (!found && selectedCount < remainingSlots) {\n\t\t\t\t\tconst newOption = option as SingleOption;\n\t\t\t\t\tif (!newOption.disabled) {\n\t\t\t\t\t\tclonedDropdownOptions.push({ ...option, selected: true });\n\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetDropdownOptions([...clonedDropdownOptions]);\n\t\t\tif (version === '2.0') {\n\t\t\t\tonMultiSelectApply(clonedDropdownOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction selectAllHandler(newState: SelectAllCheckboxState) {\n\t\tif (searchedOptions.length && searchedString && onSearch) {\n\t\t\tif (newState === 'selectAll') {\n\t\t\t\tselectAllForSearchWithLimit(true);\n\t\t\t} else {\n\t\t\t\tselectAllForSearch(false);\n\t\t\t}\n\t\t} else {\n\t\t\tif (newState === 'selectAll') {\n\t\t\t\tif (maxSelections && maxSelections > 0) {\n\t\t\t\t\t// Only select up to maxSelections limit\n\t\t\t\t\tconst currentCount = getCurrentSelectionCount(dropdownOptions);\n\t\t\t\t\tconst remainingSlots = maxSelections - currentCount;\n\n\t\t\t\t\tif (remainingSlots <= 0) {\n\t\t\t\t\t\t// Already at max, don't select any more\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet selectedCount = 0;\n\t\t\t\t\tconst newOptions = dropdownOptions.map((option) => {\n\t\t\t\t\t\tif ((option as GroupedOption).options) {\n\t\t\t\t\t\t\t// Handle grouped options\n\t\t\t\t\t\t\tconst groupedOption = option as GroupedOption;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...groupedOption,\n\t\t\t\t\t\t\t\toptions: groupedOption.options.map((op) => {\n\t\t\t\t\t\t\t\t\t// Skip disabled options\n\t\t\t\t\t\t\t\t\tif (op.disabled) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Check if already selected\n\t\t\t\t\t\t\t\t\tif (op.selected) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Check search filter\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tsearchedString &&\n\t\t\t\t\t\t\t\t\t\t!op.label\n\t\t\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase())\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Select if we have remaining slots\n\t\t\t\t\t\t\t\t\tif (selectedCount < remainingSlots) {\n\t\t\t\t\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\t\t\t\t\treturn { ...op, selected: true };\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst singleOption = option as SingleOption;\n\t\t\t\t\t\t\t// Skip disabled options\n\t\t\t\t\t\t\tif (singleOption.disabled) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Check if already selected\n\t\t\t\t\t\t\tif (singleOption.selected) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Check search filter\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tsearchedString &&\n\t\t\t\t\t\t\t\t!singleOption.label\n\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase())\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Select if we have remaining slots\n\t\t\t\t\t\t\tif (selectedCount < remainingSlots) {\n\t\t\t\t\t\t\t\tselectedCount++;\n\t\t\t\t\t\t\t\treturn { ...option, selected: true };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// No max selection limit, select all\n\t\t\t\t\tconst newOptions = iterateOnOptions(\n\t\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t\t{ selected: true },\n\t\t\t\t\t\t(option) =>\n\t\t\t\t\t\t\tsearchedString\n\t\t\t\t\t\t\t\t? option.label\n\t\t\t\t\t\t\t\t\t\t?.toLowerCase()\n\t\t\t\t\t\t\t\t\t\t.includes(searchedString.toLowerCase()) && !option.disabled\n\t\t\t\t\t\t\t\t: !option.disabled,\n\t\t\t\t\t);\n\t\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\t\tif (version === '2.0') {\n\t\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (newState === 'notSelected') {\n\t\t\t\tconst newOptions = iterateOnOptions(\n\t\t\t\t\tdropdownOptions,\n\t\t\t\t\t{ selected: false },\n\t\t\t\t\t(option) => !option.disabled,\n\t\t\t\t);\n\t\t\t\tsetDropdownOptions([...newOptions]);\n\t\t\t\tif (version === '2.0') {\n\t\t\t\t\tonMultiSelectApply(newOptions);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onMultiSelectClear() {\n\t\tconst newOptions = iterateOnOptions(dropdownOptions, { selected: false });\n\t\tsetDropdownOptions([...newOptions]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(newOptions);\n\t\t}\n\t}\n\n\tfunction onFreeFormSelect(selected: boolean) {\n\t\tif (!isMultiSelect) {\n\t\t\tonApplyHandler({\n\t\t\t\tlabel: searchedString,\n\t\t\t\tvalue: searchedString,\n\t\t\t\tisFreeForm: true,\n\t\t\t\tselected: true,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst updatedList = dropdownOptions.map((option) =>\n\t\t\t(option as GroupedOption).options\n\t\t\t\t? option\n\t\t\t\t: {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tselected:\n\t\t\t\t\t\t\t/** free form check */\n\t\t\t\t\t\t\toption.label === searchedString &&\n\t\t\t\t\t\t\t(option as SingleOption).value === searchedString\n\t\t\t\t\t\t\t\t? /** to mark as selected or not */\n\t\t\t\t\t\t\t\t selected\n\t\t\t\t\t\t\t\t: (option as SingleOption).selected,\n\t\t\t\t },\n\t\t);\n\n\t\tif (selected) {\n\t\t\tif (\n\t\t\t\t!updatedList.some(\n\t\t\t\t\t(option) =>\n\t\t\t\t\t\toption.label === searchedString &&\n\t\t\t\t\t\t(option as SingleOption).value === searchedString,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedList.unshift({\n\t\t\t\t\tlabel: searchedString,\n\t\t\t\t\tvalue: searchedString,\n\t\t\t\t\tisFreeForm: true,\n\t\t\t\t\tselected: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsetDropdownOptions([...updatedList]);\n\t\tif (version === '2.0') {\n\t\t\tonMultiSelectApply(updatedList);\n\t\t}\n\t}\n\n\t/**\n\t * This is called when appy button is called,\n\t * here iterate and pick all options where selected if true.\n\t */\n\tfunction onMultiSelectApply(options?: DropdownOption[]) {\n\t\tconst optionsToSend: DropdownOption[] = getSelectedOptions(\n\t\t\toptions ?? latestDropdownOptionsRef.current,\n\t\t);\n\n\t\tonSelect?.([...optionsToSend]);\n\t}\n\n\treturn {\n\t\tlatestDropdownOptionsRef,\n\t\tdropdownOptions,\n\t\tsearch,\n\t\tsearchedString,\n\t\tsearchedOptions,\n\t\tsearchError,\n\t\tretrySearch,\n\t\tonApplyHandler,\n\t\tselectAllHandler,\n\t\tonMultiSelectClear,\n\t\tonFreeFormSelect,\n\t\tonMultiSelectApply,\n\t\tgetSelectedOptions,\n\t\tgetCurrentSelectionCount,\n\t\tisMaxSelectionsReached,\n\t\tmaxSelections,\n\t};\n};\n"],"names":["useDropdown","version","options","onSelect","skipSorting","isMultiSelect","onSearch","disableOtherSearchedOption","disableSearchedOptionExcept","maxSelections","dropdownOptions","setDropdownOptions","useState","searchedOptions","setSearchedOptions","searchedString","setSearchedString","searchError","setSearchError","latestDropdownOptionsRef","useRef","onSearchRef","useEffect","searchedOptionsClone","dropdownOptionFlat","option","op","selectedDropdownOption","dropdownOption","writeOptions","getSelectedOptions","data","selectedOptions","groupedOptions","getCurrentSelectionCount","count","isMaxSelectionsReached","performSearch","useCallback","searchKey","onSearchFn","selectedIds","iterateOnOptionsRaw","response","updatedResponseData","groupedOption","error","debouncedSearch","useMemo","debounce","search","retrySearch","onApplyHandler","optionSelect","returnOnly","alreadyPresentInInitialOptions","currList","iterateOnOptions","optionForValidation","onMultiSelectApply","selectAllForSearch","select","clonedDropdownOptions","dOption","singleOption","selectAllForSearchWithLimit","currentCount","remainingSlots","selectedCount","found","selectAllHandler","newState","newOptions","onMultiSelectClear","onFreeFormSelect","selected","updatedList","optionsToSend"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DualIconButton.styled.js","sources":["../../../../src/components/dual-icon-button/DualIconButton.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport const Container = styled.div<{ disabled?: boolean }>`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\toverflow: hidden;\n\tbackground: ${(props) =>\n\t\tprops.disabled\n\t\t\t? COLORS.background.inactive\n\t\t\t: COLORS.background.inverseLight};\n`;\n\nexport const IconHalf = styled.button<{ disabled?: boolean }>`\n\tall: unset;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 24px;\n\tpadding: 4px;\n\tbox-sizing: border-box;\n\tcursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n\tbackground: transparent;\n\n\t${(props) =>\n\t\t!props.disabled\n\t\t\t? `\n\t\t
|
|
1
|
+
{"version":3,"file":"DualIconButton.styled.js","sources":["../../../../src/components/dual-icon-button/DualIconButton.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport const Container = styled.div<{ disabled?: boolean }>`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tborder-radius: 4px;\n\toverflow: hidden;\n\tbackground: ${(props) =>\n\t\tprops.disabled\n\t\t\t? COLORS.background.inactive\n\t\t\t: COLORS.background.inverseLight};\n`;\n\nexport const IconHalf = styled.button<{ disabled?: boolean }>`\n\tall: unset;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 24px;\n\tpadding: 4px;\n\tbox-sizing: border-box;\n\tcursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n\tbackground: transparent;\n\n\t${(props) =>\n\t\t!props.disabled\n\t\t\t? `\n\t\t&:hover {\n\t\t\tbackground-color: ${COLORS.background.inverse};\n\t\t}\n\t\t&:active {\n\t\t\tbox-shadow: inset 0px 4px 12px rgba(0, 0, 0, 0.35);\n\t\t}\n\t`\n\t\t\t: ''}\n`;\n\nexport const Divider = styled.div`\n\twidth: 1px;\n\theight: 12px;\n\tbackground: rgba(255, 255, 255, 0.3);\n\tflex-shrink: 0;\n`;\n"],"names":["Container","styled","props","COLORS","IconHalf","Divider"],"mappings":"0NAGaA,EAAYC,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,eAKhBC,GACdA,EAAM,SACHC,EAAAA,OAAO,WAAW,SAClBA,EAAAA,OAAO,WAAW,YAAY;AAAA,EAGtBC,EAAWH,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WASnBC,GAAWA,EAAM,SAAW,cAAgB,SAAU;AAAA;AAAA;AAAA,GAG9DA,GACDA,EAAM,SASJ,GARA;AAAA;AAAA,uBAEkBC,EAAAA,OAAO,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC;AAAA,EAGME,EAAUJ,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingActionButton.styles.js","sources":["../../../../src/components/floating-action-button/FloatingActionButton.styles.ts"],"sourcesContent":["import { Dropdown } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport enum FAB_POSITION {\n\tTOP_LEFT = 'top left',\n\tTOP_RIGHT = 'top right',\n\tBOTTOM_LEFT = 'bottom left',\n\tBOTTOM_RIGHT = 'botton right',\n}\n\nexport enum DROP_POSITION {\n\tUP = 'up',\n\tUP_CENTERED = 'up-centered',\n\tSTART = 'start',\n\tEND = 'end',\n\tDOWN = 'down',\n\tDOWN_CENTERED = 'down-centered',\n}\n\nexport enum MENU_ALIGNMENT {\n\tSTART = 'start',\n\tEND = 'end',\n}\n\nexport const FloatingActionButtonContainer = styled.div<{\n\twidth: number;\n\theight: number;\n\tcolor: string;\n\tisRound?: boolean;\n}>`\n\twidth: ${(props) => props.width}px;\n\theight: ${(props) => props.height}px;\n\tbackground: ${(props) => props.color};\n\t${(props) =>\n\t\tprops.isRound\n\t\t\t? 'border-radius: 50%;'\n\t\t\t: 'border-bottom-left-radius: 50%; border-bottom-right-radius: 50%; border-top-left-radius:50%;'}\n\tjustify-content: center;\n\talign-items: center;\n\tcursor: pointer;\n\tdisplay: flex;\n`;\nexport const FloatingActionButtonOuterContainer = styled.div<{\n\twidth: number;\n\theight: number;\n\tcolor: string;\n\tposition: FAB_POSITION;\n\tbuttonPaddingHorizontal: number;\n\tbuttonPaddingVertical: number;\n\tzIndex: number;\n}>`\n\tdisplay: flex;\n\tborder-radius: 50%;\n\tflex-direction: column;\n\talign-items: flex-end;\n\tposition: fixed;\n\twidth: ${(props) => props.width}px;\n\theight: ${(props) => props.height}px;\n\tz-index: ${(props) => props.zIndex};\n\t${(props) =>\n\t\tprops.position === FAB_POSITION.BOTTOM_RIGHT\n\t\t\t? `right: ${props.buttonPaddingHorizontal}px; bottom: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.BOTTOM_LEFT\n\t\t\t? `left: ${props.buttonPaddingHorizontal}px; bottom: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.TOP_LEFT\n\t\t\t? `left: ${props.buttonPaddingHorizontal}px; top: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.TOP_RIGHT\n\t\t\t? `right: ${props.buttonPaddingHorizontal}px; top: ${props.buttonPaddingVertical}px`\n\t\t\t: ``};\n`;\n\nexport const StyledDropdown = styled(Dropdown)<{\n\tactive?: string;\n\twidth?: string;\n\theight?: string;\n}>`\n\t.filter-container {\n\t\t.single-row {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tjustify-content: flex-start;\n\t\t\tgap: 8px;\n\t\t\tpadding: 14px;\n\t\t\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\n\t\t\t
|
|
1
|
+
{"version":3,"file":"FloatingActionButton.styles.js","sources":["../../../../src/components/floating-action-button/FloatingActionButton.styles.ts"],"sourcesContent":["import { Dropdown } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport enum FAB_POSITION {\n\tTOP_LEFT = 'top left',\n\tTOP_RIGHT = 'top right',\n\tBOTTOM_LEFT = 'bottom left',\n\tBOTTOM_RIGHT = 'botton right',\n}\n\nexport enum DROP_POSITION {\n\tUP = 'up',\n\tUP_CENTERED = 'up-centered',\n\tSTART = 'start',\n\tEND = 'end',\n\tDOWN = 'down',\n\tDOWN_CENTERED = 'down-centered',\n}\n\nexport enum MENU_ALIGNMENT {\n\tSTART = 'start',\n\tEND = 'end',\n}\n\nexport const FloatingActionButtonContainer = styled.div<{\n\twidth: number;\n\theight: number;\n\tcolor: string;\n\tisRound?: boolean;\n}>`\n\twidth: ${(props) => props.width}px;\n\theight: ${(props) => props.height}px;\n\tbackground: ${(props) => props.color};\n\t${(props) =>\n\t\tprops.isRound\n\t\t\t? 'border-radius: 50%;'\n\t\t\t: 'border-bottom-left-radius: 50%; border-bottom-right-radius: 50%; border-top-left-radius:50%;'}\n\tjustify-content: center;\n\talign-items: center;\n\tcursor: pointer;\n\tdisplay: flex;\n`;\nexport const FloatingActionButtonOuterContainer = styled.div<{\n\twidth: number;\n\theight: number;\n\tcolor: string;\n\tposition: FAB_POSITION;\n\tbuttonPaddingHorizontal: number;\n\tbuttonPaddingVertical: number;\n\tzIndex: number;\n}>`\n\tdisplay: flex;\n\tborder-radius: 50%;\n\tflex-direction: column;\n\talign-items: flex-end;\n\tposition: fixed;\n\twidth: ${(props) => props.width}px;\n\theight: ${(props) => props.height}px;\n\tz-index: ${(props) => props.zIndex};\n\t${(props) =>\n\t\tprops.position === FAB_POSITION.BOTTOM_RIGHT\n\t\t\t? `right: ${props.buttonPaddingHorizontal}px; bottom: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.BOTTOM_LEFT\n\t\t\t? `left: ${props.buttonPaddingHorizontal}px; bottom: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.TOP_LEFT\n\t\t\t? `left: ${props.buttonPaddingHorizontal}px; top: ${props.buttonPaddingVertical}px`\n\t\t\t: props.position === FAB_POSITION.TOP_RIGHT\n\t\t\t? `right: ${props.buttonPaddingHorizontal}px; top: ${props.buttonPaddingVertical}px`\n\t\t\t: ``};\n`;\n\nexport const StyledDropdown = styled(Dropdown)<{\n\tactive?: string;\n\twidth?: string;\n\theight?: string;\n}>`\n\t.filter-container {\n\t\t.single-row {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tjustify-content: flex-start;\n\t\t\tgap: 8px;\n\t\t\tpadding: 14px;\n\t\t\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\n\t\t\t&:last-child {\n\t\t\t\tborder-bottom: none !important;\n\t\t\t}\n\t\t}\n\t}\n\tbutton:not(.date-picker-save-button-container button) {\n\t\tborder: 1px solid\n\t\t\t${(props) =>\n\t\t\t\tprops.active === 'true'\n\t\t\t\t\t? COLORS.stroke.positive.lightAlt\n\t\t\t\t\t: COLORS.stroke.primary};\n\t\tborder-radius: 4px;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tpadding: 6px 0px;\n\t\tbackground: ${(props) =>\n\t\t\tprops.active === 'true'\n\t\t\t\t? COLORS.background.positive.light\n\t\t\t\t: COLORS.surface.standard};\n\t\tcolor: ${(props) =>\n\t\t\tprops.active === 'true'\n\t\t\t\t? COLORS.content.positive\n\t\t\t\t: COLORS.content.primary};\n\t}\n\n\t.btn-primary:hover,\n\t.btn-primary:active,\n\t.btn-primary:focus,\n\t.btn-primary.dropdown-toggle,\n\t.show > .btn-primary.dropdown-toggle {\n\t\tcolor: ${(props) =>\n\t\t\tprops.active === 'true'\n\t\t\t\t? COLORS.content.positive\n\t\t\t\t: COLORS.content.primary};\n\t\tbackground-color: ${(props) =>\n\t\t\tprops.active === 'true'\n\t\t\t\t? COLORS.background.positive.light\n\t\t\t\t: 'transparent'};\n\t\tborder: none;\n\t}\n\t.btn:focus {\n\t\toutline: 0;\n\t\tbox-shadow: 0 0 0 0.25rem transparent !important;\n\t}\n\n\t.dropdown-toggle::after {\n\t\tborder-top: 0.3em solid ${COLORS.content.primary};\n\t\tdisplay: none !important;\n\t}\n\n\t.dropdown-toggle::before {\n\t\tborder-top: 0.3em solid ${COLORS.content.primary};\n\t\tdisplay: none !important;\n\t}\n\t.dropdown-menu {\n\t\tmin-width: 12rem;\n\t\tpadding: 0 0;\n\t}\n\t.dropdown-item:active,\n\t.dropdown-item:hover {\n\t\tcolor: ${COLORS.content.positive};\n\t\ttext-decoration: none;\n\t\tbackground-color: ${COLORS.background.positive.light};\n\t}\n`;\n\nexport const DropdownToggleContainer = styled(Dropdown.Toggle)`\n\tborder-radius: 4px;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 6px 8px;\n\tfont-weight: 400;\n\tfont-size: 14px;\n\tline-height: 20px;\n`;\n\nexport const TooltipStyled = styled.div<{ tooltipWidth?: number }>`\n\tbox-shadow: 0px 2px 8px rgba(0, 0, 0, 0.12);\n\tborder-radius: 4px;\n\tpadding: 8px;\n\tbackground-color: ${COLORS.content.primary};\n\tcolor: ${COLORS.content.primaryInverse};\n\twidth: ${(props) =>\n\t\tprops.tooltipWidth ? props.tooltipWidth + 'px' : '120px'};\n`;\n"],"names":["FAB_POSITION","DROP_POSITION","MENU_ALIGNMENT","FloatingActionButtonContainer","styled","props","FloatingActionButtonOuterContainer","StyledDropdown","Dropdown","COLORS","DropdownToggleContainer","TooltipStyled"],"mappings":"uPAIO,IAAKA,GAAAA,IACXA,EAAA,SAAW,WACXA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,aAAe,eAJJA,IAAAA,GAAA,CAAA,CAAA,EAOAC,GAAAA,IACXA,EAAA,GAAK,KACLA,EAAA,YAAc,cACdA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,cAAgB,gBANLA,IAAAA,GAAA,CAAA,CAAA,EASAC,GAAAA,IACXA,EAAA,MAAQ,QACRA,EAAA,IAAM,MAFKA,IAAAA,GAAA,CAAA,CAAA,EAKL,MAAMC,EAAgCC,EAAAA,QAAO;AAAA,UAMzCC,GAAUA,EAAM,KAAK;AAAA,WACpBA,GAAUA,EAAM,MAAM;AAAA,eAClBA,GAAUA,EAAM,KAAK;AAAA,GACjCA,GACFA,EAAM,QACH,sBACA,8FAA8F;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtFC,EAAqCF,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAc9CC,GAAUA,EAAM,KAAK;AAAA,WACpBA,GAAUA,EAAM,MAAM;AAAA,YACrBA,GAAUA,EAAM,MAAM;AAAA,GAC/BA,GACFA,EAAM,WAAa,eAChB,UAAUA,EAAM,uBAAuB,eAAeA,EAAM,qBAAqB,KACjFA,EAAM,WAAa,cACnB,SAASA,EAAM,uBAAuB,eAAeA,EAAM,qBAAqB,KAChFA,EAAM,WAAa,WACnB,SAASA,EAAM,uBAAuB,YAAYA,EAAM,qBAAqB,KAC7EA,EAAM,WAAa,YACnB,UAAUA,EAAM,uBAAuB,YAAYA,EAAM,qBAAqB,KAC9E,EAAE;AAAA,EAGME,EAAiBH,EAAAA,QAAOI,UAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAafC,EAAAA,OAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAS7CJ,GACFA,EAAM,SAAW,OACdI,EAAAA,OAAO,OAAO,SAAS,SACvBA,SAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAOXJ,GACdA,EAAM,SAAW,OACdI,EAAAA,OAAO,WAAW,SAAS,MAC3BA,SAAO,QAAQ,QAAQ;AAAA,WACjBJ,GACTA,EAAM,SAAW,OACdI,SAAO,QAAQ,SACfA,SAAO,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAQhBJ,GACTA,EAAM,SAAW,OACdI,SAAO,QAAQ,SACfA,SAAO,QAAQ,OAAO;AAAA,sBACLJ,GACpBA,EAAM,SAAW,OACdI,EAAAA,OAAO,WAAW,SAAS,MAC3B,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BASSA,EAAAA,OAAO,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKtBA,EAAAA,OAAO,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WASvCA,EAAAA,OAAO,QAAQ,QAAQ;AAAA;AAAA,sBAEZA,SAAO,WAAW,SAAS,KAAK;AAAA;AAAA,EAIzCC,EAA0BN,EAAAA,QAAOI,EAAAA,SAAS,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYhDG,EAAgBP,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA,qBAIfK,EAAAA,OAAO,QAAQ,OAAO;AAAA,UACjCA,EAAAA,OAAO,QAAQ,cAAc;AAAA,UAC5BJ,GACTA,EAAM,aAAeA,EAAM,aAAe,KAAO,OAAO;AAAA"}
|
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
${o.bordered&&o.iconButtonType!=="ai"&&o.iconButtonType!=="primary"?`border: 1px solid ${e.COLORS.stroke.primary};`:""}
|
|
9
9
|
${o.iconButtonType==="primary"?`
|
|
10
10
|
background: ${r.generateBackgroundColor("primary")};
|
|
11
|
-
${o.isSelected?""
|
|
12
|
-
|
|
11
|
+
${o.isSelected?"":`&:hover { background-color: ${e.COLORS.background.inverse}; }`}
|
|
12
|
+
&:active { box-shadow: inset 0px 4px 12px rgba(0, 0, 0, 0.35); }
|
|
13
13
|
`:o.isSelected?`background: ${r.generateBackgroundColor(o.iconButtonType)};`:`
|
|
14
|
-
|
|
14
|
+
&:hover {
|
|
15
15
|
background-color: rgba(0, 0, 0, 0.03);
|
|
16
16
|
}
|
|
17
17
|
`}
|
|
18
18
|
${o.disabled?o.iconButtonType==="primary"?`
|
|
19
19
|
cursor: not-allowed !important;
|
|
20
20
|
background-color: ${e.COLORS.background.inactive};
|
|
21
|
-
|
|
21
|
+
&:hover { background-color: ${e.COLORS.background.inactive}; }
|
|
22
22
|
`:`
|
|
23
23
|
cursor: not-allowed !important;
|
|
24
24
|
background-color: rgba(0, 0, 0, 0.03);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.styled.js","sources":["../../../../src/components/icon-button/IconButton.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\nimport { IconButtonSize, IconButtonType } from './model';\nimport { generateBackgroundColor } from './theme';\n\nexport const IconButton = styled.button<{\n\tbordered?: boolean;\n\ticonButtonType: IconButtonType;\n\tisSelected?: boolean;\n\ticonPadding?: number;\n\tsize?: IconButtonSize;\n}>`\n\t${(props) => `\n\tall: unset;\n\tcursor: pointer;\n\tpadding: ${\n\t\tprops.iconPadding !== undefined\n\t\t\t? props.iconPadding\n\t\t\t: props.size === 'xs'\n\t\t\t? 4\n\t\t\t: 6\n\t}px;\n\tborder-radius: 4px;\n\tflex-wrap: wrap;\n\t${\n\t\tprops.bordered &&\n\t\tprops.iconButtonType !== 'ai' &&\n\t\tprops.iconButtonType !== 'primary'\n\t\t\t? `border: 1px solid ${COLORS.stroke.primary};`\n\t\t\t: ''\n\t}\n\t${\n\t\tprops.iconButtonType === 'primary'\n\t\t\t? `\n\t\t\t\tbackground: ${generateBackgroundColor('primary')};\n\t\t\t\t${\n\t\t\t\t\t!props.isSelected\n\t\t\t\t\t\t?
|
|
1
|
+
{"version":3,"file":"IconButton.styled.js","sources":["../../../../src/components/icon-button/IconButton.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\nimport { IconButtonSize, IconButtonType } from './model';\nimport { generateBackgroundColor } from './theme';\n\nexport const IconButton = styled.button<{\n\tbordered?: boolean;\n\ticonButtonType: IconButtonType;\n\tisSelected?: boolean;\n\ticonPadding?: number;\n\tsize?: IconButtonSize;\n}>`\n\t${(props) => `\n\tall: unset;\n\tcursor: pointer;\n\tpadding: ${\n\t\tprops.iconPadding !== undefined\n\t\t\t? props.iconPadding\n\t\t\t: props.size === 'xs'\n\t\t\t? 4\n\t\t\t: 6\n\t}px;\n\tborder-radius: 4px;\n\tflex-wrap: wrap;\n\t${\n\t\tprops.bordered &&\n\t\tprops.iconButtonType !== 'ai' &&\n\t\tprops.iconButtonType !== 'primary'\n\t\t\t? `border: 1px solid ${COLORS.stroke.primary};`\n\t\t\t: ''\n\t}\n\t${\n\t\tprops.iconButtonType === 'primary'\n\t\t\t? `\n\t\t\t\tbackground: ${generateBackgroundColor('primary')};\n\t\t\t\t${\n\t\t\t\t\t!props.isSelected\n\t\t\t\t\t\t? `&:hover { background-color: ${COLORS.background.inverse}; }`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\t&:active { box-shadow: inset 0px 4px 12px rgba(0, 0, 0, 0.35); }\n\t\t\t`\n\t\t\t: props.isSelected\n\t\t\t? `background: ${generateBackgroundColor(props.iconButtonType)};`\n\t\t\t: `\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground-color: rgba(0, 0, 0, 0.03);\n\t\t\t\t}\n\t\t\t`\n\t}\n\t${\n\t\tprops.disabled\n\t\t\t? props.iconButtonType === 'primary'\n\t\t\t\t? `\n\t\t\t\t\tcursor: not-allowed !important;\n\t\t\t\t\tbackground-color: ${COLORS.background.inactive};\n\t\t\t\t\t&:hover { background-color: ${COLORS.background.inactive}; }\n\t\t\t\t`\n\t\t\t\t: `\n\t\t\t\t\tcursor: not-allowed !important;\n\t\t\t\t\tbackground-color: rgba(0, 0, 0, 0.03);\n\t\t\t\t`\n\t\t\t: ''\n\t}\n\n\t`}\n`;\n"],"names":["IconButton","styled","props","COLORS","generateBackgroundColor"],"mappings":"kPAKaA,EAAaC,EAAAA,QAAO;AAAA,GAO7BC,GAAU;AAAA;AAAA;AAAA,YAIZA,EAAM,cAAgB,OACnBA,EAAM,YACNA,EAAM,OAAS,KACf,EACA,CACJ;AAAA;AAAA;AAAA,GAICA,EAAM,UACNA,EAAM,iBAAmB,MACzBA,EAAM,iBAAmB,UACtB,qBAAqBC,EAAAA,OAAO,OAAO,OAAO,IAC1C,EACJ;AAAA,GAECD,EAAM,iBAAmB,UACtB;AAAA,kBACaE,EAAAA,wBAAwB,SAAS,CAAC;AAAA,MAE9CF,EAAM,WAEJ,GADA,+BAA+BC,EAAAA,OAAO,WAAW,OAAO,KAE5D;AAAA;AAAA,KAGCD,EAAM,WACN,eAAeE,EAAAA,wBAAwBF,EAAM,cAAc,CAAC,IAC5D;AAAA;AAAA;AAAA;AAAA,IAKJ;AAAA,GAECA,EAAM,SACHA,EAAM,iBAAmB,UACxB;AAAA;AAAA,yBAEmBC,EAAAA,OAAO,WAAW,QAAQ;AAAA,mCAChBA,EAAAA,OAAO,WAAW,QAAQ;AAAA,MAEvD;AAAA;AAAA;AAAA,MAID,EACJ;AAAA;AAAA,EAEC;AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("react"),v=require("../zeroState/ZeroState.js"),L=require("../../constants/Theme.js"),E=require("../dropdown/OpenedDropdown/components/searchbox/SearchBox.js"),_=require("./MenuList.js"),p=require("./MultiLevelDropdown.styled.js"),N=require("../floater/floater.js"),T=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},z=T(u),A=({options:t,width:l,isSearchable:m,onDropdownItemClick:b,refElement:q,topOffset:R,leftOffset:w,isDropdownOpen:a,onDropdownOutsideClick:c,allowParentSelection:C,maxLevels:M,hideGroupLabel:O,version:s="1.0"})=>{const d=z.default.useRef(null),[f,S]=u.useState(t),j=h=>{const o=Array.isArray(t)?[...t]:[],g=[];for(;o.length>0;){const e=o.shift();e&&e.label.toLowerCase().includes(h.toLowerCase())&&g.push(e),e&&"children"in e&&e.children?o.push(...e.children):e&&"options"in e&&e.options&&o.push(...e.options)}const x=e=>e.map(r=>{if(g.includes(r))return r;if("children"in r&&r.children){const i=x(r.children);if(i.length>0)return{...r,children:i}}if("options"in r&&r.options){const i=x(r.options);if(i.length>0)return{...r,options:i}}return null}).filter(r=>r!==null);S(x(t))},y=h=>{d.current&&!d.current.contains(h.target)?c&&c(!0):c&&c(!1)};return u.useEffect(()=>{a&&j("")},[a]),u.useEffect(()=>(document.addEventListener("mousedown",y),()=>{document.removeEventListener("mousedown",y)}),[]),u.useEffect(()=>{S(t)},[t]),n.jsx(N.Floater,{refElement:q,topOffset:R,leftOffset:w,children:a&&n.jsx("div",{ref:d,style:{backgroundColor:L.COLORS.surface.standard,zIndex:99999,borderRadius:s==="3.0"?"4px":"8px",overflow:"hidden",boxShadow:"0 2px 8px 0 rgba(0, 0, 0, 0.12)",whiteSpace:"normal"},children:n.jsxs(p.DropdownContainer,{width:l,version:s,children:[m&&n.jsx("div",{style:{padding:s==="3.0"?"0px":"4px",width:l??"200px"},children:n.jsx(E.SearchBox,{onSearch:j,version:s==="3.0"?"3.0":"2.0"})}),n.jsx(p.OptionsContainer,{width:l,version:s,children:(f??[]).length>0&&n.jsx(_.MenuList,{width:l??"200px",onDropdownItemClick:b,options:f,parents:[],allowParentSelection:C,maxLevels:M,hideGroupLabel:O,currentLevel:1,version:s})}),(f??[]).length===0&&n.jsx(p.NoResultsContainer,{style:{width:l??"200px"},version:s,children:s==="3.0"?n.jsx("span",{style:{fontSize:"12px",color:L.COLORS.content.placeholder,lineHeight:"16px"},children:"No results found!"}):n.jsx(v.ZeroState,{title:"No results found!",subTitle:"Sorry, we are unable to find any results for your search."})})]})})})};exports.MultiLevelDropdown=A;
|
|
2
2
|
//# sourceMappingURL=MultiLevelDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLevelDropdown.js","sources":["../../../../src/components/multi-level-dropdown/MultiLevelDropdown.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { COLORS } from '@src/constants/Theme';\nimport { SearchBox } from '../dropdown/OpenedDropdown/components/searchbox/SearchBox';\nimport { Floater } from '../floater';\nimport { MenuList } from './MenuList';\nimport {\n\tDropdownContainer,\n\
|
|
1
|
+
{"version":3,"file":"MultiLevelDropdown.js","sources":["../../../../src/components/multi-level-dropdown/MultiLevelDropdown.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { COLORS } from '@src/constants/Theme';\nimport { SearchBox } from '../dropdown/OpenedDropdown/components/searchbox/SearchBox';\nimport { Floater } from '../floater';\nimport { MenuList } from './MenuList';\nimport {\n\tDropdownContainer,\n\tNoResultsContainer,\n\tOptionsContainer,\n} from './MultiLevelDropdown.styled';\nimport { MultiLevelDropdownOption, MultiLevelDropdownProps } from './type';\n\nexport const MultiLevelDropdown: React.FC<MultiLevelDropdownProps> = ({\n\toptions,\n\twidth,\n\tisSearchable,\n\tonDropdownItemClick,\n\trefElement,\n\ttopOffset,\n\tleftOffset,\n\tisDropdownOpen,\n\tonDropdownOutsideClick,\n\tallowParentSelection,\n\tmaxLevels,\n\thideGroupLabel,\n\tversion = '1.0',\n}) => {\n\tconst dropdownRef = React.useRef<HTMLDivElement>(null);\n\tconst [filteredOptions, setFilteredOptions] =\n\t\tuseState<MultiLevelDropdownOption[]>(options);\n\n\tconst search = (searchString: string) => {\n\t\tconst queue = Array.isArray(options) ? [...options] : [];\n\t\tconst result: MultiLevelDropdownOption[] = [];\n\n\t\twhile (queue.length > 0) {\n\t\t\tconst current = queue.shift();\n\t\t\tif (\n\t\t\t\tcurrent &&\n\t\t\t\tcurrent.label.toLowerCase().includes(searchString.toLowerCase())\n\t\t\t) {\n\t\t\t\tresult.push(current);\n\t\t\t}\n\t\t\tif (current && 'children' in current && current.children) {\n\t\t\t\tqueue.push(...current.children);\n\t\t\t} else if (current && 'options' in current && current.options) {\n\t\t\t\tqueue.push(...current.options);\n\t\t\t}\n\t\t}\n\n\t\tconst filterOptions = (options: MultiLevelDropdownOption[]) => {\n\t\t\treturn options\n\t\t\t\t.map((option: MultiLevelDropdownOption) => {\n\t\t\t\t\tif (result.includes(option)) {\n\t\t\t\t\t\treturn option;\n\t\t\t\t\t}\n\t\t\t\t\tif ('children' in option && option.children) {\n\t\t\t\t\t\tconst filteredChildren = filterOptions(\n\t\t\t\t\t\t\toption.children as MultiLevelDropdownOption[],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (filteredChildren.length > 0) {\n\t\t\t\t\t\t\treturn { ...option, children: filteredChildren };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ('options' in option && option.options) {\n\t\t\t\t\t\tconst filteredOptions = filterOptions(\n\t\t\t\t\t\t\toption.options as MultiLevelDropdownOption[],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (filteredOptions.length > 0) {\n\t\t\t\t\t\t\treturn { ...option, options: filteredOptions };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter((option) => option !== null);\n\t\t};\n\n\t\tsetFilteredOptions(filterOptions(options) as MultiLevelDropdownOption[]);\n\t};\n\n\tconst handleClickOutside = (event: MouseEvent) => {\n\t\tif (\n\t\t\tdropdownRef.current &&\n\t\t\t!dropdownRef.current.contains(event.target as Node)\n\t\t) {\n\t\t\tif (onDropdownOutsideClick) {\n\t\t\t\tonDropdownOutsideClick(true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (onDropdownOutsideClick) {\n\t\t\t\tonDropdownOutsideClick(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (isDropdownOpen) {\n\t\t\tsearch('');\n\t\t}\n\t}, [isDropdownOpen]);\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetFilteredOptions(options);\n\t}, [options]);\n\n\treturn (\n\t\t<Floater\n\t\t\trefElement={refElement}\n\t\t\ttopOffset={topOffset}\n\t\t\tleftOffset={leftOffset}\n\t\t>\n\t\t\t{isDropdownOpen && (\n\t\t\t\t<div\n\t\t\t\t\tref={dropdownRef}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackgroundColor: COLORS.surface.standard,\n\t\t\t\t\t\tzIndex: 99999,\n\t\t\t\t\t\tborderRadius: version === '3.0' ? '4px' : '8px',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tboxShadow: '0 2px 8px 0 rgba(0, 0, 0, 0.12)',\n\t\t\t\t\t\twhiteSpace: 'normal',\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<DropdownContainer width={width} version={version}>\n\t\t\t\t\t\t{isSearchable && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tpadding: version === '3.0' ? '0px' : '4px',\n\t\t\t\t\t\t\t\t\twidth: width ?? '200px',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SearchBox\n\t\t\t\t\t\t\t\t\tonSearch={search}\n\t\t\t\t\t\t\t\t\tversion={version === '3.0' ? '3.0' : '2.0'}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<OptionsContainer width={width} version={version}>\n\t\t\t\t\t\t\t{(filteredOptions ?? []).length > 0 && (\n\t\t\t\t\t\t\t\t<MenuList\n\t\t\t\t\t\t\t\t\twidth={width ?? '200px'}\n\t\t\t\t\t\t\t\t\tonDropdownItemClick={onDropdownItemClick}\n\t\t\t\t\t\t\t\t\toptions={filteredOptions}\n\t\t\t\t\t\t\t\t\tparents={[]}\n\t\t\t\t\t\t\t\t\tallowParentSelection={allowParentSelection}\n\t\t\t\t\t\t\t\t\tmaxLevels={maxLevels}\n\t\t\t\t\t\t\t\t\thideGroupLabel={hideGroupLabel}\n\t\t\t\t\t\t\t\t\tcurrentLevel={1}\n\t\t\t\t\t\t\t\t\tversion={version}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</OptionsContainer>\n\n\t\t\t\t\t\t{(filteredOptions ?? []).length === 0 && (\n\t\t\t\t\t\t\t<NoResultsContainer\n\t\t\t\t\t\t\t\tstyle={{ width: width ?? '200px' }}\n\t\t\t\t\t\t\t\tversion={version}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{version === '3.0' ? (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '12px',\n\t\t\t\t\t\t\t\t\t\t\tcolor: COLORS.content.placeholder,\n\t\t\t\t\t\t\t\t\t\t\tlineHeight: '16px',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tNo results found!\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\t\t\t\ttitle=\"No results found!\"\n\t\t\t\t\t\t\t\t\t\tsubTitle={`Sorry, we are unable to find any results for your search.`}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</NoResultsContainer>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DropdownContainer>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Floater>\n\t);\n};\n"],"names":["MultiLevelDropdown","options","width","isSearchable","onDropdownItemClick","refElement","topOffset","leftOffset","isDropdownOpen","onDropdownOutsideClick","allowParentSelection","maxLevels","hideGroupLabel","version","dropdownRef","React","filteredOptions","setFilteredOptions","useState","search","searchString","queue","result","current","filterOptions","option","filteredChildren","handleClickOutside","event","useEffect","jsx","Floater","COLORS","jsxs","DropdownContainer","SearchBox","OptionsContainer","MenuList","NoResultsContainer","ZeroState"],"mappings":"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"}
|
|
@@ -13,29 +13,26 @@
|
|
|
13
13
|
width: 0px;
|
|
14
14
|
}
|
|
15
15
|
`,c=e.default.div`
|
|
16
|
-
border-top: 1px solid ${n.COLORS.stroke.primary};
|
|
17
|
-
padding: 4px;
|
|
18
|
-
`,x=e.default.div`
|
|
19
16
|
margin-top: ${({version:t})=>t==="3.0"?0:64}px;
|
|
20
17
|
height: ${({version:t})=>t==="3.0"?236:200}px;
|
|
21
18
|
width: ${({width:t})=>t||"200px"};
|
|
22
19
|
display: ${({version:t})=>t==="3.0"?"flex":"block"};
|
|
23
20
|
align-items: center;
|
|
24
21
|
justify-content: center;
|
|
25
|
-
`,
|
|
22
|
+
`,x=e.default.div`
|
|
26
23
|
width: 100%;
|
|
27
24
|
justify-content: center;
|
|
28
25
|
cursor: pointer;
|
|
29
26
|
align-items: center;
|
|
30
27
|
justify-content: space-between;
|
|
31
28
|
margin: ${({version:t})=>t==="3.0"?"0":"4px 0"};
|
|
32
|
-
`,
|
|
29
|
+
`,f=e.default.div`
|
|
33
30
|
z-index: 1000;
|
|
34
31
|
position: relative;
|
|
35
32
|
margin: 0px;
|
|
36
33
|
padding: 0px;
|
|
37
34
|
width: 100%;
|
|
38
|
-
`,
|
|
35
|
+
`,g=e.default.div`
|
|
39
36
|
position: relative;
|
|
40
37
|
padding: ${({version:t})=>t==="3.0"?"0px":"1px 4px"};
|
|
41
38
|
cursor: pointer;
|
|
@@ -44,7 +41,7 @@
|
|
|
44
41
|
&:focus-within > .submenu {
|
|
45
42
|
display: block;
|
|
46
43
|
}
|
|
47
|
-
`,
|
|
44
|
+
`,b=e.default.div`
|
|
48
45
|
position: relative;
|
|
49
46
|
padding: ${({version:t})=>t==="3.0"?"8px":"4px 8px"};
|
|
50
47
|
transition: background-color 0.2s;
|
|
@@ -60,7 +57,7 @@
|
|
|
60
57
|
&:hover {
|
|
61
58
|
background-color: ${({isSelected:t,isDisabled:i,version:o})=>i?n.COLORS.surface.standard:t?o==="3.0"?n.COLORS.background.brandLight:n.COLORS.background.positive.light:n.COLORS.surface.hovered};
|
|
62
59
|
}
|
|
63
|
-
`,
|
|
60
|
+
`,C=e.default.div`
|
|
64
61
|
display: flex;
|
|
65
62
|
align-items: center;
|
|
66
63
|
gap: 8px;
|
|
@@ -68,7 +65,7 @@
|
|
|
68
65
|
z-index: 1001;
|
|
69
66
|
position: fixed;
|
|
70
67
|
border-left: 4px solid transparent;
|
|
71
|
-
`,
|
|
68
|
+
`,h=e.default.div`
|
|
72
69
|
margin: 4px;
|
|
73
70
|
background-color: ${n.COLORS.surface.standard};
|
|
74
71
|
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);
|
|
@@ -81,25 +78,25 @@
|
|
|
81
78
|
&::-webkit-scrollbar {
|
|
82
79
|
display: none;
|
|
83
80
|
}
|
|
84
|
-
`,
|
|
81
|
+
`,O=e.default.div`
|
|
85
82
|
width: 16px;
|
|
86
83
|
height: 16px;
|
|
87
84
|
display: flex;
|
|
88
85
|
align-items: center;
|
|
89
86
|
justify-content: center;
|
|
90
87
|
margin-right: 4px;
|
|
91
|
-
`,
|
|
88
|
+
`,m=e.default.div`
|
|
92
89
|
width: 16px;
|
|
93
90
|
height: 16px;
|
|
94
91
|
display: flex;
|
|
95
92
|
align-items: center;
|
|
96
93
|
justify-content: center;
|
|
97
94
|
margin-left: 4px;
|
|
98
|
-
`,
|
|
95
|
+
`,v=e.default.div`
|
|
99
96
|
width: ${t=>t.width};
|
|
100
|
-
`,
|
|
97
|
+
`,y=e.default(r)`
|
|
101
98
|
width: ${t=>t.width};
|
|
102
99
|
top: ${t=>t.top}px;
|
|
103
100
|
left: ${t=>t.left}px;
|
|
104
|
-
`;exports.ContentContainer=
|
|
101
|
+
`;exports.ContentContainer=C;exports.DropdownContainer=u;exports.GroupedMenuListContainer=x;exports.LeadingIconContainer=O;exports.MenuItemContainer=b;exports.MenuItemWrapper=g;exports.NoResultsContainer=c;exports.OptionsContainer=l;exports.StyledMenuList=f;exports.StyledSubMenuWrapper=y;exports.SubMenuContainer=v;exports.SubMenuListContainer=h;exports.SubMenuWrapper=r;exports.TrailingIconContainer=m;
|
|
105
102
|
//# sourceMappingURL=MultiLevelDropdown.styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLevelDropdown.styled.js","sources":["../../../../src/components/multi-level-dropdown/MultiLevelDropdown.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport const DropdownContainer = styled.div<{\n\twidth?: string;\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\tposition: relative;\n\tborder-radius: ${({ version }) => (version === '3.0' ? 4 : 8)}px;\n\tbox-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);\n\tpadding-bottom: ${({ version }) => (version === '3.0' ? 0 : 4)}px;\n`;\n\nexport const OptionsContainer = styled.div<{\n\twidth?: string;\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\twidth: ${({ width }) => (width ? width : '200px')};\n\tmax-width: 300px;\n\tmax-height: 280px;\n\toverflow-y: scroll;\n\tpadding: ${({ version }) => (version === '3.0' ? '0' : '4px 0 0')};\n\t&::-webkit-scrollbar {\n\t\twidth: 0px;\n\t}\n`;\n\
|
|
1
|
+
{"version":3,"file":"MultiLevelDropdown.styled.js","sources":["../../../../src/components/multi-level-dropdown/MultiLevelDropdown.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\nexport const DropdownContainer = styled.div<{\n\twidth?: string;\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\tposition: relative;\n\tborder-radius: ${({ version }) => (version === '3.0' ? 4 : 8)}px;\n\tbox-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);\n\tpadding-bottom: ${({ version }) => (version === '3.0' ? 0 : 4)}px;\n`;\n\nexport const OptionsContainer = styled.div<{\n\twidth?: string;\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\twidth: ${({ width }) => (width ? width : '200px')};\n\tmax-width: 300px;\n\tmax-height: 280px;\n\toverflow-y: scroll;\n\tpadding: ${({ version }) => (version === '3.0' ? '0' : '4px 0 0')};\n\t&::-webkit-scrollbar {\n\t\twidth: 0px;\n\t}\n`;\n\nexport const NoResultsContainer = styled.div<{\n\twidth?: string;\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\tmargin-top: ${({ version }) => (version === '3.0' ? 0 : 64)}px;\n\theight: ${({ version }) => (version === '3.0' ? 236 : 200)}px;\n\twidth: ${({ width }) => (width ? width : '200px')};\n\tdisplay: ${({ version }) => (version === '3.0' ? 'flex' : 'block')};\n\talign-items: center;\n\tjustify-content: center;\n`;\n\nexport const GroupedMenuListContainer = styled.div<{\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\twidth: 100%;\n\tjustify-content: center;\n\tcursor: pointer;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin: ${({ version }) => (version === '3.0' ? '0' : '4px 0')};\n`;\n\nexport const StyledMenuList = styled.div`\n\tz-index: 1000;\n\tposition: relative;\n\tmargin: 0px;\n\tpadding: 0px;\n\twidth: 100%;\n`;\n\nexport const MenuItemWrapper = styled.div<{ version?: '1.0' | '2.0' | '3.0' }>`\n\tposition: relative;\n\tpadding: ${({ version }) => (version === '3.0' ? '0px' : '1px 4px')};\n\tcursor: pointer;\n\twidth: 100%;\n\t&:hover > .submenu,\n\t&:focus-within > .submenu {\n\t\tdisplay: block;\n\t}\n`;\n\nexport interface MenuItemContainerProps {\n\tisSelected?: boolean;\n\tisHovered?: boolean;\n\tisSubMenuOpen?: boolean;\n\tisDisabled?: boolean;\n\tversion?: '1.0' | '2.0' | '3.0';\n}\n\nexport const MenuItemContainer = styled.div<MenuItemContainerProps>`\n\tposition: relative;\n\tpadding: ${({ version }) => (version === '3.0' ? '8px' : '4px 8px')};\n\ttransition: background-color 0.2s;\n\twidth: 100%;\n\tborder-radius: ${({ version }) => (version === '3.0' ? 0 : 8)}px;\n\tjustify-content: center;\n\tbackground-color: ${({\n\t\tisSelected,\n\t\tisHovered,\n\t\tisSubMenuOpen,\n\t\tisDisabled,\n\t\tversion,\n\t}) =>\n\t\tisDisabled\n\t\t\t? COLORS.surface.standard\n\t\t\t: isSelected || isSubMenuOpen\n\t\t\t? version === '3.0'\n\t\t\t\t? COLORS.background.brandLight\n\t\t\t\t: COLORS.background.positive.light\n\t\t\t: isHovered\n\t\t\t? COLORS.surface.hovered\n\t\t\t: COLORS.surface.standard};\n\tcolor: ${({ isSelected, isSubMenuOpen, version }) =>\n\t\tisSelected || isSubMenuOpen\n\t\t\t? version === '3.0'\n\t\t\t\t? COLORS.text.primary\n\t\t\t\t: COLORS.content.positive\n\t\t\t: COLORS.content.primary};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\n\t&:hover {\n\t\tbackground-color: ${({ isSelected, isDisabled, version }) =>\n\t\t\tisDisabled\n\t\t\t\t? COLORS.surface.standard\n\t\t\t\t: isSelected\n\t\t\t\t? version === '3.0'\n\t\t\t\t\t? COLORS.background.brandLight\n\t\t\t\t\t: COLORS.background.positive.light\n\t\t\t\t: COLORS.surface.hovered};\n\t}\n`;\n\nexport const ContentContainer = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const SubMenuWrapper = styled.div`\n\tz-index: 1001;\n\tposition: fixed;\n\tborder-left: 4px solid transparent;\n`;\n\nexport const SubMenuListContainer = styled.div<{\n\tversion?: '1.0' | '2.0' | '3.0';\n}>`\n\tmargin: 4px;\n\tbackground-color: ${COLORS.surface.standard};\n\tbox-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);\n\tborder-radius: ${({ version }) => (version === '3.0' ? 4 : 8)}px;\n\tpadding-top: ${({ version }) => (version === '3.0' ? 0 : 4)}px;\n\tmax-height: 480px;\n\tpadding-bottom: ${({ version }) => (version === '3.0' ? 0 : 4)}px;\n\toverflow-y: scroll;\n\n\t&::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const LeadingIconContainer = styled.div`\n\twidth: 16px;\n\theight: 16px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 4px;\n`;\n\nexport const TrailingIconContainer = styled.div`\n\twidth: 16px;\n\theight: 16px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-left: 4px;\n`;\n\nexport const SubMenuContainer = styled.div<{ width: string }>`\n\twidth: ${(props) => props.width};\n`;\n\nexport const StyledSubMenuWrapper = styled(SubMenuWrapper)<{\n\twidth: string;\n\ttop: number;\n\tleft: number;\n}>`\n\twidth: ${(props) => props.width};\n\ttop: ${(props) => props.top}px;\n\tleft: ${(props) => props.left}px;\n`;\n"],"names":["DropdownContainer","styled","version","OptionsContainer","width","NoResultsContainer","GroupedMenuListContainer","StyledMenuList","MenuItemWrapper","MenuItemContainer","isSelected","isHovered","isSubMenuOpen","isDisabled","COLORS","ContentContainer","SubMenuWrapper","SubMenuListContainer","LeadingIconContainer","TrailingIconContainer","SubMenuContainer","props","StyledSubMenuWrapper"],"mappings":"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"}
|