import { useEffect, useState } from "react"; import { Avatar, Select, Space, Typography, type SelectProps } from "antd"; import { accessProvidersMap, type AccessModel } from "@/domain/access"; import { useAccessStore } from "@/stores/access"; export type AccessTypeSelectProps = Omit< SelectProps, "filterOption" | "filterSort" | "labelRender" | "options" | "optionFilterProp" | "optionLabelProp" | "optionRender" > & { filter?: (record: AccessModel) => boolean; }; const AccessSelect = ({ filter, ...props }: AccessTypeSelectProps) => { const { accesses, fetchAccesses } = useAccessStore(); useEffect(() => { fetchAccesses(); }, [fetchAccesses]); const [options, setOptions] = useState>([]); useEffect(() => { const items = filter != null ? accesses.filter(filter) : accesses; setOptions( items.map((item) => ({ key: item.id, value: item.id, label: item.name, data: item, })) ); }, [accesses, filter]); const renderOption = (key: string) => { const access = accesses.find((e) => e.id === key); if (!access) { return ( {key} ); } const provider = accessProvidersMap.get(access.configType); return ( {access.name} ); }; return (