@erpsquad/common 1.8.58 → 1.8.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index/index.esm.js +2 -4
- package/dist/_virtual/index/index.esm.js.map +1 -1
- package/dist/_virtual/index/index.esm10.js +3 -3
- package/dist/_virtual/index/index.esm2.js +4 -2
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index.esm3.js +3 -3
- package/dist/_virtual/index/index.esm4.js +3 -3
- package/dist/_virtual/index/index.esm5.js +3 -3
- package/dist/_virtual/index/index.esm6.js +3 -3
- package/dist/_virtual/index/index.esm7.js +3 -3
- package/dist/_virtual/index/index.esm8.js +3 -3
- package/dist/_virtual/index/index.esm9.js +3 -3
- package/dist/_virtual/index/index.js +1 -1
- package/dist/_virtual/index/index10.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/_virtual/index/index3.js +1 -1
- package/dist/_virtual/index/index4.js +1 -1
- package/dist/_virtual/index/index5.js +1 -1
- package/dist/_virtual/index/index6.js +1 -1
- package/dist/_virtual/index/index7.js +1 -1
- package/dist/_virtual/index/index8.js +1 -1
- package/dist/_virtual/index/index9.js +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +3 -0
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js.map +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +2 -2
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map +1 -1
- package/dist/components/searchable-select/index.esm.js +4 -4
- package/dist/components/searchable-select/index.esm.js.map +1 -1
- package/dist/components/searchable-select/index.js +8 -8
- package/dist/components/searchable-select/index.js.map +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
- package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
- package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
- package/dist/node_modules/prop-types/index/index.esm.js +1 -1
- package/dist/node_modules/prop-types/index/index.js +1 -1
- package/dist/node_modules/prop-types/index/index.js.map +1 -1
- package/dist/style.css +4 -4
- package/package.json +1 -1
package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport { fetchApi } from '../../../../utils/api';\nimport { useLanguage } from '../../../../hooks/useLangauge';\nimport './element.scss';\n\n// Types\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\n\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\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>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\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 onChange(updatedValues);\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 if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\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(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\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 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.id || opt.value)}\n sx={{ pl: 5 }}\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.includes(opt.value))}\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\n // if (field.enable_footer) {\n\n // }\n\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\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const formContext = useFormContext();\n const { setValue } = formContext || {};\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\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 // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType\n } = props;\n\n const limit = 25;\n\n // Memoized values\n const isInternalOptions = useMemo(() => {\n return isInternal || !apiType;\n }, [isInternal, apiType]);\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n if (!searchTerm) return props.options || [];\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? props.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 : props.options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent]);\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 // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n return sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n if (!apiType) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n const { data = [], pagination = {} } = await fetchApi({\n apiKey: apiType,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: pagination?.totalCount > (page * limit),\n total: pagination?.totalCount,\n isLoadingMore: false\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\n }, [apiType, options, attributes, sortOrder, limit, cf]);\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, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n const filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (await handleSelectedValue(filteredOptions)) return;\n if (open) return;\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = 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('', cf, 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, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n\n if (setValue) {\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n }\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect, open]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\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 {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\n\nDynamicSearchSelect.propTypes = {\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n size: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n value: PropTypes.any\n })\n ).isRequired,\n formControl: PropTypes.object.isRequired,\n defaultValue: PropTypes.any,\n fieldArrayName: PropTypes.string.isRequired,\n id: PropTypes.string,\n required: PropTypes.bool,\n is_multiselect: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n onChipRemove: PropTypes.func,\n enable_footer: PropTypes.bool,\n footer_action: PropTypes.string,\n onFooterClick: PropTypes.func,\n is_loading: PropTypes.bool,\n selectedLabel: PropTypes.string,\n isInternal: PropTypes.bool,\n disabledIds: PropTypes.array,\n getSelectedData: PropTypes.func,\n attributes: PropTypes.array,\n handleChange: PropTypes.func,\n hasParent: PropTypes.bool,\n sortOrder: PropTypes.string,\n apiType: PropTypes.string,\n handleOptions: PropTypes.func,\n filterKey: PropTypes.string,\n customeFilter: PropTypes.object,\n refresh: PropTypes.bool,\n addType: PropTypes.string,\n modalComponentProps: PropTypes.object\n};\n\nexport default DynamicSearchSelect;\n"],"names":["generateMenuItems","options","multiple","placeholder","with_checkboxes","values","disabledIds","onChange","handleChange","hasParent","t","itemDisabled","id","includes","items","push","jsx","MenuItem","disabled","value","sx","opacity","height","p","m","children","Typography","type","color","selectedValues","Array","isArray","length","filter","isAllOptionsSelected","parentValue","childOptions","childValues","map","child","valueArray","every","childValue","isSomeOptionsSelected","some","forEach","option","Boolean","className","isGroup","jsxs","Box","display","gap","Checkbox","checked","indeterminate","updatedValues","Set","handleParentChange","onClick","label","opt","pl","String","SelectedItems","data","filteredDisplayTitle","selectedItem","_a","find","alignItems","mt","slice","join","Chip","variant","MoreIcon","Loading","fontStyle","DynamicSearchSelect","React","memo","props","watchedValue","useWatch","control","formControl","name","fieldArrayName","formContext","useFormContext","setValue","useTranslation","isRtl","useLanguage","selectRef","useRef","setOptions","useState","selectedValue","setSelectedValue","selectedOptions","setSelectedOptions","loading","setLoading","open","setOpen","isAlreadyLoaded","setIsAlreadyLoaded","prevFilter","setPrevFilter","initialLoading","setInitialLoading","searchQuery","setSearchQuery","searchInitiate","setSearchInitiate","addConfig","setAddConfig","isModalOpen","setIsModalOpen","isAddLoading","setIsAddLoading","pagination","setPagination","page","hasMore","isLoadingMore","total","handleOptions","isInternal","getSelectedData","attributes","filterKey","customeFilter","refresh","sortOrder","apiType","addType","isInternalOptions","useMemo","cf","JSON","stringify","searchOptionsLocally","useCallback","searchTerm","lowercasedSearchTerm","toLowerCase","filteredOptions","reduce","acc","searchedOptions","item","isValidElement","searchLabel","_b","sortBySelectedValues","getUniqueOptions","Map","arrayToSort","sortBy","index","indexOf","Infinity","fetchOptions","async","flt","append","prev","fetchApi","apiKey","filters","limit","skip","search","select","order","newOptions","updateOptions","handleSelectedValue","totalCount","error","handleScroll","event","scrollTop","scrollHeight","clientHeight","currentTarget","nextPage","uniqueOptions","filterValue","is_multiselect","isInOptions","fetchIdOptions","initialFetch","debouncedSearch","debounce","resetValue","field","handleClose","handleModalOpen","handleModalSave","payload","api","result","newValue","useEffect","cancel","selectedData","removeUndefined","selectOptions","config","dynamicSelectAdd","Controller","render","fieldState","Fragment","Select","ref","onOpen","onClose","fullWidth","dataPosition","position","dataName","defaultValue","searchValue","required","formType","size","padding","_c","MenuProps","PaperProps","onScroll","style","maxHeight","renderValue","selected","ChipOrPlaceholder","selectedLabel","is_loading","onDelete","onChipRemove","chipProps","background","border","fontWeight","selectedOption","searchPlaceholder","handleSearch","text","_d","message","helperText","_e","onBlur","input","OutlinedInput","endAdornment","InputAdornment","CircularProgress","mr","IconButton","edge","ml","Close","fontSize","enable_footer","bottom","zIndex","Divider","flexItem","mb","onFooterClick","Add","justifyContent","width","component","createElement","isOpen","setIsOpen","isLoading","onSave","modalProps","maxWidth","modalComponentProps","propTypes","PropTypes","string","isRequired","arrayOf","shape","oneOfType","node","any","object","bool","number","typeOfField","func","footer_action","array"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport { fetchApi } from '../../../../utils/api';\nimport { useLanguage } from '../../../../hooks/useLangauge';\nimport './element.scss';\n\n// Types\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\n\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\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>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\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 onChange(updatedValues);\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 if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\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(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\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 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.id || opt.value)}\n sx={{ pl: 5 }}\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.includes(opt.value))}\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\n // if (field.enable_footer) {\n\n // }\n\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\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const formContext = useFormContext();\n const { setValue } = formContext || {};\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\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 // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType\n } = props;\n\n const limit = 25;\n\n // Memoized values\n const isInternalOptions = useMemo(() => {\n return isInternal || !apiType;\n }, [isInternal, apiType]);\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n if (!searchTerm) return props.options || [];\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? props.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 : props.options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent]);\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 // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n return sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n if (!apiType) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n const { data = [], pagination = {} } = await fetchApi({\n apiKey: apiType,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: pagination?.totalCount > (page * limit),\n total: pagination?.totalCount,\n isLoadingMore: false\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\n }, [apiType, options, attributes, sortOrder, limit, cf]);\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, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n const filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (await handleSelectedValue(filteredOptions)) return;\n if (open) return;\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = 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('', cf, 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, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n\n if (setValue) {\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n }\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect, open]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n useEffect(() => {\n handleSelectedValue(filteredOptions)\n }, [handleSelectedValue])\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\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 {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\n\nDynamicSearchSelect.propTypes = {\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n size: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n value: PropTypes.any\n })\n ).isRequired,\n formControl: PropTypes.object.isRequired,\n defaultValue: PropTypes.any,\n fieldArrayName: PropTypes.string.isRequired,\n id: PropTypes.string,\n required: PropTypes.bool,\n is_multiselect: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n onChipRemove: PropTypes.func,\n enable_footer: PropTypes.bool,\n footer_action: PropTypes.string,\n onFooterClick: PropTypes.func,\n is_loading: PropTypes.bool,\n selectedLabel: PropTypes.string,\n isInternal: PropTypes.bool,\n disabledIds: PropTypes.array,\n getSelectedData: PropTypes.func,\n attributes: PropTypes.array,\n handleChange: PropTypes.func,\n hasParent: PropTypes.bool,\n sortOrder: PropTypes.string,\n apiType: PropTypes.string,\n handleOptions: PropTypes.func,\n filterKey: PropTypes.string,\n customeFilter: PropTypes.object,\n refresh: PropTypes.bool,\n addType: PropTypes.string,\n modalComponentProps: PropTypes.object\n};\n\nexport default DynamicSearchSelect;\n"],"names":["generateMenuItems","options","multiple","placeholder","with_checkboxes","values","disabledIds","onChange","handleChange","hasParent","t","itemDisabled","id","includes","items","push","jsx","MenuItem","disabled","value","sx","opacity","height","p","m","children","Typography","type","color","selectedValues","Array","isArray","length","filter","isAllOptionsSelected","parentValue","childOptions","childValues","map","child","valueArray","every","childValue","isSomeOptionsSelected","some","forEach","option","Boolean","className","isGroup","jsxs","Box","display","gap","Checkbox","checked","indeterminate","updatedValues","Set","handleParentChange","onClick","label","opt","pl","String","SelectedItems","data","filteredDisplayTitle","selectedItem","_a","find","alignItems","mt","slice","join","Chip","variant","MoreIcon","Loading","fontStyle","DynamicSearchSelect","React","memo","props","watchedValue","useWatch","control","formControl","name","fieldArrayName","formContext","useFormContext","setValue","useTranslation","isRtl","useLanguage","selectRef","useRef","setOptions","useState","selectedValue","setSelectedValue","selectedOptions","setSelectedOptions","loading","setLoading","open","setOpen","isAlreadyLoaded","setIsAlreadyLoaded","prevFilter","setPrevFilter","initialLoading","setInitialLoading","searchQuery","setSearchQuery","searchInitiate","setSearchInitiate","addConfig","setAddConfig","isModalOpen","setIsModalOpen","isAddLoading","setIsAddLoading","pagination","setPagination","page","hasMore","isLoadingMore","total","handleOptions","isInternal","getSelectedData","attributes","filterKey","customeFilter","refresh","sortOrder","apiType","addType","isInternalOptions","useMemo","cf","JSON","stringify","searchOptionsLocally","useCallback","searchTerm","lowercasedSearchTerm","toLowerCase","filteredOptions","reduce","acc","searchedOptions","item","isValidElement","searchLabel","_b","sortBySelectedValues","getUniqueOptions","Map","arrayToSort","sortBy","index","indexOf","Infinity","fetchOptions","async","flt","append","prev","fetchApi","apiKey","filters","limit","skip","search","select","order","newOptions","updateOptions","handleSelectedValue","totalCount","error","handleScroll","event","scrollTop","scrollHeight","clientHeight","currentTarget","nextPage","uniqueOptions","filterValue","is_multiselect","isInOptions","fetchIdOptions","initialFetch","debouncedSearch","debounce","resetValue","field","handleClose","handleModalOpen","handleModalSave","payload","api","result","newValue","useEffect","cancel","selectedData","removeUndefined","selectOptions","config","dynamicSelectAdd","Controller","render","fieldState","Fragment","Select","ref","onOpen","onClose","fullWidth","dataPosition","position","dataName","defaultValue","searchValue","required","formType","size","padding","_c","MenuProps","PaperProps","onScroll","style","maxHeight","renderValue","selected","ChipOrPlaceholder","selectedLabel","is_loading","onDelete","onChipRemove","chipProps","background","border","fontWeight","selectedOption","searchPlaceholder","handleSearch","text","_d","message","helperText","_e","onBlur","input","OutlinedInput","endAdornment","InputAdornment","CircularProgress","mr","IconButton","edge","ml","Close","fontSize","enable_footer","bottom","zIndex","Divider","flexItem","mb","onFooterClick","Add","justifyContent","width","component","createElement","isOpen","setIsOpen","isLoading","onSave","modalProps","maxWidth","modalComponentProps","propTypes","PropTypes","string","isRequired","arrayOf","shape","oneOfType","node","any","object","bool","number","typeOfField","func","footer_action","array"],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ const generateMenuItems = ({
|
|
|
54
54
|
const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];
|
|
55
55
|
return childValues.some((childValue) => valueArray.includes(childValue));
|
|
56
56
|
};
|
|
57
|
-
Array.isArray(options) && (options == null ? void 0 : options.length) > 0 && (options == null ? void 0 : options.forEach((option) => {
|
|
57
|
+
Array.isArray(options) && (options == null ? void 0 : options.length) > 0 && (options == null ? void 0 : options.forEach((option, index) => {
|
|
58
58
|
items.push(
|
|
59
59
|
/* @__PURE__ */ jsx(
|
|
60
60
|
MenuItem,
|
|
@@ -87,11 +87,11 @@ const generateMenuItems = ({
|
|
|
87
87
|
)
|
|
88
88
|
] })
|
|
89
89
|
},
|
|
90
|
-
|
|
90
|
+
index
|
|
91
91
|
)
|
|
92
92
|
);
|
|
93
93
|
if ((option == null ? void 0 : option.isGroup) && Array.isArray(option == null ? void 0 : option.options)) {
|
|
94
|
-
option.options.forEach((opt) => {
|
|
94
|
+
option.options.forEach((opt, index2) => {
|
|
95
95
|
items.push(
|
|
96
96
|
/* @__PURE__ */ jsx(
|
|
97
97
|
MenuItem,
|
|
@@ -122,7 +122,7 @@ const generateMenuItems = ({
|
|
|
122
122
|
)
|
|
123
123
|
] })
|
|
124
124
|
},
|
|
125
|
-
`${option.value}-${opt.value}`
|
|
125
|
+
`${option.value}-${opt.value}-${index2}`
|
|
126
126
|
)
|
|
127
127
|
);
|
|
128
128
|
});
|
|
@@ -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\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}\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 } = 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;\n }, [isInternal, apiType]);\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 if (!apiType) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n const {data=[],pagination={}} = 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\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n \n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: pagination?.totalCount > (page*limit),\n total: pagination?.totalCount,\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, 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))) : Number(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\" sx={{ 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","pagination","error"],"mappings":";;;;;;;;;;;;;;;;;;;AAwFA,MAAM,oBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAChB,MAAkB;AACd,QAAM,eAAe,CAAC,OAAY,2CAAa,SAAS;AACxD,QAAM,QAA8B,CAAA;AAEpC,MAAI,CAAC,UAAU;AACX,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,eAAA,GACvH,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAA,oBAAC,MAAA,EAAI,UAAA,aAAY,EAAA,CACrB,EAAA,GAH4B,aAIhC;AAAA,IAAA;AAAA,EAER;AAEA,QAAM,iBAAiB,MAAM,QAAQ,MAAM,IAAI,iCAAQ,OAAO,CAAC,UAAU,SAAS,CAAA;AAGlF,QAAM,qBAAqB,CAAC,aAAqB,iBAA4B;AACzE,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AAEnF,UAAM,mBAAmB,WAAW,SAAS,WAAW;AACxD,UAAM,gBAAgB,mBAChB,WAAW,OAAO,CAAC,UAAU,UAAU,eAAe,CAAC,YAAY,SAAS,KAAK,CAAC,IAClF,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,GAAG,WAAW,CAAC,CAAC;AAE/D,iDAAe;AAAA,EACnB;AAEA,QAAM,uBAAuB,CAAC,aAAqB,iBAA4B;AAC3E,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,MAAM,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC5E;AAEA,QAAM,wBAAwB,CAAC,iBAA4B;AACvD,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,KAAK,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC3E;AAEA,QAAM,QAAQ,OAAO,MAAK,mCAAS,UAAS,MAAK,mCAAS,QAAQ,CAAC,WAAW;AAC1E,UAAM;AAAA,MACF;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO,iCAAQ;AAAA,UAEf,UAAU,QAAQ,iCAAQ,QAAQ,KAAK,aAAa,iCAAQ,KAAK;AAAA,UACjE,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,SAAS,MAAM;AACX,iBAAI,iCAAQ,WAAU,GAAG;AACrB,0BAAA;AAAA,YACJ;AAAA,UACJ;AAAA,UAEA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,YAAA,YAAY,mBACT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SACI,YACM,qBAAqB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACvD,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,iCAAQ,UAAS,EAAE;AAAA,gBAE9E,eACI,aAAa,sBAAsB,OAAO,WAAW,CAAA,CAAE;AAAA,gBAE3D,UAAU,MACN,YACM,mBAAmB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACrD,6CAAe,OAAO;AAAA,cAAK;AAAA,YAAA;AAAA,YAI7C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,SAAS,MAAM,6CAAe,OAAO;AAAA,gBAEpC,UAAA,iCAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACJ;AAAA,QAAA;AAAA,QAlCK,iCAAQ;AAAA,MAAA;AAAA,IAmCjB;AAIJ,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACnD,aAAO,QAAQ,QAAQ,CAAC,QAAQ;AAC5B,cAAM;AAAA,UACF;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,IAAI;AAAA,cACX,UAAU,QAAQ,IAAI,QAAQ,KAAK,aAAa,IAAI,KAAK;AAAA,cACzD,IAAI,EAAE,IAAI,EAAA;AAAA,cACV,SAAS,MAAM;AACX,qBAAI,iCAAQ,WAAU,GAAG;AACrB,8BAAA;AAAA,gBACJ;AAAA,cACJ;AAAA,cAGA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,gBAAA,YAAY,mBACT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGjF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,SAAS,MAAM,6CAAe,OAAO,IAAI,KAAK;AAAA,oBAE7C,cAAI,SAAS,oBAAoB,mCAAmC,IAAI,SAAS,IAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC1F,EAAA,CACJ;AAAA,YAAA;AAAA,YAfK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK;AAAA,UAAA;AAAA,QAgBrC;AAAA,MAER,CAAC;AAAA,IACL;AAAA,EACJ;AAGA,MAAI,MAAM,eAAe;AACrB,UAAM;AAAA,2BACD,KAAA,EACG,UAAA;AAAA,QAAA,oBAAC,SAAA,EAAQ,UAAQ,KAAA,CAAC;AAAA,QAClB,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SAAS,MAAM,eACrC,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,YAAA;AAAA,YACnC,MAAM;AAAA,UAAA,EAAA,CACtB;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,GAPK,QAQT;AAAA,IAAA;AAAA,EAER;AAGA,MAAI,CAAC,MAAM,UAAW,MAAM,UAAU,KAAK,CAAC,UAAW;AACnD,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAe,iCAAV,SAEvB;AAAA,IAAA;AAAA,EAER;AAEA,SAAO;AACX;AAEA,MAAM,mBAAoD,CAAC,UAAU;AACjE,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAY,CAAA;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,mBAAmB;AAAA,EAAA,IACnB;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAkB,KAAK;AACrD,QAAM,CAAC,gBAAgB,UAAU,IAAI,SAAoB,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,EAAC,EAAA,IAAG,eAAA;AAGV,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B;AAAA,IAC3D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,EAAA,CACV;AAED,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,QAAQ;AAEd,QAAM,oBAAoB,QAAQ,MAAM;AACpC,WAAO,cAAc,CAAC;AAAA,EAC1B,GAAG,CAAC,YAAY,OAAO,CAAC;AAGxB,QAAM,uBAAuB,YAAY,CAAC,YAAoBA,WAA0B;AACpF,QAAI,CAAC,WAAY,QAAO,WAAW,CAAA;AAEnC,UAAM,uBAAuB,WAAW,YAAA;AAExC,UAAMC,mBAAkB,aAClB,mCAAS,OAAO,CAAC,KAAgB,QAAQ;;AACrC,YAAM,mBAAkB,SAAI,YAAJ,mBAAa,OAAO,CAAC,SAAS;AAClD,cAAMC,SAAQC,eAAM,eAAe,KAAK,KAAK,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK;AACrF,eAAOD,iCAAO,cAAc,SAAS;AAAA,MACzC;AAEA,UAAI,mDAAiB,QAAQ;AACzB,YAAI,KAAK,EAAE,GAAG,KAAK,SAAS,iBAAiB;AAAA,MACjD;AAEA,aAAO;AAAA,IACX,GAAG,CAAA,OAAO,CAAA,KACV,mCAAS,OAAO,CAAC,QAAQ;AACrB,YAAMA,SAAQC,eAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAOD,iCAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAEZ,WAAO,qBAAqBD,kBAAiBD,MAAK;AAAA,EAEtD,GAAG,CAAC,SAAS,SAAS,CAAC;AAGvB,QAAM,cAAc,MAAM;AACtB,aAAS,EAAE,QAAQ,EAAE,OAAO,WAAW,CAAA,IAAK,KAAA,GAAQ;AACpD,QAAI,mBAAmB,OAAO,oBAAoB,YAAY;AAC1D,sBAAgB,IAAI;AAAA,IACxB;AAAA,EACJ;AAGA,QAAM,mBAAmB,YAAY,CAAC,SAA+B;AACjE,UAAM,gBAAgB;AAAA,MAClB,GAAG,IAAI,IAAI,6BAAM,IAAI,CAAA,SAAQ,CAAC,KAAK,OAAO,IAAI,EAAE,EAAE,OAAA;AAAA,IAAO;AAE7D,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,uBAAuB,YAAY,CAAC,aAAwBA,WAA0B;AACxF,UAAM,iBAAiB,MAAM,QAAQA,MAAK,IAAIA,SAAQ,CAACA,MAAK;AAC5D,UAAM,cAAc,OAAO,aAAa,CAAC,SAAS;AAC9C,YAAM,QAAQ,eAAe,QAAQ,KAAK,MAAM,KAAK,KAAK;AAC1D,aAAO,UAAU,KAAK,WAAW;AAAA,IACrC,CAAC;AACD,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,QAAQ,MAAM;AAClC,QAAI,mBAAmB;AACnB,aAAO,qBAAqB,aAAa,KAAK;AAAA,IAClD;AACA,WAAO,qBAAqB,iBAAiB,CAAC,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG,KAAK;AAAA,EAEhG,GAAG,CAAC,aAAa,gBAAgB,SAAS,OAAO,mBAAmB,iBAAiB,sBAAsB,sBAAsB,gBAAgB,CAAC;AAGlJ,QAAM,eAAe,YAAY,CAAC,UAAyC;AACvE,UAAM,EAAE,WAAW,cAAc,aAAA,IAAiB,MAAM;AACxD,UAAM,WAAW,eAAe,aAAa,eAAe;AAE5D,QAAI,YAAY,WAAW,WAAW,CAAC,WAAW,iBAAiB,CAAC,mBAAmB;AACnF,YAAM,WAAW,WAAW,OAAO;AACnC,mBAAa,aAAa,eAAe,UAAU,IAAI;AAAA,IAC3D;AAAA,EAEJ,GAAG,CAAC,WAAW,SAAS,WAAW,eAAe,WAAW,MAAM,mBAAmB,aAAa,KAAK,UAAU,aAAa,CAAC,CAAC;AAGjI,QAAM,gBAAgB,YAAY,CAAC,YAAuB,SAAS,UAAU;AACzE,UAAM,aAAa,SAAS,iBAAiB;AAC7C,UAAM,gBAAgB,iBAAiB,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AACrE,eAAW,aAAa;AAAA,EAC5B,GAAG,CAAC,gBAAgB,iBAAiB,gBAAgB,CAAC;AAGtD,QAAM,eAAe,YAAY,OAAO,aAAkB,IAAI,UAAU,eAAe,OAAO,GAAG,SAAS,UAAU;AAChH,QAAI,CAAC,QAAS,QAAO,CAAA;AAErB,eAAW,IAAI;AACf,QAAI,OAAO,GAAG;AACV,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,OAAO;AAAA,IAC5D;AAEA,QAAI;AACA,YAAM,EAAC,OAAK,IAAG,YAAAI,cAAW,CAAA,EAAC,IAAK,MAAM,SAAS;AAAA,QAC3C,QAAQ;AAAA,QACR,SAAS;AAAA,UACL;AAAA,UACA,OAAO,OAAO,KAAK;AAAA,UACnB,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA;AAAA,QAEX;AAAA,QACA;AAAA,MAAA,CACH;AAED,UAAI,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAC7B,sBAAc,MAAM,MAAM;AAG1B,sBAAc,CAAA,UAAS;AAAA,UACnB,GAAG;AAAA,UACH;AAAA,UACA,UAASA,2CAAY,cAAc,OAAK;AAAA,UACxC,OAAOA,2CAAY;AAAA,UACnB,eAAe;AAAA,QAAA,EACjB;AAEF,aAAI,6BAAM,UAAS,GAAG;AAClB,0BAAA;AAAA,QACJ;AAAA,MACJ;AAEA,aAAO,QAAQ,CAAA;AAAA,IACnB,SAASC,QAAO;AACZ,cAAQ,MAAM,2BAA2BA,MAAK;AAC9C,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,QAAQ;AACzD,aAAO,CAAA;AAAA,IACX,UAAA;AACI,iBAAW,KAAK;AAAA,IACpB;AAAA,EAEJ,GAAG,CAAC,SAAS,YAAY,WAAW,OAAO,aAAa,CAAC;AAGzD,QAAM,iBAAiB;AAAA,IACnB,MAAM,SAAS,OAAO,eAAuB;AACzC,UAAI,QAAS;AAEb,UAAI,CAAC,cAAc,CAAC,qBAAqB,gBAAgB;AACrD,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAM,aAAa,IAAI,eAAe,GAAG,KAAK;AAAA,MAClD;AACA,WAAI,yCAAY,UAAS,KAAK,CAAC,mBAAmB;AAC9C,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAM,aAAa,YAAY,eAAe,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,KAAK,UAAU,aAAa,CAAC;AAAA,EAAA;AAIrE,QAAM,eAAe,YAAY,YAAY;AACzC,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAE7E,QAAI,aAAW,CAAC,qBAAqB,CAAC,gBAAgB;AAClD,oBAAc,aAAa;AAC3B,iBAAW,CAAA,CAAE;AACb,wBAAkB,KAAK;AACvB,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AAAA,IACL;AAEA,QAAI,CAAC,qBAAqB,CAAC,gBAAgB;AACvC,YAAM,aAAa,aAAa,eAAe,GAAG,KAAK;AACvD,wBAAkB,IAAI;AAAA,IAC1B;AAAA,EAEJ,GAAG,CAAC,KAAK,UAAU,aAAa,GAAG,mBAAmB,cAAc,CAAC;AAGrE,QAAM,kBAAkB,YAAY,MAAM;AACtC,QAAI,aAAa;AACjB,UAAM,cAAc,mDAAiB;AAAA,MAAO,CAAC,MACzC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA;AAGvD,QAAK,MAAM,QAAQ,WAAW,MAAK,2CAAa,UAAS,GAAI;AACzD,yDAAkB,WAAW,cAAc,YAAY,CAAC;AACxD,mBAAa;AAAA,IACjB;AACA,WAAO;AAAA,EACX,GAAG,CAAC,iBAAiB,OAAO,UAAU,eAAe,CAAC;AAGtD,QAAM,iBAAiB,YAAY,YAAY;AAC3C,QAAI,KAAM;AACV,QAAI,MAAM,kBAAmB;AAE7B,UAAM,SAAS,WAAW,UAAS,+BAAO,OAAO,CAAA,MAAK,QAAQ,OAAO,CAAC,CAAC,MAAK,OAAO,KAAK,IAAI,QAAQ;AACpG,UAAM,aAAa,YAAW,iCAAQ,UAAS,IAAI,WAAW,CAAC;AAE/D,QAAI,WAAW;AACX,wBAAkB,IAAI;AACtB,YAAM,aAAa,IAAI,EAAE,GAAG,eAAe,GAAG,EAAE,UAAU,OAAA,EAAO,GAAK,GAAG,KAAK;AAC9E,wBAAkB,KAAK;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,MAAM,OAAS,KAAK,UAAU,aAAa,CAAE,CAAC;AAElD,QAAM,WAAW,WACX,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,IACvC,UAAU,QAAQ,UAAU,UAAa,UAAU;AAGzD,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,qBAAe,WAAW;AAAA,IAC9B;AACA,WAAO,MAAM,eAAe,OAAA;AAAA,EAEhC,GAAG,CAAC,aAAa,KAAK,UAAU,aAAa,GAAG,MAAM,gBAAgB,cAAc,CAAC;AAErF,YAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,YAAU,MAAM;AACZ,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAC7E,QAAI,iBAAiB,WAAW;AAC5B,wBAAkB,KAAK;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,YAAU,MAAM;AACZ,QAAI,SAAS,CAAC,MAAM;AAChB,YAAM,gBAAe,mCAAS;AAAA,QAAO,CAAC,MAClC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,YAClD,CAAA;AACL,yBAAmB,YAAY;AAAA,IACnC;AACA,uBAAmB,mDAAiB;AAAA,MAAO,CAAC,MACxC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,KACtD;AAAA,EAEL,GAAG,CAAC,OAAO,MAAM,SAAS,QAAQ,CAAC;AAEnC,QAAM,iBAAiB,CAAC,UAAe;AACnC,UAAM,EAAE,OAAAL,OAAAA,IAAU,MAAM;AACxB,QAAK,YAAY,MAAM,QAAQA,MAAK,MAAKA,iCAAO,OAAO,CAAA,MAAK,GAAG,WAAU,KAAM,CAACA,OAAO;AAEvF,UAAM,aAAa,CAAC,SAAc;AAC9B,aAAO,WAAWA,iCAAO,SAAS,6BAAM,UAAS,6BAAM,WAAUA;AAAAA,IACrE;AAEA,UAAM,WAAW,mDAAiB,OAAO;AACzC,aAAS,OAAO,WAAW,WAAW,qCAAW,EAAE;AAAA,EACvD;AAEA,QAAM,iBAAiB,CAAC,kBAAyB;AAC7C,WAAO,MAAM,QAAQ,aAAa,MAAK,+CAAe,UAAS,MAAK,+CAAe,OAAO,CAAC,WAAW;AAAA,EAC1G;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,cAAc,iBAAiB,WAAW,CAAA,IAAK;AAAA,MAC/C;AAAA,MACA,WAAU;AAAA,MACV;AAAA,MACA,QAAQ,MAAM,QAAQ,IAAI;AAAA,MAC1B,SAAS,MAAM;AACX,gBAAQ,KAAK;AACb,aAAI,2CAAa,UAAS,GAAG;AACzB,4BAAkB,KAAK;AAAA,QAC3B;AACA,0BAAkB,KAAK;AACvB,uBAAe,EAAE;AAAA,MACrB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,OAAO,EAAE,KAAK;AAAA,MACd,WAAS;AAAA,MACT,cAAY;AAAA,MACZ;AAAA,MACA,OAAO,QAAQ,KAAK;AAAA,MACpB;AAAA,MACA,OAAO,iBAAkB,WAAW,CAAA,IAAK,MAAM,+BAAO,OAAM,UAAU,WAAW,CAAA,IAAK;AAAA,MACtF;AAAA,MACA,oBAAoB;AAAA,MACpB,IAAM,aAAY,+BAAO,UAAU,EAAC,GAAG,aAAa,uBAAuB,EAAE,SAAS,mBAAA,EAAmB,IAAK;AAAA,MAC9G,WAAW;AAAA,QACP,YAAY;AAAA,UACR,UAAU;AAAA,UACV,OAAO,EAAE,WAAW,KAAI,UAAS,IAAA;AAAA,QAAI;AAAA,MACzC;AAAA,MAEJ,OACI,CAAC,WACG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAM;AAAA,UACN,IAAI;AAAA,UACJ,cACI,oBAAC,gBAAA,EAAe,UAAS,OACpB,qBAAW,aACR;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAM;AAAA,cACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,YAAU;AAAA,UAAA,IAGlC,oBAAoB,YAChB;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,cAAW;AAAA,cACX,SAAS;AAAA,cACT,MAAK;AAAA,cACL,IAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,cAChC,MAAK;AAAA,cAEL,UAAA,oBAAC,SAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,sBAAoB,CAAG;AAAA,YAAA;AAAA,UAAA,EAChE,CAGZ;AAAA,QAAA;AAAA,MAAA,IAGR;AAAA,MAER,aAAa,CAAC,aAAiC;;AAC3C,eACI,oBAAA,UAAA,EACK,UAAA,MAAM,QAAQ,QAAQ,IACnB;AAAA,UAAC;AAAA,UAAA;AAAA,YACG;AAAA,YACA,MAAM,eAAe,QAAQ;AAAA,YAC7B;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,WAAW;AAAA,cACP,IAAI;AAAA,gBACA,SAAS;AAAA,gBACT,QAAQ;AAAA;AAAA,gBAER,0BAA0B;AAAA,kBACtB,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,cAChB;AAAA,YACJ;AAAA,UACJ;AAAA,QAAA,IAGJ,MAAM,QAAQ,eAAe,MAAK,mDAAiB,UAAS,OAAK,wDAAiB;AAAA,UAC9E,CAAC,YAAgB,iCAAQ,UAAS;AAAA,cAD2B,mBAE9D,UAAS,YAAY,aAEhC;AAAA,MAER;AAAA,MACA,cAAc,CAAC,SAAS;AACpB,uBAAe,IAAI;AACnB,0BAAkB,IAAI;AAAA,MAC1B;AAAA,MAEC,UAAA;AAAA,QAAA,kBAAkB;AAAA,UACf,SAAS;AAAA,UACT,UAAU,QAAQ,QAAQ;AAAA,UAC1B;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,OAAO;AAAA,YAEH;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAEJ,CAAC;AAAA,QACA,WAAW,iBACR,oBAAC,UAAA,EAAS,UAAQ,MACd,UAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,8BAAC,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhB;"}
|
|
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\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}\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, index) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={index}\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, index) => {\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}-${index}`}\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 } = 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;\n }, [isInternal, apiType]);\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 if (!apiType) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n const { data = [], pagination = {} } = 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\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: pagination?.totalCount > (page * limit),\n total: pagination?.totalCount,\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, 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))) : Number(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\" sx={{ 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":["index","value","filteredOptions","label","React","pagination","error"],"mappings":";;;;;;;;;;;;;;;;;;;AAwFA,MAAM,oBAAoB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAChB,MAAkB;AACd,QAAM,eAAe,CAAC,OAAY,2CAAa,SAAS;AACxD,QAAM,QAA8B,CAAA;AAEpC,MAAI,CAAC,UAAU;AACX,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAC,OAAM,IAAqB,IAAI,EAAE,SAAS,gBAAgB,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,eAAA,GACvH,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBACxB,UAAA,oBAAC,MAAA,EAAI,UAAA,aAAY,EAAA,CACrB,EAAA,GAH4B,aAIhC;AAAA,IAAA;AAAA,EAER;AAEA,QAAM,iBAAiB,MAAM,QAAQ,MAAM,IAAI,iCAAQ,OAAO,CAAC,UAAU,SAAS,CAAA;AAGlF,QAAM,qBAAqB,CAAC,aAAqB,iBAA4B;AACzE,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AAEnF,UAAM,mBAAmB,WAAW,SAAS,WAAW;AACxD,UAAM,gBAAgB,mBAChB,WAAW,OAAO,CAAC,UAAU,UAAU,eAAe,CAAC,YAAY,SAAS,KAAK,CAAC,IAClF,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,GAAG,WAAW,CAAC,CAAC;AAE/D,iDAAe;AAAA,EACnB;AAEA,QAAM,uBAAuB,CAAC,aAAqB,iBAA4B;AAC3E,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,MAAM,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC5E;AAEA,QAAM,wBAAwB,CAAC,iBAA4B;AACvD,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAC3D,UAAM,aAAa,MAAM,QAAQ,cAAc,IAAI,iBAAiB,CAAC,cAAc;AACnF,WAAO,YAAY,KAAK,CAAC,eAAe,WAAW,SAAS,UAAU,CAAC;AAAA,EAC3E;AAEA,QAAM,QAAQ,OAAO,MAAK,mCAAS,UAAS,MAAK,mCAAS,QAAQ,CAAC,QAAQ,UAAU;AACjF,UAAM;AAAA,MACF;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO,iCAAQ;AAAA,UAEf,UAAU,QAAQ,iCAAQ,QAAQ,KAAK,aAAa,iCAAQ,KAAK;AAAA,UACjE,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,SAAS,MAAM;AACX,iBAAI,iCAAQ,WAAU,GAAG;AACrB,0BAAA;AAAA,YACJ;AAAA,UACJ;AAAA,UAEA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,YAAA,YAAY,mBACT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SACI,YACM,qBAAqB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACvD,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,iCAAQ,UAAS,EAAE;AAAA,gBAE9E,eACI,aAAa,sBAAsB,OAAO,WAAW,CAAA,CAAE;AAAA,gBAE3D,UAAU,MACN,YACM,mBAAmB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE,IACrD,6CAAe,OAAO;AAAA,cAAK;AAAA,YAAA;AAAA,YAI7C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,SAAS,MAAM,6CAAe,OAAO;AAAA,gBAEpC,UAAA,iCAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACJ;AAAA,QAAA;AAAA,QAlCK;AAAA,MAAA;AAAA,IAmCT;AAIJ,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACnD,aAAO,QAAQ,QAAQ,CAAC,KAAKA,WAAU;AACnC,cAAM;AAAA,UACF;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAO,IAAI;AAAA,cACX,UAAU,QAAQ,IAAI,QAAQ,KAAK,aAAa,IAAI,KAAK;AAAA,cACzD,IAAI,EAAE,IAAI,EAAA;AAAA,cACV,SAAS,MAAM;AACX,qBAAI,iCAAQ,WAAU,GAAG;AACrB,8BAAA;AAAA,gBACJ;AAAA,cACJ;AAAA,cAGA,UAAA,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC5B,UAAA;AAAA,gBAAA,YAAY,mBACT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,SAAS,QAAQ,MAAM,QAAQ,MAAM,MAAK,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGjF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,SAAS,MAAM,6CAAe,OAAO,IAAI,KAAK;AAAA,oBAE7C,cAAI,SAAS,oBAAoB,mCAAmC,IAAI,SAAS,IAAI;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC1F,EAAA,CACJ;AAAA,YAAA;AAAA,YAfK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAIA,MAAK;AAAA,UAAA;AAAA,QAgB9C;AAAA,MAER,CAAC;AAAA,IACL;AAAA,EACJ;AAGA,MAAI,MAAM,eAAe;AACrB,UAAM;AAAA,2BACD,KAAA,EACG,UAAA;AAAA,QAAA,oBAAC,SAAA,EAAQ,UAAQ,KAAA,CAAC;AAAA,QAClB,qBAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SAAS,MAAM,eACrC,UAAA;AAAA,UAAA,oBAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtB,qBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,YAAA;AAAA,YACnC,MAAM;AAAA,UAAA,EAAA,CACtB;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,GAPK,QAQT;AAAA,IAAA;AAAA,EAER;AAGA,MAAI,CAAC,MAAM,UAAW,MAAM,UAAU,KAAK,CAAC,UAAW;AACnD,UAAM;AAAA,MACF,oBAAC,UAAA,EAAS,UAAQ,MAAe,iCAAV,SAEvB;AAAA,IAAA;AAAA,EAER;AAEA,SAAO;AACX;AAEA,MAAM,mBAAoD,CAAC,UAAU;AACjE,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAA;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,mBAAmB;AAAA,EAAA,IACnB;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAkB,KAAK;AACrD,QAAM,CAAC,gBAAgB,UAAU,IAAI,SAAoB,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAoB,CAAA,CAAE;AACpE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B;AAAA,IAC3D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,OAAO;AAAA,EAAA,CACV;AAED,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,QAAQ;AAEd,QAAM,oBAAoB,QAAQ,MAAM;AACpC,WAAO,cAAc,CAAC;AAAA,EAC1B,GAAG,CAAC,YAAY,OAAO,CAAC;AAGxB,QAAM,uBAAuB,YAAY,CAAC,YAAoBC,WAA0B;AACpF,QAAI,CAAC,WAAY,QAAO,WAAW,CAAA;AAEnC,UAAM,uBAAuB,WAAW,YAAA;AAExC,UAAMC,mBAAkB,aAClB,mCAAS,OAAO,CAAC,KAAgB,QAAQ;;AACvC,YAAM,mBAAkB,SAAI,YAAJ,mBAAa,OAAO,CAAC,SAAS;AAClD,cAAMC,SAAQC,eAAM,eAAe,KAAK,KAAK,IAAI,KAAK,cAAc,OAAO,KAAK,KAAK;AACrF,eAAOD,iCAAO,cAAc,SAAS;AAAA,MACzC;AAEA,UAAI,mDAAiB,QAAQ;AACzB,YAAI,KAAK,EAAE,GAAG,KAAK,SAAS,iBAAiB;AAAA,MACjD;AAEA,aAAO;AAAA,IACX,GAAG,CAAA,OAAO,CAAA,KACR,mCAAS,OAAO,CAAC,QAAQ;AACvB,YAAMA,SAAQC,eAAM,eAAe,IAAI,KAAK,IAAI,IAAI,cAAc,OAAO,IAAI,KAAK;AAClF,aAAOD,iCAAO,cAAc,SAAS;AAAA,IACzC,OAAM,CAAA;AAEV,WAAO,qBAAqBD,kBAAiBD,MAAK;AAAA,EAEtD,GAAG,CAAC,SAAS,SAAS,CAAC;AAGvB,QAAM,cAAc,MAAM;AACtB,aAAS,EAAE,QAAQ,EAAE,OAAO,WAAW,CAAA,IAAK,KAAA,GAAQ;AACpD,QAAI,mBAAmB,OAAO,oBAAoB,YAAY;AAC1D,sBAAgB,IAAI;AAAA,IACxB;AAAA,EACJ;AAGA,QAAM,mBAAmB,YAAY,CAAC,SAA+B;AACjE,UAAM,gBAAgB;AAAA,MAClB,GAAG,IAAI,IAAI,6BAAM,IAAI,CAAA,SAAQ,CAAC,KAAK,OAAO,IAAI,EAAE,EAAE,OAAA;AAAA,IAAO;AAE7D,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,uBAAuB,YAAY,CAAC,aAAwBA,WAA0B;AACxF,UAAM,iBAAiB,MAAM,QAAQA,MAAK,IAAIA,SAAQ,CAACA,MAAK;AAC5D,UAAM,cAAc,OAAO,aAAa,CAAC,SAAS;AAC9C,YAAM,QAAQ,eAAe,QAAQ,KAAK,MAAM,KAAK,KAAK;AAC1D,aAAO,UAAU,KAAK,WAAW;AAAA,IACrC,CAAC;AACD,WAAO;AAAA,EACX,GAAG,CAAA,CAAE;AAGL,QAAM,kBAAkB,QAAQ,MAAM;AAClC,QAAI,mBAAmB;AACnB,aAAO,qBAAqB,aAAa,KAAK;AAAA,IAClD;AACA,WAAO,qBAAqB,iBAAiB,CAAC,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG,KAAK;AAAA,EAEhG,GAAG,CAAC,aAAa,gBAAgB,SAAS,OAAO,mBAAmB,iBAAiB,sBAAsB,sBAAsB,gBAAgB,CAAC;AAGlJ,QAAM,eAAe,YAAY,CAAC,UAAyC;AACvE,UAAM,EAAE,WAAW,cAAc,aAAA,IAAiB,MAAM;AACxD,UAAM,WAAW,eAAe,aAAa,eAAe;AAE5D,QAAI,YAAY,WAAW,WAAW,CAAC,WAAW,iBAAiB,CAAC,mBAAmB;AACnF,YAAM,WAAW,WAAW,OAAO;AACnC,mBAAa,aAAa,eAAe,UAAU,IAAI;AAAA,IAC3D;AAAA,EAEJ,GAAG,CAAC,WAAW,SAAS,WAAW,eAAe,WAAW,MAAM,mBAAmB,aAAa,KAAK,UAAU,aAAa,CAAC,CAAC;AAGjI,QAAM,gBAAgB,YAAY,CAAC,YAAuB,SAAS,UAAU;AACzE,UAAM,aAAa,SAAS,iBAAiB;AAC7C,UAAM,gBAAgB,iBAAiB,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AACrE,eAAW,aAAa;AAAA,EAC5B,GAAG,CAAC,gBAAgB,iBAAiB,gBAAgB,CAAC;AAGtD,QAAM,eAAe,YAAY,OAAO,aAAkB,IAAI,UAAU,eAAe,OAAO,GAAG,SAAS,UAAU;AAChH,QAAI,CAAC,QAAS,QAAO,CAAA;AAErB,eAAW,IAAI;AACf,QAAI,OAAO,GAAG;AACV,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,OAAO;AAAA,IAC5D;AAEA,QAAI;AACA,YAAM,EAAE,OAAO,IAAI,YAAAI,cAAa,CAAA,EAAC,IAAM,MAAM,SAAS;AAAA,QAClD,QAAQ;AAAA,QACR,SAAS;AAAA,UACL;AAAA,UACA,OAAO,OAAO,KAAK;AAAA,UACnB,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA;AAAA,QAEX;AAAA,QACA;AAAA,MAAA,CACH;AAED,UAAI,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAC7B,sBAAc,MAAM,MAAM;AAG1B,sBAAc,CAAA,UAAS;AAAA,UACnB,GAAG;AAAA,UACH;AAAA,UACA,UAASA,2CAAY,cAAc,OAAO;AAAA,UAC1C,OAAOA,2CAAY;AAAA,UACnB,eAAe;AAAA,QAAA,EACjB;AAEF,aAAI,6BAAM,UAAS,GAAG;AAClB,0BAAA;AAAA,QACJ;AAAA,MACJ;AAEA,aAAO,QAAQ,CAAA;AAAA,IACnB,SAASC,QAAO;AACZ,cAAQ,MAAM,2BAA2BA,MAAK;AAC9C,oBAAc,WAAS,EAAE,GAAG,MAAM,eAAe,QAAQ;AACzD,aAAO,CAAA;AAAA,IACX,UAAA;AACI,iBAAW,KAAK;AAAA,IACpB;AAAA,EAEJ,GAAG,CAAC,SAAS,YAAY,WAAW,OAAO,aAAa,CAAC;AAGzD,QAAM,iBAAiB;AAAA,IACnB,MAAM,SAAS,OAAO,eAAuB;AACzC,UAAI,QAAS;AAEb,UAAI,CAAC,cAAc,CAAC,qBAAqB,gBAAgB;AACrD,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAM,aAAa,IAAI,eAAe,GAAG,KAAK;AAAA,MAClD;AACA,WAAI,yCAAY,UAAS,KAAK,CAAC,mBAAmB;AAC9C,sBAAc;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,eAAe;AAAA,UACf,OAAO;AAAA,QAAA,CACV;AACD,cAAM,aAAa,YAAY,eAAe,GAAG,KAAK;AAAA,MAC1D;AAAA,IACJ,GAAG,GAAG;AAAA;AAAA,IAEN,CAAC,mBAAmB,gBAAgB,KAAK,UAAU,aAAa,CAAC;AAAA,EAAA;AAIrE,QAAM,eAAe,YAAY,YAAY;AACzC,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAE7E,QAAI,aAAa,CAAC,qBAAqB,CAAC,gBAAgB;AACpD,oBAAc,aAAa;AAC3B,iBAAW,CAAA,CAAE;AACb,wBAAkB,KAAK;AACvB,oBAAc;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,OAAO;AAAA,MAAA,CACV;AAAA,IACL;AAEA,QAAI,CAAC,qBAAqB,CAAC,gBAAgB;AACvC,YAAM,aAAa,aAAa,eAAe,GAAG,KAAK;AACvD,wBAAkB,IAAI;AAAA,IAC1B;AAAA,EAEJ,GAAG,CAAC,KAAK,UAAU,aAAa,GAAG,mBAAmB,cAAc,CAAC;AAGrE,QAAM,kBAAkB,YAAY,MAAM;AACtC,QAAI,aAAa;AACjB,UAAM,cAAc,mDAAiB;AAAA,MAAO,CAAC,MACzC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA;AAGvD,QAAK,MAAM,QAAQ,WAAW,MAAK,2CAAa,UAAS,GAAI;AACzD,yDAAkB,WAAW,cAAc,YAAY,CAAC;AACxD,mBAAa;AAAA,IACjB;AACA,WAAO;AAAA,EACX,GAAG,CAAC,iBAAiB,OAAO,UAAU,eAAe,CAAC;AAGtD,QAAM,iBAAiB,YAAY,YAAY;AAC3C,QAAI,KAAM;AACV,QAAI,MAAM,kBAAmB;AAE7B,UAAM,SAAS,WAAW,UAAS,+BAAO,OAAO,CAAA,MAAK,QAAQ,OAAO,CAAC,CAAC,MAAK,OAAO,KAAK,IAAI,QAAQ;AACpG,UAAM,aAAa,YAAW,iCAAQ,UAAS,IAAI,WAAW,CAAC;AAE/D,QAAI,WAAW;AACX,wBAAkB,IAAI;AACtB,YAAM,aAAa,IAAI,EAAE,GAAG,eAAe,GAAG,EAAE,UAAU,OAAA,EAAO,GAAK,GAAG,KAAK;AAC9E,wBAAkB,KAAK;AAAA,IAC3B;AAAA,EAEJ,GAAG,CAAC,MAAM,OAAO,KAAK,UAAU,aAAa,CAAC,CAAC;AAE/C,QAAM,WAAW,WACX,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,IACvC,UAAU,QAAQ,UAAU,UAAa,UAAU;AAGzD,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,qBAAe,WAAW;AAAA,IAC9B;AACA,WAAO,MAAM,eAAe,OAAA;AAAA,EAEhC,GAAG,CAAC,aAAa,KAAK,UAAU,aAAa,GAAG,MAAM,gBAAgB,cAAc,CAAC;AAErF,YAAU,MAAM;AACZ,oBAAA;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,YAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACZ,QAAI,MAAM;AACN,mBAAA;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,MAAM,YAAY,CAAC;AAEvB,YAAU,MAAM;AACZ,UAAM,YAAY,KAAK,UAAU,aAAa,MAAM,KAAK,UAAU,UAAU;AAC7E,QAAI,iBAAiB,WAAW;AAC5B,wBAAkB,KAAK;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,YAAU,MAAM;AACZ,QAAI,SAAS,CAAC,MAAM;AAChB,YAAM,gBAAe,mCAAS;AAAA,QAAO,CAAC,MAClC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,YAClD,CAAA;AACL,yBAAmB,YAAY;AAAA,IACnC;AACA,uBAAmB,mDAAiB;AAAA,MAAO,CAAC,MACxC,WAAW,+BAAO,SAAS,uBAAG,UAAS,uBAAG,UAAS;AAAA,KACtD;AAAA,EAEL,GAAG,CAAC,OAAO,MAAM,SAAS,QAAQ,CAAC;AAEnC,QAAM,iBAAiB,CAAC,UAAe;AACnC,UAAM,EAAE,OAAAL,OAAAA,IAAU,MAAM;AACxB,QAAK,YAAY,MAAM,QAAQA,MAAK,MAAKA,iCAAO,OAAO,CAAA,MAAK,GAAG,WAAU,KAAM,CAACA,OAAO;AAEvF,UAAM,aAAa,CAAC,SAAc;AAC9B,aAAO,WAAWA,iCAAO,SAAS,6BAAM,UAAS,6BAAM,WAAUA;AAAAA,IACrE;AAEA,UAAM,WAAW,mDAAiB,OAAO;AACzC,aAAS,OAAO,WAAW,WAAW,qCAAW,EAAE;AAAA,EACvD;AAEA,QAAM,iBAAiB,CAAC,kBAAyB;AAC7C,WAAO,MAAM,QAAQ,aAAa,MAAK,+CAAe,UAAS,MAAK,+CAAe,OAAO,CAAC,WAAW;AAAA,EAC1G;AAEA,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,cAAc,iBAAiB,WAAW,CAAA,IAAK;AAAA,MAC/C;AAAA,MACA,WAAU;AAAA,MACV;AAAA,MACA,QAAQ,MAAM,QAAQ,IAAI;AAAA,MAC1B,SAAS,MAAM;AACX,gBAAQ,KAAK;AACb,aAAI,2CAAa,UAAS,GAAG;AACzB,4BAAkB,KAAK;AAAA,QAC3B;AACA,0BAAkB,KAAK;AACvB,uBAAe,EAAE;AAAA,MACrB;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,OAAO,EAAE,KAAK;AAAA,MACd,WAAS;AAAA,MACT,cAAY;AAAA,MACZ;AAAA,MACA,OAAO,QAAQ,KAAK;AAAA,MACpB;AAAA,MACA,OAAO,iBAAkB,WAAW,CAAA,IAAK,MAAM,+BAAO,OAAM,UAAU,WAAW,CAAA,IAAK;AAAA,MACtF;AAAA,MACA,oBAAoB;AAAA,MACpB,IAAK,aAAY,+BAAO,UAAU,EAAE,GAAG,aAAa,uBAAuB,EAAE,SAAS,mBAAA,EAAmB,IAAM;AAAA,MAC/G,WAAW;AAAA,QACP,YAAY;AAAA,UACR,UAAU;AAAA,UACV,OAAO,EAAE,WAAW,KAAK,UAAU,IAAA;AAAA,QAAI;AAAA,MAC3C;AAAA,MAEJ,OACI,CAAC,WACG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAM;AAAA,UACN,IAAI;AAAA,UACJ,cACI,oBAAC,gBAAA,EAAe,UAAS,OACpB,qBAAW,aACR;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAM;AAAA,cACN,IAAI,EAAE,IAAI,GAAG,OAAO,UAAA;AAAA,YAAU;AAAA,UAAA,IAGlC,oBAAoB,YAChB;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,cAAW;AAAA,cACX,SAAS;AAAA,cACT,MAAK;AAAA,cACL,IAAI,QAAQ,EAAE,IAAI,QAAQ,EAAE,IAAI,IAAA;AAAA,cAChC,MAAK;AAAA,cAEL,UAAA,oBAAC,SAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,sBAAoB,CAAG;AAAA,YAAA;AAAA,UAAA,EAChE,CAGZ;AAAA,QAAA;AAAA,MAAA,IAGR;AAAA,MAER,aAAa,CAAC,aAAiC;;AAC3C,eACI,oBAAA,UAAA,EACK,UAAA,MAAM,QAAQ,QAAQ,IACnB;AAAA,UAAC;AAAA,UAAA;AAAA,YACG;AAAA,YACA,MAAM,eAAe,QAAQ;AAAA,YAC7B;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,WAAW;AAAA,cACP,IAAI;AAAA,gBACA,SAAS;AAAA,gBACT,QAAQ;AAAA;AAAA,gBAER,0BAA0B;AAAA,kBACtB,OAAO;AAAA,kBACP,YAAY;AAAA,gBAAA;AAAA,cAChB;AAAA,YACJ;AAAA,UACJ;AAAA,QAAA,IAGJ,MAAM,QAAQ,eAAe,MAAK,mDAAiB,UAAS,OAAK,wDAAiB;AAAA,UAC9E,CAAC,YAAgB,iCAAQ,UAAS;AAAA,cAD2B,mBAE9D,UAAS,YAAY,aAEhC;AAAA,MAER;AAAA,MACA,cAAc,CAAC,SAAS;AACpB,uBAAe,IAAI;AACnB,0BAAkB,IAAI;AAAA,MAC1B;AAAA,MAEC,UAAA;AAAA,QAAA,kBAAkB;AAAA,UACf,SAAS;AAAA,UACT,UAAU,QAAQ,QAAQ;AAAA,UAC1B;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,OAAO;AAAA,YAEH;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAEJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAEJ,CAAC;AAAA,QACA,WAAW,iBACR,oBAAC,UAAA,EAAS,UAAQ,MACd,UAAA,oBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACzD,8BAAC,kBAAA,EAAiB,MAAM,GAAA,CAAI,EAAA,CAChC,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhB;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),l=require("react"),a=require("../select/select/index.js"),i=require("../checkbox/checkbox/index.js"),n=require("../typography/typography/index.js"),r=require("lodash"),
|
|
2
|
-
/* @__PURE__ */e.jsx(d.default,{disabled:!0,value:"",sx:{opacity:"0 !important",height:"0 !important",p:"0 !important",m:"0 !important"},children:/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",children:/* @__PURE__ */e.jsx("em",{children:r})})},"placeholder"));const x=Array.isArray(
|
|
3
|
-
/* @__PURE__ */e.jsx(d.default,{value:null==l?void 0:l.value,disabled:Boolean(null==l?void 0:l.disabled)||f(null==l?void 0:l.value),className:(null==l?void 0:l.isGroup)?"select--MenuItemHeader":"",onClick:()=>{1==(null==
|
|
4
|
-
/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",onClick:()=>null==
|
|
5
|
-
/* @__PURE__ */e.jsx(d.default,{value:r.value,disabled:Boolean(r.disabled)||f(r.value),sx:{pl:5},onClick:()=>{1==(null==
|
|
6
|
-
/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",onClick:()=>null==
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),l=require("react"),a=require("../select/select/index.js"),i=require("../checkbox/checkbox/index.js"),n=require("../typography/typography/index.js"),r=require("lodash"),t=require("../../utils/api/index.js"),o=require("../form-control/form-builder/form-builder-element/chip-or-placeholder/index.js"),s=require("../../hooks/useLangauge/index.js"),u=require("react-i18next"),d=require("../../node_modules/@mui/material/MenuItem/MenuItem/index.js"),c=require("../../node_modules/@mui/material/Box/Box/index.js"),h=require("../../node_modules/@mui/material/CircularProgress/CircularProgress/index.js"),p=require("../../node_modules/@mui/material/OutlinedInput/OutlinedInput/index.js"),v=require("../../node_modules/@mui/material/InputAdornment/InputAdornment/index.js"),f=require("../../node_modules/@mui/material/IconButton/IconButton/index.js"),y=require("../icons/close/index.js"),m=require("../../node_modules/@mui/material/Divider/Divider/index.js"),g=require("../../node_modules/@mui/icons-material/esm/Add/index.js");function x(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var b=/* @__PURE__ */x(l);const j=({options:l,multiple:a,placeholder:r,with_checkboxes:t,values:o,field:s,disabledIds:u,handleClear:h,handleChange:p,hasParent:v=!1})=>{const f=e=>null==u?void 0:u.includes(e),y=[];a||y.push(
|
|
2
|
+
/* @__PURE__ */e.jsx(d.default,{disabled:!0,value:"",sx:{opacity:"0 !important",height:"0 !important",p:"0 !important",m:"0 !important"},children:/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",children:/* @__PURE__ */e.jsx("em",{children:r})})},"placeholder"));const x=Array.isArray(o)?null==o?void 0:o.filter(e=>e):[],b=(e,l)=>{const a=l.map(e=>e.value),i=Array.isArray(x)?x:[x];return a.every(e=>i.includes(e))},j=e=>{const l=e.map(e=>e.value),a=Array.isArray(x)?x:[x];return l.some(e=>a.includes(e))};return Array.isArray(l)&&(null==l?void 0:l.length)>0&&(null==l||l.forEach((l,r)=>{y.push(
|
|
3
|
+
/* @__PURE__ */e.jsx(d.default,{value:null==l?void 0:l.value,disabled:Boolean(null==l?void 0:l.disabled)||f(null==l?void 0:l.value),className:(null==l?void 0:l.isGroup)?"select--MenuItemHeader":"",onClick:()=>{1==(null==o?void 0:o.length)&&h()},children:/* @__PURE__ */e.jsxs(c.default,{sx:{display:"flex",gap:1},children:[a&&t&&/* @__PURE__ */e.jsx(i.default,{checked:v?b(l.value,l.options||[]):Boolean(Array.isArray(o)&&(null==o?void 0:o.indexOf(null==l?void 0:l.value))>-1),indeterminate:v&&j(l.options||[]),onChange:()=>v?((e,l)=>{const a=l.map(e=>e.value),i=Array.isArray(x)?x:[x],n=i.includes(e)?i.filter(l=>l!==e&&!a.includes(l)):[.../* @__PURE__ */new Set([...i,e,...a])];null==p||p(n)})(l.value,l.options||[]):null==p?void 0:p(l.value)}),
|
|
4
|
+
/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",onClick:()=>null==p?void 0:p(l.value),children:null==l?void 0:l.label})]})},r)),(null==l?void 0:l.isGroup)&&Array.isArray(null==l?void 0:l.options)&&l.options.forEach((r,s)=>{y.push(
|
|
5
|
+
/* @__PURE__ */e.jsx(d.default,{value:r.value,disabled:Boolean(r.disabled)||f(r.value),sx:{pl:5},onClick:()=>{1==(null==o?void 0:o.length)&&h()},children:/* @__PURE__ */e.jsxs(c.default,{sx:{display:"flex",gap:1},children:[a&&t&&/* @__PURE__ */e.jsx(i.default,{checked:Boolean(Array.isArray(o)&&(null==o?void 0:o.indexOf(r.value))>-1)}),
|
|
6
|
+
/* @__PURE__ */e.jsx(n.Typography,{type:"s3",color:"theme.secondary.1000",onClick:()=>null==p?void 0:p(String(r.value)),children:"Payment Entries"==r.label?"Payment and Collection Entries":r.label||r.value})]})},`${l.value}-${r.value}-${s}`))})})),s.enable_footer&&y.push(
|
|
7
7
|
/* @__PURE__ */e.jsxs(c.default,{children:[
|
|
8
8
|
/* @__PURE__ */e.jsx(m.default,{flexItem:!0}),
|
|
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:q,defaultValue:w,apiType:L,isInternal:I=!1,autoFocus:O,error:_,disabled:N,customeFilter:B,attributes:P,getSelectedData:E,disabledIds:J,onChipRemove:T,selectedLabel:z,is_loading:D,customStyle:F={},CustomDropDownIcon:K,labelKey:V,valueKey:H,inputStyle:W,hasParent
|
|
13
|
-
return e.jsx(e.Fragment,{children:Array.isArray(l)?/* @__PURE__ */e.jsx(
|
|
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:q,defaultValue:w,apiType:L,isInternal:I=!1,autoFocus:O,error:_,disabled:N,customeFilter:B,attributes:P,getSelectedData:E,disabledIds:J,onChipRemove:T,selectedLabel:z,is_loading:D,customStyle:F={},CustomDropDownIcon:K,labelKey:V,valueKey:H,inputStyle:W,hasParent:$=!1,sortOrder:G="id:-1",handleChange:R,enable_footer:Q=!1,onFooterClick:U,showCancelButton:X=!0}=i,[Y,Z]=l.useState(""),[ee,le]=l.useState(!1),[ae,ie]=l.useState([]),[ne,re]=l.useState([]),[te,oe]=l.useState(!1),[se,ue]=l.useState(!1),[de,ce]=l.useState(!1),[he,pe]=l.useState(!1),[ve,fe]=l.useState(null),{t:ye}=u.useTranslation(),[me,ge]=l.useState({page:1,hasMore:!0,isLoadingMore:!1,total:0}),{isRtl:xe}=s.useLanguage(),be=l.useMemo(()=>I||!L,[I,L]),je=l.useCallback((e,l)=>{if(!e)return C||[];const a=e.toLowerCase(),i=$?(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 Se(i,l)},[C,$]),Ce=()=>{x({target:{value:A?[]:null}}),E&&"function"==typeof E&&E(null)},Ae=l.useCallback(e=>[...new Map(null==e?void 0:e.map(e=>[e.value,e])).values()],[]),Se=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})},[]),Me=l.useMemo(()=>be?je(Y,g):Se(Ae([...ae,...ne]),g),[Y,ae,C,g,be,ne,je,Se,Ae]),ke=l.useCallback(e=>{const{scrollTop:l,scrollHeight:a,clientHeight:i}=e.currentTarget;if(a-l<=i+10&&me.hasMore&&!me.isLoadingMore&&!be){const e=me.page+1;we(Y,B,e,!0)}},[me.hasMore,me.isLoadingMore,me.page,be,Y,JSON.stringify(B)]),qe=l.useCallback((e,l=!1)=>{const a=Ae([...l?ae:ne,...e]);ie(a)},[ae,ne,Ae]),we=l.useCallback(async(e="",l=B,a=1,i=!1)=>{if(!L)return[];le(!0),a>1&&ge(e=>({...e,isLoadingMore:!0}));try{const{data:n=[],pagination:r={}}=await t.fetchApi({apiKey:L,filters:{limit:25,skip:25*(a-1),search:e,filters:l,select:P,order:G},labelKey:V,valueKey:H});return n&&Array.isArray(n)&&(qe(n,i),ge(e=>({...e,page:a,hasMore:(null==r?void 0:r.totalCount)>25*a,total:null==r?void 0:r.totalCount,isLoadingMore:!1})),(null==n?void 0:n.length)>0&&Oe()),n||[]}catch(n){return ge(e=>({...e,isLoadingMore:!1})),[]}finally{le(!1)}},[L,P,G,25,qe]),Le=l.useMemo(()=>r.debounce(async e=>{ee||(e||be||!de||(ge({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await we("",B,1,!1)),(null==e?void 0:e.length)>1&&!be&&(ge({page:1,hasMore:!0,isLoadingMore:!1,total:0}),await we(e,B,1,!1)))},700),[be,de,JSON.stringify(B)]),Ie=l.useCallback(async()=>{!(JSON.stringify(B)!==JSON.stringify(ve))||be||te||(fe(B),ie([]),oe(!1),ge({page:1,hasMore:!0,isLoadingMore:!1,total:0})),be||te||(await we(Y,B,1,!1),oe(!0))},[JSON.stringify(B),be,te]),Oe=l.useCallback(()=>{let e=!1;const l=null==Me?void 0:Me.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},[Me,g,A,E]),_e=l.useCallback(async()=>{if(he)return;if(await Oe())return;const e=A?g&&(null==g?void 0:g.filter(e=>Boolean(Number(e)))):Number(g)?g:null;(A?(null==e?void 0:e.length)>0:e)&&!be&&(ue(!0),await we("",{...B,"&id.in":e},1,!1),ue(!1))},[he,g,JSON.stringify(B)]),Ne=A?Array.isArray(g)&&g.length>0:null!=g&&""!==g;return l.useEffect(()=>(he&&Le(Y),()=>Le.cancel()),[Y,JSON.stringify(B),he,te,Le]),l.useEffect(()=>{Oe()},[Oe]),l.useEffect(()=>{_e()},[_e]),l.useEffect(()=>{he&&Ie()},[he,Ie]),l.useEffect(()=>{const e=JSON.stringify(B)!==JSON.stringify(ve);B&&e&&oe(!1)},[B,ve]),l.useEffect(()=>{if(g&&!he){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))||[];re(e)}re(null==Me?void 0:Me.filter(e=>A?null==g?void 0:g.includes(null==e?void 0:e.value):(null==e?void 0:e.value)==g))},[g,he,C,A]),/* @__PURE__ */e.jsxs(a.default,{labelId:n,name:q,defaultValue:w||(A?[]:""),placeholder:k,className:"filter-select",size:S,onOpen:()=>pe(!0),onClose:()=>{pe(!1),(null==Y?void 0:Y.length)>0&&oe(!1),ce(!1),Z("")},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==Me?void 0:Me.filter(e=>A?null==l?void 0:l.includes(null==e?void 0:e.value):(null==e?void 0:e.value)===l);x(e,A?a:null==a?void 0:a[0])},showCancelButton:X,multiple:A,label:ye(m),fullWidth:!0,displayEmpty:!0,autoFocus:O,error:Boolean(_),disabled:N,value:se?A?[]:"":(null==g?void 0:g.id)||g||(A?[]:""),searchPlaceholder:M,CustomDropdownIcon:K,sx:A&&(null==g?void 0:g.length)?{...F,"& .MuiSelect-select":{padding:"5.5px !important"}}:F,MenuProps:{PaperProps:{onScroll:ke,style:{maxHeight:295,maxWidth:250}}},input:N?void 0:/* @__PURE__ */e.jsx(p.default,{label:"",sx:W,endAdornment:/* @__PURE__ */e.jsx(v.default,{position:"end",children:ee||D?/* @__PURE__ */e.jsx(h.default,{size:20,sx:{mr:3,color:"#4AC08C"}}):X&&Ne&&/* @__PURE__ */e.jsx(f.default,{"aria-label":"clear selection",onClick:Ce,edge:"end",sx:xe?{ml:2.5}:{mr:1.5},size:"small",children:/* @__PURE__ */e.jsx(y.Close,{fontSize:"small",sx:{color:"theme.primary.800"}})})})}),renderValue:l=>{var a,i;/* @__PURE__ */
|
|
13
|
+
return e.jsx(e.Fragment,{children:Array.isArray(l)?/* @__PURE__ */e.jsx(o.default,{selectedLabel:z,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:N,chipProps:{sx:{bgcolor:"theme.primary.100",border:0,"& .MuiTypography-body1":{color:"theme.primary.800",fontWeight:"500"}}}}):Array.isArray(Me)&&(null==Me?void 0:Me.length)>0&&(null==(a=null==Me?void 0:Me.find(e=>(null==e?void 0:e.value)==g))?void 0:a.label)||l||k})},handleSearch:e=>{Z(e),ce(!0)},children:[j({options:Me,multiple:Boolean(A),placeholder:k,values:g,with_checkboxes:!0,field:{enable_footer:Q,onFooterClick:U,label:m},disabledIds:J,handleClear:Ce,handleChange:R,hasParent:$}),me.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
|