@erpsquad/common 1.8.72 → 1.8.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/_virtual/index/index.esm.js +4 -2
  2. package/dist/_virtual/index/index.esm.js.map +1 -1
  3. package/dist/_virtual/index/index.esm11.js +2 -4
  4. package/dist/_virtual/index/index.esm11.js.map +1 -1
  5. package/dist/_virtual/index/index.esm2.js +2 -2
  6. package/dist/_virtual/index/index.js +1 -1
  7. package/dist/_virtual/index/index11.js +1 -1
  8. package/dist/components/action-bar/action-bar/index.esm.js +0 -1
  9. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  10. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  11. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +2 -1
  12. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
  13. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +2 -2
  14. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
  15. package/dist/components/listing/listing/index.esm.js +13 -5
  16. package/dist/components/listing/listing/index.esm.js.map +1 -1
  17. package/dist/components/listing/listing/index.js +5 -5
  18. package/dist/components/listing/listing/index.js.map +1 -1
  19. package/dist/components/searchable-select/index.esm.js +1 -1
  20. package/dist/components/searchable-select/index.esm.js.map +1 -1
  21. package/dist/components/searchable-select/index.js +1 -1
  22. package/dist/components/searchable-select/index.js.map +1 -1
  23. package/dist/hooks/index.d.ts +1 -1
  24. package/dist/hooks/index.esm.js +0 -2
  25. package/dist/hooks/index.esm.js.map +1 -1
  26. package/dist/hooks/index.js +1 -1
  27. package/dist/hooks/useDataFetcher/index.esm.js +11 -9
  28. package/dist/hooks/useDataFetcher/index.esm.js.map +1 -1
  29. package/dist/hooks/useDataFetcher/index.js +1 -1
  30. package/dist/hooks/useDataFetcher/index.js.map +1 -1
  31. package/dist/index.esm.js +86 -88
  32. package/dist/index.esm.js.map +1 -1
  33. package/dist/index.js +1 -1
  34. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
  35. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
  36. package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js.map +1 -1
  37. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
  38. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
  39. package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
  40. package/dist/node_modules/prop-types/index/index.esm.js +1 -1
  41. package/dist/node_modules/prop-types/index/index.js +1 -1
  42. package/dist/node_modules/prop-types/index/index.js.map +1 -1
  43. package/dist/src/components/listing/types.d.ts +4 -0
  44. package/dist/src/hooks/index.d.ts +1 -1
  45. package/dist/style.css +2 -2
  46. package/package.json +1 -1
  47. package/dist/hooks/useApi/index.esm.js +0 -72
  48. package/dist/hooks/useApi/index.esm.js.map +0 -1
  49. package/dist/hooks/useApi/index.js +0 -2
  50. package/dist/hooks/useApi/index.js.map +0 -1
@@ -49,7 +49,11 @@ const ListingComponent = ({
49
49
  resetState,
50
50
  setPaginationModel,
51
51
  deleteApi,
52
- storeName
52
+ storeName,
53
+ isUseFields,
54
+ customeFilter,
55
+ customFields,
56
+ isLoading: loadinState
53
57
  }) => {
54
58
  var _a, _b;
55
59
  const { t } = useTranslation();
@@ -128,10 +132,13 @@ const ListingComponent = ({
128
132
  dispatch(resetState());
129
133
  }, [dispatch, resetState]);
130
134
  const getData = useGenericDataFetcher(
131
- activePage,
135
+ (tableColumns == null ? void 0 : tableColumns.length) ? tableColumns : activePage,
132
136
  { skip, limit },
133
137
  fetchApi,
134
- `is_rental.eq=0`
138
+ customeFilter,
139
+ [],
140
+ true,
141
+ customFields
135
142
  );
136
143
  useEffect(() => {
137
144
  getData();
@@ -153,6 +160,7 @@ const ListingComponent = ({
153
160
  handleSearch: handleSearchChange,
154
161
  disabledViews,
155
162
  fields,
163
+ isUseFields,
156
164
  selectedIds: listingState.selectedRows,
157
165
  pageName,
158
166
  importModuleName,
@@ -169,7 +177,7 @@ const ListingComponent = ({
169
177
  paginationModel,
170
178
  totalPages: total,
171
179
  columnOrder: [...columnOrder, ...activePage.column_order],
172
- states: { isLoading },
180
+ states: { isLoading: loadinState || isLoading },
173
181
  onSortingChange: onSortingChange ? (sort) => {
174
182
  updatePageInfo({ sort });
175
183
  onSortingChange(sort);
@@ -199,7 +207,7 @@ const ListingComponent = ({
199
207
  destructiveActionMenu: enhancedDestructiveActions
200
208
  }
201
209
  ),
202
- !(activePage == null ? void 0 : activePage.active_view) && /* @__PURE__ */ jsx(
210
+ !(activePage == null ? void 0 : activePage.active_view) && !isLoading && /* @__PURE__ */ jsx(
203
211
  Fallback,
204
212
  {
205
213
  heading: title,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmModal as ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n activePage,\n { skip, limit },\n fetchApi,\n `is_rental.eq=0`\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["useDataFetcher","logo","AddIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmModal as ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["useDataFetcher","logo","AddIcon"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),t=require("react-i18next"),n=,/* empty css */a=;/* empty css */;/* empty css */var o=require("react-redux"),l=,/* empty css */s=,/* empty css */r=,/* empty css */d=,/* empty css */u=,/* empty css */c=,/* empty css */m=,/* empty css */g=,/* empty css */p=,/* empty css */v=,/* empty css */x=,/* empty css */f=;/* empty css */exports.default=({title:h,tableColumns:b,columnOrder:j=["mrt-row-select"],rowActionMenu:w,destructiveActionMenu:D,handleAddButton:q,searchText:_,handleSearch:M,disabledViews:A=["Kanban","Calendar","Gantt"],fields:C,selectedIds:T=[],pageName:k,importModuleName:S,showAddButton:$=!0,actionButtons:N,paginationResource:P,enablePages:R=!1,GridComponent:B,onSelectRow:y,onColumnOrdering:z,onColumnVisibility:I,onSortingChange:O,fallbackIcon:E,className:L="",onDeleteConfirm:V,deleteTitle:F,deleteDescription:G,fetchApi:H,resetState:K,setPaginationModel:J,deleteApi:Q,storeName:U})=>{var W,X;const{t:Y}=t.useTranslation(),Z=o.useDispatch(),{activePage:ee,updatePageInfo:ie}=s.usePages(),{paginationModel:te,rows:ne,isLoading:ae}=r.useAppSelector(e=>null==e?void 0:e[U]),{pageNo:oe,limit:le,totalCount:se}=te,re=ee.page_size||le,de=re*(oe-1),[ue,ce]=i.useState({selectedRows:T,itemToDelete:null,isDeleting:!1}),me=Math.ceil(se/re),ge=i.useMemo(()=>ne,[ne]),pe=e=>{ce(i=>({...i,itemToDelete:e}))},ve=i.useMemo(()=>{if(D)return D.map(e=>({...e,handleAction:e.label.toLowerCase().includes("delete")?pe:e.handleAction}))},[D]),xe=e=>{ee.page_size!=(null==e?void 0:e.limit)&&ie({page_size:e.limit}),Z(J(e))},fe=i.useCallback(()=>{Z(K())},[Z,K]),he=d.default(ee,{skip:de,limit:re},H,"is_rental.eq=0");return i.useEffect(()=>{he()},[he]),i.useEffect(()=>fe,[fe]),/* @__PURE__ */e.jsxs("section",{className:`listing-component ${L}`,children:[
2
- /* @__PURE__ */e.jsx(u.default,{title:h,data:(null==ee?void 0:ee.views)||[],setData:e=>ie({views:e}),active:ee.active_view,setActive:e=>ie({active_view:e}),handleAddButton:q,searchText:_||ee.search||"",handleSearch:e=>{ie({search:e}),xe({pageNo:1}),null==M||M(e)},disabledViews:A,fields:C,selectedIds:ue.selectedRows,pageName:k,importModuleName:S,button:$,actionBtn:N}),
3
- /* @__PURE__ */e.jsxs(e.Fragment,{children:[(null==ee?void 0:ee.active_view)===c.default.TABLE&&/* @__PURE__ */e.jsx(m.default,{rows:ge||[],columns:b,paginationModel:te,totalPages:me,columnOrder:[...j,...ee.column_order],states:{isLoading:ae},onSortingChange:O?e=>{ie({sort:e}),O(e)}:void 0,enableColumnDragging:!1,enableEditing:!1,rowActionMenu:w,destructiveActionMenu:ve,isResetRow:!1,onSelectRow:e=>{const i=e.map(e=>e.original.id);ce(e=>({...e,selectedRows:i})),null==y||y(e)},handleColumnOrdering:z?e=>{const i=e.slice(1);ie({column_order:i}),z(i)}:void 0,onColumnVisibility:I?e=>{ie({visible_columns:e}),I(e)}:void 0}),(null==ee?void 0:ee.active_view)===c.default.GRID&&B&&/* @__PURE__ */e.jsx(B,{data:ge,rowActionMenu:w,destructiveActionMenu:ve}),!(null==ee?void 0:ee.active_view)&&/* @__PURE__ */e.jsx(g.default,{heading:h,icon:E||/* @__PURE__ */e.jsx("img",{src:a.images.shippmentFallback,alt:"fallback"}),children:$&&q&&/* @__PURE__ */e.jsx(p.default,{variant:"contained",startIcon:/* @__PURE__ */e.jsx(n.default,{}),onClick:q,children:`${Y("common.add")} ${Y("common.new")}`})}),
4
- /* @__PURE__ */e.jsx(v.default,{total:me,paginationModel:{...te,limit:ee.page_size},handlePaginationModel:e=>{ee.page_size!==(null==e?void 0:e.limit)&&ie({page_size:e.limit}),xe(e)},resource:P,enablePages:R}),
5
- /* @__PURE__ */e.jsx(x.default,{open:Boolean(ue.itemToDelete),onClose:()=>{ce(e=>({...e,itemToDelete:null}))},onConfirm:async()=>{if(ue.itemToDelete){ce(e=>({...e,isDeleting:!0}));try{V?await V(ue.itemToDelete):await(async e=>{const i=await Z(Q(String(e.id)));f.default(i,()=>{l.enqueueSnackbar(` ${h}: ${null==e?void 0:e.id} ${Y("common.msg.deleted")}`),he()})})(ue.itemToDelete),ce(e=>({...e,itemToDelete:null,isDeleting:!1}))}catch(e){ce(e=>({...e,isDeleting:!1}))}}},loading:ue.isDeleting,title:F||`${Y("common.delete")} ${h}`,description:G?G(ue.itemToDelete):`${Y("common.deleteMsg")} ${h}: ${(null==(W=ue.itemToDelete)?void 0:W.id)||(null==(X=ue.itemToDelete)?void 0:X.name)||""} ?`})]})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),t=require("react-i18next"),n=,/* empty css */o=;/* empty css */;/* empty css */var l=require("react-redux"),a=,/* empty css */s=,/* empty css */d=,/* empty css */r=,/* empty css */u=,/* empty css */c=,/* empty css */m=,/* empty css */g=,/* empty css */p=,/* empty css */v=,/* empty css */x=,/* empty css */f=;/* empty css */exports.default=({title:h,tableColumns:b,columnOrder:j=["mrt-row-select"],rowActionMenu:w,destructiveActionMenu:D,handleAddButton:q,searchText:M,handleSearch:_,disabledViews:A=["Kanban","Calendar","Gantt"],fields:C,selectedIds:T=[],pageName:k,importModuleName:S,showAddButton:$=!0,actionButtons:N,paginationResource:P,enablePages:R=!1,GridComponent:B,onSelectRow:F,onColumnOrdering:y,onColumnVisibility:z,onSortingChange:I,fallbackIcon:L,className:O="",onDeleteConfirm:E,deleteTitle:V,deleteDescription:G,fetchApi:U,resetState:H,setPaginationModel:K,deleteApi:J,storeName:Q,isUseFields:W,customeFilter:X,customFields:Y,isLoading:Z})=>{var ee,ie;const{t:te}=t.useTranslation(),ne=l.useDispatch(),{activePage:oe,updatePageInfo:le}=s.usePages(),{paginationModel:ae,rows:se,isLoading:de}=d.useAppSelector(e=>null==e?void 0:e[Q]),{pageNo:re,limit:ue,totalCount:ce}=ae,me=oe.page_size||ue,ge=me*(re-1),[pe,ve]=i.useState({selectedRows:T,itemToDelete:null,isDeleting:!1}),xe=Math.ceil(ce/me),fe=i.useMemo(()=>se,[se]),he=e=>{ve(i=>({...i,itemToDelete:e}))},be=i.useMemo(()=>{if(D)return D.map(e=>({...e,handleAction:e.label.toLowerCase().includes("delete")?he:e.handleAction}))},[D]),je=e=>{oe.page_size!=(null==e?void 0:e.limit)&&le({page_size:e.limit}),ne(K(e))},we=i.useCallback(()=>{ne(H())},[ne,H]),De=r.default((null==b?void 0:b.length)?b:oe,{skip:ge,limit:me},U,X,[],!0,Y);return i.useEffect(()=>{De()},[De]),i.useEffect(()=>we,[we]),/* @__PURE__ */e.jsxs("section",{className:`listing-component ${O}`,children:[
2
+ /* @__PURE__ */e.jsx(u.default,{title:h,data:(null==oe?void 0:oe.views)||[],setData:e=>le({views:e}),active:oe.active_view,setActive:e=>le({active_view:e}),handleAddButton:q,searchText:M||oe.search||"",handleSearch:e=>{le({search:e}),je({pageNo:1}),null==_||_(e)},disabledViews:A,fields:C,isUseFields:W,selectedIds:pe.selectedRows,pageName:k,importModuleName:S,button:$,actionBtn:N}),
3
+ /* @__PURE__ */e.jsxs(e.Fragment,{children:[(null==oe?void 0:oe.active_view)===c.default.TABLE&&/* @__PURE__ */e.jsx(m.default,{rows:fe||[],columns:b,paginationModel:ae,totalPages:xe,columnOrder:[...j,...oe.column_order],states:{isLoading:Z||de},onSortingChange:I?e=>{le({sort:e}),I(e)}:void 0,enableColumnDragging:!1,enableEditing:!1,rowActionMenu:w,destructiveActionMenu:be,isResetRow:!1,onSelectRow:e=>{const i=e.map(e=>e.original.id);ve(e=>({...e,selectedRows:i})),null==F||F(e)},handleColumnOrdering:y?e=>{const i=e.slice(1);le({column_order:i}),y(i)}:void 0,onColumnVisibility:z?e=>{le({visible_columns:e}),z(e)}:void 0}),(null==oe?void 0:oe.active_view)===c.default.GRID&&B&&/* @__PURE__ */e.jsx(B,{data:fe,rowActionMenu:w,destructiveActionMenu:be}),!(null==oe?void 0:oe.active_view)&&!de&&/* @__PURE__ */e.jsx(g.default,{heading:h,icon:L||/* @__PURE__ */e.jsx("img",{src:o.images.shippmentFallback,alt:"fallback"}),children:$&&q&&/* @__PURE__ */e.jsx(p.default,{variant:"contained",startIcon:/* @__PURE__ */e.jsx(n.default,{}),onClick:q,children:`${te("common.add")} ${te("common.new")}`})}),
4
+ /* @__PURE__ */e.jsx(v.default,{total:xe,paginationModel:{...ae,limit:oe.page_size},handlePaginationModel:e=>{oe.page_size!==(null==e?void 0:e.limit)&&le({page_size:e.limit}),je(e)},resource:P,enablePages:R}),
5
+ /* @__PURE__ */e.jsx(x.default,{open:Boolean(pe.itemToDelete),onClose:()=>{ve(e=>({...e,itemToDelete:null}))},onConfirm:async()=>{if(pe.itemToDelete){ve(e=>({...e,isDeleting:!0}));try{E?await E(pe.itemToDelete):await(async e=>{const i=await ne(J(String(e.id)));f.default(i,()=>{a.enqueueSnackbar(` ${h}: ${null==e?void 0:e.id} ${te("common.msg.deleted")}`),De()})})(pe.itemToDelete),ve(e=>({...e,itemToDelete:null,isDeleting:!1}))}catch(e){ve(e=>({...e,isDeleting:!1}))}}},loading:pe.isDeleting,title:V||`${te("common.delete")} ${h}`,description:G?G(pe.itemToDelete):`${te("common.deleteMsg")} ${h}: ${(null==(ee=pe.itemToDelete)?void 0:ee.id)||(null==(ie=pe.itemToDelete)?void 0:ie.name)||""} ?`})]})]})};
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmModal as ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n activePage,\n { skip, limit },\n fetchApi,\n `is_rental.eq=0`\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["title","tableColumns","columnOrder","rowActionMenu","destructiveActionMenu","handleAddButton","searchText","handleSearch","disabledViews","fields","selectedIds","pageName","importModuleName","showAddButton","actionButtons","paginationResource","enablePages","GridComponent","onSelectRow","onColumnOrdering","onColumnVisibility","onSortingChange","fallbackIcon","className","onDeleteConfirm","deleteTitle","deleteDescription","fetchApi","resetState","setPaginationModel","deleteApi","storeName","t","useTranslation","dispatch","useDispatch","activePage","updatePageInfo","usePages","paginationModel","rows","isLoading","useAppSelector","store","pageNo","limit","pLimit","totalCount","page_size","skip","listingState","setListingState","useState","selectedRows","itemToDelete","isDeleting","total","Math","ceil","tableRows","useMemo","handleDeleteClick","item","prev","enhancedDestructiveActions","map","action","handleAction","label","toLowerCase","includes","handlePaginationModel","model","cleanUp","useCallback","getData","useDataFetcher","useEffect","jsxs","children","jsx","ActionBar","data","views","setData","active","active_view","setActive","tab","search","button","actionBtn","Fragment","viewTypes","TABLE","MaterialTable","columns","totalPages","column_order","states","sort","enableColumnDragging","enableEditing","isResetRow","selectedRowIds","row","original","id","handleColumnOrdering","colOrder","newOrder","slice","visible_columns","GRID","Fallback","heading","icon","src","logo","shippmentFallback","alt","Button","variant","startIcon","AddIcon","onClick","Footer","resource","ConfirmPopUp","open","Boolean","onClose","onConfirm","async","requestToDelete","response","String","apiHelper","enqueueSnackbar","deleteRecord","error","loading","description","_a","_b","name"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/listing/listing.tsx"],"sourcesContent":["import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmModal as ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => rows, [rows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || []}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n"],"names":["title","tableColumns","columnOrder","rowActionMenu","destructiveActionMenu","handleAddButton","searchText","handleSearch","disabledViews","fields","selectedIds","pageName","importModuleName","showAddButton","actionButtons","paginationResource","enablePages","GridComponent","onSelectRow","onColumnOrdering","onColumnVisibility","onSortingChange","fallbackIcon","className","onDeleteConfirm","deleteTitle","deleteDescription","fetchApi","resetState","setPaginationModel","deleteApi","storeName","isUseFields","customeFilter","customFields","isLoading","loadinState","t","useTranslation","dispatch","useDispatch","activePage","updatePageInfo","usePages","paginationModel","rows","useAppSelector","store","pageNo","limit","pLimit","totalCount","page_size","skip","listingState","setListingState","useState","selectedRows","itemToDelete","isDeleting","total","Math","ceil","tableRows","useMemo","handleDeleteClick","item","prev","enhancedDestructiveActions","map","action","handleAction","label","toLowerCase","includes","handlePaginationModel","model","cleanUp","useCallback","getData","useDataFetcher","length","useEffect","jsxs","children","jsx","ActionBar","data","views","setData","active","active_view","setActive","tab","search","button","actionBtn","Fragment","viewTypes","TABLE","MaterialTable","columns","totalPages","column_order","states","sort","enableColumnDragging","enableEditing","isResetRow","selectedRowIds","row","original","id","handleColumnOrdering","colOrder","newOrder","slice","visible_columns","GRID","Fallback","heading","icon","src","logo","shippmentFallback","alt","Button","variant","startIcon","AddIcon","onClick","Footer","resource","ConfirmPopUp","open","Boolean","onClose","onConfirm","async","requestToDelete","response","String","apiHelper","enqueueSnackbar","deleteRecord","error","loading","description","_a","_b","name"],"mappings":"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"}
@@ -378,7 +378,7 @@ const SearchableSelect = (props) => {
378
378
  hasOptions = true;
379
379
  }
380
380
  return hasOptions;
381
- }, [filteredOptions, value, multiple, getSelectedData]);
381
+ }, [filteredOptions, value, multiple]);
382
382
  const fetchIdOptions = useCallback(async () => {
383
383
  if (open) return;
384
384
  if (await setSelectedData()) return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from \"../hooks/useLangauge\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={option?.value}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer) {\n items.push(\n <Box key=\"footer\">\n <Divider flexItem />\n <MenuItem sx={{ gap: 1 }} onClick={field.onFooterClick}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlredyLoaded, setIsAlredyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n if (!searchTerm) return options || [];\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n return sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? dynamicOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [dynamicOptions, selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlredyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlredyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlredyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlredyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlredyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n return hasOptions;\n }, [filteredOptions, value, multiple, getSelectedData]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await setSelectedData()) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlredyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlredyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const selectedData = options?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={placeholder}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlredyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["value","filteredOptions","label","React","error"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from \"../hooks/useLangauge\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={option?.value}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer) {\n items.push(\n <Box key=\"footer\">\n <Divider flexItem />\n <MenuItem sx={{ gap: 1 }} onClick={field.onFooterClick}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlredyLoaded, setIsAlredyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n if (!searchTerm) return options || [];\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n return sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? dynamicOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [dynamicOptions, selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlredyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlredyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlredyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlredyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlredyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n\n return hasOptions;\n }, [filteredOptions, value, multiple,]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await setSelectedData()) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const condition = (multiple ? fValue?.length > 0 : fValue) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlredyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlredyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const selectedData = options?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={placeholder}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlredyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["value","filteredOptions","label","React","error"],"mappings":"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"}
@@ -9,6 +9,6 @@
9
9
  /* @__PURE__ */e.jsxs(d.default,{sx:{gap:1},onClick:s.onFooterClick,children:[
10
10
  /* @__PURE__ */e.jsx(g.default,{fontSize:"small"}),
11
11
  /* @__PURE__ */e.jsxs(n.Typography,{type:"s4",color:"theme.secondary.1000",children:["Create New ",s.label]})]})]},"footer")),y.length&&(1!=y.length||a)||y.push(
12
- /* @__PURE__ */e.jsx(d.default,{disabled:!0,children:"No data available"},"no-data")),y};exports.default=i=>{const{labelId:n,label:m,value:g,onChange:x,options:C,multiple:A=!1,size:S="small",searchPlaceholder:M,placeholder:k,name:w,defaultValue:q,apiType:L,isInternal:I=!1,autoFocus:O,error:_,disabled:B,customeFilter:N,attributes:P,getSelectedData:E,disabledIds:J,onChipRemove:T,selectedLabel:F,is_loading:z,customStyle:D={},CustomDropDownIcon:K,labelKey:V,valueKey:H,inputStyle:W,hasParent:G=!1,sortOrder:R="id:-1",handleChange:$,enable_footer:Q=!1,onFooterClick:U,showCancelButton:X=!0,customFetchApi:Y}=i,[Z,ee]=l.useState(""),[le,ae]=l.useState(!1),[ie,ne]=l.useState([]),[re,te]=l.useState([]),[oe,se]=l.useState(!1),[ue,de]=l.useState(!1),[ce,he]=l.useState(!1),[ve,pe]=l.useState(!1),[fe,ye]=l.useState(null),{t:me}=u.useTranslation(),[ge,xe]=l.useState({page:1,hasMore:!0,isLoadingMore:!1,total:0}),{isRtl:be}=s.useLanguage(),je=25,Ce=l.useMemo(()=>I||!L&&!Y,[I,L,Y]),Ae=l.useCallback((e,l)=>{if(!e)return C||[];const a=e.toLowerCase(),i=G?(null==C?void 0:C.reduce((e,l)=>{var i;const n=null==(i=l.options)?void 0:i.filter(e=>{const l=b.default.isValidElement(e.label)?e.searchLabel:String(e.label);return null==l?void 0:l.toLowerCase().includes(a)});return(null==n?void 0:n.length)&&e.push({...l,options:n}),e},[]))||[]:(null==C?void 0:C.filter(e=>{const l=b.default.isValidElement(e.label)?e.searchLabel:String(e.label);return null==l?void 0:l.toLowerCase().includes(a)}))||[];return ke(i,l)},[C,G]),Se=()=>{null==x||x({target:{value:A?[]:null}}),E&&"function"==typeof E&&E(null)},Me=l.useCallback(e=>[...new Map(null==e?void 0:e.map(e=>[e.value,e])).values()],[]),ke=l.useCallback((e,l)=>{const a=Array.isArray(l)?l:[l];return r.sortBy(e,e=>{const l=a.indexOf(e.id||e.value);return-1===l?1/0:l})},[]),we=l.useMemo(()=>Ce?Ae(Z,g):ke(Me([...ie,...re]),g),[Z,ie,C,g,Ce,re,Ae,ke,Me]),qe=l.useCallback(e=>{const{scrollTop:l,scrollHeight:a,clientHeight:i}=e.currentTarget;if(a-l<=i+10&&ge.hasMore&&!ge.isLoadingMore&&!Ce){const e=ge.page+1;Ie(Z,N,e,!0)}},[ge.hasMore,ge.isLoadingMore,ge.page,Ce,Z,JSON.stringify(N)]),Le=l.useCallback((e,l=!1)=>{const a=Me([...l?ie:re,...e]);ne(a)},[ie,re,Me]),Ie=l.useCallback(async(e="",l=N,a=1,i=!1)=>{if(!L&&!Y)return[];ae(!0),a>1&&xe(e=>({...e,isLoadingMore:!0}));try{let n=[],r={};if(Y){const i=await Y({search:e,filters:l,limit:je,skip:(a-1)*je,select:P,order:R});n=(null==i?void 0:i.data)||[],r=(null==i?void 0:i.pagination)||{}}else{const i=await t.fetchApi({apiKey:L,filters:{limit:je,skip:(a-1)*je,search:e,filters:l,select:P,order:R},labelKey:V,valueKey:H});n=(null==i?void 0:i.data)||[],r=(null==i?void 0:i.pagination)||{}}return n&&Array.isArray(n)&&(Le(n,i),xe(e=>({...e,page:a,hasMore:((null==r?void 0:r.totalCount)||0)>a*je,total:(null==r?void 0:r.totalCount)||0,isLoadingMore:!1})),(null==n?void 0:n.length)>0&&Be()),n||[]}catch(n){return xe(e=>({...e,isLoadingMore:!1})),[]}finally{ae(!1)}},[L,Y,P,R,je,Le]),Oe=l.useMemo(()=>r.debounce(async e=>{le||(e||Ce||!ce||(xe({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await Ie("",N,1,!1)),(null==e?void 0:e.length)>1&&!Ce&&(xe({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await Ie(e,N,1,!1)))},700),[Ce,ce,JSON.stringify(N)]),_e=l.useCallback(async()=>{!(JSON.stringify(N)!==JSON.stringify(fe))||Ce||oe||(ye(N),ne([]),se(!1),xe({page:1,hasMore:!0,isLoadingMore:!1,total:0})),Ce||oe||(await Ie(Z,N,1,!1),se(!0))},[JSON.stringify(N),Ce,oe]),Be=l.useCallback(()=>{let e=!1;const l=null==we?void 0:we.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g);return Array.isArray(l)&&(null==l?void 0:l.length)>0&&(null==E||E(A?l:l[0]),e=!0),e},[we,g,A,E]),Ne=l.useCallback(async()=>{if(ve)return;if(await Be())return;const e=A?g&&(null==g?void 0:g.filter(e=>Boolean(Number(e)))):g||null;(A?(null==e?void 0:e.length)>0:e)&&!Ce&&(de(!0),await Ie("",{...N,"&id.in":e},1,!1),de(!1))},[ve,g,JSON.stringify(N)]),Pe=A?Array.isArray(g)&&g.length>0:null!=g&&""!==g;return l.useEffect(()=>(ve&&Oe(Z),()=>Oe.cancel()),[Z,JSON.stringify(N),ve,oe,Oe]),l.useEffect(()=>{Be()},[Be]),l.useEffect(()=>{Ne()},[Ne]),l.useEffect(()=>{ve&&_e()},[ve,_e]),l.useEffect(()=>{const e=JSON.stringify(N)!==JSON.stringify(fe);N&&e&&se(!1)},[N,fe]),l.useEffect(()=>{if(g&&!ve){const e=(null==C?void 0:C.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g))||[];te(e)}te(null==we?void 0:we.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g))},[g,ve,C,A]),/* @__PURE__ */e.jsxs(a.default,{labelId:n,name:w,defaultValue:q||(A?[]:""),placeholder:k,className:"filter-select",size:S,onOpen:()=>pe(!0),onClose:()=>{pe(!1),(null==Z?void 0:Z.length)>0&&se(!1),he(!1),ee("")},onChange:e=>{const{value:l}=e.target;if(A&&Array.isArray(l)&&0==(null==l?void 0:l.filter(e=>e).length)||!l)return;const a=null==we?void 0:we.filter(e=>A?null==l?void 0:l.includes(null==e?void 0:e.value):(null==e?void 0:e.value)===l);null==x||x(e,A?a:null==a?void 0:a[0])},showCancelButton:X,multiple:A,label:me(m),fullWidth:!0,displayEmpty:!0,autoFocus:O,error:Boolean(_),disabled:B,value:ue?A?[]:"":(null==g?void 0:g.id)||g||(A?[]:""),searchPlaceholder:M,CustomDropdownIcon:K,sx:A&&(null==g?void 0:g.length)?{...D,"& .MuiSelect-select":{padding:"5.5px !important"}}:D,MenuProps:{PaperProps:{onScroll:qe,style:{maxHeight:295,maxWidth:250}}},input:B?void 0:/* @__PURE__ */e.jsx(v.default,{label:"",sx:W,endAdornment:/* @__PURE__ */e.jsx(p.default,{position:"end",children:le||z?/* @__PURE__ */e.jsx(h.default,{size:20,sx:{mr:3,color:"#4AC08C"}}):X&&Pe&&/* @__PURE__ */e.jsx(f.default,{"aria-label":"clear selection",onClick:Se,edge:"end",sx:be?{ml:2.5}:{mr:1.5},size:"small",children:/* @__PURE__ */e.jsx(y.Close,{fontSize:"small",color:"theme.primary.800"})})})}),renderValue:l=>{var a,i;/* @__PURE__ */
12
+ /* @__PURE__ */e.jsx(d.default,{disabled:!0,children:"No data available"},"no-data")),y};exports.default=i=>{const{labelId:n,label:m,value:g,onChange:x,options:C,multiple:A=!1,size:S="small",searchPlaceholder:M,placeholder:k,name:w,defaultValue:q,apiType:L,isInternal:I=!1,autoFocus:O,error:_,disabled:B,customeFilter:N,attributes:P,getSelectedData:E,disabledIds:J,onChipRemove:T,selectedLabel:F,is_loading:z,customStyle:D={},CustomDropDownIcon:K,labelKey:V,valueKey:H,inputStyle:W,hasParent:G=!1,sortOrder:R="id:-1",handleChange:$,enable_footer:Q=!1,onFooterClick:U,showCancelButton:X=!0,customFetchApi:Y}=i,[Z,ee]=l.useState(""),[le,ae]=l.useState(!1),[ie,ne]=l.useState([]),[re,te]=l.useState([]),[oe,se]=l.useState(!1),[ue,de]=l.useState(!1),[ce,he]=l.useState(!1),[ve,pe]=l.useState(!1),[fe,ye]=l.useState(null),{t:me}=u.useTranslation(),[ge,xe]=l.useState({page:1,hasMore:!0,isLoadingMore:!1,total:0}),{isRtl:be}=s.useLanguage(),je=25,Ce=l.useMemo(()=>I||!L&&!Y,[I,L,Y]),Ae=l.useCallback((e,l)=>{if(!e)return C||[];const a=e.toLowerCase(),i=G?(null==C?void 0:C.reduce((e,l)=>{var i;const n=null==(i=l.options)?void 0:i.filter(e=>{const l=b.default.isValidElement(e.label)?e.searchLabel:String(e.label);return null==l?void 0:l.toLowerCase().includes(a)});return(null==n?void 0:n.length)&&e.push({...l,options:n}),e},[]))||[]:(null==C?void 0:C.filter(e=>{const l=b.default.isValidElement(e.label)?e.searchLabel:String(e.label);return null==l?void 0:l.toLowerCase().includes(a)}))||[];return ke(i,l)},[C,G]),Se=()=>{null==x||x({target:{value:A?[]:null}}),E&&"function"==typeof E&&E(null)},Me=l.useCallback(e=>[...new Map(null==e?void 0:e.map(e=>[e.value,e])).values()],[]),ke=l.useCallback((e,l)=>{const a=Array.isArray(l)?l:[l];return r.sortBy(e,e=>{const l=a.indexOf(e.id||e.value);return-1===l?1/0:l})},[]),we=l.useMemo(()=>Ce?Ae(Z,g):ke(Me([...ie,...re]),g),[Z,ie,C,g,Ce,re,Ae,ke,Me]),qe=l.useCallback(e=>{const{scrollTop:l,scrollHeight:a,clientHeight:i}=e.currentTarget;if(a-l<=i+10&&ge.hasMore&&!ge.isLoadingMore&&!Ce){const e=ge.page+1;Ie(Z,N,e,!0)}},[ge.hasMore,ge.isLoadingMore,ge.page,Ce,Z,JSON.stringify(N)]),Le=l.useCallback((e,l=!1)=>{const a=Me([...l?ie:re,...e]);ne(a)},[ie,re,Me]),Ie=l.useCallback(async(e="",l=N,a=1,i=!1)=>{if(!L&&!Y)return[];ae(!0),a>1&&xe(e=>({...e,isLoadingMore:!0}));try{let n=[],r={};if(Y){const i=await Y({search:e,filters:l,limit:je,skip:(a-1)*je,select:P,order:R});n=(null==i?void 0:i.data)||[],r=(null==i?void 0:i.pagination)||{}}else{const i=await t.fetchApi({apiKey:L,filters:{limit:je,skip:(a-1)*je,search:e,filters:l,select:P,order:R},labelKey:V,valueKey:H});n=(null==i?void 0:i.data)||[],r=(null==i?void 0:i.pagination)||{}}return n&&Array.isArray(n)&&(Le(n,i),xe(e=>({...e,page:a,hasMore:((null==r?void 0:r.totalCount)||0)>a*je,total:(null==r?void 0:r.totalCount)||0,isLoadingMore:!1})),(null==n?void 0:n.length)>0&&Be()),n||[]}catch(n){return xe(e=>({...e,isLoadingMore:!1})),[]}finally{ae(!1)}},[L,Y,P,R,je,Le]),Oe=l.useMemo(()=>r.debounce(async e=>{le||(e||Ce||!ce||(xe({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await Ie("",N,1,!1)),(null==e?void 0:e.length)>1&&!Ce&&(xe({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await Ie(e,N,1,!1)))},700),[Ce,ce,JSON.stringify(N)]),_e=l.useCallback(async()=>{!(JSON.stringify(N)!==JSON.stringify(fe))||Ce||oe||(ye(N),ne([]),se(!1),xe({page:1,hasMore:!0,isLoadingMore:!1,total:0})),Ce||oe||(await Ie(Z,N,1,!1),se(!0))},[JSON.stringify(N),Ce,oe]),Be=l.useCallback(()=>{let e=!1;const l=null==we?void 0:we.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g);return Array.isArray(l)&&(null==l?void 0:l.length)>0&&(null==E||E(A?l:l[0]),e=!0),e},[we,g,A]),Ne=l.useCallback(async()=>{if(ve)return;if(await Be())return;const e=A?g&&(null==g?void 0:g.filter(e=>Boolean(Number(e)))):g||null;(A?(null==e?void 0:e.length)>0:e)&&!Ce&&(de(!0),await Ie("",{...N,"&id.in":e},1,!1),de(!1))},[ve,g,JSON.stringify(N)]),Pe=A?Array.isArray(g)&&g.length>0:null!=g&&""!==g;return l.useEffect(()=>(ve&&Oe(Z),()=>Oe.cancel()),[Z,JSON.stringify(N),ve,oe,Oe]),l.useEffect(()=>{Be()},[Be]),l.useEffect(()=>{Ne()},[Ne]),l.useEffect(()=>{ve&&_e()},[ve,_e]),l.useEffect(()=>{const e=JSON.stringify(N)!==JSON.stringify(fe);N&&e&&se(!1)},[N,fe]),l.useEffect(()=>{if(g&&!ve){const e=(null==C?void 0:C.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g))||[];te(e)}te(null==we?void 0:we.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g))},[g,ve,C,A]),/* @__PURE__ */e.jsxs(a.default,{labelId:n,name:w,defaultValue:q||(A?[]:""),placeholder:k,className:"filter-select",size:S,onOpen:()=>pe(!0),onClose:()=>{pe(!1),(null==Z?void 0:Z.length)>0&&se(!1),he(!1),ee("")},onChange:e=>{const{value:l}=e.target;if(A&&Array.isArray(l)&&0==(null==l?void 0:l.filter(e=>e).length)||!l)return;const a=null==we?void 0:we.filter(e=>A?null==l?void 0:l.includes(null==e?void 0:e.value):(null==e?void 0:e.value)===l);null==x||x(e,A?a:null==a?void 0:a[0])},showCancelButton:X,multiple:A,label:me(m),fullWidth:!0,displayEmpty:!0,autoFocus:O,error:Boolean(_),disabled:B,value:ue?A?[]:"":(null==g?void 0:g.id)||g||(A?[]:""),searchPlaceholder:M,CustomDropdownIcon:K,sx:A&&(null==g?void 0:g.length)?{...D,"& .MuiSelect-select":{padding:"5.5px !important"}}:D,MenuProps:{PaperProps:{onScroll:qe,style:{maxHeight:295,maxWidth:250}}},input:B?void 0:/* @__PURE__ */e.jsx(v.default,{label:"",sx:W,endAdornment:/* @__PURE__ */e.jsx(p.default,{position:"end",children:le||z?/* @__PURE__ */e.jsx(h.default,{size:20,sx:{mr:3,color:"#4AC08C"}}):X&&Pe&&/* @__PURE__ */e.jsx(f.default,{"aria-label":"clear selection",onClick:Se,edge:"end",sx:be?{ml:2.5}:{mr:1.5},size:"small",children:/* @__PURE__ */e.jsx(y.Close,{fontSize:"small",color:"theme.primary.800"})})})}),renderValue:l=>{var a,i;/* @__PURE__ */
13
13
  return e.jsx(e.Fragment,{children:Array.isArray(l)?/* @__PURE__ */e.jsx(o.default,{selectedLabel:F,data:(i=l,Array.isArray(i)&&(null==i?void 0:i.length)>0&&(null==i?void 0:i.filter(e=>e))),placeholder:k,onDelete:T,disabled:B,chipProps:{sx:{bgcolor:"theme.primary.100",border:0,"& .MuiTypography-body1":{color:"theme.primary.800",fontWeight:"500"}}}}):Array.isArray(we)&&(null==we?void 0:we.length)>0&&(null==(a=null==we?void 0:we.find(e=>(null==e?void 0:e.value)==g))?void 0:a.label)||l||k})},handleSearch:e=>{ee(e),he(!0)},children:[j({options:we,multiple:Boolean(A),placeholder:k,values:g,with_checkboxes:!0,field:{enable_footer:Q,onFooterClick:U,label:m},disabledIds:J,handleClear:Se,handleChange:$,hasParent:G}),ge.isLoadingMore&&/* @__PURE__ */e.jsx(d.default,{disabled:!0,children:/* @__PURE__ */e.jsx(c.default,{sx:{display:"flex",justifyContent:"center",width:"100%"},children:/* @__PURE__ */e.jsx(h.default,{size:20})})})]})};
14
14
  //# sourceMappingURL=index.js.map