uangcermat-web-toolkit-v2 0.2.27 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/components/CheckPicker/BaseInfiniteCheckPicker.js +1 -1
- package/build/src/components/CheckPicker/BaseInfiniteCheckPicker.js.map +1 -1
- package/build/src/components/CheckPicker/InfiniteCheckPicker.js +1 -1
- package/build/src/components/CheckPicker/InfiniteCheckPicker.js.map +1 -1
- package/build/src/components/SelectPicker/BaseInfiniteSelectPicker.js +1 -1
- package/build/src/components/SelectPicker/BaseInfiniteSelectPicker.js.map +1 -1
- package/build/src/components/SelectPicker/InfiniteSelectPicker.js +1 -1
- package/build/src/components/SelectPicker/InfiniteSelectPicker.js.map +1 -1
- package/build/src/components/Table/Table.type.d.ts +1 -0
- package/build/src/components/Table/TableBase.d.ts +2 -1
- package/build/src/components/Table/TableBase.js +1 -1
- package/build/src/components/Table/TableBase.js.map +1 -1
- package/build/src/components/Table/TableResponsive.js +5 -5
- package/build/src/components/Table/TableResponsive.js.map +1 -1
- package/build/src/hooks/useInfinitePicker.js +1 -1
- package/build/src/hooks/useInfinitePicker.js.map +1 -1
- package/package.json +1 -1
- package/build/node_modules/react-query/es/core/focusManager.js +0 -2
- package/build/node_modules/react-query/es/core/focusManager.js.map +0 -1
- package/build/node_modules/react-query/es/core/infiniteQueryBehavior.js +0 -2
- package/build/node_modules/react-query/es/core/infiniteQueryBehavior.js.map +0 -1
- package/build/node_modules/react-query/es/core/infiniteQueryObserver.js +0 -2
- package/build/node_modules/react-query/es/core/infiniteQueryObserver.js.map +0 -1
- package/build/node_modules/react-query/es/core/logger.js +0 -2
- package/build/node_modules/react-query/es/core/logger.js.map +0 -1
- package/build/node_modules/react-query/es/core/mutation.js +0 -2
- package/build/node_modules/react-query/es/core/mutation.js.map +0 -1
- package/build/node_modules/react-query/es/core/mutationCache.js +0 -2
- package/build/node_modules/react-query/es/core/mutationCache.js.map +0 -1
- package/build/node_modules/react-query/es/core/notifyManager.js +0 -2
- package/build/node_modules/react-query/es/core/notifyManager.js.map +0 -1
- package/build/node_modules/react-query/es/core/onlineManager.js +0 -2
- package/build/node_modules/react-query/es/core/onlineManager.js.map +0 -1
- package/build/node_modules/react-query/es/core/query.js +0 -2
- package/build/node_modules/react-query/es/core/query.js.map +0 -1
- package/build/node_modules/react-query/es/core/queryCache.js +0 -2
- package/build/node_modules/react-query/es/core/queryCache.js.map +0 -1
- package/build/node_modules/react-query/es/core/queryClient.js +0 -2
- package/build/node_modules/react-query/es/core/queryClient.js.map +0 -1
- package/build/node_modules/react-query/es/core/queryObserver.js +0 -2
- package/build/node_modules/react-query/es/core/queryObserver.js.map +0 -1
- package/build/node_modules/react-query/es/core/retryer.js +0 -2
- package/build/node_modules/react-query/es/core/retryer.js.map +0 -1
- package/build/node_modules/react-query/es/core/subscribable.js +0 -2
- package/build/node_modules/react-query/es/core/subscribable.js.map +0 -1
- package/build/node_modules/react-query/es/core/utils.js +0 -2
- package/build/node_modules/react-query/es/core/utils.js.map +0 -1
- package/build/node_modules/react-query/es/react/QueryClientProvider.js +0 -2
- package/build/node_modules/react-query/es/react/QueryClientProvider.js.map +0 -1
- package/build/node_modules/react-query/es/react/QueryErrorResetBoundary.js +0 -2
- package/build/node_modules/react-query/es/react/QueryErrorResetBoundary.js.map +0 -1
- package/build/node_modules/react-query/es/react/logger.js +0 -2
- package/build/node_modules/react-query/es/react/logger.js.map +0 -1
- package/build/node_modules/react-query/es/react/reactBatchedUpdates.js +0 -2
- package/build/node_modules/react-query/es/react/reactBatchedUpdates.js.map +0 -1
- package/build/node_modules/react-query/es/react/setBatchUpdatesFn.js +0 -2
- package/build/node_modules/react-query/es/react/setBatchUpdatesFn.js.map +0 -1
- package/build/node_modules/react-query/es/react/setLogger.js +0 -2
- package/build/node_modules/react-query/es/react/setLogger.js.map +0 -1
- package/build/node_modules/react-query/es/react/useBaseQuery.js +0 -2
- package/build/node_modules/react-query/es/react/useBaseQuery.js.map +0 -1
- package/build/node_modules/react-query/es/react/useInfiniteQuery.js +0 -2
- package/build/node_modules/react-query/es/react/useInfiniteQuery.js.map +0 -1
- package/build/node_modules/react-query/es/react/utils.js +0 -2
- package/build/node_modules/react-query/es/react/utils.js.map +0 -1
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/extends.js +0 -2
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/extends.js.map +0 -1
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +0 -2
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js.map +0 -1
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +0 -2
- package/build/node_modules/react-query/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../_virtual/_tslib.js"),r=require("react/jsx-runtime")
|
|
1
|
+
"use strict";var e=require("../../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),i=require("react-query"),t=require("./InfiniteCheckPicker.js");const n=new i.QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:!1}}});module.exports=function(s){var{queryClient:u=n}=s,c=e.__rest(s,["queryClient"]);return r.jsx(i.QueryClientProvider,Object.assign({client:u},{children:r.jsx(t,Object.assign({},c))}))};
|
|
2
2
|
//# sourceMappingURL=BaseInfiniteCheckPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseInfiniteCheckPicker.js","sources":["../../../../src/components/CheckPicker/BaseInfiniteCheckPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport { BaseInfiniteCheckPickerInterface } from './BaseInfiniteCheckPicker.type';\nimport BaseInfiniteCheckPicker from './InfiniteCheckPicker';\n\nconst defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface BaseInfiniteCheckPickerWithProviderProps<T = any>\n extends BaseInfiniteCheckPickerInterface<T> {\n queryClient?: QueryClient;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteCheckPickerWithProvider<T = any>({\n queryClient = defaultQueryClient,\n ...props\n}: BaseInfiniteCheckPickerWithProviderProps<T>) {\n return (\n <QueryClientProvider client={queryClient}>\n <BaseInfiniteCheckPicker {...props} />\n </QueryClientProvider>\n );\n}\n\nexport default BaseInfiniteCheckPickerWithProvider;\n"],"names":["defaultQueryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","_a","queryClient","props","__rest","_jsx","QueryClientProvider","Object","assign","client","children","BaseInfiniteCheckPicker"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseInfiniteCheckPicker.js","sources":["../../../../src/components/CheckPicker/BaseInfiniteCheckPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport { BaseInfiniteCheckPickerInterface } from './BaseInfiniteCheckPicker.type';\nimport BaseInfiniteCheckPicker from './InfiniteCheckPicker';\n\nconst defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface BaseInfiniteCheckPickerWithProviderProps<T = any>\n extends BaseInfiniteCheckPickerInterface<T> {\n queryClient?: QueryClient;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteCheckPickerWithProvider<T = any>({\n queryClient = defaultQueryClient,\n ...props\n}: BaseInfiniteCheckPickerWithProviderProps<T>) {\n return (\n <QueryClientProvider client={queryClient}>\n <BaseInfiniteCheckPicker {...props} />\n </QueryClientProvider>\n );\n}\n\nexport default BaseInfiniteCheckPickerWithProvider;\n"],"names":["defaultQueryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","_a","queryClient","props","__rest","_jsx","QueryClientProvider","Object","assign","client","children","BaseInfiniteCheckPicker"],"mappings":"wJAMA,MAAMA,EAAqB,IAAIC,EAAAA,YAAY,CACzCC,eAAgB,CACdC,QAAS,CACPC,sBAAsB,qBAY5B,SAAsDC,OAAAC,YACpDA,EAAcN,GAAkBK,EAC7BE,EAAKC,EAAAA,OAAAH,EAF4C,iBAIpD,OACEI,EAAAA,IAACC,EAAAA,oBAAmBC,OAAAC,OAAA,CAACC,OAAQP,GAC3B,CAAAQ,SAAAL,EAAAA,IAACM,EAA4BJ,OAAAC,OAAA,CAAA,EAAAL,MAGnC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("../../../node_modules/@headlessui-float/react/dist/headlessui-float.mjs.js"),l=require("../../../node_modules/classnames/index.js"),s=require("react");require("../../../node_modules/react-query/es/react/setBatchUpdatesFn.js"),require("../../../node_modules/react-query/es/react/setLogger.js");var r=require("../../../node_modules/react-query/es/react/QueryClientProvider.js"),a=require("../../hooks/useDebounce.js"),n=require("../../hooks/useInfinitePicker.js"),o=require("../../utils/extractClasses.js");require("../Badge/Badge.js");var i=require("../Text/BaseText.js");require("../Text/Text.js");var d=require("../Badge/BaseBadgeRequired.js");require("../Button/ButtonHyperlink.js");var c=require("../Button/BaseButton.js");require("../Button/BaseButtonIcon.js"),require("../Button/Button.js"),require("../Button/ButtonConfirmation.js"),require("../Button/ButtonLink.js"),require("../Button/ButtonRipple.js"),require("../../../_virtual/_tslib.js"),require("../../styles/Colors.js");var u=require("../Checkbox/Checkbox.js"),x=require("../Icon/Icon.js"),f=require("../../../node_modules/tailwind-merge/dist/lib/tw-merge.mjs.js"),b=require("../../../node_modules/@headlessui/react/dist/components/listbox/listbox.js"),m=require("../../../node_modules/@headlessui/react/dist/components/transition/transition.js");module.exports=function({fetchFn:g,queryKey:h,debounceMs:j=300,disabled:p=!1,pageSize:v=100,value:w,valueStyles:y,label:k,labelStyles:S,placeholder:N,placeholderStyles:q,containerStyles:C,activeContainerStyles:M,iconStyles:B,itemsContainerStyles:O,itemContainerStyles:R,oddBgColor:L,evenBgColor:F,isDisabled:T=!1,position:I="bottom-start",isAutoFlip:G,onSelectItem:_,onClean:E,isCleanable:D,isError:P,errorMessage:A,errorMessageStyles:z,helperMessage:$,helperMessageStyles:K,isSearchable:Q,searchContainerStyles:H,activeSearchStyles:U,searchPlaceholder:J,searchStyles:V,iconSearchStyles:W,isShowFooterButton:X,footerButtonContainerStyles:Y,footerButtonLabel:Z,onClickFooterButton:ee,noResultsLabel:te,noResultsLabelStyles:le,badgeContainerStyles:se,badgeLabelStyles:re,variant:ae="box",data:ne,isRequired:oe,labelRequired:ie,labelRequiredStyles:de,containerRequiredStyles:ce,onSearch:ue,selectedAllText:xe,isShowSelectedAllText:fe=!0,isShowUnmatchItem:be=!0,selectedAllTextStyles:me,activeCheckboxColor:ge,itemTextStyles:he,listContainerStyles:je,isClearSearchOnClose:pe,selectedItemTextStyles:ve,activeItemTextStyles:we,maxSelected:ye}){const ke=r.useQueryClient(),Se=s.useRef(null),Ne=s.useRef(null),[qe,Ce]=s.useState(""),Me=a.useDebounce(qe,j),[Be,Oe]=s.useState(0),[Re,Le]=s.useState(!1),Fe=s.useRef(null),[Te,Ie]=s.useState(!1),{data:Ge,isLoading:_e,isFetchingNextPage:Ee,hasNextPage:De,fetchNextPage:Pe,totalCount:Ae}=n.useInfinitePicker({fetchFn:g,queryKey:h,search:Me,pageSize:v,enabled:!p});console.log("dataInfinite length",Ae);const ze=s.useMemo((()=>Ge||[]),[Ge]);s.useEffect((()=>{const e=null==w?void 0:w.filter((e=>e));(null==e?void 0:e.length)>=ye?Le(!0):Le(!1)}),[w,ye]);const $e=s.useCallback(((e,t)=>{if(Re&&!t)return;let l=w.slice();l=t?l.filter((t=>t!==e)):l.concat(e),null==_||_(l.filter((e=>""!==e))),l.length===ye?Le(!0):Le(!1)}),[Re,w,_,ye]),Ke=s.useCallback((()=>{null==_||_([]),Ce(""),Le(!1),null==E||E()}),[_,E]),Qe=(t,s)=>e.jsx(b.ListboxOption,Object.assign({className:f.twMerge(l.default("relative cursor-default select-none list-none",o(R,"p-"),o(R,"px-"),o(R,"py-"))),value:t},{children:({active:r})=>{const a=w.some((e=>e===t.value));return e.jsx("div",Object.assign({className:f.twMerge(l.default("w-full flex items-center !min-h-[32px] p-2",R,(!!o(R,"p-")||!!o(R,"px-")||!!o(R,"py-"))&&"p-2")),style:{backgroundColor:s%2==0?L||"var(--dropdownList-background-odd)":F||"var(--dropdownList-background-even)"}},{children:e.jsxs("div",Object.assign({className:f.twMerge("flex flex-row items-center gap-x-2 cursor-pointer w-full",Re&&!a?"cursor-not-allowed":""),onClick:e=>{e.preventDefault(),$e(t.value,a)}},{children:[e.jsx(u,{checked:a,variant:"small",color:ge||void 0,isDisabled:Re&&!a}),e.jsx("div",Object.assign({className:"flex flex-1"},{children:e.jsx(i.default,{label:t.label,className:f.twMerge(l.default("text-xs text-dropdownList-text-default leading-[14px]",`${r&&!Re?f.twMerge("font-semibold text-dropdownList-text-hover",we):"font-normal"}`),a&&ve,he)})}))]}))}))}}),`${t.value}-${s}`);s.useEffect((()=>{ue&&ue(qe)}),[qe]),s.useEffect((()=>{const e=new ResizeObserver((e=>{for(const t of e)Oe(t.contentRect.width)}));return Se.current&&e.observe(Se.current),()=>{Se.current&&e.unobserve(Se.current)}}),[]),s.useEffect((()=>{const e=Fe.current,t=Ne.current;if(!e||!t||!De||Ee)return;const l=new IntersectionObserver((e=>{var t;(null===(t=e[0])||void 0===t?void 0:t.isIntersecting)&&De&&!Ee&&Pe()}),{root:t,rootMargin:"50px",threshold:.1});return l.observe(e),()=>{l.disconnect()}}),[De,Ee,Pe,ze.length]);const He=!o(C,"w-")||"w-full"===o(C,"w-")||!o(O,"w-")||"w-full"===o(O,"w-"),Ue=()=>w&&w.length>0&&!(1===w.length&&""===w[0]);return e.jsx(b.Listbox,Object.assign({multiple:!0},{children:e.jsxs("div",Object.assign({ref:Se,className:"flex flex-col gap-y-1"},{children:[e.jsxs("div",Object.assign({className:"flex flex-row items-end gap-x-1"},{children:[!!k&&e.jsx(i.default,{label:k,className:f.twMerge("font-normal text-dark-gumbo text-[10px]",S)}),oe&&e.jsx(d,{labelRequired:ie,labelRequiredStyles:de,containerRequiredStyles:ce})]})),e.jsx("div",Object.assign({className:"relative inline-block"},{children:e.jsxs(t.Float,Object.assign({placement:I,flip:G},{children:[e.jsx(b.ListboxButton,Object.assign({className:f.twMerge(l.default("p-0 bg-transparent",T&&"cursor-not-allowed"),ce?o(C,"w-"):void 0),onClick:e=>{T&&e.preventDefault()}},{children:({open:t})=>e.jsxs("div",Object.assign({className:f.twMerge(l.default(f.twMerge("flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid",C),"line"===ae&&"border-b border-t-0 border-x-0 rounded-none",t&&M?M:t?"border-fields-border-focus":void 0,T&&"border-dark-bermudaGray bg-light-whiteSmoke",P&&"border-red-fireEngineRed"))},{children:[e.jsxs("div",Object.assign({className:"flex flex-1"},{children:[!!N&&!Ue()&&e.jsx("div",Object.assign({className:"flex flex-1 w-full"},{children:e.jsx(i.default,{label:N,variant:"small",className:f.twMerge(l.default("font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]"),q)})})),Ue()?e.jsx("div",Object.assign({className:"flex flex-1 w-[calc(100%-52px)]"},{children:w.length===Ae&&fe?e.jsx(i.default,{label:xe||"All",variant:"small",className:f.twMerge(l.default("font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]"),me)}):e.jsx(i.default,{label:be?w.map((e=>{var t;return(null===(t=ze.find((t=>t.value===e)))||void 0===t?void 0:t.label)||e})).join(", "):ze.filter((e=>w.includes(e.value))).map((e=>e.label||e)).join(", "),variant:"small",className:f.twMerge(l.default("font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]"),y)})})):null]})),Ue()&&e.jsx("div",Object.assign({className:f.twMerge("flex flex-row justify-center w-3 h-3 bg-fields-badge-background-default text-fields-badge-text-default rounded-full pt-[1px] pl-[0.5px]",se)},{children:e.jsx(i.default,{label:w.length.toString(),className:f.twMerge(l.default("font-normal text-[8px] leading-3"),re)})})),D&&Ue()&&e.jsx("div",Object.assign({className:"cursor-pointer h-3 w-3 flex items-center justify-center -mr-1",onClick:e=>{e.preventDefault(),Ke()}},{children:e.jsx(x,{name:"close",className:"fill-dark-bermudaGray w-3 h-3"})})),e.jsx(x,{name:t?"chevronup":"chevrondown",className:f.twMerge(l.default("fill-dark-bermudaGray w-3 h-3",`${T&&"fill-dark-bermudaGray"}`),B)})]}))})),e.jsx(m.Transition,Object.assign({as:s.Fragment,leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0"},{children:e.jsx(b.ListboxOptions,Object.assign({className:f.twMerge(l.default("rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50",C?o(C,"w-"):void 0),O),style:{width:He?Be:void 0,height:"auto"}},{children:({open:t})=>(s.useEffect((()=>{!t&&pe&&Ce("")}),[t]),s.useEffect((()=>{if(t&&!Te){const e=[...h,Me];ke.resetQueries(e),Ie(!0),Ne.current&&(Ne.current.scrollTop=0)}else!t&&Te&&Ie(!1)}),[t]),e.jsxs(e.Fragment,{children:[Q?e.jsx("div",Object.assign({className:"p-2 bg-light-whiteSolid w-full"},{children:e.jsxs("div",Object.assign({className:f.twMerge(l.default(f.twMerge("flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1",H),U||"border-fields-border-focus"))},{children:[e.jsx("input",{placeholder:J||"Search",className:f.twMerge("flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs",V),onChange:e=>{Ce(e.target.value)},onKeyDown:e=>e.stopPropagation(),value:qe}),e.jsx(x,{name:"search",className:f.twMerge("fill-dark-bermudaGray w-3 h-3",W)})]}))})):null,e.jsx("div",Object.assign({className:f.twMerge(l.default("p-0 overflow-hidden",o(O,"w-")?o(O,"w-"):o(C,"w-"))),style:{width:He?Be:void 0}},{children:ze.length>0?e.jsxs("div",Object.assign({ref:Ne,className:f.twMerge("max-h-80 overflow-y-auto scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude",je),style:{maxHeight:320}},{children:[ze.map(((e,t)=>Qe(e,t))),De&&e.jsx("div",Object.assign({ref:Fe,className:"w-full h-8 flex items-center justify-center"},{children:Ee?e.jsx(i.default,{label:"Loading",className:"text-dark-bermudaGray font-normal text-xs text-center"}):e.jsx("div",{className:"w-full h-1"})}))]})):_e?e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(i.default,{label:"Loading",className:f.twMerge("text-dark-bermudaGray font-normal text-sm text-center",le)})})):e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(i.default,{label:te||"No Results Found",className:f.twMerge("text-dark-bermudaGray font-normal text-sm",le)})}))})),X&&e.jsx(c.default,{variant:"tertiary",onClick:()=>{null==ee||ee()},label:Z||"Footer Button",className:f.twMerge("",Y)})]}))}))}))]}))})),$&&!P&&e.jsx(i.default,{label:$,className:f.twMerge("font-normal text-dark-bermudaGray text-[10px] inline-block",K)}),P&&!!A&&e.jsx(i.default,{label:A,className:f.twMerge("font-normal text-red-fireEngineRed text-[10px] inline-block",z)})]}))}))};
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("../../../node_modules/@headlessui-float/react/dist/headlessui-float.mjs.js"),l=require("../../../node_modules/classnames/index.js"),s=require("react"),r=require("react-query"),a=require("../../hooks/useDebounce.js"),n=require("../../hooks/useInfinitePicker.js"),i=require("../../utils/extractClasses.js");require("../Badge/Badge.js");var o=require("../Text/BaseText.js");require("../Text/Text.js");var d=require("../Badge/BaseBadgeRequired.js");require("../Button/ButtonHyperlink.js");var c=require("../Button/BaseButton.js");require("../Button/BaseButtonIcon.js"),require("../Button/Button.js"),require("../Button/ButtonConfirmation.js"),require("../Button/ButtonLink.js"),require("../Button/ButtonRipple.js"),require("../../../_virtual/_tslib.js"),require("../../styles/Colors.js");var u=require("../Checkbox/Checkbox.js"),x=require("../Icon/Icon.js"),f=require("../../../node_modules/tailwind-merge/dist/lib/tw-merge.mjs.js"),b=require("../../../node_modules/@headlessui/react/dist/components/listbox/listbox.js"),m=require("../../../node_modules/@headlessui/react/dist/components/transition/transition.js");module.exports=function({fetchFn:g,queryKey:h,debounceMs:j=300,disabled:p=!1,pageSize:w=100,value:v,valueStyles:y,label:k,labelStyles:S,placeholder:N,placeholderStyles:q,containerStyles:C,activeContainerStyles:M,iconStyles:B,itemsContainerStyles:O,itemContainerStyles:R,oddBgColor:L,evenBgColor:T,isDisabled:F=!1,position:I="bottom-start",isAutoFlip:G,onSelectItem:E,onClean:D,isCleanable:P,isError:_,errorMessage:A,errorMessageStyles:z,helperMessage:$,helperMessageStyles:K,isSearchable:H,searchContainerStyles:Q,activeSearchStyles:U,searchPlaceholder:J,searchStyles:V,iconSearchStyles:W,isShowFooterButton:X,footerButtonContainerStyles:Y,footerButtonLabel:Z,onClickFooterButton:ee,noResultsLabel:te,noResultsLabelStyles:le,badgeContainerStyles:se,badgeLabelStyles:re,variant:ae="box",data:ne,isRequired:ie,labelRequired:oe,labelRequiredStyles:de,containerRequiredStyles:ce,onSearch:ue,selectedAllText:xe,isShowSelectedAllText:fe=!0,isShowUnmatchItem:be=!0,selectedAllTextStyles:me,activeCheckboxColor:ge,itemTextStyles:he,listContainerStyles:je,isClearSearchOnClose:pe,selectedItemTextStyles:we,activeItemTextStyles:ve,maxSelected:ye}){const ke=r.useQueryClient(),Se=s.useRef(null),Ne=s.useRef(null),[qe,Ce]=s.useState(""),Me=a.useDebounce(qe,j),[Be,Oe]=s.useState(0),[Re,Le]=s.useState(!1),Te=s.useRef(null),[Fe,Ie]=s.useState(!1),{data:Ge,isLoading:Ee,isFetchingNextPage:De,hasNextPage:Pe,fetchNextPage:_e,totalCount:Ae}=n.useInfinitePicker({fetchFn:g,queryKey:h,search:Me,pageSize:w,enabled:!p});console.log("dataInfinite length",Ae);const ze=s.useMemo((()=>Ge||[]),[Ge]);s.useEffect((()=>{const e=null==v?void 0:v.filter((e=>e));(null==e?void 0:e.length)>=ye?Le(!0):Le(!1)}),[v,ye]);const $e=s.useCallback(((e,t)=>{if(Re&&!t)return;let l=v.slice();l=t?l.filter((t=>t!==e)):l.concat(e),null==E||E(l.filter((e=>""!==e))),l.length===ye?Le(!0):Le(!1)}),[Re,v,E,ye]),Ke=s.useCallback((()=>{null==E||E([]),Ce(""),Le(!1),null==D||D()}),[E,D]),He=(t,s)=>e.jsx(b.ListboxOption,Object.assign({className:f.twMerge(l.default("relative cursor-default select-none list-none",i(R,"p-"),i(R,"px-"),i(R,"py-"))),value:t},{children:({active:r})=>{const a=v.some((e=>e===t.value));return e.jsx("div",Object.assign({className:f.twMerge(l.default("w-full flex items-center !min-h-[32px] p-2",R,(!!i(R,"p-")||!!i(R,"px-")||!!i(R,"py-"))&&"p-2")),style:{backgroundColor:s%2==0?L||"var(--dropdownList-background-odd)":T||"var(--dropdownList-background-even)"}},{children:e.jsxs("div",Object.assign({className:f.twMerge("flex flex-row items-center gap-x-2 cursor-pointer w-full",Re&&!a?"cursor-not-allowed":""),onClick:e=>{e.preventDefault(),$e(t.value,a)}},{children:[e.jsx(u,{checked:a,variant:"small",color:ge||void 0,isDisabled:Re&&!a}),e.jsx("div",Object.assign({className:"flex flex-1"},{children:e.jsx(o.default,{label:t.label,className:f.twMerge(l.default("text-xs text-dropdownList-text-default leading-[14px]",`${r&&!Re?f.twMerge("font-semibold text-dropdownList-text-hover",ve):"font-normal"}`),a&&we,he)})}))]}))}))}}),`${t.value}-${s}`);s.useEffect((()=>{ue&&ue(qe)}),[qe]),s.useEffect((()=>{const e=new ResizeObserver((e=>{for(const t of e)Oe(t.contentRect.width)}));return Se.current&&e.observe(Se.current),()=>{Se.current&&e.unobserve(Se.current)}}),[]),s.useEffect((()=>{const e=Te.current,t=Ne.current;if(!e||!t||!Pe||De)return;const l=new IntersectionObserver((e=>{var t;(null===(t=e[0])||void 0===t?void 0:t.isIntersecting)&&Pe&&!De&&_e()}),{root:t,rootMargin:"50px",threshold:.1});return l.observe(e),()=>{l.disconnect()}}),[Pe,De,_e,ze.length]);const Qe=!i(C,"w-")||"w-full"===i(C,"w-")||!i(O,"w-")||"w-full"===i(O,"w-"),Ue=()=>v&&v.length>0&&!(1===v.length&&""===v[0]);return e.jsx(b.Listbox,Object.assign({multiple:!0},{children:e.jsxs("div",Object.assign({ref:Se,className:"flex flex-col gap-y-1"},{children:[e.jsxs("div",Object.assign({className:"flex flex-row items-end gap-x-1"},{children:[!!k&&e.jsx(o.default,{label:k,className:f.twMerge("font-normal text-dark-gumbo text-[10px]",S)}),ie&&e.jsx(d,{labelRequired:oe,labelRequiredStyles:de,containerRequiredStyles:ce})]})),e.jsx("div",Object.assign({className:"relative inline-block"},{children:e.jsxs(t.Float,Object.assign({placement:I,flip:G},{children:[e.jsx(b.ListboxButton,Object.assign({className:f.twMerge(l.default("p-0 bg-transparent",F&&"cursor-not-allowed"),ce?i(C,"w-"):void 0),onClick:e=>{F&&e.preventDefault()}},{children:({open:t})=>e.jsxs("div",Object.assign({className:f.twMerge(l.default(f.twMerge("flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid",C),"line"===ae&&"border-b border-t-0 border-x-0 rounded-none",t&&M?M:t?"border-fields-border-focus":void 0,F&&"border-dark-bermudaGray bg-light-whiteSmoke",_&&"border-red-fireEngineRed"))},{children:[e.jsxs("div",Object.assign({className:"flex flex-1"},{children:[!!N&&!Ue()&&e.jsx("div",Object.assign({className:"flex flex-1 w-full"},{children:e.jsx(o.default,{label:N,variant:"small",className:f.twMerge(l.default("font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]"),q)})})),Ue()?e.jsx("div",Object.assign({className:"flex flex-1 w-[calc(100%-52px)]"},{children:v.length===Ae&&fe?e.jsx(o.default,{label:xe||"All",variant:"small",className:f.twMerge(l.default("font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]"),me)}):e.jsx(o.default,{label:be?v.map((e=>{var t;return(null===(t=ze.find((t=>t.value===e)))||void 0===t?void 0:t.label)||e})).join(", "):ze.filter((e=>v.includes(e.value))).map((e=>e.label||e)).join(", "),variant:"small",className:f.twMerge(l.default("font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]"),y)})})):null]})),Ue()&&e.jsx("div",Object.assign({className:f.twMerge("flex flex-row justify-center w-3 h-3 bg-fields-badge-background-default text-fields-badge-text-default rounded-full pt-[1px] pl-[0.5px]",se)},{children:e.jsx(o.default,{label:v.length.toString(),className:f.twMerge(l.default("font-normal text-[8px] leading-3"),re)})})),P&&Ue()&&e.jsx("div",Object.assign({className:"cursor-pointer h-3 w-3 flex items-center justify-center -mr-1",onClick:e=>{e.preventDefault(),Ke()}},{children:e.jsx(x,{name:"close",className:"fill-dark-bermudaGray w-3 h-3"})})),e.jsx(x,{name:t?"chevronup":"chevrondown",className:f.twMerge(l.default("fill-dark-bermudaGray w-3 h-3",`${F&&"fill-dark-bermudaGray"}`),B)})]}))})),e.jsx(m.Transition,Object.assign({as:s.Fragment,leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0"},{children:e.jsx(b.ListboxOptions,Object.assign({className:f.twMerge(l.default("rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50",C?i(C,"w-"):void 0),O),style:{width:Qe?Be:void 0,height:"auto"}},{children:({open:t})=>(s.useEffect((()=>{!t&&pe&&Ce("")}),[t]),s.useEffect((()=>{if(t&&!Fe){const e=[...h,Me];ke.resetQueries(e),Ie(!0),Ne.current&&(Ne.current.scrollTop=0)}else!t&&Fe&&Ie(!1)}),[t]),e.jsxs(e.Fragment,{children:[H?e.jsx("div",Object.assign({className:"p-2 bg-light-whiteSolid w-full"},{children:e.jsxs("div",Object.assign({className:f.twMerge(l.default(f.twMerge("flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1",Q),U||"border-fields-border-focus"))},{children:[e.jsx("input",{placeholder:J||"Search",className:f.twMerge("flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs",V),onChange:e=>{Ce(e.target.value)},onKeyDown:e=>e.stopPropagation(),value:qe}),e.jsx(x,{name:"search",className:f.twMerge("fill-dark-bermudaGray w-3 h-3",W)})]}))})):null,e.jsx("div",Object.assign({className:f.twMerge(l.default("p-0 overflow-hidden",i(O,"w-")?i(O,"w-"):i(C,"w-"))),style:{width:Qe?Be:void 0}},{children:ze.length>0?e.jsxs("div",Object.assign({ref:Ne,className:f.twMerge("max-h-80 overflow-y-auto scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude",je),style:{maxHeight:320}},{children:[ze.map(((e,t)=>He(e,t))),Pe&&e.jsx("div",Object.assign({ref:Te,className:"w-full h-8 flex items-center justify-center"},{children:De?e.jsx(o.default,{label:"Loading",className:"text-dark-bermudaGray font-normal text-xs text-center"}):e.jsx("div",{className:"w-full h-1"})}))]})):Ee?e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(o.default,{label:"Loading",className:f.twMerge("text-dark-bermudaGray font-normal text-sm text-center",le)})})):e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(o.default,{label:te||"No Results Found",className:f.twMerge("text-dark-bermudaGray font-normal text-sm",le)})}))})),X&&e.jsx(c.default,{variant:"tertiary",onClick:()=>{null==ee||ee()},label:Z||"Footer Button",className:f.twMerge("",Y)})]}))}))}))]}))})),$&&!_&&e.jsx(o.default,{label:$,className:f.twMerge("font-normal text-dark-bermudaGray text-[10px] inline-block",K)}),_&&!!A&&e.jsx(o.default,{label:A,className:f.twMerge("font-normal text-red-fireEngineRed text-[10px] inline-block",z)})]}))}))};
|
|
2
2
|
//# sourceMappingURL=InfiniteCheckPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfiniteCheckPicker.js","sources":["../../../../src/components/CheckPicker/InfiniteCheckPicker.tsx"],"sourcesContent":["import {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n Transition\n} from '@headlessui/react';\nimport { Float } from '@headlessui-float/react';\nimport classNames from 'classnames';\nimport { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { twMerge } from 'tailwind-merge';\n\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useInfinitePicker } from '../../hooks/useInfinitePicker';\nimport extractClasses from '../../utils/extractClasses';\nimport { BaseBadgeRequired } from '../Badge';\nimport { BaseButton } from '../Button';\nimport { Checkbox } from '../Checkbox';\nimport { Icon } from '../Icon';\nimport { BaseText } from '../Text';\nimport {\n BaseInfiniteCheckPickerDataInterface,\n BaseInfiniteCheckPickerInterface\n} from './BaseInfiniteCheckPicker.type';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteCheckPicker<T = any>({\n fetchFn,\n queryKey,\n debounceMs = 300,\n disabled = false,\n pageSize = 100,\n value,\n valueStyles,\n label,\n labelStyles,\n placeholder,\n placeholderStyles,\n containerStyles,\n activeContainerStyles,\n iconStyles,\n itemsContainerStyles,\n itemContainerStyles,\n oddBgColor,\n evenBgColor,\n isDisabled = false,\n position = 'bottom-start',\n isAutoFlip,\n onSelectItem,\n onClean,\n isCleanable,\n isError,\n errorMessage,\n errorMessageStyles,\n helperMessage,\n helperMessageStyles,\n isSearchable,\n searchContainerStyles,\n activeSearchStyles,\n searchPlaceholder,\n searchStyles,\n iconSearchStyles,\n isShowFooterButton,\n footerButtonContainerStyles,\n footerButtonLabel,\n onClickFooterButton,\n noResultsLabel,\n noResultsLabelStyles,\n badgeContainerStyles,\n badgeLabelStyles,\n variant = 'box',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: _data, // Keep for backward compatibility but don't use (using dataInfinite instead)\n isRequired,\n labelRequired,\n labelRequiredStyles,\n containerRequiredStyles,\n onSearch,\n selectedAllText,\n isShowSelectedAllText = true,\n isShowUnmatchItem = true,\n selectedAllTextStyles,\n activeCheckboxColor,\n itemTextStyles,\n listContainerStyles,\n isClearSearchOnClose,\n selectedItemTextStyles,\n activeItemTextStyles,\n maxSelected\n}: BaseInfiniteCheckPickerInterface<T>) {\n const defaultScrollbarStyles =\n 'scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude';\n\n const queryClient = useQueryClient();\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const [search, setSearch] = useState<string>('');\n const debouncedQuery = useDebounce(search, debounceMs);\n const [buttonWidth, setButtonWidth] = useState<number>(0);\n const [isDisableSelected, setIsDisableSelected] = useState<boolean>(false);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n const {\n data: dataInfinite,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n totalCount\n } = useInfinitePicker({\n fetchFn,\n queryKey,\n search: debouncedQuery,\n pageSize,\n enabled: !disabled\n });\n\n // eslint-disable-next-line no-console\n console.log('dataInfinite length', totalCount);\n\n const dataPicker: Array<BaseInfiniteCheckPickerDataInterface> = useMemo(() => {\n // Use dataInfinite from the hook instead of static data prop\n // Type assertion is safe here as the API should return the correct format\n return (dataInfinite || []) as Array<BaseInfiniteCheckPickerDataInterface>;\n }, [dataInfinite]);\n\n const maxDropdownHeight = 320; // Maximum height for the dropdown list\n\n useEffect(() => {\n const filteredValue = value?.filter((item) => item);\n if (filteredValue?.length >= maxSelected) {\n setIsDisableSelected(true);\n } else {\n setIsDisableSelected(false);\n }\n }, [value, maxSelected]);\n\n const handleItemClick = useCallback(\n (itemValue: string, isSelected: boolean) => {\n if (isDisableSelected && !isSelected) return;\n\n let temp = value.slice();\n if (isSelected) {\n temp = temp.filter((i) => i !== itemValue);\n } else {\n temp = temp.concat(itemValue);\n }\n\n onSelectItem?.(temp.filter((i) => i !== ''));\n\n if (temp.length === maxSelected) {\n setIsDisableSelected(true);\n } else {\n setIsDisableSelected(false);\n }\n },\n [isDisableSelected, value, onSelectItem, maxSelected]\n );\n\n const handleClean = useCallback(() => {\n onSelectItem?.([]);\n setSearch('');\n setIsDisableSelected(false);\n onClean?.();\n }, [onSelectItem, onClean]);\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n const renderItem = (item: BaseInfiniteCheckPickerDataInterface, index: number) => {\n return (\n <ListboxOption\n key={`${item.value}-${index}`}\n className={twMerge(\n classNames(\n 'relative cursor-default select-none list-none',\n extractClasses(itemContainerStyles, 'p-'),\n extractClasses(itemContainerStyles, 'px-'),\n extractClasses(itemContainerStyles, 'py-')\n )\n )}\n value={item}\n >\n {({ active }) => {\n const selected = value.some((i) => i === item.value);\n return (\n <div\n className={twMerge(\n classNames(\n 'w-full flex items-center !min-h-[32px] p-2',\n itemContainerStyles,\n (!!extractClasses(itemContainerStyles, 'p-') ||\n !!extractClasses(itemContainerStyles, 'px-') ||\n !!extractClasses(itemContainerStyles, 'py-')) &&\n 'p-2'\n )\n )}\n style={{\n backgroundColor:\n index % 2 === 0\n ? oddBgColor || 'var(--dropdownList-background-odd)'\n : evenBgColor || 'var(--dropdownList-background-even)'\n }}\n >\n <div\n className={twMerge(\n 'flex flex-row items-center gap-x-2 cursor-pointer w-full',\n isDisableSelected && !selected ? 'cursor-not-allowed' : ''\n )}\n onClick={(e) => {\n e.preventDefault();\n handleItemClick(item.value, selected);\n }}\n >\n <Checkbox\n checked={selected}\n variant='small'\n color={activeCheckboxColor || undefined}\n isDisabled={isDisableSelected && !selected}\n />\n\n <div className='flex flex-1'>\n <BaseText\n label={item.label}\n className={twMerge(\n classNames(\n 'text-xs text-dropdownList-text-default leading-[14px]',\n `${\n active && !isDisableSelected\n ? twMerge(\n 'font-semibold text-dropdownList-text-hover',\n activeItemTextStyles\n )\n : 'font-normal'\n }`\n ),\n selected && selectedItemTextStyles,\n itemTextStyles\n )}\n />\n </div>\n </div>\n </div>\n );\n }}\n </ListboxOption>\n );\n };\n\n useEffect(() => {\n if (onSearch) onSearch(search);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setButtonWidth(entry.contentRect.width);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n const scrollContainer = listRef.current;\n\n if (!sentinel || !scrollContainer || !hasNextPage || isFetchingNextPage) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {\n root: scrollContainer,\n rootMargin: '50px',\n threshold: 0.1\n }\n );\n\n observer.observe(sentinel);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage, dataPicker.length]);\n\n const isWidthFull =\n !extractClasses(containerStyles, 'w-') ||\n extractClasses(containerStyles, 'w-') === 'w-full' ||\n !extractClasses(itemsContainerStyles, 'w-') ||\n extractClasses(itemsContainerStyles, 'w-') === 'w-full';\n\n // Helper function to check if value array has actual selections\n const hasSelectedValues = () => {\n return value && value.length > 0 && !(value.length === 1 && value[0] === '');\n };\n\n const renderSelectedValue = () => {\n if (!hasSelectedValues()) return null;\n\n return (\n <div className='flex flex-1 w-[calc(100%-52px)]'>\n {value.length === totalCount && isShowSelectedAllText ? (\n <BaseText\n label={selectedAllText || 'All'}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n selectedAllTextStyles\n )}\n />\n ) : (\n <BaseText\n label={\n isShowUnmatchItem\n ? value\n .map((i) => dataPicker.find((item) => item.value === i)?.label || i)\n .join(', ')\n : dataPicker\n .filter((i: BaseInfiniteCheckPickerDataInterface) => value.includes(i.value))\n .map((i) => i.label || i)\n .join(', ')\n }\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n valueStyles\n )}\n />\n )}\n </div>\n );\n };\n\n const renderSearchSection = () => {\n if (!isSearchable) return null;\n\n return (\n <div className='p-2 bg-light-whiteSolid w-full'>\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1',\n searchContainerStyles\n ),\n activeSearchStyles ? activeSearchStyles : 'border-fields-border-focus'\n )\n )}\n >\n <input\n placeholder={searchPlaceholder || 'Search'}\n className={twMerge(\n 'flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs',\n searchStyles\n )}\n onChange={(e) => {\n setSearch(e.target.value);\n }}\n onKeyDown={(e) => e.stopPropagation()}\n value={search}\n />\n <Icon\n name='search'\n className={twMerge('fill-dark-bermudaGray w-3 h-3', iconSearchStyles)}\n />\n </div>\n </div>\n );\n };\n\n return (\n <Listbox multiple>\n <div ref={containerRef} className='flex flex-col gap-y-1'>\n <div className='flex flex-row items-end gap-x-1'>\n {!!label && (\n <BaseText\n label={label}\n className={twMerge('font-normal text-dark-gumbo text-[10px]', labelStyles)}\n />\n )}\n {isRequired && (\n <BaseBadgeRequired\n labelRequired={labelRequired}\n labelRequiredStyles={labelRequiredStyles}\n containerRequiredStyles={containerRequiredStyles}\n />\n )}\n </div>\n <div className='relative inline-block'>\n <Float placement={position} flip={isAutoFlip}>\n <ListboxButton\n className={twMerge(\n classNames('p-0 bg-transparent', isDisabled && 'cursor-not-allowed'),\n containerRequiredStyles ? extractClasses(containerStyles, 'w-') : undefined\n )}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {({ open }) => (\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid',\n containerStyles\n ),\n variant === 'line' && 'border-b border-t-0 border-x-0 rounded-none',\n open && activeContainerStyles\n ? activeContainerStyles\n : open\n ? 'border-fields-border-focus'\n : undefined,\n isDisabled && 'border-dark-bermudaGray bg-light-whiteSmoke',\n isError && 'border-red-fireEngineRed'\n )\n )}\n >\n <div className='flex flex-1'>\n {!!placeholder && !hasSelectedValues() && (\n <div className='flex flex-1 w-full'>\n <BaseText\n label={placeholder}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]'\n ),\n placeholderStyles\n )}\n />\n </div>\n )}\n\n {renderSelectedValue()}\n </div>\n\n {hasSelectedValues() && (\n <div\n className={twMerge(\n 'flex flex-row justify-center w-3 h-3 bg-fields-badge-background-default text-fields-badge-text-default rounded-full pt-[1px] pl-[0.5px]',\n badgeContainerStyles\n )}\n >\n <BaseText\n label={value.length.toString()}\n className={twMerge(\n classNames('font-normal text-[8px] leading-3'),\n badgeLabelStyles\n )}\n />\n </div>\n )}\n\n {isCleanable && hasSelectedValues() && (\n <div\n className='cursor-pointer h-3 w-3 flex items-center justify-center -mr-1'\n onClick={(e) => {\n e.preventDefault();\n handleClean();\n }}\n >\n <Icon name='close' className='fill-dark-bermudaGray w-3 h-3' />\n </div>\n )}\n <Icon\n name={open ? 'chevronup' : 'chevrondown'}\n className={twMerge(\n classNames(\n 'fill-dark-bermudaGray w-3 h-3',\n `${isDisabled && 'fill-dark-bermudaGray'}`\n ),\n iconStyles\n )}\n />\n </div>\n )}\n </ListboxButton>\n <Transition\n as={Fragment}\n leave='transition ease-in duration-100'\n leaveFrom='opacity-100'\n leaveTo='opacity-0'\n >\n <ListboxOptions\n className={twMerge(\n classNames(\n 'rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50',\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n ),\n itemsContainerStyles\n )}\n style={{\n width: isWidthFull ? buttonWidth : undefined,\n height: 'auto'\n }}\n >\n {/* eslint-disable-next-line sonarjs/cognitive-complexity */}\n {({ open }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!open && isClearSearchOnClose) setSearch('');\n }, [open]);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (open && !isDropdownOpen) {\n // Dropdown just opened - reset infinite scroll data to start fresh\n const queryKeyWithSearch = [...queryKey, debouncedQuery];\n queryClient.resetQueries(queryKeyWithSearch);\n setIsDropdownOpen(true);\n // Reset scroll position to top\n if (listRef.current) {\n listRef.current.scrollTop = 0;\n }\n } else if (!open && isDropdownOpen) {\n // Dropdown just closed\n setIsDropdownOpen(false);\n }\n }, [open]);\n\n return (\n <>\n {renderSearchSection()}\n <div\n className={twMerge(\n classNames(\n 'p-0 overflow-hidden',\n extractClasses(itemsContainerStyles, 'w-')\n ? extractClasses(itemsContainerStyles, 'w-')\n : extractClasses(containerStyles, 'w-')\n )\n )}\n style={{ width: isWidthFull ? buttonWidth : undefined }}\n >\n {dataPicker.length > 0 ? (\n <div\n ref={listRef}\n className={twMerge(\n `max-h-80 overflow-y-auto ${defaultScrollbarStyles}`,\n listContainerStyles\n )}\n style={{\n maxHeight: maxDropdownHeight\n }}\n >\n {dataPicker.map((item, index) => renderItem(item, index))}\n {/* Infinite loading sentinel */}\n {hasNextPage && (\n <div\n ref={sentinelRef}\n className='w-full h-8 flex items-center justify-center'\n >\n {isFetchingNextPage ? (\n <BaseText\n label='Loading'\n className='text-dark-bermudaGray font-normal text-xs text-center'\n />\n ) : (\n <div className='w-full h-1' />\n )}\n </div>\n )}\n </div>\n ) : isLoading ? (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label='Loading'\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm text-center',\n noResultsLabelStyles\n )}\n />\n </div>\n ) : (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label={noResultsLabel || 'No Results Found'}\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm',\n noResultsLabelStyles\n )}\n />\n </div>\n )}\n </div>\n {isShowFooterButton && (\n <BaseButton\n variant='tertiary'\n onClick={() => {\n onClickFooterButton?.();\n }}\n label={footerButtonLabel || 'Footer Button'}\n className={twMerge('', footerButtonContainerStyles)}\n />\n )}\n </>\n );\n }}\n </ListboxOptions>\n </Transition>\n </Float>\n </div>\n\n {helperMessage && !isError && (\n <BaseText\n label={helperMessage}\n className={twMerge(\n 'font-normal text-dark-bermudaGray text-[10px] inline-block',\n helperMessageStyles\n )}\n />\n )}\n\n {isError && !!errorMessage && (\n <BaseText\n label={errorMessage}\n className={twMerge(\n 'font-normal text-red-fireEngineRed text-[10px] inline-block',\n errorMessageStyles\n )}\n />\n )}\n </div>\n </Listbox>\n );\n}\n\nexport default BaseInfiniteCheckPicker;\n"],"names":["fetchFn","queryKey","debounceMs","disabled","pageSize","value","valueStyles","label","labelStyles","placeholder","placeholderStyles","containerStyles","activeContainerStyles","iconStyles","itemsContainerStyles","itemContainerStyles","oddBgColor","evenBgColor","isDisabled","position","isAutoFlip","onSelectItem","onClean","isCleanable","isError","errorMessage","errorMessageStyles","helperMessage","helperMessageStyles","isSearchable","searchContainerStyles","activeSearchStyles","searchPlaceholder","searchStyles","iconSearchStyles","isShowFooterButton","footerButtonContainerStyles","footerButtonLabel","onClickFooterButton","noResultsLabel","noResultsLabelStyles","badgeContainerStyles","badgeLabelStyles","variant","data","_data","isRequired","labelRequired","labelRequiredStyles","containerRequiredStyles","onSearch","selectedAllText","isShowSelectedAllText","isShowUnmatchItem","selectedAllTextStyles","activeCheckboxColor","itemTextStyles","listContainerStyles","isClearSearchOnClose","selectedItemTextStyles","activeItemTextStyles","maxSelected","queryClient","useQueryClient","containerRef","useRef","listRef","search","setSearch","useState","debouncedQuery","useDebounce","buttonWidth","setButtonWidth","isDisableSelected","setIsDisableSelected","sentinelRef","isDropdownOpen","setIsDropdownOpen","dataInfinite","isLoading","isFetchingNextPage","hasNextPage","fetchNextPage","totalCount","useInfinitePicker","enabled","console","log","dataPicker","useMemo","useEffect","filteredValue","filter","item","length","handleItemClick","useCallback","itemValue","isSelected","temp","slice","i","concat","handleClean","renderItem","index","_jsx","ListboxOption","Object","assign","className","twMerge","classNames","extractClasses","children","active","selected","some","style","backgroundColor","_jsxs","jsxs","onClick","e","preventDefault","Checkbox","checked","color","undefined","BaseText","resizeObserver","ResizeObserver","entries","entry","contentRect","width","current","observe","unobserve","sentinel","scrollContainer","observer","IntersectionObserver","_a","isIntersecting","root","rootMargin","threshold","disconnect","isWidthFull","hasSelectedValues","jsx","Listbox","multiple","ref","BaseBadgeRequired","Float","placement","flip","ListboxButton","open","map","find","join","includes","toString","Icon","name","Transition","as","Fragment","leave","leaveFrom","leaveTo","ListboxOptions","height","queryKeyWithSearch","resetQueries","scrollTop","_Fragment","onChange","target","onKeyDown","stopPropagation","maxHeight","BaseButton"],"mappings":"y2CA2BA,UAA0CA,QACxCA,EAAOC,SACPA,EAAQC,WACRA,EAAa,IAAGC,SAChBA,GAAW,EAAKC,SAChBA,EAAW,IAAGC,MACdA,EAAKC,YACLA,EAAWC,MACXA,EAAKC,YACLA,EAAWC,YACXA,EAAWC,kBACXA,EAAiBC,gBACjBA,EAAeC,sBACfA,EAAqBC,WACrBA,EAAUC,qBACVA,EAAoBC,oBACpBA,EAAmBC,WACnBA,EAAUC,YACVA,EAAWC,WACXA,GAAa,EAAKC,SAClBA,EAAW,eAAcC,WACzBA,EAAUC,aACVA,EAAYC,QACZA,EAAOC,YACPA,EAAWC,QACXA,EAAOC,aACPA,EAAYC,mBACZA,EAAkBC,cAClBA,EAAaC,oBACbA,EAAmBC,aACnBA,EAAYC,sBACZA,EAAqBC,mBACrBA,EAAkBC,kBAClBA,EAAiBC,aACjBA,EAAYC,iBACZA,EAAgBC,mBAChBA,EAAkBC,4BAClBA,EAA2BC,kBAC3BA,EAAiBC,oBACjBA,GAAmBC,eACnBA,GAAcC,qBACdA,GAAoBC,qBACpBA,GAAoBC,iBACpBA,GAAgBC,QAChBA,GAAU,MAEVC,KAAMC,GAAKC,WACXA,GAAUC,cACVA,GAAaC,oBACbA,GAAmBC,wBACnBA,GAAuBC,SACvBA,GAAQC,gBACRA,GAAeC,sBACfA,IAAwB,EAAIC,kBAC5BA,IAAoB,EAAIC,sBACxBA,GAAqBC,oBACrBA,GAAmBC,eACnBA,GAAcC,oBACdA,GAAmBC,qBACnBA,GAAoBC,uBACpBA,GAAsBC,qBACtBA,GAAoBC,YACpBA,KAEA,MAGMC,GAAcC,EAAAA,iBACdC,GAAeC,SAAuB,MACtCC,GAAUD,SAAuB,OAEhCE,GAAQC,IAAaC,EAAQA,SAAS,IACvCC,GAAiBC,EAAAA,YAAYJ,GAAQjE,IACpCsE,GAAaC,IAAkBJ,EAAQA,SAAS,IAChDK,GAAmBC,IAAwBN,EAAQA,UAAU,GAE9DO,GAAcX,SAAuB,OACpCY,GAAgBC,IAAqBT,EAAQA,UAAU,IAE5DzB,KAAMmC,GAAYC,UAClBA,GAASC,mBACTA,GAAkBC,YAClBA,GAAWC,cACXA,GAAaC,WACbA,IACEC,oBAAkB,CACpBrF,UACAC,WACAkE,OAAQG,GACRlE,WACAkF,SAAUnF,IAIZoF,QAAQC,IAAI,sBAAuBJ,IAEnC,MAAMK,GAA0DC,EAAAA,SAAQ,IAG9DX,IAAgB,IACvB,CAACA,KAIJY,EAAAA,WAAU,KACR,MAAMC,EAAgBvF,eAAAA,EAAOwF,QAAQC,GAASA,KAC1CF,aAAa,EAAbA,EAAeG,SAAUlC,GAC3Bc,IAAqB,GAErBA,IAAqB,EACtB,GACA,CAACtE,EAAOwD,KAEX,MAAMmC,GAAkBC,EAAAA,aACtB,CAACC,EAAmBC,KAClB,GAAIzB,KAAsByB,EAAY,OAEtC,IAAIC,EAAO/F,EAAMgG,QAEfD,EADED,EACKC,EAAKP,QAAQS,GAAMA,IAAMJ,IAEzBE,EAAKG,OAAOL,GAGrB7E,SAAAA,EAAe+E,EAAKP,QAAQS,GAAY,KAANA,KAE9BF,EAAKL,SAAWlC,GAClBc,IAAqB,GAErBA,IAAqB,EACtB,GAEH,CAACD,GAAmBrE,EAAOgB,EAAcwC,KAGrC2C,GAAcP,EAAAA,aAAY,KAC9B5E,SAAAA,EAAe,IACf+C,GAAU,IACVO,IAAqB,GACrBrD,SAAAA,GAAW,GACV,CAACD,EAAcC,IAGZmF,GAAa,CAACX,EAA4CY,IAE5DC,MAACC,EAAaA,cAAAC,OAAAC,OAAA,CAEZC,UAAWC,UACTC,EAAAA,QACE,gDACAC,EAAenG,EAAqB,MACpCmG,EAAenG,EAAqB,OACpCmG,EAAenG,EAAqB,SAGxCV,MAAOyF,GAEN,CAAAqB,SAAA,EAAGC,aACF,MAAMC,EAAWhH,EAAMiH,MAAMhB,GAAMA,IAAMR,EAAKzF,QAC9C,OACEsG,EAAAA,yBACEI,UAAWC,EAAOA,QAChBC,EAAU,QACR,6CACAlG,KACGmG,EAAenG,EAAqB,SACnCmG,EAAenG,EAAqB,UACpCmG,EAAenG,EAAqB,SACtC,QAGNwG,MAAO,CACLC,gBACEd,EAAQ,GAAM,EACV1F,GAAc,qCACdC,GAAe,wCAGvB,CAAAkG,SAAAM,EAAAC,KAAA,MAAAb,OAAAC,OAAA,CACEC,UAAWC,EAAAA,QACT,2DACAtC,KAAsB2C,EAAW,qBAAuB,IAE1DM,QAAUC,IACRA,EAAEC,iBACF7B,GAAgBF,EAAKzF,MAAOgH,EAAS,GACtC,CAAAF,SAAA,CAEDR,EAAAA,IAACmB,EACC,CAAAC,QAASV,EACT1E,QAAQ,QACRqF,MAAOzE,SAAuB0E,EAC9B/G,WAAYwD,KAAsB2C,IAGpCV,2BAAKI,UAAU,eAAa,CAAAI,SAC1BR,EAAAA,IAACuB,EAAAA,SACC3H,MAAOuF,EAAKvF,MACZwG,UAAWC,UACTC,EAAAA,QACE,wDACA,GACEG,IAAW1C,GACPsC,EAAOA,QACL,6CACApD,IAEF,iBAGRyD,GAAY1D,GACZH,eAMV,IAvEC,GAAGsC,EAAKzF,SAASqG,KA6E5Bf,EAAAA,WAAU,KACJzC,IAAUA,GAASiB,GAAO,GAE7B,CAACA,KAEJwB,EAAAA,WAAU,KACR,MAAMwC,EAAiB,IAAIC,gBAAgBC,IACzC,IAAK,MAAMC,KAASD,EAClB5D,GAAe6D,EAAMC,YAAYC,MAClC,IAOH,OAJIxE,GAAayE,SACfN,EAAeO,QAAQ1E,GAAayE,SAG/B,KACDzE,GAAayE,SAEfN,EAAeQ,UAAU3E,GAAayE,QACvC,CACF,GACA,IAEH9C,EAAAA,WAAU,KACR,MAAMiD,EAAWhE,GAAY6D,QACvBI,EAAkB3E,GAAQuE,QAEhC,IAAKG,IAAaC,IAAoB3D,IAAeD,GACnD,OAGF,MAAM6D,EAAW,IAAIC,sBAClBV,WACiB,QAAZW,EAAAX,EAAQ,UAAI,IAAAW,OAAA,EAAAA,EAAAC,iBAAkB/D,KAAgBD,IAChDE,IACD,GAEH,CACE+D,KAAML,EACNM,WAAY,OACZC,UAAW,KAMf,OAFAN,EAASJ,QAAQE,GAEV,KACLE,EAASO,YAAY,CACtB,GACA,CAACnE,GAAaD,GAAoBE,GAAeM,GAAWM,SAE/D,MAAMuD,IACHpC,EAAevG,EAAiB,OACS,WAA1CuG,EAAevG,EAAiB,QAC/BuG,EAAepG,EAAsB,OACS,WAA/CoG,EAAepG,EAAsB,MAGjCyI,GAAoB,IACjBlJ,GAASA,EAAM0F,OAAS,KAAwB,IAAjB1F,EAAM0F,QAA6B,KAAb1F,EAAM,IAiFpE,OACEsG,EAAC6C,IAAAC,UAAQ5C,OAAAC,OAAA,CAAA4C,UACP,GAAA,CAAAvC,SAAAM,OAAA,MAAAZ,OAAAC,OAAA,CAAK6C,IAAK3F,GAAc+C,UAAU,yBAChC,CAAAI,SAAA,CAAAM,EAAAC,KAAA,MAAAb,OAAAC,OAAA,CAAKC,UAAU,mCAAiC,CAAAI,SAAA,GAC3C5G,GACDoG,EAAAA,IAACuB,EAAQ,QAAA,CACP3H,MAAOA,EACPwG,UAAWC,EAAOA,QAAC,0CAA2CxG,KAGjEsC,IACC6D,EAAC6C,IAAAI,EACC,CAAA7G,cAAeA,GACfC,oBAAqBA,GACrBC,wBAAyBA,SAI/B0D,EAAAA,IAAA,MAAAE,OAAAC,OAAA,CAAKC,UAAU,yBAAuB,CAAAI,SACpCM,EAACC,KAAAmC,QAAMhD,OAAAC,OAAA,CAAAgD,UAAW3I,EAAU4I,KAAM3I,GAAU,CAAA+F,SAAA,CAC1CR,EAAAA,IAACqD,EAAaA,cACZnD,OAAAC,OAAA,CAAAC,UAAWC,EAAOA,QAChBC,UAAW,qBAAsB/F,GAAc,sBAC/C+B,GAA0BiE,EAAevG,EAAiB,WAAQsH,GAEpEN,QAAUC,IACJ1G,GACF0G,EAAEC,gBACH,GAGF,CAAAV,SAAA,EAAG8C,UACFxC,EAAAA,KAAA,MAAAZ,OAAAC,OAAA,CACEC,UAAWC,EAAAA,QACTC,EAAU,QACRD,UACE,2GACArG,GAEU,SAAZgC,IAAsB,8CACtBsH,GAAQrJ,EACJA,EACAqJ,EACA,kCACAhC,EACJ/G,GAAc,8CACdM,GAAW,8BAEd,CAAA2F,SAAA,CAEDM,4BAAKV,UAAU,eAAa,CAAAI,SAAA,GACvB1G,IAAgB8I,MACjB5C,EAAA6C,IAAA,MAAA3C,OAAAC,OAAA,CAAKC,UAAU,sBACb,CAAAI,SAAAR,EAAA6C,IAACtB,UAAQ,CACP3H,MAAOE,EACPkC,QAAQ,QACRoE,UAAWC,EAAAA,QACTC,EAAU,QACR,mFAEFvG,QAzInB6I,KAGH5C,EAAAA,IAAK,MAAAE,OAAAC,OAAA,CAAAC,UAAU,6CACZ1G,EAAM0F,SAAWX,IAAchC,GAC9BuD,EAAC6C,IAAAtB,WACC3H,MAAO4C,IAAmB,MAC1BR,QAAQ,QACRoE,UAAWC,EAAOA,QAChBC,EAAU,QACR,yFAEF3D,MAIJqD,MAACuB,EAAQ,QAAA,CACP3H,MACE8C,GACIhD,EACG6J,KAAK5D,IAAK,IAAA0C,EAAC,OAA2C,QAA3CA,EAAAvD,GAAW0E,MAAMrE,GAASA,EAAKzF,QAAUiG,WAAE,IAAA0C,OAAA,EAAAA,EAAEzI,QAAS+F,CAAC,IAClE8D,KAAK,MACR3E,GACGI,QAAQS,GAA4CjG,EAAMgK,SAAS/D,EAAEjG,SACrE6J,KAAK5D,GAAMA,EAAE/F,OAAS+F,IACtB8D,KAAK,MAEdzH,QAAQ,QACRoE,UAAWC,EAAOA,QAChBC,UACE,yFAEF3G,QAhCuB,SAkJlBiJ,MACC5C,MACE,MAAAE,OAAAC,OAAA,CAAAC,UAAWC,UACT,0IACAvE,KACD,CAAA0E,SAEDR,EAAAA,IAACuB,EAAQ,QACP,CAAA3H,MAAOF,EAAM0F,OAAOuE,WACpBvD,UAAWC,EAAOA,QAChBC,UAAW,oCACXvE,SAMPnB,GAAegI,MACd5C,EAAAA,IACE,MAAAE,OAAAC,OAAA,CAAAC,UAAU,gEACVY,QAAUC,IACRA,EAAEC,iBACFrB,IAAa,GACd,CAAAW,SAEDR,EAAAA,IAAC4D,EAAI,CAACC,KAAK,QAAQzD,UAAU,qCAGjCJ,EAAC6C,IAAAe,GACCC,KAAMP,EAAO,YAAc,cAC3BlD,UAAWC,EAAOA,QAChBC,EAAU,QACR,gCACA,GAAG/F,GAAc,2BAEnBL,YAMV8F,EAAAA,IAAC8D,EAAAA,0BACCC,GAAIC,EAAQA,SACZC,MAAM,kCACNC,UAAU,cACVC,QAAQ,uBAERnE,EAAAA,IAACoE,EAAAA,eACClE,OAAAC,OAAA,CAAAC,UAAWC,EAAOA,QAChBC,EAAU,QACR,4GACAtG,EAAkBuG,EAAevG,EAAiB,WAAQsH,GAE5DnH,GAEFyG,MAAO,CACLiB,MAAOc,GAAc9E,QAAcyD,EACnC+C,OAAQ,SACT,CAAA7D,SAGA,EAAG8C,WAEFtE,EAAAA,WAAU,MACHsE,GAAQvG,IAAsBU,GAAU,GAAG,GAC/C,CAAC6F,IAGJtE,EAAAA,WAAU,KACR,GAAIsE,IAASpF,GAAgB,CAE3B,MAAMoG,EAAqB,IAAIhL,EAAUqE,IACzCR,GAAYoH,aAAaD,GACzBnG,IAAkB,GAEdZ,GAAQuE,UACVvE,GAAQuE,QAAQ0C,UAAY,EAE/B,MAAWlB,GAAQpF,IAElBC,IAAkB,EACnB,GACA,CAACmF,IAGFxC,EAAAA,KACG2D,EAAAA,SAAA,CAAAjE,SAAA,CA/LdtF,EAGH8E,EAAK6C,IAAA,MAAA3C,OAAAC,OAAA,CAAAC,UAAU,4CACbU,EACEC,KAAA,MAAAb,OAAAC,OAAA,CAAAC,UAAWC,EAAAA,QACTC,EAAU,QACRD,EAAOA,QACL,uFACAlF,GAEFC,GAA0C,gCAI9C,CAAAoF,SAAA,CAAAR,EAAA6C,IAAA,QAAA,CACE/I,YAAauB,GAAqB,SAClC+E,UAAWC,EAAOA,QAChB,mJACA/E,GAEFoJ,SAAWzD,IACTxD,GAAUwD,EAAE0D,OAAOjL,MAAM,EAE3BkL,UAAY3D,GAAMA,EAAE4D,kBACpBnL,MAAO8D,KAETwC,EAAAA,IAAC4D,GACCC,KAAK,SACLzD,UAAWC,EAAOA,QAAC,gCAAiC9E,YA7BlC,KAgMRyE,EAAA6C,IAAA,MAAA3C,OAAAC,OAAA,CACEC,UAAWC,UACTC,EAAAA,QACE,sBACAC,EAAepG,EAAsB,MACjCoG,EAAepG,EAAsB,MACrCoG,EAAevG,EAAiB,QAGxC4G,MAAO,CAAEiB,MAAOc,GAAc9E,QAAcyD,IAAW,CAAAd,SAEtD1B,GAAWM,OAAS,EACnB0B,EAAAC,KAAA,MAAAb,OAAAC,OAAA,CACE6C,IAAKzF,GACL6C,UAAWC,EAAAA,QACT,4JACAvD,IAEF8D,MAAO,CACLkE,UArbF,MAsbC,CAAAtE,SAAA,CAEA1B,GAAWyE,KAAI,CAACpE,EAAMY,IAAUD,GAAWX,EAAMY,KAEjDxB,IACCyB,EACE6C,IAAA,MAAA3C,OAAAC,OAAA,CAAA6C,IAAK/E,GACLmC,UAAU,yDAET9B,GACC0B,EAAA6C,IAACtB,UAAQ,CACP3H,MAAM,UACNwG,UAAU,0DAGZJ,EAAK6C,IAAA,MAAA,CAAAzC,UAAU,sBAKrB/B,GACF2B,EAAAA,IAAK,MAAAE,OAAAC,OAAA,CAAAC,UAAU,oBACb,CAAAI,SAAAR,EAAAA,IAACuB,EAAQ,QAAA,CACP3H,MAAM,UACNwG,UAAWC,EAAOA,QAChB,wDACAxE,SAKNmE,EAAA6C,IAAA,MAAA3C,OAAAC,OAAA,CAAKC,UAAU,oBACb,CAAAI,SAAAR,EAAA6C,IAACtB,UAAQ,CACP3H,MAAOgC,IAAkB,mBACzBwE,UAAWC,EAAAA,QACT,4CACAxE,YAMTL,GACCwE,EAAAA,IAAC+E,EAAU,QAAA,CACT/I,QAAQ,WACRgF,QAAS,KACPrF,UAAAA,IAAuB,EAEzB/B,MAAO8B,GAAqB,gBAC5B0E,UAAWC,EAAAA,QAAQ,GAAI5E,sBAWxCT,IAAkBH,GACjBmF,EAAC6C,IAAAtB,EAAQ,SACP3H,MAAOoB,EACPoF,UAAWC,EAAAA,QACT,6DACApF,KAKLJ,KAAaC,GACZkF,EAAAA,IAACuB,EAAQ,QAAA,CACP3H,MAAOkB,EACPsF,UAAWC,UACT,8DACAtF,WAOd"}
|
|
1
|
+
{"version":3,"file":"InfiniteCheckPicker.js","sources":["../../../../src/components/CheckPicker/InfiniteCheckPicker.tsx"],"sourcesContent":["import {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n Transition\n} from '@headlessui/react';\nimport { Float } from '@headlessui-float/react';\nimport classNames from 'classnames';\nimport { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { twMerge } from 'tailwind-merge';\n\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useInfinitePicker } from '../../hooks/useInfinitePicker';\nimport extractClasses from '../../utils/extractClasses';\nimport { BaseBadgeRequired } from '../Badge';\nimport { BaseButton } from '../Button';\nimport { Checkbox } from '../Checkbox';\nimport { Icon } from '../Icon';\nimport { BaseText } from '../Text';\nimport {\n BaseInfiniteCheckPickerDataInterface,\n BaseInfiniteCheckPickerInterface\n} from './BaseInfiniteCheckPicker.type';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteCheckPicker<T = any>({\n fetchFn,\n queryKey,\n debounceMs = 300,\n disabled = false,\n pageSize = 100,\n value,\n valueStyles,\n label,\n labelStyles,\n placeholder,\n placeholderStyles,\n containerStyles,\n activeContainerStyles,\n iconStyles,\n itemsContainerStyles,\n itemContainerStyles,\n oddBgColor,\n evenBgColor,\n isDisabled = false,\n position = 'bottom-start',\n isAutoFlip,\n onSelectItem,\n onClean,\n isCleanable,\n isError,\n errorMessage,\n errorMessageStyles,\n helperMessage,\n helperMessageStyles,\n isSearchable,\n searchContainerStyles,\n activeSearchStyles,\n searchPlaceholder,\n searchStyles,\n iconSearchStyles,\n isShowFooterButton,\n footerButtonContainerStyles,\n footerButtonLabel,\n onClickFooterButton,\n noResultsLabel,\n noResultsLabelStyles,\n badgeContainerStyles,\n badgeLabelStyles,\n variant = 'box',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: _data, // Keep for backward compatibility but don't use (using dataInfinite instead)\n isRequired,\n labelRequired,\n labelRequiredStyles,\n containerRequiredStyles,\n onSearch,\n selectedAllText,\n isShowSelectedAllText = true,\n isShowUnmatchItem = true,\n selectedAllTextStyles,\n activeCheckboxColor,\n itemTextStyles,\n listContainerStyles,\n isClearSearchOnClose,\n selectedItemTextStyles,\n activeItemTextStyles,\n maxSelected\n}: BaseInfiniteCheckPickerInterface<T>) {\n const defaultScrollbarStyles =\n 'scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude';\n\n const queryClient = useQueryClient();\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const [search, setSearch] = useState<string>('');\n const debouncedQuery = useDebounce(search, debounceMs);\n const [buttonWidth, setButtonWidth] = useState<number>(0);\n const [isDisableSelected, setIsDisableSelected] = useState<boolean>(false);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n const {\n data: dataInfinite,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n totalCount\n } = useInfinitePicker({\n fetchFn,\n queryKey,\n search: debouncedQuery,\n pageSize,\n enabled: !disabled\n });\n\n // eslint-disable-next-line no-console\n console.log('dataInfinite length', totalCount);\n\n const dataPicker: Array<BaseInfiniteCheckPickerDataInterface> = useMemo(() => {\n // Use dataInfinite from the hook instead of static data prop\n // Type assertion is safe here as the API should return the correct format\n return (dataInfinite || []) as Array<BaseInfiniteCheckPickerDataInterface>;\n }, [dataInfinite]);\n\n const maxDropdownHeight = 320; // Maximum height for the dropdown list\n\n useEffect(() => {\n const filteredValue = value?.filter((item) => item);\n if (filteredValue?.length >= maxSelected) {\n setIsDisableSelected(true);\n } else {\n setIsDisableSelected(false);\n }\n }, [value, maxSelected]);\n\n const handleItemClick = useCallback(\n (itemValue: string, isSelected: boolean) => {\n if (isDisableSelected && !isSelected) return;\n\n let temp = value.slice();\n if (isSelected) {\n temp = temp.filter((i) => i !== itemValue);\n } else {\n temp = temp.concat(itemValue);\n }\n\n onSelectItem?.(temp.filter((i) => i !== ''));\n\n if (temp.length === maxSelected) {\n setIsDisableSelected(true);\n } else {\n setIsDisableSelected(false);\n }\n },\n [isDisableSelected, value, onSelectItem, maxSelected]\n );\n\n const handleClean = useCallback(() => {\n onSelectItem?.([]);\n setSearch('');\n setIsDisableSelected(false);\n onClean?.();\n }, [onSelectItem, onClean]);\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n const renderItem = (item: BaseInfiniteCheckPickerDataInterface, index: number) => {\n return (\n <ListboxOption\n key={`${item.value}-${index}`}\n className={twMerge(\n classNames(\n 'relative cursor-default select-none list-none',\n extractClasses(itemContainerStyles, 'p-'),\n extractClasses(itemContainerStyles, 'px-'),\n extractClasses(itemContainerStyles, 'py-')\n )\n )}\n value={item}\n >\n {({ active }) => {\n const selected = value.some((i) => i === item.value);\n return (\n <div\n className={twMerge(\n classNames(\n 'w-full flex items-center !min-h-[32px] p-2',\n itemContainerStyles,\n (!!extractClasses(itemContainerStyles, 'p-') ||\n !!extractClasses(itemContainerStyles, 'px-') ||\n !!extractClasses(itemContainerStyles, 'py-')) &&\n 'p-2'\n )\n )}\n style={{\n backgroundColor:\n index % 2 === 0\n ? oddBgColor || 'var(--dropdownList-background-odd)'\n : evenBgColor || 'var(--dropdownList-background-even)'\n }}\n >\n <div\n className={twMerge(\n 'flex flex-row items-center gap-x-2 cursor-pointer w-full',\n isDisableSelected && !selected ? 'cursor-not-allowed' : ''\n )}\n onClick={(e) => {\n e.preventDefault();\n handleItemClick(item.value, selected);\n }}\n >\n <Checkbox\n checked={selected}\n variant='small'\n color={activeCheckboxColor || undefined}\n isDisabled={isDisableSelected && !selected}\n />\n\n <div className='flex flex-1'>\n <BaseText\n label={item.label}\n className={twMerge(\n classNames(\n 'text-xs text-dropdownList-text-default leading-[14px]',\n `${\n active && !isDisableSelected\n ? twMerge(\n 'font-semibold text-dropdownList-text-hover',\n activeItemTextStyles\n )\n : 'font-normal'\n }`\n ),\n selected && selectedItemTextStyles,\n itemTextStyles\n )}\n />\n </div>\n </div>\n </div>\n );\n }}\n </ListboxOption>\n );\n };\n\n useEffect(() => {\n if (onSearch) onSearch(search);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setButtonWidth(entry.contentRect.width);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n const scrollContainer = listRef.current;\n\n if (!sentinel || !scrollContainer || !hasNextPage || isFetchingNextPage) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {\n root: scrollContainer,\n rootMargin: '50px',\n threshold: 0.1\n }\n );\n\n observer.observe(sentinel);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage, dataPicker.length]);\n\n const isWidthFull =\n !extractClasses(containerStyles, 'w-') ||\n extractClasses(containerStyles, 'w-') === 'w-full' ||\n !extractClasses(itemsContainerStyles, 'w-') ||\n extractClasses(itemsContainerStyles, 'w-') === 'w-full';\n\n // Helper function to check if value array has actual selections\n const hasSelectedValues = () => {\n return value && value.length > 0 && !(value.length === 1 && value[0] === '');\n };\n\n const renderSelectedValue = () => {\n if (!hasSelectedValues()) return null;\n\n return (\n <div className='flex flex-1 w-[calc(100%-52px)]'>\n {value.length === totalCount && isShowSelectedAllText ? (\n <BaseText\n label={selectedAllText || 'All'}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n selectedAllTextStyles\n )}\n />\n ) : (\n <BaseText\n label={\n isShowUnmatchItem\n ? value\n .map((i) => dataPicker.find((item) => item.value === i)?.label || i)\n .join(', ')\n : dataPicker\n .filter((i: BaseInfiniteCheckPickerDataInterface) => value.includes(i.value))\n .map((i) => i.label || i)\n .join(', ')\n }\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n valueStyles\n )}\n />\n )}\n </div>\n );\n };\n\n const renderSearchSection = () => {\n if (!isSearchable) return null;\n\n return (\n <div className='p-2 bg-light-whiteSolid w-full'>\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1',\n searchContainerStyles\n ),\n activeSearchStyles ? activeSearchStyles : 'border-fields-border-focus'\n )\n )}\n >\n <input\n placeholder={searchPlaceholder || 'Search'}\n className={twMerge(\n 'flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs',\n searchStyles\n )}\n onChange={(e) => {\n setSearch(e.target.value);\n }}\n onKeyDown={(e) => e.stopPropagation()}\n value={search}\n />\n <Icon\n name='search'\n className={twMerge('fill-dark-bermudaGray w-3 h-3', iconSearchStyles)}\n />\n </div>\n </div>\n );\n };\n\n return (\n <Listbox multiple>\n <div ref={containerRef} className='flex flex-col gap-y-1'>\n <div className='flex flex-row items-end gap-x-1'>\n {!!label && (\n <BaseText\n label={label}\n className={twMerge('font-normal text-dark-gumbo text-[10px]', labelStyles)}\n />\n )}\n {isRequired && (\n <BaseBadgeRequired\n labelRequired={labelRequired}\n labelRequiredStyles={labelRequiredStyles}\n containerRequiredStyles={containerRequiredStyles}\n />\n )}\n </div>\n <div className='relative inline-block'>\n <Float placement={position} flip={isAutoFlip}>\n <ListboxButton\n className={twMerge(\n classNames('p-0 bg-transparent', isDisabled && 'cursor-not-allowed'),\n containerRequiredStyles ? extractClasses(containerStyles, 'w-') : undefined\n )}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {({ open }) => (\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid',\n containerStyles\n ),\n variant === 'line' && 'border-b border-t-0 border-x-0 rounded-none',\n open && activeContainerStyles\n ? activeContainerStyles\n : open\n ? 'border-fields-border-focus'\n : undefined,\n isDisabled && 'border-dark-bermudaGray bg-light-whiteSmoke',\n isError && 'border-red-fireEngineRed'\n )\n )}\n >\n <div className='flex flex-1'>\n {!!placeholder && !hasSelectedValues() && (\n <div className='flex flex-1 w-full'>\n <BaseText\n label={placeholder}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]'\n ),\n placeholderStyles\n )}\n />\n </div>\n )}\n\n {renderSelectedValue()}\n </div>\n\n {hasSelectedValues() && (\n <div\n className={twMerge(\n 'flex flex-row justify-center w-3 h-3 bg-fields-badge-background-default text-fields-badge-text-default rounded-full pt-[1px] pl-[0.5px]',\n badgeContainerStyles\n )}\n >\n <BaseText\n label={value.length.toString()}\n className={twMerge(\n classNames('font-normal text-[8px] leading-3'),\n badgeLabelStyles\n )}\n />\n </div>\n )}\n\n {isCleanable && hasSelectedValues() && (\n <div\n className='cursor-pointer h-3 w-3 flex items-center justify-center -mr-1'\n onClick={(e) => {\n e.preventDefault();\n handleClean();\n }}\n >\n <Icon name='close' className='fill-dark-bermudaGray w-3 h-3' />\n </div>\n )}\n <Icon\n name={open ? 'chevronup' : 'chevrondown'}\n className={twMerge(\n classNames(\n 'fill-dark-bermudaGray w-3 h-3',\n `${isDisabled && 'fill-dark-bermudaGray'}`\n ),\n iconStyles\n )}\n />\n </div>\n )}\n </ListboxButton>\n <Transition\n as={Fragment}\n leave='transition ease-in duration-100'\n leaveFrom='opacity-100'\n leaveTo='opacity-0'\n >\n <ListboxOptions\n className={twMerge(\n classNames(\n 'rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50',\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n ),\n itemsContainerStyles\n )}\n style={{\n width: isWidthFull ? buttonWidth : undefined,\n height: 'auto'\n }}\n >\n {/* eslint-disable-next-line sonarjs/cognitive-complexity */}\n {({ open }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!open && isClearSearchOnClose) setSearch('');\n }, [open]);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (open && !isDropdownOpen) {\n // Dropdown just opened - reset infinite scroll data to start fresh\n const queryKeyWithSearch = [...queryKey, debouncedQuery];\n queryClient.resetQueries(queryKeyWithSearch);\n setIsDropdownOpen(true);\n // Reset scroll position to top\n if (listRef.current) {\n listRef.current.scrollTop = 0;\n }\n } else if (!open && isDropdownOpen) {\n // Dropdown just closed\n setIsDropdownOpen(false);\n }\n }, [open]);\n\n return (\n <>\n {renderSearchSection()}\n <div\n className={twMerge(\n classNames(\n 'p-0 overflow-hidden',\n extractClasses(itemsContainerStyles, 'w-')\n ? extractClasses(itemsContainerStyles, 'w-')\n : extractClasses(containerStyles, 'w-')\n )\n )}\n style={{ width: isWidthFull ? buttonWidth : undefined }}\n >\n {dataPicker.length > 0 ? (\n <div\n ref={listRef}\n className={twMerge(\n `max-h-80 overflow-y-auto ${defaultScrollbarStyles}`,\n listContainerStyles\n )}\n style={{\n maxHeight: maxDropdownHeight\n }}\n >\n {dataPicker.map((item, index) => renderItem(item, index))}\n {/* Infinite loading sentinel */}\n {hasNextPage && (\n <div\n ref={sentinelRef}\n className='w-full h-8 flex items-center justify-center'\n >\n {isFetchingNextPage ? (\n <BaseText\n label='Loading'\n className='text-dark-bermudaGray font-normal text-xs text-center'\n />\n ) : (\n <div className='w-full h-1' />\n )}\n </div>\n )}\n </div>\n ) : isLoading ? (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label='Loading'\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm text-center',\n noResultsLabelStyles\n )}\n />\n </div>\n ) : (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label={noResultsLabel || 'No Results Found'}\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm',\n noResultsLabelStyles\n )}\n />\n </div>\n )}\n </div>\n {isShowFooterButton && (\n <BaseButton\n variant='tertiary'\n onClick={() => {\n onClickFooterButton?.();\n }}\n label={footerButtonLabel || 'Footer Button'}\n className={twMerge('', footerButtonContainerStyles)}\n />\n )}\n </>\n );\n }}\n </ListboxOptions>\n </Transition>\n </Float>\n </div>\n\n {helperMessage && !isError && (\n <BaseText\n label={helperMessage}\n className={twMerge(\n 'font-normal text-dark-bermudaGray text-[10px] inline-block',\n helperMessageStyles\n )}\n />\n )}\n\n {isError && !!errorMessage && (\n <BaseText\n label={errorMessage}\n className={twMerge(\n 'font-normal text-red-fireEngineRed text-[10px] inline-block',\n errorMessageStyles\n )}\n />\n )}\n </div>\n </Listbox>\n );\n}\n\nexport default BaseInfiniteCheckPicker;\n"],"names":["fetchFn","queryKey","debounceMs","disabled","pageSize","value","valueStyles","label","labelStyles","placeholder","placeholderStyles","containerStyles","activeContainerStyles","iconStyles","itemsContainerStyles","itemContainerStyles","oddBgColor","evenBgColor","isDisabled","position","isAutoFlip","onSelectItem","onClean","isCleanable","isError","errorMessage","errorMessageStyles","helperMessage","helperMessageStyles","isSearchable","searchContainerStyles","activeSearchStyles","searchPlaceholder","searchStyles","iconSearchStyles","isShowFooterButton","footerButtonContainerStyles","footerButtonLabel","onClickFooterButton","noResultsLabel","noResultsLabelStyles","badgeContainerStyles","badgeLabelStyles","variant","data","_data","isRequired","labelRequired","labelRequiredStyles","containerRequiredStyles","onSearch","selectedAllText","isShowSelectedAllText","isShowUnmatchItem","selectedAllTextStyles","activeCheckboxColor","itemTextStyles","listContainerStyles","isClearSearchOnClose","selectedItemTextStyles","activeItemTextStyles","maxSelected","queryClient","useQueryClient","containerRef","useRef","listRef","search","setSearch","useState","debouncedQuery","useDebounce","buttonWidth","setButtonWidth","isDisableSelected","setIsDisableSelected","sentinelRef","isDropdownOpen","setIsDropdownOpen","dataInfinite","isLoading","isFetchingNextPage","hasNextPage","fetchNextPage","totalCount","useInfinitePicker","enabled","console","log","dataPicker","useMemo","useEffect","filteredValue","filter","item","length","handleItemClick","useCallback","itemValue","isSelected","temp","slice","i","concat","handleClean","renderItem","index","_jsx","ListboxOption","Object","assign","className","twMerge","classNames","extractClasses","children","active","selected","some","style","backgroundColor","_jsxs","jsxs","onClick","e","preventDefault","Checkbox","checked","color","undefined","BaseText","resizeObserver","ResizeObserver","entries","entry","contentRect","width","current","observe","unobserve","sentinel","scrollContainer","observer","IntersectionObserver","_a","isIntersecting","root","rootMargin","threshold","disconnect","isWidthFull","hasSelectedValues","jsx","Listbox","multiple","ref","BaseBadgeRequired","Float","placement","flip","ListboxButton","open","map","find","join","includes","toString","Icon","name","Transition","as","Fragment","leave","leaveFrom","leaveTo","ListboxOptions","height","queryKeyWithSearch","resetQueries","scrollTop","_Fragment","onChange","target","onKeyDown","stopPropagation","maxHeight","BaseButton"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../_virtual/_tslib.js"),r=require("react/jsx-runtime")
|
|
1
|
+
"use strict";var e=require("../../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),i=require("react-query"),t=require("./InfiniteSelectPicker.js");const n=new i.QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:!1}}});module.exports=function(s){var{queryClient:u=n}=s,c=e.__rest(s,["queryClient"]);return r.jsx(i.QueryClientProvider,Object.assign({client:u},{children:r.jsx(t,Object.assign({},c))}))};
|
|
2
2
|
//# sourceMappingURL=BaseInfiniteSelectPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseInfiniteSelectPicker.js","sources":["../../../../src/components/SelectPicker/BaseInfiniteSelectPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport { BaseInfiniteSelectPickerInterface } from './BaseInfiniteSelectPicker.type';\nimport BaseInfiniteSelectPicker from './InfiniteSelectPicker';\n\n// Create a default query client\nconst defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface BaseInfiniteSelectPickerWithProviderProps<T = any>\n extends BaseInfiniteSelectPickerInterface<T> {\n queryClient?: QueryClient;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteSelectPickerWithProvider<T = any>({\n queryClient = defaultQueryClient,\n ...props\n}: BaseInfiniteSelectPickerWithProviderProps<T>) {\n return (\n <QueryClientProvider client={queryClient}>\n <BaseInfiniteSelectPicker {...props} />\n </QueryClientProvider>\n );\n}\n\nexport default BaseInfiniteSelectPickerWithProvider;\n"],"names":["defaultQueryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","_a","queryClient","props","__rest","_jsx","QueryClientProvider","Object","assign","client","children","BaseInfiniteSelectPicker"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseInfiniteSelectPicker.js","sources":["../../../../src/components/SelectPicker/BaseInfiniteSelectPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nimport { BaseInfiniteSelectPickerInterface } from './BaseInfiniteSelectPicker.type';\nimport BaseInfiniteSelectPicker from './InfiniteSelectPicker';\n\n// Create a default query client\nconst defaultQueryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface BaseInfiniteSelectPickerWithProviderProps<T = any>\n extends BaseInfiniteSelectPickerInterface<T> {\n queryClient?: QueryClient;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteSelectPickerWithProvider<T = any>({\n queryClient = defaultQueryClient,\n ...props\n}: BaseInfiniteSelectPickerWithProviderProps<T>) {\n return (\n <QueryClientProvider client={queryClient}>\n <BaseInfiniteSelectPicker {...props} />\n </QueryClientProvider>\n );\n}\n\nexport default BaseInfiniteSelectPickerWithProvider;\n"],"names":["defaultQueryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","_a","queryClient","props","__rest","_jsx","QueryClientProvider","Object","assign","client","children","BaseInfiniteSelectPicker"],"mappings":"yJAOA,MAAMA,EAAqB,IAAIC,EAAAA,YAAY,CACzCC,eAAgB,CACdC,QAAS,CACPC,sBAAsB,qBAY5B,SAAuDC,OAAAC,YACrDA,EAAcN,GAAkBK,EAC7BE,EAAKC,EAAAA,OAAAH,EAF6C,iBAIrD,OACEI,EAAAA,IAACC,EAAAA,oBAAmBC,OAAAC,OAAA,CAACC,OAAQP,GAC3B,CAAAQ,SAAAL,EAAAA,IAACM,EAA6BJ,OAAAC,OAAA,CAAA,EAAAL,MAGpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("../../../node_modules/@headlessui-float/react/dist/headlessui-float.mjs.js"),r=require("../../../node_modules/classnames/index.js"),s=require("react")
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("../../../node_modules/@headlessui-float/react/dist/headlessui-float.mjs.js"),r=require("../../../node_modules/classnames/index.js"),s=require("react"),l=require("react-query"),a=require("../../hooks/useDebounce.js"),n=require("../../hooks/useInfinitePicker.js"),i=require("../../utils/extractClasses.js");require("../Badge/Badge.js");var o=require("../Text/BaseText.js");require("../Text/Text.js");var d=require("../Badge/BaseBadgeRequired.js");require("../Button/ButtonHyperlink.js");var c=require("../Button/BaseButton.js");require("../Button/BaseButtonIcon.js"),require("../Button/Button.js"),require("../Button/ButtonConfirmation.js"),require("../Button/ButtonLink.js"),require("../Button/ButtonRipple.js"),require("../../../_virtual/_tslib.js"),require("../../styles/Colors.js");var u=require("../Icon/Icon.js"),x=require("../../../node_modules/tailwind-merge/dist/lib/tw-merge.mjs.js"),b=require("../../../node_modules/@headlessui/react/dist/components/listbox/listbox.js"),f=require("../../../node_modules/@headlessui/react/dist/components/transition/transition.js");module.exports=function({fetchFn:m,queryKey:g,debounceMs:j=300,disabled:h=!1,pageSize:p=100,label:v,labelStyles:w,value:y,valueStyles:k,placeholder:N,placeholderStyles:S,containerStyles:q,activeContainerStyles:B,iconStyles:M,itemsContainerStyles:O,itemContainerStyles:C,oddBgColor:R,evenBgColor:L,isDisabled:F=!1,position:G="bottom-start",isAutoFlip:I,onSelectItem:T,onClean:E,isCleanable:D,isError:P,errorMessage:_,errorMessageStyles:z,helperMessage:$,helperMessageStyles:K,isSearchable:H,searchContainerStyles:Q,activeSearchStyles:A,searchPlaceholder:J,searchStyles:U,iconSearchStyles:V,isShowFooterButton:W,footerButtonContainerStyles:X,footerButtonLabel:Y,onClickFooterButton:Z,noResultsLabel:ee,noResultsLabelStyles:te,variant:re="box",data:se,isRequired:le,labelRequired:ae,labelRequiredStyles:ne,containerRequiredStyles:ie,onSearch:oe,itemTextStyles:de,listContainerStyles:ce,isClearSearchOnClose:ue,activeItemTextStyles:xe}){const be=l.useQueryClient(),fe=s.useRef(null),me=s.useRef(null),[ge,je]=s.useState(""),he=a.useDebounce(ge,j),[pe,ve]=s.useState(0),we=s.useRef(null),[ye,ke]=s.useState(!1),{data:Ne,isLoading:Se,isFetchingNextPage:qe,hasNextPage:Be,fetchNextPage:Me}=n.useInfinitePicker({fetchFn:m,queryKey:g,search:he,pageSize:p,enabled:!h}),Oe=s.useMemo((()=>Ne||[]),[Ne]),Ce=(t,s)=>e.jsx(b.ListboxOption,Object.assign({className:x.twMerge(r.default("relative cursor-default select-none list-none",i(C,"p-"),i(C,"px-"),i(C,"py-"))),value:t},{children:({active:l})=>e.jsx("div",Object.assign({className:x.twMerge(r.default("w-full flex items-center !min-h-[32px] p-2 cursor-pointer",C,(!!i(C,"p-")||!!i(C,"px-")||!!i(C,"py-"))&&"p-2")),style:{backgroundColor:s%2==0?R||"var(--dropdownList-background-odd)":L||"var(--dropdownList-background-even)"},onClick:e=>{e.preventDefault(),null==T||T(t)}},{children:e.jsx("div",Object.assign({className:"flex flex-1"},{children:e.jsx(o.default,{label:t.label,className:x.twMerge(r.default("text-xs text-dropdownList-text-default leading-[14px]",`${l?x.twMerge("font-semibold text-dropdownList-text-hover",xe):"font-normal"}`),de)})}))}))}),`${t.value}-${s}`);s.useEffect((()=>{oe&&oe(ge)}),[ge]),s.useEffect((()=>{const e=new ResizeObserver((e=>{for(const t of e)ve(t.contentRect.width)}));return fe.current&&e.observe(fe.current),()=>{fe.current&&e.unobserve(fe.current)}}),[]),s.useEffect((()=>{const e=we.current,t=me.current;if(!e||!t||!Be||qe)return;const r=new IntersectionObserver((e=>{var t;(null===(t=e[0])||void 0===t?void 0:t.isIntersecting)&&Be&&!qe&&Me()}),{root:t,rootMargin:"50px",threshold:.1});return r.observe(e),()=>{r.disconnect()}}),[Be,qe,Me,Oe.length]);const Re=!i(q,"w-")||"w-full"===i(q,"w-")||!i(O,"w-")||"w-full"===i(O,"w-");return e.jsx(b.Listbox,{children:e.jsxs("div",Object.assign({ref:fe,className:"flex flex-col gap-y-1"},{children:[e.jsxs("div",Object.assign({className:"flex flex-row items-end gap-x-1"},{children:[!!v&&e.jsx(o.default,{label:v,className:x.twMerge("font-normal text-dark-gumbo text-[10px]",w)}),le&&e.jsx(d,{labelRequired:ae,labelRequiredStyles:ne,containerRequiredStyles:ie})]})),e.jsx("div",Object.assign({className:"relative inline-block"},{children:e.jsxs(t.Float,Object.assign({placement:G,flip:I},{children:[e.jsx(b.ListboxButton,Object.assign({className:x.twMerge(r.default("p-0 bg-transparent",F&&"cursor-not-allowed"),q?i(q,"w-"):void 0),onClick:e=>{F&&e.preventDefault()}},{children:({open:t})=>{var s;return e.jsxs("div",Object.assign({className:x.twMerge(r.default(x.twMerge("flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid",q),"line"===re&&"border-b border-t-0 border-x-0 rounded-none",t&&B?B:t?"border-fields-border-focus":void 0,F&&"border-dark-bermudaGray bg-light-whiteSmoke",P&&"border-red-fireEngineRed"))},{children:[e.jsxs("div",Object.assign({className:"flex flex-1"},{children:[!!N&&!y&&e.jsx("div",Object.assign({className:"flex flex-1 w-full"},{children:e.jsx(o.default,{label:N,variant:"small",className:x.twMerge(r.default("font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]"),S)})})),!!y&&e.jsx("div",Object.assign({className:"flex flex-1 w-[calc(100%-52px)]"},{children:e.jsx(o.default,{label:(null===(s=Oe.find((e=>e.value===y)))||void 0===s?void 0:s.label)||y,variant:"small",className:x.twMerge(r.default("font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]"),k)})}))]})),D&&!!y&&e.jsx("div",Object.assign({className:"cursor-pointer h-3 w-3 flex items-center justify-center -mr-1",onClick:e=>{e.preventDefault(),null==T||T({value:"",label:""}),je(""),null==E||E()}},{children:e.jsx(u,{name:"close",className:"fill-dark-bermudaGray w-3 h-3"})})),e.jsx(u,{name:t?"chevronup":"chevrondown",className:x.twMerge(r.default("fill-dark-bermudaGray w-3 h-3",`${F&&"fill-dark-bermudaGray"}`),M)})]}))}})),e.jsx(f.Transition,Object.assign({as:s.Fragment,leave:"transition ease-in duration-100",leaveFrom:"opacity-100",leaveTo:"opacity-0"},{children:e.jsx(b.ListboxOptions,Object.assign({className:x.twMerge(r.default("rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50",q?i(q,"w-"):void 0),O),style:{width:Re?pe:void 0,height:"auto"}},{children:({open:t})=>(s.useEffect((()=>{!t&&ue&&je("")}),[t]),s.useEffect((()=>{if(t&&!ye){const e=[...g,he];be.resetQueries(e),ke(!0),me.current&&(me.current.scrollTop=0)}else!t&&ye&&ke(!1)}),[t]),e.jsxs(e.Fragment,{children:[H?e.jsx("div",Object.assign({className:"p-2 bg-light-whiteSolid w-full"},{children:e.jsxs("div",Object.assign({className:x.twMerge(r.default(x.twMerge("flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1",Q),A||"border-fields-border-focus"))},{children:[e.jsx("input",{placeholder:J||"Search",className:x.twMerge("flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs",U),onChange:e=>{je(e.target.value)},onKeyDown:e=>e.stopPropagation(),value:ge}),e.jsx(u,{name:"search",className:x.twMerge("fill-dark-bermudaGray w-3 h-3",V)})]}))})):null,e.jsx("div",Object.assign({className:x.twMerge(r.default("p-0 overflow-hidden",i(O,"w-")?i(O,"w-"):i(q,"w-"))),style:{width:Re?pe:void 0}},{children:Oe.length>0?e.jsxs("div",Object.assign({ref:me,className:x.twMerge("max-h-80 overflow-y-auto scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude",ce),style:{maxHeight:320}},{children:[Oe.map(((e,t)=>Ce(e,t))),Be&&e.jsx("div",Object.assign({ref:we,className:"w-full h-8 flex items-center justify-center"},{children:qe?e.jsx(o.default,{label:"Loading",className:"text-dark-bermudaGray font-normal text-xs text-center w-full"}):e.jsx("div",{className:"w-full h-1"})}))]})):Se?e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(o.default,{label:"Loading",className:x.twMerge("text-dark-bermudaGray font-normal text-sm text-center",te)})})):e.jsx("div",Object.assign({className:"py-2 px-4 w-full"},{children:e.jsx(o.default,{label:ee||"No Results Found",className:x.twMerge("text-dark-bermudaGray font-normal text-sm",te)})}))})),W&&e.jsx(c.default,{variant:"tertiary",onClick:()=>{null==Z||Z()},label:Y||"Footer Button",className:x.twMerge("",X)})]}))}))}))]}))})),$&&!P&&e.jsx(o.default,{label:$,className:x.twMerge("font-normal text-dark-bermudaGray text-[10px] inline-block",K)}),P&&!!_&&e.jsx(o.default,{label:_,className:x.twMerge("font-normal text-red-fireEngineRed text-[10px] inline-block",z)})]}))})};
|
|
2
2
|
//# sourceMappingURL=InfiniteSelectPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfiniteSelectPicker.js","sources":["../../../../src/components/SelectPicker/InfiniteSelectPicker.tsx"],"sourcesContent":["import {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n Transition\n} from '@headlessui/react';\nimport { Float } from '@headlessui-float/react';\nimport classNames from 'classnames';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { twMerge } from 'tailwind-merge';\n\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useInfinitePicker } from '../../hooks/useInfinitePicker';\nimport extractClasses from '../../utils/extractClasses';\nimport { BaseBadgeRequired } from '../Badge';\nimport { BaseButton } from '../Button';\nimport { Icon } from '../Icon';\nimport { BaseText } from '../Text';\nimport {\n BaseInfiniteSelectPickerDataInterface,\n BaseInfiniteSelectPickerInterface\n} from './BaseInfiniteSelectPicker.type';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteSelectPicker<T = any>({\n fetchFn,\n queryKey,\n debounceMs = 300,\n disabled = false,\n pageSize = 100,\n label,\n labelStyles,\n value,\n valueStyles,\n placeholder,\n placeholderStyles,\n containerStyles,\n activeContainerStyles,\n iconStyles,\n itemsContainerStyles,\n itemContainerStyles,\n oddBgColor,\n evenBgColor,\n isDisabled = false,\n position = 'bottom-start',\n isAutoFlip,\n onSelectItem,\n onClean,\n isCleanable,\n isError,\n errorMessage,\n errorMessageStyles,\n helperMessage,\n helperMessageStyles,\n isSearchable,\n searchContainerStyles,\n activeSearchStyles,\n searchPlaceholder,\n searchStyles,\n iconSearchStyles,\n isShowFooterButton,\n footerButtonContainerStyles,\n footerButtonLabel,\n onClickFooterButton,\n noResultsLabel,\n noResultsLabelStyles,\n variant = 'box',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: _data, // Keep for backward compatibility but don't use (using dataInfinite instead)\n isRequired,\n labelRequired,\n labelRequiredStyles,\n containerRequiredStyles,\n onSearch,\n itemTextStyles,\n listContainerStyles,\n isClearSearchOnClose,\n activeItemTextStyles\n}: BaseInfiniteSelectPickerInterface<T>) {\n const defaultScrollbarStyles =\n 'scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude';\n\n const queryClient = useQueryClient();\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const [search, setSearch] = useState<string>('');\n const debouncedQuery = useDebounce(search, debounceMs);\n const [buttonWidth, setButtonWidth] = useState<number>(0);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n const {\n data: dataInfinite,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage\n } = useInfinitePicker({\n fetchFn,\n queryKey,\n search: debouncedQuery,\n pageSize,\n enabled: !disabled\n });\n\n const dataPicker: Array<BaseInfiniteSelectPickerDataInterface> = useMemo(() => {\n // Use dataInfinite from the hook instead of static data prop\n // Type assertion is safe here as the API should return the correct format\n return (dataInfinite || []) as Array<BaseInfiniteSelectPickerDataInterface>;\n }, [dataInfinite]);\n\n const maxDropdownHeight = 320; // Maximum height for the dropdown list\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n const renderItem = (item: BaseInfiniteSelectPickerDataInterface, index: number) => {\n return (\n <ListboxOption\n key={`${item.value}-${index}`}\n className={twMerge(\n classNames(\n 'relative cursor-default select-none list-none',\n extractClasses(itemContainerStyles, 'p-'),\n extractClasses(itemContainerStyles, 'px-'),\n extractClasses(itemContainerStyles, 'py-')\n )\n )}\n value={item}\n >\n {({ active }) => {\n return (\n <div\n className={twMerge(\n classNames(\n 'w-full flex items-center !min-h-[32px] p-2 cursor-pointer',\n itemContainerStyles,\n (!!extractClasses(itemContainerStyles, 'p-') ||\n !!extractClasses(itemContainerStyles, 'px-') ||\n !!extractClasses(itemContainerStyles, 'py-')) &&\n 'p-2'\n )\n )}\n style={{\n backgroundColor:\n index % 2 === 0\n ? oddBgColor || 'var(--dropdownList-background-odd)'\n : evenBgColor || 'var(--dropdownList-background-even)'\n }}\n onClick={(e) => {\n e.preventDefault();\n onSelectItem?.(item);\n }}\n >\n <div className='flex flex-1'>\n <BaseText\n label={item.label}\n className={twMerge(\n classNames(\n 'text-xs text-dropdownList-text-default leading-[14px]',\n `${\n active\n ? twMerge(\n 'font-semibold text-dropdownList-text-hover',\n activeItemTextStyles\n )\n : 'font-normal'\n }`\n ),\n itemTextStyles\n )}\n />\n </div>\n </div>\n );\n }}\n </ListboxOption>\n );\n };\n\n useEffect(() => {\n if (onSearch) onSearch(search);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setButtonWidth(entry.contentRect.width);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n const scrollContainer = listRef.current;\n\n if (!sentinel || !scrollContainer || !hasNextPage || isFetchingNextPage) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {\n root: scrollContainer,\n rootMargin: '50px',\n threshold: 0.1\n }\n );\n\n observer.observe(sentinel);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage, dataPicker.length]);\n\n const isWidthFull =\n !extractClasses(containerStyles, 'w-') ||\n extractClasses(containerStyles, 'w-') === 'w-full' ||\n !extractClasses(itemsContainerStyles, 'w-') ||\n extractClasses(itemsContainerStyles, 'w-') === 'w-full';\n\n const renderSearchSection = () => {\n if (!isSearchable) return null;\n\n return (\n <div className='p-2 bg-light-whiteSolid w-full'>\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1',\n searchContainerStyles\n ),\n activeSearchStyles ? activeSearchStyles : 'border-fields-border-focus'\n )\n )}\n >\n <input\n placeholder={searchPlaceholder || 'Search'}\n className={twMerge(\n 'flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs',\n searchStyles\n )}\n onChange={(e) => {\n setSearch(e.target.value);\n }}\n onKeyDown={(e) => e.stopPropagation()}\n value={search}\n />\n <Icon\n name='search'\n className={twMerge('fill-dark-bermudaGray w-3 h-3', iconSearchStyles)}\n />\n </div>\n </div>\n );\n };\n\n return (\n <Listbox>\n <div ref={containerRef} className='flex flex-col gap-y-1'>\n <div className='flex flex-row items-end gap-x-1'>\n {!!label && (\n <BaseText\n label={label}\n className={twMerge('font-normal text-dark-gumbo text-[10px]', labelStyles)}\n />\n )}\n {isRequired && (\n <BaseBadgeRequired\n labelRequired={labelRequired}\n labelRequiredStyles={labelRequiredStyles}\n containerRequiredStyles={containerRequiredStyles}\n />\n )}\n </div>\n <div className='relative inline-block'>\n <Float placement={position} flip={isAutoFlip}>\n <ListboxButton\n className={twMerge(\n classNames('p-0 bg-transparent', isDisabled && 'cursor-not-allowed'),\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n )}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {({ open }) => (\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid',\n containerStyles\n ),\n variant === 'line' && 'border-b border-t-0 border-x-0 rounded-none',\n open && activeContainerStyles\n ? activeContainerStyles\n : open\n ? 'border-fields-border-focus'\n : undefined,\n isDisabled && 'border-dark-bermudaGray bg-light-whiteSmoke',\n isError && 'border-red-fireEngineRed'\n )\n )}\n >\n <div className='flex flex-1'>\n {!!placeholder && !value && (\n <div className='flex flex-1 w-full'>\n <BaseText\n label={placeholder}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]'\n ),\n placeholderStyles\n )}\n />\n </div>\n )}\n\n {!!value && (\n <div className='flex flex-1 w-[calc(100%-52px)]'>\n <BaseText\n label={\n dataPicker.find(\n (item: BaseInfiniteSelectPickerDataInterface) => item.value === value\n )?.label || value\n }\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n valueStyles\n )}\n />\n </div>\n )}\n </div>\n\n {isCleanable && !!value && (\n <div\n className='cursor-pointer h-3 w-3 flex items-center justify-center -mr-1'\n onClick={(e) => {\n e.preventDefault();\n onSelectItem?.({ value: '', label: '' });\n setSearch('');\n onClean?.();\n }}\n >\n <Icon name='close' className='fill-dark-bermudaGray w-3 h-3' />\n </div>\n )}\n <Icon\n name={open ? 'chevronup' : 'chevrondown'}\n className={twMerge(\n classNames(\n 'fill-dark-bermudaGray w-3 h-3',\n `${isDisabled && 'fill-dark-bermudaGray'}`\n ),\n iconStyles\n )}\n />\n </div>\n )}\n </ListboxButton>\n <Transition\n as={Fragment}\n leave='transition ease-in duration-100'\n leaveFrom='opacity-100'\n leaveTo='opacity-0'\n >\n <ListboxOptions\n className={twMerge(\n classNames(\n 'rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50',\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n ),\n itemsContainerStyles\n )}\n style={{\n width: isWidthFull ? buttonWidth : undefined,\n height: 'auto'\n }}\n >\n {/* eslint-disable-next-line sonarjs/cognitive-complexity */}\n {({ open }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!open && isClearSearchOnClose) setSearch('');\n }, [open]);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (open && !isDropdownOpen) {\n // Dropdown just opened - reset infinite scroll data to start fresh\n const queryKeyWithSearch = [...queryKey, debouncedQuery];\n queryClient.resetQueries(queryKeyWithSearch);\n setIsDropdownOpen(true);\n // Reset scroll position to top\n if (listRef.current) {\n listRef.current.scrollTop = 0;\n }\n } else if (!open && isDropdownOpen) {\n // Dropdown just closed\n setIsDropdownOpen(false);\n }\n }, [open]);\n\n return (\n <>\n {renderSearchSection()}\n <div\n className={twMerge(\n classNames(\n 'p-0 overflow-hidden',\n extractClasses(itemsContainerStyles, 'w-')\n ? extractClasses(itemsContainerStyles, 'w-')\n : extractClasses(containerStyles, 'w-')\n )\n )}\n style={{ width: isWidthFull ? buttonWidth : undefined }}\n >\n {dataPicker.length > 0 ? (\n <div\n ref={listRef}\n className={twMerge(\n `max-h-80 overflow-y-auto ${defaultScrollbarStyles}`,\n listContainerStyles\n )}\n style={{\n maxHeight: maxDropdownHeight\n }}\n >\n {dataPicker.map((item, index) => renderItem(item, index))}\n {/* Infinite loading sentinel */}\n {hasNextPage && (\n <div\n ref={sentinelRef}\n className='w-full h-8 flex items-center justify-center'\n >\n {isFetchingNextPage ? (\n <BaseText\n label='Loading'\n className='text-dark-bermudaGray font-normal text-xs text-center w-full'\n />\n ) : (\n <div className='w-full h-1' />\n )}\n </div>\n )}\n </div>\n ) : isLoading ? (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label='Loading'\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm text-center',\n noResultsLabelStyles\n )}\n />\n </div>\n ) : (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label={noResultsLabel || 'No Results Found'}\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm',\n noResultsLabelStyles\n )}\n />\n </div>\n )}\n </div>\n {isShowFooterButton && (\n <BaseButton\n variant='tertiary'\n onClick={() => {\n onClickFooterButton?.();\n }}\n label={footerButtonLabel || 'Footer Button'}\n className={twMerge('', footerButtonContainerStyles)}\n />\n )}\n </>\n );\n }}\n </ListboxOptions>\n </Transition>\n </Float>\n </div>\n\n {helperMessage && !isError && (\n <BaseText\n label={helperMessage}\n className={twMerge(\n 'font-normal text-dark-bermudaGray text-[10px] inline-block',\n helperMessageStyles\n )}\n />\n )}\n\n {isError && !!errorMessage && (\n <BaseText\n label={errorMessage}\n className={twMerge(\n 'font-normal text-red-fireEngineRed text-[10px] inline-block',\n errorMessageStyles\n )}\n />\n )}\n </div>\n </Listbox>\n );\n}\n\nexport default BaseInfiniteSelectPicker;\n"],"names":["fetchFn","queryKey","debounceMs","disabled","pageSize","label","labelStyles","value","valueStyles","placeholder","placeholderStyles","containerStyles","activeContainerStyles","iconStyles","itemsContainerStyles","itemContainerStyles","oddBgColor","evenBgColor","isDisabled","position","isAutoFlip","onSelectItem","onClean","isCleanable","isError","errorMessage","errorMessageStyles","helperMessage","helperMessageStyles","isSearchable","searchContainerStyles","activeSearchStyles","searchPlaceholder","searchStyles","iconSearchStyles","isShowFooterButton","footerButtonContainerStyles","footerButtonLabel","onClickFooterButton","noResultsLabel","noResultsLabelStyles","variant","data","_data","isRequired","labelRequired","labelRequiredStyles","containerRequiredStyles","onSearch","itemTextStyles","listContainerStyles","isClearSearchOnClose","activeItemTextStyles","queryClient","useQueryClient","containerRef","useRef","listRef","search","setSearch","useState","debouncedQuery","useDebounce","buttonWidth","setButtonWidth","sentinelRef","isDropdownOpen","setIsDropdownOpen","dataInfinite","isLoading","isFetchingNextPage","hasNextPage","fetchNextPage","useInfinitePicker","enabled","dataPicker","useMemo","renderItem","item","index","_jsx","ListboxOption","Object","assign","className","twMerge","classNames","extractClasses","children","active","style","backgroundColor","onClick","e","preventDefault","jsx","BaseText","useEffect","resizeObserver","ResizeObserver","entries","entry","contentRect","width","current","observe","unobserve","sentinel","scrollContainer","observer","IntersectionObserver","_a","isIntersecting","root","rootMargin","threshold","disconnect","length","isWidthFull","Listbox","_jsxs","ref","BaseBadgeRequired","jsxs","Float","placement","flip","ListboxButton","undefined","open","find","Icon","name","Transition","as","Fragment","leave","leaveFrom","leaveTo","ListboxOptions","height","queryKeyWithSearch","resetQueries","scrollTop","_Fragment","onChange","target","onKeyDown","stopPropagation","maxHeight","map","BaseButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InfiniteSelectPicker.js","sources":["../../../../src/components/SelectPicker/InfiniteSelectPicker.tsx"],"sourcesContent":["import {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n Transition\n} from '@headlessui/react';\nimport { Float } from '@headlessui-float/react';\nimport classNames from 'classnames';\nimport { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { twMerge } from 'tailwind-merge';\n\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useInfinitePicker } from '../../hooks/useInfinitePicker';\nimport extractClasses from '../../utils/extractClasses';\nimport { BaseBadgeRequired } from '../Badge';\nimport { BaseButton } from '../Button';\nimport { Icon } from '../Icon';\nimport { BaseText } from '../Text';\nimport {\n BaseInfiniteSelectPickerDataInterface,\n BaseInfiniteSelectPickerInterface\n} from './BaseInfiniteSelectPicker.type';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction BaseInfiniteSelectPicker<T = any>({\n fetchFn,\n queryKey,\n debounceMs = 300,\n disabled = false,\n pageSize = 100,\n label,\n labelStyles,\n value,\n valueStyles,\n placeholder,\n placeholderStyles,\n containerStyles,\n activeContainerStyles,\n iconStyles,\n itemsContainerStyles,\n itemContainerStyles,\n oddBgColor,\n evenBgColor,\n isDisabled = false,\n position = 'bottom-start',\n isAutoFlip,\n onSelectItem,\n onClean,\n isCleanable,\n isError,\n errorMessage,\n errorMessageStyles,\n helperMessage,\n helperMessageStyles,\n isSearchable,\n searchContainerStyles,\n activeSearchStyles,\n searchPlaceholder,\n searchStyles,\n iconSearchStyles,\n isShowFooterButton,\n footerButtonContainerStyles,\n footerButtonLabel,\n onClickFooterButton,\n noResultsLabel,\n noResultsLabelStyles,\n variant = 'box',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n data: _data, // Keep for backward compatibility but don't use (using dataInfinite instead)\n isRequired,\n labelRequired,\n labelRequiredStyles,\n containerRequiredStyles,\n onSearch,\n itemTextStyles,\n listContainerStyles,\n isClearSearchOnClose,\n activeItemTextStyles\n}: BaseInfiniteSelectPickerInterface<T>) {\n const defaultScrollbarStyles =\n 'scrollbar scrollbar-thumb-dark-blackCoral scrollbar-thumb-rounded-full scrollbar-w-2 scrollbar-h-2 scrollbar-track-dark-solitude';\n\n const queryClient = useQueryClient();\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const [search, setSearch] = useState<string>('');\n const debouncedQuery = useDebounce(search, debounceMs);\n const [buttonWidth, setButtonWidth] = useState<number>(0);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);\n const {\n data: dataInfinite,\n isLoading,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage\n } = useInfinitePicker({\n fetchFn,\n queryKey,\n search: debouncedQuery,\n pageSize,\n enabled: !disabled\n });\n\n const dataPicker: Array<BaseInfiniteSelectPickerDataInterface> = useMemo(() => {\n // Use dataInfinite from the hook instead of static data prop\n // Type assertion is safe here as the API should return the correct format\n return (dataInfinite || []) as Array<BaseInfiniteSelectPickerDataInterface>;\n }, [dataInfinite]);\n\n const maxDropdownHeight = 320; // Maximum height for the dropdown list\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n const renderItem = (item: BaseInfiniteSelectPickerDataInterface, index: number) => {\n return (\n <ListboxOption\n key={`${item.value}-${index}`}\n className={twMerge(\n classNames(\n 'relative cursor-default select-none list-none',\n extractClasses(itemContainerStyles, 'p-'),\n extractClasses(itemContainerStyles, 'px-'),\n extractClasses(itemContainerStyles, 'py-')\n )\n )}\n value={item}\n >\n {({ active }) => {\n return (\n <div\n className={twMerge(\n classNames(\n 'w-full flex items-center !min-h-[32px] p-2 cursor-pointer',\n itemContainerStyles,\n (!!extractClasses(itemContainerStyles, 'p-') ||\n !!extractClasses(itemContainerStyles, 'px-') ||\n !!extractClasses(itemContainerStyles, 'py-')) &&\n 'p-2'\n )\n )}\n style={{\n backgroundColor:\n index % 2 === 0\n ? oddBgColor || 'var(--dropdownList-background-odd)'\n : evenBgColor || 'var(--dropdownList-background-even)'\n }}\n onClick={(e) => {\n e.preventDefault();\n onSelectItem?.(item);\n }}\n >\n <div className='flex flex-1'>\n <BaseText\n label={item.label}\n className={twMerge(\n classNames(\n 'text-xs text-dropdownList-text-default leading-[14px]',\n `${\n active\n ? twMerge(\n 'font-semibold text-dropdownList-text-hover',\n activeItemTextStyles\n )\n : 'font-normal'\n }`\n ),\n itemTextStyles\n )}\n />\n </div>\n </div>\n );\n }}\n </ListboxOption>\n );\n };\n\n useEffect(() => {\n if (onSearch) onSearch(search);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search]);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setButtonWidth(entry.contentRect.width);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n const scrollContainer = listRef.current;\n\n if (!sentinel || !scrollContainer || !hasNextPage || isFetchingNextPage) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n },\n {\n root: scrollContainer,\n rootMargin: '50px',\n threshold: 0.1\n }\n );\n\n observer.observe(sentinel);\n\n return () => {\n observer.disconnect();\n };\n }, [hasNextPage, isFetchingNextPage, fetchNextPage, dataPicker.length]);\n\n const isWidthFull =\n !extractClasses(containerStyles, 'w-') ||\n extractClasses(containerStyles, 'w-') === 'w-full' ||\n !extractClasses(itemsContainerStyles, 'w-') ||\n extractClasses(itemsContainerStyles, 'w-') === 'w-full';\n\n const renderSearchSection = () => {\n if (!isSearchable) return null;\n\n return (\n <div className='p-2 bg-light-whiteSolid w-full'>\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 border border-solid border-dark-gumbo rounded gap-x-1',\n searchContainerStyles\n ),\n activeSearchStyles ? activeSearchStyles : 'border-fields-border-focus'\n )\n )}\n >\n <input\n placeholder={searchPlaceholder || 'Search'}\n className={twMerge(\n 'flex flex-1 line-clamp-1 placeholder:text-dark-bermudaGray p-0 bg-transparent border-none outline-none font-poppins text-dark-blackCoral text-xs',\n searchStyles\n )}\n onChange={(e) => {\n setSearch(e.target.value);\n }}\n onKeyDown={(e) => e.stopPropagation()}\n value={search}\n />\n <Icon\n name='search'\n className={twMerge('fill-dark-bermudaGray w-3 h-3', iconSearchStyles)}\n />\n </div>\n </div>\n );\n };\n\n return (\n <Listbox>\n <div ref={containerRef} className='flex flex-col gap-y-1'>\n <div className='flex flex-row items-end gap-x-1'>\n {!!label && (\n <BaseText\n label={label}\n className={twMerge('font-normal text-dark-gumbo text-[10px]', labelStyles)}\n />\n )}\n {isRequired && (\n <BaseBadgeRequired\n labelRequired={labelRequired}\n labelRequiredStyles={labelRequiredStyles}\n containerRequiredStyles={containerRequiredStyles}\n />\n )}\n </div>\n <div className='relative inline-block'>\n <Float placement={position} flip={isAutoFlip}>\n <ListboxButton\n className={twMerge(\n classNames('p-0 bg-transparent', isDisabled && 'cursor-not-allowed'),\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n )}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {({ open }) => (\n <div\n className={twMerge(\n classNames(\n twMerge(\n 'flex flex-row items-center p-2 rounded gap-x-1 border border-solid border-dark-gumbo bg-light-whiteSolid',\n containerStyles\n ),\n variant === 'line' && 'border-b border-t-0 border-x-0 rounded-none',\n open && activeContainerStyles\n ? activeContainerStyles\n : open\n ? 'border-fields-border-focus'\n : undefined,\n isDisabled && 'border-dark-bermudaGray bg-light-whiteSmoke',\n isError && 'border-red-fireEngineRed'\n )\n )}\n >\n <div className='flex flex-1'>\n {!!placeholder && !value && (\n <div className='flex flex-1 w-full'>\n <BaseText\n label={placeholder}\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-bermudaGray text-xs text-left line-clamp-1 leading-[14px]'\n ),\n placeholderStyles\n )}\n />\n </div>\n )}\n\n {!!value && (\n <div className='flex flex-1 w-[calc(100%-52px)]'>\n <BaseText\n label={\n dataPicker.find(\n (item: BaseInfiniteSelectPickerDataInterface) => item.value === value\n )?.label || value\n }\n variant='small'\n className={twMerge(\n classNames(\n 'font-normal text-dark-blackCoral text-xs text-left line-clamp-1 w-full leading-[14px]'\n ),\n valueStyles\n )}\n />\n </div>\n )}\n </div>\n\n {isCleanable && !!value && (\n <div\n className='cursor-pointer h-3 w-3 flex items-center justify-center -mr-1'\n onClick={(e) => {\n e.preventDefault();\n onSelectItem?.({ value: '', label: '' });\n setSearch('');\n onClean?.();\n }}\n >\n <Icon name='close' className='fill-dark-bermudaGray w-3 h-3' />\n </div>\n )}\n <Icon\n name={open ? 'chevronup' : 'chevrondown'}\n className={twMerge(\n classNames(\n 'fill-dark-bermudaGray w-3 h-3',\n `${isDisabled && 'fill-dark-bermudaGray'}`\n ),\n iconStyles\n )}\n />\n </div>\n )}\n </ListboxButton>\n <Transition\n as={Fragment}\n leave='transition ease-in duration-100'\n leaveFrom='opacity-100'\n leaveTo='opacity-0'\n >\n <ListboxOptions\n className={twMerge(\n classNames(\n 'rounded p-0 min-w-full flex flex-col overflow-hidden border border-solid border-dark-silver bg-white z-50',\n containerStyles ? extractClasses(containerStyles, 'w-') : undefined\n ),\n itemsContainerStyles\n )}\n style={{\n width: isWidthFull ? buttonWidth : undefined,\n height: 'auto'\n }}\n >\n {/* eslint-disable-next-line sonarjs/cognitive-complexity */}\n {({ open }) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!open && isClearSearchOnClose) setSearch('');\n }, [open]);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (open && !isDropdownOpen) {\n // Dropdown just opened - reset infinite scroll data to start fresh\n const queryKeyWithSearch = [...queryKey, debouncedQuery];\n queryClient.resetQueries(queryKeyWithSearch);\n setIsDropdownOpen(true);\n // Reset scroll position to top\n if (listRef.current) {\n listRef.current.scrollTop = 0;\n }\n } else if (!open && isDropdownOpen) {\n // Dropdown just closed\n setIsDropdownOpen(false);\n }\n }, [open]);\n\n return (\n <>\n {renderSearchSection()}\n <div\n className={twMerge(\n classNames(\n 'p-0 overflow-hidden',\n extractClasses(itemsContainerStyles, 'w-')\n ? extractClasses(itemsContainerStyles, 'w-')\n : extractClasses(containerStyles, 'w-')\n )\n )}\n style={{ width: isWidthFull ? buttonWidth : undefined }}\n >\n {dataPicker.length > 0 ? (\n <div\n ref={listRef}\n className={twMerge(\n `max-h-80 overflow-y-auto ${defaultScrollbarStyles}`,\n listContainerStyles\n )}\n style={{\n maxHeight: maxDropdownHeight\n }}\n >\n {dataPicker.map((item, index) => renderItem(item, index))}\n {/* Infinite loading sentinel */}\n {hasNextPage && (\n <div\n ref={sentinelRef}\n className='w-full h-8 flex items-center justify-center'\n >\n {isFetchingNextPage ? (\n <BaseText\n label='Loading'\n className='text-dark-bermudaGray font-normal text-xs text-center w-full'\n />\n ) : (\n <div className='w-full h-1' />\n )}\n </div>\n )}\n </div>\n ) : isLoading ? (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label='Loading'\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm text-center',\n noResultsLabelStyles\n )}\n />\n </div>\n ) : (\n <div className='py-2 px-4 w-full'>\n <BaseText\n label={noResultsLabel || 'No Results Found'}\n className={twMerge(\n 'text-dark-bermudaGray font-normal text-sm',\n noResultsLabelStyles\n )}\n />\n </div>\n )}\n </div>\n {isShowFooterButton && (\n <BaseButton\n variant='tertiary'\n onClick={() => {\n onClickFooterButton?.();\n }}\n label={footerButtonLabel || 'Footer Button'}\n className={twMerge('', footerButtonContainerStyles)}\n />\n )}\n </>\n );\n }}\n </ListboxOptions>\n </Transition>\n </Float>\n </div>\n\n {helperMessage && !isError && (\n <BaseText\n label={helperMessage}\n className={twMerge(\n 'font-normal text-dark-bermudaGray text-[10px] inline-block',\n helperMessageStyles\n )}\n />\n )}\n\n {isError && !!errorMessage && (\n <BaseText\n label={errorMessage}\n className={twMerge(\n 'font-normal text-red-fireEngineRed text-[10px] inline-block',\n errorMessageStyles\n )}\n />\n )}\n </div>\n </Listbox>\n );\n}\n\nexport default BaseInfiniteSelectPicker;\n"],"names":["fetchFn","queryKey","debounceMs","disabled","pageSize","label","labelStyles","value","valueStyles","placeholder","placeholderStyles","containerStyles","activeContainerStyles","iconStyles","itemsContainerStyles","itemContainerStyles","oddBgColor","evenBgColor","isDisabled","position","isAutoFlip","onSelectItem","onClean","isCleanable","isError","errorMessage","errorMessageStyles","helperMessage","helperMessageStyles","isSearchable","searchContainerStyles","activeSearchStyles","searchPlaceholder","searchStyles","iconSearchStyles","isShowFooterButton","footerButtonContainerStyles","footerButtonLabel","onClickFooterButton","noResultsLabel","noResultsLabelStyles","variant","data","_data","isRequired","labelRequired","labelRequiredStyles","containerRequiredStyles","onSearch","itemTextStyles","listContainerStyles","isClearSearchOnClose","activeItemTextStyles","queryClient","useQueryClient","containerRef","useRef","listRef","search","setSearch","useState","debouncedQuery","useDebounce","buttonWidth","setButtonWidth","sentinelRef","isDropdownOpen","setIsDropdownOpen","dataInfinite","isLoading","isFetchingNextPage","hasNextPage","fetchNextPage","useInfinitePicker","enabled","dataPicker","useMemo","renderItem","item","index","_jsx","ListboxOption","Object","assign","className","twMerge","classNames","extractClasses","children","active","style","backgroundColor","onClick","e","preventDefault","jsx","BaseText","useEffect","resizeObserver","ResizeObserver","entries","entry","contentRect","width","current","observe","unobserve","sentinel","scrollContainer","observer","IntersectionObserver","_a","isIntersecting","root","rootMargin","threshold","disconnect","length","isWidthFull","Listbox","_jsxs","ref","BaseBadgeRequired","jsxs","Float","placement","flip","ListboxButton","undefined","open","find","Icon","name","Transition","as","Fragment","leave","leaveFrom","leaveTo","ListboxOptions","height","queryKeyWithSearch","resetQueries","scrollTop","_Fragment","onChange","target","onKeyDown","stopPropagation","maxHeight","map","BaseButton"],"mappings":"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"}
|
|
@@ -76,6 +76,7 @@ export interface TableInterface extends TableVariantInterface, TableHooksBaseInt
|
|
|
76
76
|
sortBy?: SortingRule;
|
|
77
77
|
onSort?: SortHandler;
|
|
78
78
|
getCellProps?: (cell: Cell<any, any>) => Record<string, unknown>;
|
|
79
|
+
isSelectionDisabled?: boolean;
|
|
79
80
|
activePageColor?: string;
|
|
80
81
|
textSortedStyles?: string;
|
|
81
82
|
textUnsortedStyles?: string;
|
|
@@ -39,8 +39,9 @@ interface TableHooksInterface extends TableHooksBaseInterface, TableVariantInter
|
|
|
39
39
|
rowActions?: ({ rowData, index }: RowActionsInterface) => React.ReactNode;
|
|
40
40
|
checkedColor?: string;
|
|
41
41
|
totalMaxChecked?: number;
|
|
42
|
+
isSelectionDisabled?: boolean;
|
|
42
43
|
}
|
|
43
|
-
export declare const tableHooks: ({ hooks, actionLabel, isSelectable, hideRowIndex, rowIndexAlign, variant, rowActions, freezedColumn, checkedColor, totalMaxChecked }: TableHooksInterface) => void;
|
|
44
|
+
export declare const tableHooks: ({ hooks, actionLabel, isSelectable, hideRowIndex, rowIndexAlign, variant, rowActions, freezedColumn, checkedColor, totalMaxChecked, isSelectionDisabled }: TableHooksInterface) => void;
|
|
44
45
|
export declare const EmptyData: (props: EmptyDataInterface) => import("react/jsx-runtime").JSX.Element;
|
|
45
46
|
export declare const TableLoaderContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
46
47
|
export declare const defaultPropGetter: () => {};
|
|
@@ -16,5 +16,5 @@
|
|
|
16
16
|
`,y=g.default.div`
|
|
17
17
|
display: flex;
|
|
18
18
|
justify-content: center;
|
|
19
|
-
`;exports.CellContainerBaseStyled=h,exports.CellContainerContentStyled=b,exports.CellContainerHeaderStyled=m,exports.EmptyData=e=>t.jsx(v,Object.assign({},e,{children:e.noRecordComponent?t.jsx(t.Fragment,{children:e.noRecordComponent()}):t.jsxs(t.Fragment,{children:[t.jsx(a,{name:"norecord",size:"extra-large"}),t.jsx("div",Object.assign({style:{marginTop:i.MarginType["extra-small"]}},{children:t.jsx(c.default,{label:e.noRecordLabel||"No records found",fontWeight:"regular",variant:"medium"})}))]})})),exports.SortIcon=({isSorted:e,isSortedDesc:l,iconSortedStyles:n,iconUnsortedStyles:r})=>e?l?t.jsx(a,{name:"chevrondown",className:x.twMerge("fill-tableResponsive-header-textAndIcon-active h-3",n)}):t.jsx(a,{name:"chevronup",className:x.twMerge("fill-tableResponsive-header-textAndIcon-active h-3",n)}):t.jsx(a,{name:"sort",className:x.twMerge("fill-tableResponsive-header-textAndIcon-default h-3",r)}),exports.TableLoaderContainer=y,exports.contentAlignmentMapper=f,exports.defaultPropGetter=()=>({}),exports.getIsExcludedSortable=e=>{if(e.columns)return!1;switch(e.accessor){case"action":case"selectable":return!1;default:return!0}},exports.tableHooks=({hooks:e,actionLabel:l,isSelectable:n,hideRowIndex:r,rowIndexAlign:i,variant:s,rowActions:a,freezedColumn:x,checkedColor:u,totalMaxChecked:g})=>{const
|
|
19
|
+
`;exports.CellContainerBaseStyled=h,exports.CellContainerContentStyled=b,exports.CellContainerHeaderStyled=m,exports.EmptyData=e=>t.jsx(v,Object.assign({},e,{children:e.noRecordComponent?t.jsx(t.Fragment,{children:e.noRecordComponent()}):t.jsxs(t.Fragment,{children:[t.jsx(a,{name:"norecord",size:"extra-large"}),t.jsx("div",Object.assign({style:{marginTop:i.MarginType["extra-small"]}},{children:t.jsx(c.default,{label:e.noRecordLabel||"No records found",fontWeight:"regular",variant:"medium"})}))]})})),exports.SortIcon=({isSorted:e,isSortedDesc:l,iconSortedStyles:n,iconUnsortedStyles:r})=>e?l?t.jsx(a,{name:"chevrondown",className:x.twMerge("fill-tableResponsive-header-textAndIcon-active h-3",n)}):t.jsx(a,{name:"chevronup",className:x.twMerge("fill-tableResponsive-header-textAndIcon-active h-3",n)}):t.jsx(a,{name:"sort",className:x.twMerge("fill-tableResponsive-header-textAndIcon-default h-3",r)}),exports.TableLoaderContainer=y,exports.contentAlignmentMapper=f,exports.defaultPropGetter=()=>({}),exports.getIsExcludedSortable=e=>{if(e.columns)return!1;switch(e.accessor){case"action":case"selectable":return!1;default:return!0}},exports.tableHooks=({hooks:e,actionLabel:l,isSelectable:n,hideRowIndex:r,rowIndexAlign:i,variant:s,rowActions:a,freezedColumn:x,checkedColor:u,totalMaxChecked:g,isSelectionDisabled:f})=>{const h="left";e.visibleColumns.push((e=>{const m=[];if(n){const e={id:"selection",width:28,type:"custom",accessor:"selectable",disableClick:!0,disableSortBy:!0,textAlign:"center",Header:({getToggleAllRowsSelectedProps:e,rows:l})=>{const n=l,r=n.filter((e=>{var t;return!(null===(t=e.original)||void 0===t?void 0:t.disableSelect)})),i=n&&n.length?n.filter((e=>!0===e.isSelected)).length:0;return t.jsx(j,Object.assign({},e(),{indeterminate:!0,checked:!!i||!1,color:u||o.ColorBlue.buttonBlue,onChange:()=>{i>g?r.forEach(((e,t)=>{var l;null===(l=e.toggleRowSelected)||void 0===l||l.call(e,t<g)})):i>0?r.forEach((e=>{var t;return null===(t=e.toggleRowSelected)||void 0===t?void 0:t.call(e,!1)})):r.slice(0,g).forEach((e=>{var t;return null===(t=e.toggleRowSelected)||void 0===t?void 0:t.call(e,!0)}))}}))},Cell:({row:e,checkboxIsDisabled:l,selectedFlatRows:n})=>{const r=f||l||n.length>=g&&!e.isSelected;return t.jsx(j,Object.assign({},e.getToggleRowSelectedProps(),{color:u||o.ColorBlue.buttonBlue,isDisabled:r}))}};x&&(e.sticky="left"),m.push(e)}if(!r){const e={Header:()=>t.jsx(d.default,{label:"No.",className:"text-[10px] font-normal w-full text-left text-tableResponsive-header-textAndIcon-default"}),id:"index",width:40,disableSortBy:!0,type:"custom",accessor:"index",textAlign:i||h,Cell:({row:e,rows:l,numberAddition:n=0})=>{const r=l.findIndex((t=>t.index===e.index));return t.jsx(d.default,{label:r+1+n,className:"text-xs leading-[14px] font-normal w-full text-left "})}};x&&(e.sticky="left"),m.push(e)}if(a){const e={Header:()=>t.jsx(c.default,{label:null!=l?l:"Action",variant:p[s].fontSize,fontWeight:"semi-bold",textAlign:i||h}),id:"actionRow",width:100,accessor:"action",type:"custom",disableClick:!0,disableSortBy:!0,Cell:({row:e})=>a({rowData:e.original,index:e.index})};x&&(e.sticky="left"),m.push(e)}return[...m,...e]}))},exports.tableSizeMapper=p;
|
|
20
20
|
//# sourceMappingURL=TableBase.js.map
|