@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.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":["generateMenuItems","options","multiple","placeholder","with_checkboxes","values","field","disabledIds","handleClear","handleChange","hasParent","itemDisabled","ls","includes","items","push","jsx","MenuItem","disabled","value","sx","opacity","height","p","m","children","Typography","type","color","selectedValues","Array","isArray","filter","isAllOptionsSelected","parentValue","childOptions","childValues","map","child","valueArray","every","childValue","isSomeOptionsSelected","some","length","forEach","option","Boolean","className","isGroup","onClick","jsxs","Box","display","gap","Checkbox","checked","indexOf","indeterminate","onChange","updatedValues","Set","handleParentChange","label","opt","pl","String","enable_footer","Divider","flexItem","onFooterClick","Add","fontSize","props","labelId","size","searchPlaceholder","name","defaultValue","apiType","isInternal","autoFocus","error","customeFilter","attributes","getSelectedData","onChipRemove","selectedLabel","is_loading","customStyle","CustomDropDownIcon","labelKey","valueKey","inputStyle","sortOrder","showCancelButton","customFetchApi","searchQuery","setSearchQuery","useState","loading","setLoading","dynamicOptions","setOptions","selectedOptions","setSelectedOptions","isAlredyLoaded","setIsAlredyLoaded","initailLoading","setInitialLoading","searchInitiate","setSearchInitiate","open","setOpen","prevFilter","setPrevFilter","t","useTranslation","pagination","setPagination","page","hasMore","isLoadingMore","total","isRtl","useLanguage","limit","isInternalOptions","useMemo","searchOptionsLocally","useCallback","searchTerm","lowercasedSearchTerm","toLowerCase","filteredOptions","reduce","acc","searchedOptions","_a","item","React","isValidElement","searchLabel","sortBySelectedValues","target","getUniqueOptions","data","Map","arrayToSort","sortBy","index","id","Infinity","handleScroll","event","scrollTop","scrollHeight","clientHeight","currentTarget","nextPage","fetchOptions","JSON","stringify","updateOptions","newOptions","append","uniqueOptions","async","filters","prev","paginationResult","response","search","skip","select","order","fetchApi","apiKey","totalCount","setSelectedData","debounceSearch","debounce","initialFetch","hasOptions","isInOptions","i","fetchIdOptions","fValue","v","Number","hasValue","useEffect","cancel","condition","selectedData","Select","onOpen","onClose","selected","fullWidth","displayEmpty","CustomDropdownIcon","padding","MenuProps","PaperProps","onScroll","style","maxHeight","maxWidth","input","OutlinedInput","endAdornment","InputAdornment","position","CircularProgress","mr","IconButton","edge","ml","Close","renderValue","selectOptions","Fragment","ChipOrPlaceholder","onDelete","chipProps","bgcolor","border","fontWeight","find","handleSearch","text","justifyContent","width"],"mappings":"msCA2GA,MAAMA,EAAoB,EACtBC,UACAC,WACAC,cACAC,kBACAC,SACAC,QACAC,cACAC,cACAC,eACAC,aAAY,MAEZ,MAAMC,EAAgBC,GAAY,MAAAL,OAAA,EAAAA,EAAaM,SAASD,GAClDE,EAA8B,GAE/BZ,GACDY,EAAMC;iBACFC,IAACC,EAAAA,QAAA,CAASC,UAAQ,EAACC,MAAM,GAAqBC,GAAI,CAAEC,QAAS,eAAgBC,OAAQ,eAAgBC,EAAG,eAAgBC,EAAG,gBACvHC,wBAAAT,EAAAA,IAACU,EAAAA,WAAA,CAAWC,KAAK,KAAKC,MAAM,uBACxBH,wBAAAT,EAAAA,IAAC,KAAA,CAAIS,SAAAtB,OAFmB,gBAQxC,MAAM0B,EAAiBC,MAAMC,QAAQ1B,SAAUA,WAAQ2B,OAAQb,GAAUA,GAAS,GAe5Ec,EAAuB,CAACC,EAAqBC,KAC/C,MAAMC,EAAcD,EAAaE,IAAKC,GAAUA,EAAMnB,OAChDoB,EAAaT,MAAMC,QAAQF,GAAkBA,EAAiB,CAACA,GACrE,OAAOO,EAAYI,MAAOC,GAAeF,EAAW1B,SAAS4B,KAG3DC,EAAyBP,IAC3B,MAAMC,EAAcD,EAAaE,IAAKC,GAAUA,EAAMnB,OAChDoB,EAAaT,MAAMC,QAAQF,GAAkBA,EAAiB,CAACA,GACrE,OAAOO,EAAYO,KAAMF,GAAeF,EAAW1B,SAAS4B,KAwGhE,OArGAX,MAAMC,QAAQ9B,KAAY,MAAAA,OAAA,EAAAA,EAAS2C,QAAS,IAAK,MAAA3C,GAAAA,EAAS4C,QAASC,IAC/DhC,EAAMC;eACFC,EAAAA,IAACC,EAAAA,QAAA,CACGE,MAAO,MAAA2B,OAAA,EAAAA,EAAQ3B,MAEfD,SAAU6B,QAAQ,MAAAD,OAAA,EAAAA,EAAQ5B,WAAaP,QAAamC,WAAQ3B,OAC5D6B,WAAW,MAAAF,OAAA,EAAAA,EAAQG,SAAU,yBAA2B,GACxDC,QAAS,KACiB,IAAlB,MAAA7C,OAAA,EAAAA,EAAQuC,SACRpC,KAIRiB,wBAAA0B,EAAAA,KAACC,WAAIhC,GAAI,CAAEiC,QAAS,OAAQC,IAAK,GAC5B7B,SAAA,CAAAvB,GAAYE,kBACTY,EAAAA,IAACuC,EAAAA,QAAA,CACGC,QACI9C,EACMuB,EAAqBa,EAAO3B,MAAO2B,EAAO7C,SAAW,IACrD8C,QAAQjB,MAAMC,QAAQ1B,WAAWA,WAAQoD,QAAQ,MAAAX,OAAA,EAAAA,EAAQ3B,SAAS,GAE5EuC,cACIhD,GAAagC,EAAsBI,EAAO7C,SAAW,IAEzD0D,SAAU,IACNjD,EAjDD,EAACwB,EAAqBC,KAC7C,MAAMC,EAAcD,EAAaE,IAAKC,GAAUA,EAAMnB,OAChDoB,EAAaT,MAAMC,QAAQF,GAAkBA,EAAiB,CAACA,GAG/D+B,EADmBrB,EAAW1B,SAASqB,GAEvCK,EAAWP,OAAQb,GAAUA,IAAUe,IAAgBE,EAAYvB,SAASM,IAC5E,mBAAI,IAAI0C,IAAI,IAAItB,EAAYL,KAAgBE,KAElD,MAAA3B,GAAAA,EAAemD,IAyCeE,CAAmBhB,EAAO3B,MAAO2B,EAAO7C,SAAW,IACnD,MAAAQ,OAAA,EAAAA,EAAeqC,EAAO3B;eAIxCH,EAAAA,IAACU,EAAAA,WAAA,CACGC,KAAK,KACLC,MAAM,uBACNsB,QAAS,IAAM,MAAAzC,OAAA,EAAAA,EAAeqC,EAAO3B,OAEpCM,SAAA,MAAAqB,OAAA,EAAAA,EAAQiB,YAhCZ,MAAAjB,OAAA,EAAAA,EAAQ3B,eAuCjB2B,WAAQG,UAAWnB,MAAMC,QAAQ,MAAAe,OAAA,EAAAA,EAAQ7C,UACzC6C,EAAO7C,QAAQ4C,QAASmB,IACpBlD,EAAMC;eACFC,EAAAA,IAACC,EAAAA,QAAA,CACGE,MAAO6C,EAAI7C,MACXD,SAAU6B,QAAQiB,EAAI9C,WAAaP,EAAaqD,EAAI7C,OACpDC,GAAI,CAAE6C,GAAI,GACVf,QAAS,KACiB,IAAlB,MAAA7C,OAAA,EAAAA,EAAQuC,SACRpC,KAKRiB,wBAAA0B,EAAAA,KAACC,WAAIhC,GAAI,CAAEiC,QAAS,OAAQC,IAAK,GAC5B7B,SAAA,CAAAvB,GAAYE,kBACTY,EAAAA,IAACuC,EAAAA,QAAA,CACGC,QAAST,QAAQjB,MAAMC,QAAQ1B,KAAW,MAAAA,OAAA,EAAAA,EAAQoD,QAAQO,EAAI7C,SAAS;eAG/EH,EAAAA,IAACU,EAAAA,WAAA,CACGC,KAAK,KACLC,MAAM,uBACNsB,QAAS,IAAM,MAAAzC,OAAA,EAAAA,EAAeyD,OAAOF,EAAI7C,QAExCM,SAAa,qBAATsC,MAA6B,iCAAmCC,EAAID,OAASC,EAAI7C,YAbzF,GAAG2B,EAAO3B,SAAS6C,EAAI7C,eAuB5Cb,EAAM6D,eACNrD,EAAMC;sBACDqC,EAAAA,QAAA,CACG3B,SAAA;iBAAAT,IAACoD,EAAAA,QAAA,CAAQC,UAAQ;eACjBlB,EAAAA,KAAClC,EAAAA,SAASG,GAAI,CAAEkC,IAAK,GAAKJ,QAAS5C,EAAMgE,cACrC7C,SAAA;iBAAAT,IAACuD,EAAAA,QAAA,CAAIC,SAAS;eACdrB,EAAAA,KAACzB,EAAAA,WAAA,CAAWC,KAAK,KAAKC,MAAM,uBAAuBH,SAAA,CAAA,cACnCnB,EAAMyD,cALrB,WAaZjD,EAAM8B,SAA2B,GAAhB9B,EAAM8B,QAAgB1C,IACxCY,EAAMC;eACFC,EAAAA,IAACC,EAAAA,QAAA,CAASC,UAAQ,EAAeO,8BAAV,YAMxBX,mBAGgD2D,IACvD,MAAMC,QACFA,EAAAX,MACAA,EAAA5C,MACAA,EAAAwC,SACAA,EAAA1D,QACAA,EAAAC,SACAA,GAAW,EAAAyE,KACXA,EAAO,QAAAC,kBACPA,EAAAzE,YACAA,EAAA0E,KACAA,EAAAC,aACAA,EAAAC,QACAA,EAAAC,WACAA,GAAa,EAAAC,UACbA,EAAAC,MACAA,EAAAhE,SACAA,EAAAiE,cACAA,EAAAC,WACAA,EAAAC,gBACAA,EAAA9E,YACAA,EAAA+E,aACAA,EAAAC,cACAA,EAAAC,WACAA,EAAAC,YACAA,EAAc,CAAA,EAAAC,mBACdA,EAAAC,SACAA,EAAAC,SACAA,EAAAC,WACAA,EAAAnF,UACAA,GAAY,EAAAoF,UACZA,EAAY,QAAArF,aACZA,EAAA0D,cACAA,GAAgB,EAAAG,cAChBA,EAAAyB,iBACAA,GAAmB,EAAAC,eACnBA,GACAvB,GAEGwB,EAAaC,IAAkBC,EAAAA,SAAS,KACxCC,GAASC,IAAcF,EAAAA,UAAkB,IACzCG,GAAgBC,IAAcJ,EAAAA,SAAoB,KAClDK,GAAiBC,IAAsBN,EAAAA,SAAoB,KAC3DO,GAAgBC,IAAqBR,EAAAA,UAAS,IAC9CS,GAAgBC,IAAqBV,EAAAA,UAAS,IAC9CW,GAAgBC,IAAqBZ,EAAAA,UAAS,IAC9Ca,GAAMC,IAAWd,EAAAA,UAAS,IAC1Be,GAAYC,IAAiBhB,EAAAA,SAAc,OAC5CiB,EAAEA,IAAMC,oBAGPC,GAAYC,IAAiBpB,WAA2B,CAC3DqB,KAAM,EACNC,SAAS,EACTC,eAAe,EACfC,MAAO,KAGLC,MAAEA,IAAUC,gBACZC,GAAQ,GAERC,GAAoBC,EAAAA,QAAQ,IACvBhD,IAAgBD,IAAYiB,EACpC,CAAChB,EAAYD,EAASiB,IAGnBiC,GAAuBC,EAAAA,YAAY,CAACC,EAAoBhH,KAC1D,IAAKgH,EAAY,OAAOlI,GAAW,GAEnC,MAAMmI,EAAuBD,EAAWE,cAElCC,EAAkB5H,GAClB,MAAAT,OAAA,EAAAA,EAASsI,OAAO,CAACC,EAAgBxE,WAC/B,MAAMyE,EAAkB,OAAAC,EAAA1E,EAAI/D,cAAJ,EAAAyI,EAAa1G,OAAQ2G,IACzC,MAAM5E,EAAQ6E,EAAAA,QAAMC,eAAeF,EAAK5E,OAAS4E,EAAKG,YAAc5E,OAAOyE,EAAK5E,OAChF,OAAOA,MAAAA,OAAAA,EAAAA,EAAOsE,cAAcxH,SAASuH,KAOzC,aAJIK,WAAiB7F,SACjB4F,EAAIzH,KAAK,IAAKiD,EAAK/D,QAASwI,IAGzBD,GACR,MAAO,IACR,MAAAvI,OAAA,EAAAA,EAAS+B,OAAQgC,IACf,MAAMD,EAAQ6E,EAAAA,QAAMC,eAAe7E,EAAID,OAASC,EAAI8E,YAAc5E,OAAOF,EAAID,OAC7E,OAAOA,MAAAA,OAAAA,EAAAA,EAAOsE,cAAcxH,SAASuH,OACnC,GAEV,OAAOW,GAAqBT,EAAiBnH,IAE9C,CAAClB,EAASS,IAGPF,GAAc,KAChB,MAAAmD,GAAAA,EAAW,CAAEqF,OAAQ,CAAE7H,MAAOjB,EAAW,GAAK,QAC1CmF,GAA8C,mBAApBA,GAC1BA,EAAgB,OAKlB4D,GAAmBf,cAAagB,GACZ,IACf,IAAIC,IAAI,MAAAD,OAAA,EAAAA,EAAM7G,IAAIsG,GAAQ,CAACA,EAAKxH,MAAOwH,KAAQtI,UAGvD,IAGG0I,GAAuBb,EAAAA,YAAY,CAACkB,EAAwBjI,KAC9D,MAAMU,EAAiBC,MAAMC,QAAQZ,GAASA,EAAQ,CAACA,GAKvD,OAJoBkI,EAAAA,OAAOD,EAAcT,IACrC,MAAMW,EAAQzH,EAAe4B,QAAQkF,EAAKY,IAAMZ,EAAKxH,OACrD,WAAOmI,EAAeE,IAAWF,KAGtC,IAGGhB,GAAkBN,EAAAA,QAAQ,IACxBD,GACOE,GAAqBhC,EAAa9E,GAEtC4H,GAAqBE,GAAiB,IAAI3C,MAAmBE,KAAmBrF,GAExF,CAAC8E,EAAaK,GAAgBrG,EAASkB,EAAO4G,GAAmBvB,GAAiByB,GAAsBc,GAAsBE,KAG3HQ,GAAevB,cAAawB,IAC9B,MAAMC,UAAEA,EAAAC,aAAWA,EAAAC,aAAcA,GAAiBH,EAAMI,cAGxD,GAFiBF,EAAeD,GAAaE,EAAe,IAE5CvC,GAAWG,UAAYH,GAAWI,gBAAkBK,GAAmB,CACnF,MAAMgC,EAAWzC,GAAWE,KAAO,EACnCwC,GAAa/D,EAAad,EAAe4E,GAAU,EACvD,GAED,CAACzC,GAAWG,QAASH,GAAWI,cAAeJ,GAAWE,KAAMO,GAAmB9B,EAAagE,KAAKC,UAAU/E,KAG5GgF,GAAgBjC,EAAAA,YAAY,CAACkC,EAAuBC,GAAS,KAC/D,MACMC,EAAgBrB,GAAiB,IADpBoB,EAAS/D,GAAiBE,MACa4D,IAC1D7D,GAAW+D,IACZ,CAAChE,GAAgBE,GAAiByC,KAG/Be,GAAe9B,EAAAA,YAAYqC,MAAOpC,EAAkB,GAAIqC,EAAUrF,EAAeqC,EAAO,EAAG6C,GAAS,KAEtG,IAAKtF,IAAYiB,QAAuB,GAExCK,IAAW,GACPmB,EAAO,GACPD,WAA4BkD,EAAM/C,eAAe,KAGrD,IACI,IAAIwB,EAAkB,GAClBwB,EAA4C,CAAA,EAGhD,GAAI1E,EAAgB,CAChB,MAAM2E,QAAiB3E,EAAe,CAClC4E,OAAQzC,EACRqC,UACA1C,SACA+C,MAAOrD,EAAO,GAAKM,GACnBgD,OAAQ1F,EACR2F,MAAOjF,IAEXoD,GAAO,MAAAyB,OAAA,EAAAA,EAAUzB,OAAQ,GACzBwB,GAAmB,MAAAC,OAAA,EAAAA,EAAUrD,aAAc,CAAA,CAC/C,KAAO,CACH,MAAMqD,QAAiBK,WAAS,CAC5BC,OAAQlG,EACRyF,QAAS,CACL1C,SACA+C,MAAOrD,EAAO,GAAKM,GACnB8C,OAAQzC,EACRqC,UACAM,OAAQ1F,EACR2F,MAAOjF,GAEXH,WACAC,aAEJsD,GAAO,MAAAyB,OAAA,EAAAA,EAAUzB,OAAQ,GACzBwB,GAAmB,MAAAC,OAAA,EAAAA,EAAUrD,aAAc,CAAA,CAC/C,CAmBA,OAjBI4B,GAAQpH,MAAMC,QAAQmH,KACtBiB,GAAcjB,EAAMmB,GAGpB9C,GAAckD,IAAA,IACPA,EACHjD,OACAC,UAAU,MAAAiD,OAAA,EAAAA,EAAkBQ,aAAc,GAAM1D,EAAOM,GACvDH,aAAO+C,WAAkBQ,aAAc,EACvCxD,eAAe,MAGf,MAAAwB,OAAA,EAAAA,EAAMtG,QAAS,GACfuI,MAIDjC,GAAQ,EACnB,OAAShE,GAGL,OADAqC,WAA4BkD,EAAM/C,eAAe,KAC1C,EACX,CAAA,QACIrB,IAAW,EACf,GAED,CAACtB,EAASiB,EAAgBZ,EAAYU,EAAWgC,GAAOqC,KAGrDiB,GAAiBpD,EAAAA,QACnB,IAAMqD,EAAAA,SAASd,MAAOpC,IACd/B,KAEC+B,GAAeJ,KAAqBjB,KACrCS,GAAc,CACVC,KAAM,EACNC,SAAS,EACTC,eAAe,EACfC,MAAO,UAELqC,GAAa,GAAI7E,EAAe,GAAG,KAEzC,MAAAgD,OAAA,EAAAA,EAAYvF,QAAS,IAAMmF,KAC3BR,GAAc,CACVC,KAAM,EACNC,SAAS,EACTC,eAAe,EACfC,MAAO,UAELqC,GAAa7B,EAAYhD,EAAe,GAAG,MAEtD,KAEH,CAAC4C,GAAmBjB,GAAgBmD,KAAKC,UAAU/E,KAIjDmG,GAAepD,EAAAA,YAAYqC,YACXN,KAAKC,UAAU/E,KAAmB8E,KAAKC,UAAUhD,MAEjDa,IAAsBrB,KACpCS,GAAchC,GACdoB,GAAW,IACXI,IAAkB,GAClBY,GAAc,CACVC,KAAM,EACNC,SAAS,EACTC,eAAe,EACfC,MAAO,KAIVI,IAAsBrB,WACjBsD,GAAa/D,EAAad,EAAe,GAAG,GAClDwB,IAAkB,KAGvB,CAACsD,KAAKC,UAAU/E,GAAgB4C,GAAmBrB,KAGhDyE,GAAkBjD,EAAAA,YAAY,KAChC,IAAIqD,GAAa,EACjB,MAAMC,EAAc,MAAAlD,QAAA,EAAAA,GAAiBtG,OAAQyJ,GACzCvL,EAAW,MAAAiB,OAAA,EAAAA,EAAON,SAAS,MAAA4K,OAAA,EAAAA,EAAGtK,cAASsK,WAAGtK,QAASA,GAOvD,OAJKW,MAAMC,QAAQyJ,KAAgB,MAAAA,OAAA,EAAAA,EAAa5I,QAAS,IACrD,MAAAyC,GAAAA,EAAkBnF,EAAWsL,EAAcA,EAAY,IACvDD,GAAa,GAEVA,GACR,CAACjD,GAAiBnH,EAAOjB,EAAUmF,IAGhCqG,GAAiBxD,EAAAA,YAAYqC,UAC/B,GAAIvD,GAAM,OACV,SAAUmE,KAAmB,OAE7B,MAAMQ,EAASzL,EAAWiB,IAAS,MAAAA,OAAA,EAAAA,EAAOa,OAAO4J,GAAK7I,QAAQ8I,OAAOD,MAAOzK,GAAgB,MACzEjB,GAAW,MAAAyL,OAAA,EAAAA,EAAQ/I,QAAS,EAAI+I,KAAY5D,KAG3DlB,IAAkB,SACZmD,GAAa,GAAI,IAAK7E,EAAoB,SAAUwG,GAAY,GAAG,GACzE9E,IAAkB,KAGvB,CAACG,GAAM7F,EAAO8I,KAAKC,UAAU/E,KAE1B2G,GAAW5L,EACX4B,MAAMC,QAAQZ,IAAUA,EAAMyB,OAAS,EACvCzB,SAAmD,KAAVA,EA6D/C,OA1DA4K,EAAAA,UAAU,KACF/E,IACAoE,GAAenF,GAEZ,IAAMmF,GAAeY,UAE7B,CAAC/F,EAAagE,KAAKC,UAAU/E,GAAgB6B,GAAMN,GAAgB0E,KAEtEW,EAAAA,UAAU,KACNZ,MACD,CAACA,KAEJY,EAAAA,UAAU,KACNL,MACD,CAACA,KAEJK,EAAAA,UAAU,KACF/E,IACAsE,MAEL,CAACtE,GAAMsE,KAEVS,EAAAA,UAAU,KACN,MAAME,EAAYhC,KAAKC,UAAU/E,KAAmB8E,KAAKC,UAAUhD,IAC/D/B,GAAiB8G,GACjBtF,IAAkB,IAEvB,CAACxB,EAAe+B,KAEnB6E,EAAAA,UAAU,KACN,GAAI5K,IAAU6F,GAAM,CAChB,MAAMkF,GAAe,MAAAjM,OAAA,EAAAA,EAAS+B,OAAQyJ,GAClCvL,EAAW,MAAAiB,OAAA,EAAAA,EAAON,SAAS,MAAA4K,OAAA,EAAAA,EAAGtK,cAASsK,WAAGtK,QAASA,KAClD,GACLsF,GAAmByF,EACvB,CACAzF,GAAmB,MAAA6B,QAAA,EAAAA,GAAiBtG,OAAQyJ,GACxCvL,EAAW,MAAAiB,OAAA,EAAAA,EAAON,SAAS,MAAA4K,OAAA,EAAAA,EAAGtK,cAASsK,WAAGtK,QAASA,KAGxD,CAACA,EAAO6F,GAAM/G,EAASC,mBAmBtBiD,EAAAA,KAACgJ,EAAAA,QAAA,CACGzH,UACAG,OACAC,aAAcA,IAAiB5E,EAAW,GAAK,IAC/CC,cACA6C,UAAU,gBACV2B,OACAyH,OAAQ,IAAMnF,IAAQ,GACtBoF,QAAS,KACLpF,IAAQ,IACJ,MAAAhB,OAAA,EAAAA,EAAarD,QAAS,GACtB+D,IAAkB,GAEtBI,IAAkB,GAClBb,GAAe,KAEnBvC,SAjCgB+F,IACpB,MAAQvI,MAAAA,GAAUuI,EAAMV,OACxB,GAAK9I,GAAY4B,MAAMC,QAAQZ,IAA0C,IAAhCA,MAAAA,OAAAA,EAAAA,EAAOa,OAAO4J,GAAKA,GAAGhJ,UAAiBzB,EAAO,OAEvF,MAIMmL,QAAWhE,aAAiBtG,OAJd2G,GACTzI,EAAWiB,MAAAA,OAAAA,EAAAA,EAAON,SAAS,MAAA8H,OAAA,EAAAA,EAAMxH,cAASwH,WAAMxH,SAAUA,GAIrE,MAAAwC,GAAAA,EAAW+F,EAAOxJ,EAAWoM,EAAW,MAAAA,OAAA,EAAAA,EAAW,KAyB/CvG,mBACA7F,WACA6D,MAAOqD,GAAErD,GACTwI,WAAS,EACTC,cAAY,EACZvH,YACAC,MAAOnC,QAAQmC,GACfhE,WACAC,MAAOyF,GAAkB1G,EAAW,GAAK,IAAM,MAAAiB,OAAA,EAAAA,EAAOoI,KAAMpI,IAAUjB,EAAW,GAAK,IACtF0E,oBACA6H,mBAAoB/G,EACpBtE,GAAKlB,IAAY,MAAAiB,OAAA,EAAAA,EAAOyB,QAAU,IAAK6C,EAAa,sBAAuB,CAAEiH,QAAS,qBAAyBjH,EAC/GkH,UAAW,CACPC,WAAY,CACRC,SAAUpD,GACVqD,MAAO,CAAEC,UAAW,IAAKC,SAAU,OAG3CC,MACK/L,OA2BG,iBA1BAF,EAAAA,IAACkM,EAAAA,QAAA,CACGnJ,MAAM,GACN3C,GAAIyE,EACJsH,4BACInM,EAAAA,IAACoM,EAAAA,QAAA,CAAeC,SAAS,MACpB5L,aAAW+D,iBACRxE,EAAAA,IAACsM,EAAAA,QAAA,CACG3I,KAAM,GACNvD,GAAI,CAAEmM,GAAI,EAAG3L,MAAO,aAGxBmE,GAAoB+F,mBAChB9K,EAAAA,IAACwM,EAAAA,QAAA,CACG,aAAW,kBACXtK,QAAS1C,GACTiN,KAAK,MACLrM,GAAIwG,GAAQ,CAAE8F,GAAI,KAAQ,CAAEH,GAAI,KAChC5I,KAAK,QAELlD,wBAAAT,EAAAA,IAAC2M,QAAA,CAAMnJ,SAAS,QAAQ5C,MAAM,4BAS9DgM,YAActB,UAtEEuB;AAuEZ,OACI7M,EAAAA,IAAA8M,EAAAA,SAAA,CACKrM,SAAAK,MAAMC,QAAQuK,kBACXtL,EAAAA,IAAC+M,EAAAA,QAAA,CACGxI,gBACA2D,MA5EJ2E,EA4EyBvB,EA3EtCxK,MAAMC,QAAQ8L,KAAkB,MAAAA,OAAA,EAAAA,EAAejL,QAAS,IAAK,MAAAiL,OAAA,EAAAA,EAAe7L,OAAQc,GAAWA,KA4E9E3C,cACA6N,SAAU1I,EACVpE,WACA+M,UAAW,CACP7M,GAAI,CACA8M,QAAS,oBACTC,OAAQ,EAER,yBAA0B,CACtBvM,MAAO,oBACPwM,WAAY,WAM5BtM,MAAMC,QAAQuG,MAAoB,MAAAA,QAAA,EAAAA,GAAiB1F,QAAS,IAAK,OAAA8F,EAAA,MAAAJ,QAAA,EAAAA,GAAiB+F,KAC7EvL,IAAgB,MAAAA,OAAA,EAAAA,EAAQ3B,QAASA,SAD2B,EAAAuH,EAE9D3E,QAASuI,GAAYnM,KAKxCmO,aAAeC,IACXrI,GAAeqI,GACfxH,IAAkB,IAGrBtF,SAAA,CAAAzB,EAAkB,CACfC,QAASqI,GACTpI,SAAU6C,QAAQ7C,GAClBC,cACAE,OAAQc,EACRf,iBAAiB,EACjBE,MAAO,CAEH6D,gBACAG,gBACAP,SAEJxD,cACAC,eACAC,eACAC,cAGH4G,GAAWI,8BACR1G,MAACC,EAAAA,QAAA,CAASC,UAAQ,EACdO,0BAAAT,IAACoC,EAAAA,QAAA,CAAIhC,GAAI,CAAEiC,QAAS,OAAQmL,eAAgB,SAAUC,MAAO,QACzDhN,8BAAC6L,EAAAA,QAAA,CAAiB3I,KAAM"}
1
+ {"version":3,"file":"index.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":["generateMenuItems","options","multiple","placeholder","with_checkboxes","values","field","disabledIds","handleClear","handleChange","hasParent","itemDisabled","ls","includes","items","push","jsx","MenuItem","disabled","value","sx","opacity","height","p","m","children","Typography","type","color","selectedValues","Array","isArray","filter","isAllOptionsSelected","parentValue","childOptions","childValues","map","child","valueArray","every","childValue","isSomeOptionsSelected","some","length","forEach","option","Boolean","className","isGroup","onClick","jsxs","Box","display","gap","Checkbox","checked","indexOf","indeterminate","onChange","updatedValues","Set","handleParentChange","label","opt","pl","String","enable_footer","Divider","flexItem","onFooterClick","Add","fontSize","props","labelId","size","searchPlaceholder","name","defaultValue","apiType","isInternal","autoFocus","error","customeFilter","attributes","getSelectedData","onChipRemove","selectedLabel","is_loading","customStyle","CustomDropDownIcon","labelKey","valueKey","inputStyle","sortOrder","showCancelButton","customFetchApi","searchQuery","setSearchQuery","useState","loading","setLoading","dynamicOptions","setOptions","selectedOptions","setSelectedOptions","isAlredyLoaded","setIsAlredyLoaded","initailLoading","setInitialLoading","searchInitiate","setSearchInitiate","open","setOpen","prevFilter","setPrevFilter","t","useTranslation","pagination","setPagination","page","hasMore","isLoadingMore","total","isRtl","useLanguage","limit","isInternalOptions","useMemo","searchOptionsLocally","useCallback","searchTerm","lowercasedSearchTerm","toLowerCase","filteredOptions","reduce","acc","searchedOptions","_a","item","React","isValidElement","searchLabel","sortBySelectedValues","target","getUniqueOptions","data","Map","arrayToSort","sortBy","index","id","Infinity","handleScroll","event","scrollTop","scrollHeight","clientHeight","currentTarget","nextPage","fetchOptions","JSON","stringify","updateOptions","newOptions","append","uniqueOptions","async","filters","prev","paginationResult","response","search","skip","select","order","fetchApi","apiKey","totalCount","setSelectedData","debounceSearch","debounce","initialFetch","hasOptions","isInOptions","i","fetchIdOptions","fValue","v","Number","hasValue","useEffect","cancel","condition","selectedData","Select","onOpen","onClose","selected","fullWidth","displayEmpty","CustomDropdownIcon","padding","MenuProps","PaperProps","onScroll","style","maxHeight","maxWidth","input","OutlinedInput","endAdornment","InputAdornment","position","CircularProgress","mr","IconButton","edge","ml","Close","renderValue","selectOptions","Fragment","ChipOrPlaceholder","onDelete","chipProps","bgcolor","border","fontWeight","find","handleSearch","text","justifyContent","width"],"mappings":"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"}
@@ -26,4 +26,4 @@ export { default as useAppTranslations } from './use-translations';
26
26
  export * from './common';
27
27
  export { default as apiHelper } from './apiHelper';
28
28
  export * from './useDataFetcher';
29
- export { default as useApi } from './useApi';
29
+ export * from './useApi';
@@ -11,7 +11,6 @@ import { default as default7 } from "./useDataFetcher/index.esm.js";
11
11
  import { default as default8 } from "./use-translations/index.esm.js";
12
12
  import { apiType, capitalizeWords, convertEmptyToNull, defaultUserCurrency, formatNumber, formatTime, formateDate, recursiveSort, removeExtraKeys, sortData, valueWithCurrency } from "./common/index.esm.js";
13
13
  import { default as default9 } from "./apiHelper/index.esm.js";
14
- import { default as default10 } from "./useApi/index.esm.js";
15
14
  export {
16
15
  default9 as apiHelper,
17
16
  apiType,
@@ -24,7 +23,6 @@ export {
24
23
  recursiveSort,
25
24
  removeExtraKeys,
26
25
  sortData,
27
- default10 as useApi,
28
26
  default8 as useAppTranslations,
29
27
  useAuth,
30
28
  default6 as useCheckSkuAndName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./useLangauge/index.js"),r=require("./useAuth/index.js"),s=require("./use-pages/index.js"),t=require("./use-permissions/index.js"),u=require("./use-deep-memo/index.js"),a=require("./use-material-calculations/index.js"),i=require("./useLanguageFallback/index.js"),o=require("./useLocationFilter/index.js"),p=require("./useCheckSkuAndName/index.js"),x=require("./useDataFetcher/index.js"),n=require("./use-translations/index.js"),l=require("./common/index.js"),d=require("./apiHelper/index.js"),m=require("./useApi/index.js");exports.useLanguage=e.useLanguage,exports.useAuth=r.useAuth,exports.usePages=s.usePages,exports.usePermissions=t.usePermissions,exports.useDeepMemo=u.default,exports.useMaterialCalculations=a.default,exports.useLanguageFallback=i.default,exports.useLocationFilter=o.default,exports.useCheckSkuAndName=p.default,exports.useDataFetcher=x.default,exports.useAppTranslations=n.default,exports.apiType=l.apiType,exports.capitalizeWords=l.capitalizeWords,exports.convertEmptyToNull=l.convertEmptyToNull,exports.defaultUserCurrency=l.defaultUserCurrency,exports.formatNumber=l.formatNumber,exports.formatTime=l.formatTime,exports.formateDate=l.formateDate,exports.recursiveSort=l.recursiveSort,exports.removeExtraKeys=l.removeExtraKeys,exports.sortData=l.sortData,exports.valueWithCurrency=l.valueWithCurrency,exports.apiHelper=d.default,exports.useApi=m.default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./useLangauge/index.js"),r=require("./useAuth/index.js"),s=require("./use-pages/index.js"),t=require("./use-permissions/index.js"),u=require("./use-deep-memo/index.js"),a=require("./use-material-calculations/index.js"),o=require("./useLanguageFallback/index.js"),i=require("./useLocationFilter/index.js"),p=require("./useCheckSkuAndName/index.js"),n=require("./useDataFetcher/index.js"),x=require("./use-translations/index.js"),l=require("./common/index.js"),d=require("./apiHelper/index.js");exports.useLanguage=e.useLanguage,exports.useAuth=r.useAuth,exports.usePages=s.usePages,exports.usePermissions=t.usePermissions,exports.useDeepMemo=u.default,exports.useMaterialCalculations=a.default,exports.useLanguageFallback=o.default,exports.useLocationFilter=i.default,exports.useCheckSkuAndName=p.default,exports.useDataFetcher=n.default,exports.useAppTranslations=x.default,exports.apiType=l.apiType,exports.capitalizeWords=l.capitalizeWords,exports.convertEmptyToNull=l.convertEmptyToNull,exports.defaultUserCurrency=l.defaultUserCurrency,exports.formatNumber=l.formatNumber,exports.formatTime=l.formatTime,exports.formateDate=l.formateDate,exports.recursiveSort=l.recursiveSort,exports.removeExtraKeys=l.removeExtraKeys,exports.sortData=l.sortData,exports.valueWithCurrency=l.valueWithCurrency,exports.apiHelper=d.default;
2
2
  //# sourceMappingURL=index.js.map
@@ -4,7 +4,7 @@ import { usePages } from "../use-pages/index.esm.js";
4
4
  const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = "", customDeps, showCreatedBy = true, customFields = []) => {
5
5
  const { activePage } = usePages();
6
6
  const dispatch = useDispatch();
7
- const columns = Array.isArray(cols) ? cols : activePage == null ? void 0 : activePage.visible_columns;
7
+ const updatedCols = Array.isArray(cols) ? cols : activePage == null ? void 0 : activePage.visible_columns;
8
8
  const getProcessedFilters = useCallback(() => {
9
9
  const { filterQueryString } = activePage || {};
10
10
  const queryString = (filterQueryString == null ? void 0 : filterQueryString.replaceAll(/[()]/g, "")) || "";
@@ -19,11 +19,13 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
19
19
  }, [activePage.filterQueryString, customeFilter]);
20
20
  const fetchData = useCallback(() => {
21
21
  var _a;
22
- const { sort = null, search } = activePage;
23
- if (!Array.isArray(cols) && ((_a = activePage == null ? void 0 : activePage.visible_columns) == null ? void 0 : _a.length) == 0)
22
+ if (!fetchAction) {
24
23
  return;
24
+ }
25
+ const { sort = null, search } = activePage;
26
+ if (!Array.isArray(cols) && ((_a = activePage == null ? void 0 : activePage.visible_columns) == null ? void 0 : _a.length) == 0) return;
25
27
  const filters = getProcessedFilters();
26
- const visibleColumns = columns == null ? void 0 : columns.filter((vc) => vc.visible);
28
+ const visibleColumns = updatedCols == null ? void 0 : updatedCols.filter((vc) => vc.visible);
27
29
  const selectPayload = (visibleColumns == null ? void 0 : visibleColumns.length) > 0 ? `[${visibleColumns == null ? void 0 : visibleColumns.map(
28
30
  (item) => {
29
31
  var _a2;
@@ -31,7 +33,7 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
31
33
  }
32
34
  )}${showCreatedBy ? ",created_at,created_by_data" : ""}${(customFields == null ? void 0 : customFields.length) ? `,${customFields == null ? void 0 : customFields.join(",")}` : ""}]` : void 0;
33
35
  const payload = {
34
- skip: pagination.skip,
36
+ skip: (activePage == null ? void 0 : activePage.skip) || (pagination == null ? void 0 : pagination.skip),
35
37
  limit: pagination.limit,
36
38
  search,
37
39
  select: selectPayload,
@@ -40,13 +42,13 @@ const useGenericDataFetcher = (cols, pagination, fetchAction, customeFilter = ""
40
42
  };
41
43
  dispatch(fetchAction(payload));
42
44
  }, [
43
- columns,
45
+ updatedCols == null ? void 0 : updatedCols.length,
44
46
  activePage.sort,
45
47
  activePage.filterQueryString,
46
48
  activePage.search,
47
- pagination.skip,
48
- // activePage?.skip,
49
- pagination.limit,
49
+ // pagination?.skip,
50
+ activePage == null ? void 0 : activePage.skip,
51
+ pagination == null ? void 0 : pagination.limit,
50
52
  dispatch,
51
53
  // eslint-disable-next-line react-hooks/exhaustive-deps
52
54
  ...customDeps || []
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/useDataFetcher.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\n\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst columns = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, '') || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters\n\t\t\t\t? `(${filters}${extraQueryString})`\n\t\t\t\t: `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tconst { sort = null, search } = activePage;\n\t\tif (!Array.isArray(cols) && activePage?.visible_columns?.length == 0)\n\t\t\treturn;\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = columns?.filter((vc) => vc.visible);\n\n\t\tconst selectPayload =\n\t\t\tvisibleColumns?.length > 0\n\t\t\t\t? `[${visibleColumns?.map((item) =>\n\t\t\t\t\t\titem.accessorKey?.includes('.')\n\t\t\t\t\t\t\t? item.accessorKey.split('.')[0]\n\t\t\t\t\t\t\t: item.accessorKey\n\t\t\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]`\n\t\t\t\t: undefined;\n\t\tconst payload: FilterParams = {\n\t\t\tskip: pagination.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters })\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\tcolumns,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\tpagination.skip,\n\t\t// activePage?.skip,\n\t\tpagination.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || [])\n\t]);\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n"],"names":["_a"],"mappings":";;;AAoBA,MAAM,wBAAwB,CAC7B,MACA,YACA,aACA,gBAAqB,IACrB,YACA,gBAAyB,MACzB,eAAqB,CAAA,MACjB;AACJ,QAAM,EAAE,WAAA,IAAe,SAAA;AACvB,QAAM,WAAW,YAAA;AACjB,QAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,OAAO,yCAAY;AAEzD,QAAM,sBAAsB,YAAY,MAAM;AAC7C,UAAM,EAAE,sBAAsB,cAAc,CAAA;AAC5C,UAAM,eAAc,uDAAmB,WAAW,SAAS,QAAO;AAClE,UAAM,mBAAmB,YAAY,SAAS,IAAI,WAAW,KAAK;AAClE,QAAI,UAAU;AAEd,QAAI,kBAAkB;AACrB,gBAAU,UACP,IAAI,OAAO,GAAG,gBAAgB,MAC9B,IAAI,gBAAgB;AAAA,IACxB,WAAW,SAAS;AACnB,gBAAU,IAAI,OAAO;AAAA,IACtB;AAEA,WAAO,WAAW;AAAA,EAEnB,GAAG,CAAC,WAAW,mBAAmB,aAAa,CAAC;AAEhD,QAAM,YAAY,YAAY,MAAM;;AACnC,UAAM,EAAE,OAAO,MAAM,OAAA,IAAW;AAChC,QAAI,CAAC,MAAM,QAAQ,IAAI,OAAK,8CAAY,oBAAZ,mBAA6B,WAAU;AAClE;AACD,UAAM,UAAU,oBAAA;AAChB,UAAM,iBAAiB,mCAAS,OAAO,CAAC,OAAO,GAAG;AAElD,UAAM,iBACL,iDAAgB,UAAS,IACtB,IAAI,iDAAgB;AAAA,MAAI,CAAC,SAAA;;AACzB,iBAAAA,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,SAAS,QACxB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,IAC7B,KAAK;AAAA;AAAA,KACR,GAAG,gBAAgB,gCAAgC,EAAE,IAAG,6CAAc,UAAS,IAAI,6CAAc,KAAK,IAAI,KAAK,EAAE,MACjH;AACJ,UAAM,UAAwB;AAAA,MAC7B,MAAM,WAAW;AAAA,MACjB,OAAO,WAAW;AAAA,MAClB;AAAA,MACA,QAAQ;AAAA,MACR,GAAI,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,GAAA;AAAA,MACrD,GAAI,WAAW,EAAE,QAAA;AAAA,IAAQ;AAG1B,aAAS,YAAY,OAAO,CAAC;AAAA,EAE9B,GAAG;AAAA,IACF;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA;AAAA,IAEX,WAAW;AAAA,IACX;AAAA;AAAA,IAEA,GAAI,cAAc,CAAA;AAAA,EAAC,CACnB;AAED,SAAO;AACR;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/hooks/useDataFetcher.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\n\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst updatedCols = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\t\tif (!Array.isArray(cols) && activePage?.visible_columns?.length == 0) return;\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = updatedCols\n\t\t\t?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\tupdatedCols?.length,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n"],"names":["_a"],"mappings":";;;AAoBA,MAAM,wBAAwB,CAC7B,MACA,YACA,aACA,gBAAqB,IACrB,YACA,gBAAyB,MACzB,eAAqB,CAAA,MACjB;AACJ,QAAM,EAAE,WAAA,IAAe,SAAA;AACvB,QAAM,WAAW,YAAA;AACjB,QAAM,cAAc,MAAM,QAAQ,IAAI,IAAI,OAAO,yCAAY;AAE7D,QAAM,sBAAsB,YAAY,MAAM;AAC7C,UAAM,EAAE,sBAAsB,cAAc,CAAA;AAC5C,UAAM,eAAc,uDAAmB,WAAW,SAAS,QAAO;AAClE,UAAM,mBAAmB,YAAY,SAAS,IAAI,WAAW,KAAK;AAClE,QAAI,UAAU;AAEd,QAAI,kBAAkB;AACrB,gBAAU,UAAU,IAAI,OAAO,GAAG,gBAAgB,MAAM,IAAI,gBAAgB;AAAA,IAC7E,WAAW,SAAS;AACnB,gBAAU,IAAI,OAAO;AAAA,IACtB;AAEA,WAAO,WAAW;AAAA,EAEnB,GAAG,CAAC,WAAW,mBAAmB,aAAa,CAAC;AAEhD,QAAM,YAAY,YAAY,MAAM;;AACnC,QAAI,CAAC,aAAa;AACjB;AAAA,IACD;AACA,UAAM,EAAE,OAAO,MAAM,OAAA,IAAW;AAChC,QAAI,CAAC,MAAM,QAAQ,IAAI,OAAK,8CAAY,oBAAZ,mBAA6B,WAAU,EAAG;AACtE,UAAM,UAAU,oBAAA;AAChB,UAAM,iBAAiB,2CACpB,OAAO,CAAC,OAAO,GAAG;AAErB,UAAM,iBAAgB,iDAAgB,UAAS,IAAI,IAAI,iDACpD;AAAA,MAAI,CAAC,SAAA;;AACN,iBAAAA,MAAA,KAAK,gBAAL,gBAAAA,IAAkB,SAAS,QACxB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,IAC7B,KAAK;AAAA;AAAA,KACR,GAAG,gBAAgB,gCAAgC,EAAE,IAAG,6CAAc,UAAS,IAAI,6CAAc,KAAK,IAAI,KAAK,EAAE,MAAM;AACzH,UAAM,UAAwB;AAAA,MAC7B,OAAM,yCAAY,UAAQ,yCAAY;AAAA,MACtC,OAAO,WAAW;AAAA,MAClB;AAAA,MACA,QAAQ;AAAA,MACR,GAAI,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,GAAA;AAAA,MACrD,GAAI,WAAW,EAAE,QAAA;AAAA,IAAQ;AAG1B,aAAS,YAAY,OAAO,CAAC;AAAA,EAE9B,GAAG;AAAA,IACF,2CAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA;AAAA,IAEX,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ;AAAA;AAAA,IAEA,GAAI,cAAc,CAAA;AAAA,EAAC,CACnB;AAID,SAAO;AACR;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("react-redux"),l=require("../use-pages/index.js");exports.default=(i,s,t,u="",a,n=!0,c=[])=>{const{activePage:o}=l.usePages(),d=r.useDispatch(),v=Array.isArray(i)?i:null==o?void 0:o.visible_columns,y=e.useCallback(()=>{const{filterQueryString:e}=o||{},r=(null==e?void 0:e.replaceAll(/[()]/g,""))||"",l=r.length?`&${r}`:"";let i=u;return l?i=i?`(${i}${l})`:`(${l})`:i&&(i=`(${i})`),i||void 0},[o.filterQueryString,u]);return e.useCallback(()=>{var e;const{sort:r=null,search:l}=o;if(!Array.isArray(i)&&0==(null==(e=null==o?void 0:o.visible_columns)?void 0:e.length))return;const u=y(),a=null==v?void 0:v.filter(e=>e.visible),g=(null==a?void 0:a.length)>0?`[${null==a?void 0:a.map(e=>{var r;return(null==(r=e.accessorKey)?void 0:r.includes("."))?e.accessorKey.split(".")[0]:e.accessorKey})}${n?",created_at,created_by_data":""}${(null==c?void 0:c.length)?`,${null==c?void 0:c.join(",")}`:""}]`:void 0,p={skip:s.skip,limit:s.limit,search:l,select:g,...r&&{order:`${r.id}:${r.desc?-1:1}`},...u&&{filters:u}};d(t(p))},[v,o.sort,o.filterQueryString,o.search,s.skip,s.limit,d,...a||[]])};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),l=require("react-redux"),r=require("../use-pages/index.js");exports.default=(i,s,t,u="",n,o=!0,a=[])=>{const{activePage:c}=r.usePages(),d=l.useDispatch(),v=Array.isArray(i)?i:null==c?void 0:c.visible_columns,g=e.useCallback(()=>{const{filterQueryString:e}=c||{},l=(null==e?void 0:e.replaceAll(/[()]/g,""))||"",r=l.length?`&${l}`:"";let i=u;return r?i=i?`(${i}${r})`:`(${r})`:i&&(i=`(${i})`),i||void 0},[c.filterQueryString,u]);return e.useCallback(()=>{var e;if(!t)return;const{sort:l=null,search:r}=c;if(!Array.isArray(i)&&0==(null==(e=null==c?void 0:c.visible_columns)?void 0:e.length))return;const u=g(),n=null==v?void 0:v.filter(e=>e.visible),p=(null==n?void 0:n.length)>0?`[${null==n?void 0:n.map(e=>{var l;return(null==(l=e.accessorKey)?void 0:l.includes("."))?e.accessorKey.split(".")[0]:e.accessorKey})}${o?",created_at,created_by_data":""}${(null==a?void 0:a.length)?`,${null==a?void 0:a.join(",")}`:""}]`:void 0,y={skip:(null==c?void 0:c.skip)||(null==s?void 0:s.skip),limit:s.limit,search:r,select:p,...l&&{order:`${l.id}:${l.desc?-1:1}`},...u&&{filters:u}};d(t(y))},[null==v?void 0:v.length,c.sort,c.filterQueryString,c.search,null==c?void 0:c.skip,null==s?void 0:s.limit,d,...n||[]])};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/hooks/useDataFetcher.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\n\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst columns = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, '') || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters\n\t\t\t\t? `(${filters}${extraQueryString})`\n\t\t\t\t: `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tconst { sort = null, search } = activePage;\n\t\tif (!Array.isArray(cols) && activePage?.visible_columns?.length == 0)\n\t\t\treturn;\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = columns?.filter((vc) => vc.visible);\n\n\t\tconst selectPayload =\n\t\t\tvisibleColumns?.length > 0\n\t\t\t\t? `[${visibleColumns?.map((item) =>\n\t\t\t\t\t\titem.accessorKey?.includes('.')\n\t\t\t\t\t\t\t? item.accessorKey.split('.')[0]\n\t\t\t\t\t\t\t: item.accessorKey\n\t\t\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]`\n\t\t\t\t: undefined;\n\t\tconst payload: FilterParams = {\n\t\t\tskip: pagination.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters })\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\tcolumns,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\tpagination.skip,\n\t\t// activePage?.skip,\n\t\tpagination.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || [])\n\t]);\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n"],"names":["cols","pagination","fetchAction","customeFilter","customDeps","showCreatedBy","customFields","activePage","usePages","dispatch","useDispatch","columns","Array","isArray","visible_columns","getProcessedFilters","useCallback","filterQueryString","queryString","replaceAll","extraQueryString","length","filters","sort","search","_a","visibleColumns","filter","vc","visible","selectPayload","map","item","accessorKey","includes","split","join","payload","skip","limit","select","order","id","desc"],"mappings":"uKAoB8B,CAC7BA,EACAC,EACAC,EACAC,EAAqB,GACrBC,EACAC,GAAyB,EACzBC,EAAqB,MAErB,MAAMC,WAAEA,GAAeC,aACjBC,EAAWC,EAAAA,cACXC,EAAUC,MAAMC,QAAQb,GAAQA,EAAO,MAAAO,OAAA,EAAAA,EAAYO,gBAEnDC,EAAsBC,EAAAA,YAAY,KACvC,MAAMC,kBAAEA,GAAsBV,GAAc,CAAA,EACtCW,GAAc,MAAAD,OAAA,EAAAA,EAAmBE,WAAW,QAAS,MAAO,GAC5DC,EAAmBF,EAAYG,OAAS,IAAIH,IAAgB,GAClE,IAAII,EAAUnB,EAUd,OARIiB,EACHE,EAAUA,EACP,IAAIA,IAAUF,KACd,IAAIA,KACGE,IACVA,EAAU,IAAIA,MAGRA,QAAW,GAEhB,CAACf,EAAWU,kBAAmBd,IAyClC,OAvCkBa,EAAAA,YAAY,WAC7B,MAAMO,KAAEA,EAAO,KAAAC,OAAMA,GAAWjB,EAChC,IAAKK,MAAMC,QAAQb,IAAgD,IAAvC,OAAAyB,EAAA,MAAAlB,OAAA,EAAAA,EAAYO,0BAAiBO,QACxD,OACD,MAAMC,EAAUP,IACVW,EAAiB,MAAAf,OAAA,EAAAA,EAASgB,OAAQC,GAAOA,EAAGC,SAE5CC,GACL,MAAAJ,OAAA,EAAAA,EAAgBL,QAAS,EACtB,IAAI,MAAAK,OAAA,EAAAA,EAAgBK,IAAKC,UACzB,OAAA,OAAAP,EAAAO,EAAKC,kBAAL,EAAAR,EAAkBS,SAAS,MACxBF,EAAKC,YAAYE,MAAM,KAAK,GAC5BH,EAAKC,gBACL5B,EAAgB,8BAAgC,MAAK,MAAAC,OAAA,EAAAA,EAAce,QAAS,IAAI,MAAAf,OAAA,EAAAA,EAAc8B,KAAK,OAAS,WAC/G,EACEC,EAAwB,CAC7BC,KAAMrC,EAAWqC,KACjBC,MAAOtC,EAAWsC,MAClBf,SACAgB,OAAQV,KACJP,GAAQ,CAAEkB,MAAO,GAAGlB,EAAKmB,MAAMnB,EAAKoB,MAAO,EAAK,QAChDrB,GAAW,CAAEA,YAGlBb,EAASP,EAAYmC,KAEnB,CACF1B,EACAJ,EAAWgB,KACXhB,EAAWU,kBACXV,EAAWiB,OACXvB,EAAWqC,KAEXrC,EAAWsC,MACX9B,KAEIL,GAAc"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/hooks/useDataFetcher.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from './use-pages';\n\ninterface FilterParams {\n\tskip: number;\n\tlimit: number;\n\tsearch?: string;\n\tselect?: string;\n\torder?: string;\n\tfilters?: string;\n}\n\ninterface ActivePage {\n\tsort?: { id: string; desc: boolean };\n\tfilterQueryString?: string;\n\tsearch?: string;\n\tvisible_columns?: { visible: boolean; accessorKey: string }[];\n}\n\nconst useGenericDataFetcher = (\n\tcols?: ActivePage,\n\tpagination: { skip: number; limit: number },\n\tfetchAction: (filters: FilterParams) => void,\n\tcustomeFilter: any = '',\n\tcustomDeps?: any[],\n\tshowCreatedBy: boolean = true,\n\tcustomFields?: any = []\n) => {\n\tconst { activePage } = usePages();\n\tconst dispatch = useDispatch();\n\tconst updatedCols = Array.isArray(cols) ? cols : activePage?.visible_columns;\n\n\tconst getProcessedFilters = useCallback(() => {\n\t\tconst { filterQueryString } = activePage || {};\n\t\tconst queryString = filterQueryString?.replaceAll(/[()]/g, \"\") || '';\n\t\tconst extraQueryString = queryString.length ? `&${queryString}` : '';\n\t\tlet filters = customeFilter;\n\n\t\tif (extraQueryString) {\n\t\t\tfilters = filters ? `(${filters}${extraQueryString})` : `(${extraQueryString})`;\n\t\t} else if (filters) {\n\t\t\tfilters = `(${filters})`;\n\t\t}\n\n\t\treturn filters || undefined;\n\t\t//eslint-disable-next-line\n\t}, [activePage.filterQueryString, customeFilter]);\n\n\tconst fetchData = useCallback(() => {\n\t\tif (!fetchAction) {\n\t\t\treturn;\n\t\t}\n\t\tconst { sort = null, search } = activePage;\n\t\tif (!Array.isArray(cols) && activePage?.visible_columns?.length == 0) return;\n\t\tconst filters = getProcessedFilters();\n\t\tconst visibleColumns = updatedCols\n\t\t\t?.filter((vc) => vc.visible)\n\n\t\tconst selectPayload = visibleColumns?.length > 0 ? `[${visibleColumns\n\t\t\t?.map((item) =>\n\t\t\t\titem.accessorKey?.includes(\".\")\n\t\t\t\t\t? item.accessorKey.split(\".\")[0]\n\t\t\t\t\t: item.accessorKey\n\t\t\t)}${showCreatedBy ? ',created_at,created_by_data' : ''}${customFields?.length ? `,${customFields?.join(',')}` : ''}]` : undefined\n\t\tconst payload: FilterParams = {\n\t\t\tskip: activePage?.skip || pagination?.skip,\n\t\t\tlimit: pagination.limit,\n\t\t\tsearch,\n\t\t\tselect: selectPayload,\n\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n\t\t\t...(filters && { filters }),\n\t\t};\n\n\t\tdispatch(fetchAction(payload));\n\t\t//eslint-disable-next-line\n\t}, [\n\t\tupdatedCols?.length,\n\t\tactivePage.sort,\n\t\tactivePage.filterQueryString,\n\t\tactivePage.search,\n\t\t// pagination?.skip,\n\t\tactivePage?.skip,\n\t\tpagination?.limit,\n\t\tdispatch,\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t...(customDeps || []),\n\t]);\n\n\n\n\treturn fetchData;\n};\n\nexport default useGenericDataFetcher;\n"],"names":["cols","pagination","fetchAction","customeFilter","customDeps","showCreatedBy","customFields","activePage","usePages","dispatch","useDispatch","updatedCols","Array","isArray","visible_columns","getProcessedFilters","useCallback","filterQueryString","queryString","replaceAll","extraQueryString","length","filters","sort","search","_a","visibleColumns","filter","vc","visible","selectPayload","map","item","accessorKey","includes","split","join","payload","skip","limit","select","order","id","desc"],"mappings":"uKAoB8B,CAC7BA,EACAC,EACAC,EACAC,EAAqB,GACrBC,EACAC,GAAyB,EACzBC,EAAqB,MAErB,MAAMC,WAAEA,GAAeC,aACjBC,EAAWC,EAAAA,cACXC,EAAcC,MAAMC,QAAQb,GAAQA,EAAO,MAAAO,OAAA,EAAAA,EAAYO,gBAEvDC,EAAsBC,EAAAA,YAAY,KACvC,MAAMC,kBAAEA,GAAsBV,GAAc,CAAA,EACtCW,GAAc,MAAAD,OAAA,EAAAA,EAAmBE,WAAW,QAAS,MAAO,GAC5DC,EAAmBF,EAAYG,OAAS,IAAIH,IAAgB,GAClE,IAAII,EAAUnB,EAQd,OANIiB,EACHE,EAAUA,EAAU,IAAIA,IAAUF,KAAsB,IAAIA,KAClDE,IACVA,EAAU,IAAIA,MAGRA,QAAW,GAEhB,CAACf,EAAWU,kBAAmBd,IA4ClC,OA1CkBa,EAAAA,YAAY,WAC7B,IAAKd,EACJ,OAED,MAAMqB,KAAEA,EAAO,KAAAC,OAAMA,GAAWjB,EAChC,IAAKK,MAAMC,QAAQb,IAAgD,IAAvC,OAAAyB,EAAA,MAAAlB,OAAA,EAAAA,EAAYO,sBAAZ,EAAAW,EAA6BJ,QAAa,OACtE,MAAMC,EAAUP,IACVW,EAAiB,MAAAf,OAAA,EAAAA,EACpBgB,OAAQC,GAAOA,EAAGC,SAEfC,GAAgB,MAAAJ,OAAA,EAAAA,EAAgBL,QAAS,EAAI,IAAI,MAAAK,OAAA,EAAAA,EACpDK,IAAKC,UACN,OAAA,OAAAP,EAAAO,EAAKC,kBAAL,EAAAR,EAAkBS,SAAS,MACxBF,EAAKC,YAAYE,MAAM,KAAK,GAC5BH,EAAKC,gBACL5B,EAAgB,8BAAgC,MAAK,MAAAC,OAAA,EAAAA,EAAce,QAAS,IAAI,MAAAf,OAAA,EAAAA,EAAc8B,KAAK,OAAS,WAAQ,EACnHC,EAAwB,CAC7BC,MAAM,MAAA/B,OAAA,EAAAA,EAAY+B,QAAQ,MAAArC,OAAA,EAAAA,EAAYqC,MACtCC,MAAOtC,EAAWsC,MAClBf,SACAgB,OAAQV,KACJP,GAAQ,CAAEkB,MAAO,GAAGlB,EAAKmB,MAAMnB,EAAKoB,MAAO,EAAK,QAChDrB,GAAW,CAAEA,YAGlBb,EAASP,EAAYmC,KAEnB,CACF,MAAA1B,OAAA,EAAAA,EAAaU,OACbd,EAAWgB,KACXhB,EAAWU,kBACXV,EAAWiB,OAEX,MAAAjB,OAAA,EAAAA,EAAY+B,KACZ,MAAArC,OAAA,EAAAA,EAAYsC,MACZ9B,KAEIL,GAAc"}