@bikdotai/bik-component-library 0.0.876-beta.1 → 0.0.876-beta.3

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.
Files changed (131) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js +2 -2
  3. package/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
  4. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js +4 -4
  5. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
  6. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js +2 -2
  7. package/dist/cjs/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js.map +1 -1
  8. package/dist/cjs/components/accordion/Accordion.style.js +1 -1
  9. package/dist/cjs/components/accordion/Accordion.style.js.map +1 -1
  10. package/dist/cjs/components/action-button/ActionButton.styled.js +1 -1
  11. package/dist/cjs/components/action-button/ActionButton.styled.js.map +1 -1
  12. package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  13. package/dist/cjs/components/analytics-chips-and-dropdowns/CommonStyles.js.map +1 -1
  14. package/dist/cjs/components/bik-layout/SidebarStyles.js +1 -1
  15. package/dist/cjs/components/bik-layout/SidebarStyles.js.map +1 -1
  16. package/dist/cjs/components/button/Button.styled.js +3 -3
  17. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  18. package/dist/cjs/components/buttonGroup/ButtonGroupStyle.js +1 -1
  19. package/dist/cjs/components/buttonGroup/ButtonGroupStyle.js.map +1 -1
  20. package/dist/cjs/components/card-selector/CardSelector.styled.js +1 -1
  21. package/dist/cjs/components/card-selector/CardSelector.styled.js.map +1 -1
  22. package/dist/cjs/components/carousel-preview/CarouselPreview.style.js +2 -2
  23. package/dist/cjs/components/carousel-preview/CarouselPreview.style.js.map +1 -1
  24. package/dist/cjs/components/checkBox/CheckBox.styled.js +1 -1
  25. package/dist/cjs/components/checkBox/CheckBox.styled.js.map +1 -1
  26. package/dist/cjs/components/dropdown/MenuItem/MenuItem.js +1 -1
  27. package/dist/cjs/components/dropdown/MenuItem/MenuItem.js.map +1 -1
  28. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +1 -1
  29. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  30. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +27 -10
  31. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  32. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js +1 -1
  33. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  34. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +1 -1
  35. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  36. package/dist/cjs/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js +1 -1
  37. package/dist/cjs/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js.map +1 -1
  38. package/dist/cjs/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js +1 -1
  39. package/dist/cjs/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js.map +1 -1
  40. package/dist/cjs/components/dropdown/hooks/useDropdown.js +1 -1
  41. package/dist/cjs/components/dropdown/hooks/useDropdown.js.map +1 -1
  42. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js +2 -2
  43. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js.map +1 -1
  44. package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js +1 -1
  45. package/dist/cjs/components/floating-action-button/FloatingActionButton.styles.js.map +1 -1
  46. package/dist/cjs/components/icon-button/IconButton.styled.js +4 -4
  47. package/dist/cjs/components/icon-button/IconButton.styled.js.map +1 -1
  48. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js +1 -1
  49. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  50. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js +28 -19
  51. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  52. package/dist/cjs/components/plans/SubscriptionPlanSelector.js +1 -1
  53. package/dist/cjs/components/plans/SubscriptionPlanSelector.js.map +1 -1
  54. package/dist/cjs/components/product-picker-v2/style.js +2 -2
  55. package/dist/cjs/components/product-picker-v2/style.js.map +1 -1
  56. package/dist/cjs/components/switch/Switch.js +2 -2
  57. package/dist/cjs/components/switch/Switch.js.map +1 -1
  58. package/dist/cjs/components/template-preview/RCS/RCSPreview.styled.js +1 -1
  59. package/dist/cjs/components/template-preview/RCS/RCSPreview.styled.js.map +1 -1
  60. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js +1 -1
  61. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js.map +1 -1
  62. package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js +2 -2
  63. package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
  64. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js +4 -4
  65. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditor.js.map +1 -1
  66. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js +2 -2
  67. package/dist/esm/components/WhatsAppTextEditor/WhatsAppTextEditorHeader.js.map +1 -1
  68. package/dist/esm/components/accordion/Accordion.style.js +1 -1
  69. package/dist/esm/components/accordion/Accordion.style.js.map +1 -1
  70. package/dist/esm/components/action-button/ActionButton.styled.js +1 -1
  71. package/dist/esm/components/action-button/ActionButton.styled.js.map +1 -1
  72. package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js +1 -1
  73. package/dist/esm/components/analytics-chips-and-dropdowns/CommonStyles.js.map +1 -1
  74. package/dist/esm/components/bik-layout/SidebarStyles.js +1 -1
  75. package/dist/esm/components/bik-layout/SidebarStyles.js.map +1 -1
  76. package/dist/esm/components/button/Button.styled.js +3 -3
  77. package/dist/esm/components/button/Button.styled.js.map +1 -1
  78. package/dist/esm/components/buttonGroup/ButtonGroupStyle.js +1 -1
  79. package/dist/esm/components/buttonGroup/ButtonGroupStyle.js.map +1 -1
  80. package/dist/esm/components/card-selector/CardSelector.styled.js +1 -1
  81. package/dist/esm/components/card-selector/CardSelector.styled.js.map +1 -1
  82. package/dist/esm/components/carousel-preview/CarouselPreview.style.js +2 -2
  83. package/dist/esm/components/carousel-preview/CarouselPreview.style.js.map +1 -1
  84. package/dist/esm/components/checkBox/CheckBox.styled.js +1 -1
  85. package/dist/esm/components/checkBox/CheckBox.styled.js.map +1 -1
  86. package/dist/esm/components/dropdown/MenuItem/MenuItem.js +1 -1
  87. package/dist/esm/components/dropdown/MenuItem/MenuItem.js.map +1 -1
  88. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +300 -278
  89. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  90. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.d.ts +8 -0
  91. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +170 -126
  92. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  93. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.d.ts +4 -0
  94. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js +144 -112
  95. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  96. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.d.ts +1 -0
  97. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +32 -31
  98. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  99. package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.d.ts +2 -0
  100. package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js +54 -39
  101. package/dist/esm/components/dropdown/OpenedDropdown/components/multiSelect/MultiSelectDropdownBottomBar.js.map +1 -1
  102. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.d.ts +18 -16
  103. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js +73 -27
  104. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.js.map +1 -1
  105. package/dist/esm/components/dropdown/hooks/useDropdown.d.ts +4 -17
  106. package/dist/esm/components/dropdown/hooks/useDropdown.js +176 -163
  107. package/dist/esm/components/dropdown/hooks/useDropdown.js.map +1 -1
  108. package/dist/esm/components/dropdown/type.d.ts +22 -0
  109. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js +2 -2
  110. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js.map +1 -1
  111. package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js +1 -1
  112. package/dist/esm/components/floating-action-button/FloatingActionButton.styles.js.map +1 -1
  113. package/dist/esm/components/icon-button/IconButton.styled.js +4 -4
  114. package/dist/esm/components/icon-button/IconButton.styled.js.map +1 -1
  115. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js +46 -44
  116. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  117. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +3 -0
  118. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js +25 -15
  119. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  120. package/dist/esm/components/multi-level-dropdown/type.d.ts +5 -0
  121. package/dist/esm/components/plans/SubscriptionPlanSelector.js +1 -1
  122. package/dist/esm/components/plans/SubscriptionPlanSelector.js.map +1 -1
  123. package/dist/esm/components/product-picker-v2/style.js +2 -2
  124. package/dist/esm/components/product-picker-v2/style.js.map +1 -1
  125. package/dist/esm/components/switch/Switch.js +2 -2
  126. package/dist/esm/components/switch/Switch.js.map +1 -1
  127. package/dist/esm/components/template-preview/RCS/RCSPreview.styled.js +1 -1
  128. package/dist/esm/components/template-preview/RCS/RCSPreview.styled.js.map +1 -1
  129. package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js +1 -1
  130. package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js.map +1 -1
  131. package/package.json +1 -1
@@ -1,2 +1,2 @@
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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("lodash/debounce"),h=require("react"),v=require("../OpenedDropdown/utils/iterationOnOptions.js"),X=f=>f&&typeof f=="object"&&"default"in f?f:{default:f},Y=X(V),Z=(f="1.0",m,A,I,C,w,H,T=[],a,M)=>{const p=M==="nested",[i,d]=h.useState(m??[]),[g,b]=h.useState([]),[l,W]=h.useState(""),[k,L]=h.useState(void 0),E=h.useRef(i),P=h.useRef(w);h.useEffect(()=>{P.current=w},[w]),h.useEffect(()=>{if(E.current=i,g.length&&l&&w){let t=[...g];const s=i.map(e=>{if(e.options)return e.options.map(n=>({value:n.value,selected:n.selected}));const r=e;return{value:r.value,selected:r.selected}}).flat();t=t.map(e=>{const r=s.find(n=>e.value===n.value);return r?{...e,selected:r.selected}:e}),H&&(t=t.map(e=>({...e,disabled:!T.includes(e.value)}))),b(C&&!I?[...t.sort(e=>e.selected?-1:1)]:[...t])}},[i]),h.useEffect(()=>{if(m){const t=[...m];d(C&&!I?[...t.sort(s=>s.selected?-1:1)]:[...t])}},[m]);const q=t=>{const s=[];return t.forEach(e=>{if(e.options){const r=e.options.filter(n=>n.selected===!0);s.push({...e,options:[...r]})}else{const r=e;if(p&&r.children?.length){const n=r.children.filter(c=>c.selected);n.length&&s.push({...r,children:n})}else r.selected&&s.push({...e})}}),s},F=t=>v.getSelectionLeaves(t,p).filter(s=>s.selected).length,y=t=>!C||!a&&a!==0?!1:F(t)>=a,R=h.useCallback(async t=>{const s=P.current;if(!t||!s)return;const e=[];v.iterateOnOptionsRaw(E.current,r=>{r.selected&&!e.includes(r.value)&&e.push(r.value)});try{const r=await s(t);if(L(void 0),r){const n=r.map(c=>{if(c.options){const o=c;return{...o,options:o.options.map(u=>({...u,selected:e.includes(u.value)}))}}return{...c,selected:e.includes(c.value)}});b([...n])}else b([])}catch(r){b([]),L(r instanceof Error?r.message:"Something went wrong while fetching the list. Please try again")}},[]),D=h.useMemo(()=>Y.default(R,300),[R]);h.useEffect(()=>()=>D?.cancel(),[D]);function z(t){if(W(t),b([]),L(void 0),!t){D?.cancel();return}D(t)}function B(){l&&(L(void 0),R(l))}function _(t,s){if(!C)A?.(t);else{if(t.selected&&a&&y(i))return;if(g.length&&l&&w)if(t.selected){if(a&&y(i))return;let e=!1;const r=v.iterateOnOptions(i,{selected:t.selected},n=>n.value===t.value?(e=!0,!0):!1,p);if(e||r.push(t),s)return[...r];d([...r]),f==="2.0"&&O(r)}else{let e=!1,r=v.iterateOnOptions(i,{selected:t.selected},n=>n.value===t.value?(e=!0,!0):!1,p);if(e&&(r=r.filter(n=>n.value!==t.value)),s)return[...r];d([...r]),f==="2.0"&&O(r)}else{const e=v.iterateOnOptions(i,{selected:t.selected},r=>r.value===t.value,p);if(s)return[...e];d([...e]),f==="2.0"&&O(e)}}}function G(t){let s=[...i];g.forEach(e=>{s=s.map(r=>{const n=e;return typeof n.value<"u"&&n.value===r.value?{...r,selected:!1}:r})}),d([...s]),f==="2.0"&&O(s)}function J(t){let s=[...i];if(a&&a>0){const e=F(s),r=a-e;if(r<=0)return;let n=0;g.forEach(c=>{if(n>=r)return;let o=!1;s=s.map(u=>{const j=c;return u.selected||u.disabled?u:typeof j.value<"u"&&j.value===u.value?(o=!0,n++,{...u,selected:!0}):u}),!o&&n<r&&(c.disabled||(s.push({...c,selected:!0}),n++))}),d([...s]),f==="2.0"&&O(s)}}function N(t){if(g.length&&l&&w)t==="selectAll"?J():G();else if(t==="selectAll")if(a&&a>0){const s=F(i),e=a-s;if(e<=0)return;let r=0;const n=i.map(c=>{if(c.options){const o=c;return{...o,options:o.options.map(u=>u.disabled||u.selected||l&&!u.label?.toLowerCase().includes(l.toLowerCase())?u:r<e?(r++,{...u,selected:!0}):u)}}else{const o=c;return o.disabled||o.selected||l&&!o.label?.toLowerCase().includes(l.toLowerCase())?c:r<e?(r++,{...c,selected:!0}):c}});d([...n]),f==="2.0"&&O(n)}else{const s=v.iterateOnOptions(i,{selected:!0},e=>l?e.label?.toLowerCase().includes(l.toLowerCase())&&!e.disabled:!e.disabled,p);d([...s]),f==="2.0"&&O(s)}else if(t==="notSelected"){const s=v.iterateOnOptions(i,{selected:!1},e=>!e.disabled,p);d([...s]),f==="2.0"&&O(s)}}function Q(){const t=v.iterateOnOptions(i,{selected:!1},void 0,p);d([...t]),f==="2.0"&&O(t)}function U(t){if(!C){_({label:l,value:l,isFreeForm:!0,selected:!0});return}const s=i.map(e=>e.options?e:{...e,selected:e.label===l&&e.value===l?t:e.selected});t&&(s.some(e=>e.label===l&&e.value===l)||s.unshift({label:l,value:l,isFreeForm:!0,selected:!0})),d([...s]),f==="2.0"&&O(s)}function O(t){const s=q(t??E.current);A?.([...s])}return{latestDropdownOptionsRef:E,dropdownOptions:i,search:z,searchedString:l,searchedOptions:g,searchError:k,retrySearch:B,onApplyHandler:_,selectAllHandler:N,onMultiSelectClear:Q,onFreeFormSelect:U,onMultiSelectApply:O,getSelectedOptions:q,getCurrentSelectionCount:F,isMaxSelectionsReached:y,maxSelections:a}};exports.useDropdown=Z;
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\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
+ {"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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"}
@@ -17,10 +17,10 @@
17
17
  background: transparent;
18
18
 
19
19
  ${e=>e.disabled?"":`
20
- &:hover {
20
+ :hover {
21
21
  background-color: ${t.COLORS.background.inverse};
22
22
  }
23
- &:active {
23
+ :active {
24
24
  box-shadow: inset 0px 4px 12px rgba(0, 0, 0, 0.35);
25
25
  }
26
26
  `}
@@ -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&: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
+ {"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"}
@@ -28,7 +28,7 @@
28
28
  padding: 14px;
29
29
  border-bottom: 1px solid ${o.COLORS.stroke.primary};
30
30
 
31
- &:last-child {
31
+ :last-child {
32
32
  border-bottom: none !important;
33
33
  }
34
34
  }
@@ -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&: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"}
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?"":`&:hover { background-color: ${e.COLORS.background.inverse}; }`}
12
- &:active { box-shadow: inset 0px 4px 12px rgba(0, 0, 0, 0.35); }
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
- &:hover {
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
- &:hover { background-color: ${e.COLORS.background.inactive}; }
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? `&: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
+ {"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,8BAA8BC,EAAAA,OAAO,WAAW,OAAO,KAE3D;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,kCACjBA,EAAAA,OAAO,WAAW,QAAQ;AAAA,MAEtD;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"),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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("react"),E=require("../zeroState/ZeroState.js"),m=require("../../constants/Theme.js"),_=require("../dropdown/OpenedDropdown/components/searchbox/SearchBox.js"),F=require("./MenuList.js"),a=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:b,onDropdownItemClick:q,refElement:C,topOffset:R,leftOffset:w,isDropdownOpen:d,onDropdownOutsideClick:c,allowParentSelection:M,maxLevels:O,hideGroupLabel:v,version:s="1.0",footer:j})=>{const f=z.default.useRef(null),[h,S]=u.useState(t),y=x=>{const o=Array.isArray(t)?[...t]:[],L=[];for(;o.length>0;){const e=o.shift();e&&e.label.toLowerCase().includes(x.toLowerCase())&&L.push(e),e&&"children"in e&&e.children?o.push(...e.children):e&&"options"in e&&e.options&&o.push(...e.options)}const p=e=>e.map(r=>{if(L.includes(r))return r;if("children"in r&&r.children){const i=p(r.children);if(i.length>0)return{...r,children:i}}if("options"in r&&r.options){const i=p(r.options);if(i.length>0)return{...r,options:i}}return null}).filter(r=>r!==null);S(p(t))},g=x=>{f.current&&!f.current.contains(x.target)?c&&c(!0):c&&c(!1)};return u.useEffect(()=>{d&&y("")},[d]),u.useEffect(()=>(document.addEventListener("mousedown",g),()=>{document.removeEventListener("mousedown",g)}),[]),u.useEffect(()=>{S(t)},[t]),n.jsx(N.Floater,{refElement:C,topOffset:R,leftOffset:w,children:d&&n.jsx("div",{ref:f,style:{backgroundColor:m.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(a.DropdownContainer,{width:l,version:s,children:[b&&n.jsx("div",{style:{padding:s==="3.0"?"0px":"4px",width:l??"200px"},children:n.jsx(_.SearchBox,{onSearch:y,version:s==="3.0"?"3.0":"2.0"})}),n.jsx(a.OptionsContainer,{width:l,version:s,children:(h??[]).length>0&&n.jsx(F.MenuList,{width:l??"200px",onDropdownItemClick:q,options:h,parents:[],allowParentSelection:M,maxLevels:O,hideGroupLabel:v,currentLevel:1,version:s})}),(h??[]).length===0&&n.jsx(a.NoResultsContainer,{style:{width:l??"200px"},version:s,children:s==="3.0"?n.jsx("span",{style:{fontSize:"12px",color:m.COLORS.content.placeholder,lineHeight:"16px"},children:"No results found!"}):n.jsx(E.ZeroState,{title:"No results found!",subTitle:"Sorry, we are unable to find any results for your search."})}),j&&n.jsx(a.FooterContainer,{children:j})]})})})};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\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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"}
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\tFooterContainer,\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\tfooter,\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\n\t\t\t\t\t\t{footer && <FooterContainer>{footer}</FooterContainer>}\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","footer","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","FooterContainer"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("styled-components"),n=require("../../constants/Theme.js"),s=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},e=s(p),u=e.default.div`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("styled-components"),e=require("../../constants/Theme.js"),s=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},n=s(p),u=n.default.div`
2
2
  position: relative;
3
3
  border-radius: ${({version:t})=>t==="3.0"?4:8}px;
4
4
  box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);
5
5
  padding-bottom: ${({version:t})=>t==="3.0"?0:4}px;
6
- `,l=e.default.div`
6
+ `,c=n.default.div`
7
7
  width: ${({width:t})=>t||"200px"};
8
8
  max-width: 300px;
9
9
  max-height: 280px;
@@ -12,27 +12,36 @@
12
12
  &::-webkit-scrollbar {
13
13
  width: 0px;
14
14
  }
15
- `,c=e.default.div`
15
+ `,l=n.default.div`
16
+ /* Own stacking context, otherwise the option rows' text paints over the
17
+ upward shadow and it disappears. */
18
+ position: relative;
19
+ z-index: 1;
20
+ padding: 8px;
21
+ background-color: ${e.COLORS.surface.standard};
22
+ border-top: 1px solid ${e.COLORS.stroke.primary};
23
+ box-shadow: 0 -2px 8px 0 rgba(0, 0, 0, 0.12);
24
+ `,x=n.default.div`
16
25
  margin-top: ${({version:t})=>t==="3.0"?0:64}px;
17
26
  height: ${({version:t})=>t==="3.0"?236:200}px;
18
27
  width: ${({width:t})=>t||"200px"};
19
28
  display: ${({version:t})=>t==="3.0"?"flex":"block"};
20
29
  align-items: center;
21
30
  justify-content: center;
22
- `,x=e.default.div`
31
+ `,g=n.default.div`
23
32
  width: 100%;
24
33
  justify-content: center;
25
34
  cursor: pointer;
26
35
  align-items: center;
27
36
  justify-content: space-between;
28
37
  margin: ${({version:t})=>t==="3.0"?"0":"4px 0"};
29
- `,f=e.default.div`
38
+ `,f=n.default.div`
30
39
  z-index: 1000;
31
40
  position: relative;
32
41
  margin: 0px;
33
42
  padding: 0px;
34
43
  width: 100%;
35
- `,g=e.default.div`
44
+ `,b=n.default.div`
36
45
  position: relative;
37
46
  padding: ${({version:t})=>t==="3.0"?"0px":"1px 4px"};
38
47
  cursor: pointer;
@@ -41,33 +50,33 @@
41
50
  &:focus-within > .submenu {
42
51
  display: block;
43
52
  }
44
- `,b=e.default.div`
53
+ `,h=n.default.div`
45
54
  position: relative;
46
55
  padding: ${({version:t})=>t==="3.0"?"8px":"4px 8px"};
47
56
  transition: background-color 0.2s;
48
57
  width: 100%;
49
58
  border-radius: ${({version:t})=>t==="3.0"?0:8}px;
50
59
  justify-content: center;
51
- background-color: ${({isSelected:t,isHovered:i,isSubMenuOpen:o,isDisabled:a,version:d})=>a?n.COLORS.surface.standard:t||o?d==="3.0"?n.COLORS.background.brandLight:n.COLORS.background.positive.light:i?n.COLORS.surface.hovered:n.COLORS.surface.standard};
52
- color: ${({isSelected:t,isSubMenuOpen:i,version:o})=>t||i?o==="3.0"?n.COLORS.text.primary:n.COLORS.content.positive:n.COLORS.content.primary};
60
+ background-color: ${({isSelected:t,isHovered:i,isSubMenuOpen:o,isDisabled:a,version:d})=>a?e.COLORS.surface.standard:t||o?d==="3.0"?e.COLORS.background.brandLight:e.COLORS.background.positive.light:i?e.COLORS.surface.hovered:e.COLORS.surface.standard};
61
+ color: ${({isSelected:t,isSubMenuOpen:i,version:o})=>t||i?o==="3.0"?e.COLORS.text.primary:e.COLORS.content.positive:e.COLORS.content.primary};
53
62
  display: flex;
54
63
  align-items: center;
55
64
  justify-content: space-between;
56
65
 
57
66
  &:hover {
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};
67
+ background-color: ${({isSelected:t,isDisabled:i,version:o})=>i?e.COLORS.surface.standard:t?o==="3.0"?e.COLORS.background.brandLight:e.COLORS.background.positive.light:e.COLORS.surface.hovered};
59
68
  }
60
- `,C=e.default.div`
69
+ `,C=n.default.div`
61
70
  display: flex;
62
71
  align-items: center;
63
72
  gap: 8px;
64
- `,r=e.default.div`
73
+ `,r=n.default.div`
65
74
  z-index: 1001;
66
75
  position: fixed;
67
76
  border-left: 4px solid transparent;
68
- `,h=e.default.div`
77
+ `,O=n.default.div`
69
78
  margin: 4px;
70
- background-color: ${n.COLORS.surface.standard};
79
+ background-color: ${e.COLORS.surface.standard};
71
80
  box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.12);
72
81
  border-radius: ${({version:t})=>t==="3.0"?4:8}px;
73
82
  padding-top: ${({version:t})=>t==="3.0"?0:4}px;
@@ -78,25 +87,25 @@
78
87
  &::-webkit-scrollbar {
79
88
  display: none;
80
89
  }
81
- `,O=e.default.div`
90
+ `,v=n.default.div`
82
91
  width: 16px;
83
92
  height: 16px;
84
93
  display: flex;
85
94
  align-items: center;
86
95
  justify-content: center;
87
96
  margin-right: 4px;
88
- `,m=e.default.div`
97
+ `,m=n.default.div`
89
98
  width: 16px;
90
99
  height: 16px;
91
100
  display: flex;
92
101
  align-items: center;
93
102
  justify-content: center;
94
103
  margin-left: 4px;
95
- `,v=e.default.div`
104
+ `,w=n.default.div`
96
105
  width: ${t=>t.width};
97
- `,y=e.default(r)`
106
+ `,S=n.default(r)`
98
107
  width: ${t=>t.width};
99
108
  top: ${t=>t.top}px;
100
109
  left: ${t=>t.left}px;
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;
110
+ `;exports.ContentContainer=C;exports.DropdownContainer=u;exports.FooterContainer=l;exports.GroupedMenuListContainer=g;exports.LeadingIconContainer=v;exports.MenuItemContainer=h;exports.MenuItemWrapper=b;exports.NoResultsContainer=x;exports.OptionsContainer=c;exports.StyledMenuList=f;exports.StyledSubMenuWrapper=S;exports.SubMenuContainer=w;exports.SubMenuListContainer=O;exports.SubMenuWrapper=r;exports.TrailingIconContainer=m;
102
111
  //# 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\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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"}
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\n// Sits outside OptionsContainer so it stays put while the options scroll. The\n// upward shadow lifts it off the list the way the design's z1 elevation does.\nexport const FooterContainer = styled.div`\n\t/* Own stacking context, otherwise the option rows' text paints over the\n\t upward shadow and it disappears. */\n\tposition: relative;\n\tz-index: 1;\n\tpadding: 8px;\n\tbackground-color: ${COLORS.surface.standard};\n\tborder-top: 1px solid ${COLORS.stroke.primary};\n\tbox-shadow: 0 -2px 8px 0 rgba(0, 0, 0, 0.12);\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","FooterContainer","COLORS","NoResultsContainer","GroupedMenuListContainer","StyledMenuList","MenuItemWrapper","MenuItemContainer","isSelected","isHovered","isSubMenuOpen","isDisabled","ContentContainer","SubMenuWrapper","SubMenuListContainer","LeadingIconContainer","TrailingIconContainer","SubMenuContainer","props","StyledSubMenuWrapper"],"mappings":"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"}
@@ -57,7 +57,7 @@
57
57
  .input--class {
58
58
  border: none;
59
59
  :active,
60
- &:focus {
60
+ :focus {
61
61
  border: none;
62
62
  outline: none;
63
63
  }